1# Astal {#astal}
2
3Astal is a collection of building blocks for creating custom desktop shells.
4
5## Bundling {#astal-bundling}
6
7Bundling an Astal application is done using the `ags` tool. You can use it like this:
8
9```nix
10ags.bundle {
11 pname = "hyprpanel";
12 version = "1.0.0";
13
14 src = fetchFromGitHub {
15 #...
16 };
17
18 # change your entry file (default is `app.ts`)
19 entry = "app.ts";
20
21 dependencies = [
22 # list here astal modules that your package depends on
23 # `astal3`, `astal4` and `astal.io` are automatically included
24 astal.apps
25 astal.battery
26 astal.bluetooth
27
28 # you can also list here other runtime dependencies
29 hypridle
30 hyprpicker
31 hyprsunset
32 ];
33
34 # GTK 4 support is opt-in
35 enableGtk4 = true;
36
37 meta = {
38 #...
39 };
40}
41```
42
43You can also pass all other arguments that are supported by `stdenv.mkDerivation`.