Skip to content

Commit

Permalink
nix: lib.bundle and template
Browse files Browse the repository at this point in the history
  • Loading branch information
Aylur committed Nov 13, 2024
1 parent fe6d5dc commit 967b5c9
Show file tree
Hide file tree
Showing 6 changed files with 131 additions and 9 deletions.
2 changes: 1 addition & 1 deletion docs/guide/init.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Usage:
ags init [flags]

Flags:
-d, --directory string target directory (default "/home/demeter/.config/ags")
-d, --directory string target directory (default "~/.config/ags")
-f, --force override existing files
-g, --gtk int gtk version to use (default 3)
-h, --help help for init
Expand Down
2 changes: 1 addition & 1 deletion docs/guide/types.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Examples:
ags types Astal* --ignore Gtk3 --ignore Astal3

Flags:
-d, --directory string target directory (default "/home/demeter/.config/ags")
-d, --directory string target directory (default "~/.config/ags")
-h, --help help for types
-i, --ignore stringArray modules that should be ignored
--tsconfig update tsconfig.json
Expand Down
13 changes: 13 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,21 @@
};
};
in {
lib.bundle = import ./nix/bundle.nix {inherit self pkgs;};

packages.${system} = astal.packages.${system} // agsPackages;

templates.default = {
path = ./nix/template;
description = "Example flake.nix that shows how to package a project.";
welcomeText = ''
# Getting Started
- run `nix develop` to enter the development environment
- run `ags init -f` to setup an initial ags project
- run `ags run .` to run the project
'';
};

homeManagerModules = {
default = self.homeManagerModules.ags;
ags = import ./nix/hm-module.nix self;
Expand Down
58 changes: 58 additions & 0 deletions nix/bundle.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{
self,
pkgs,
}: {
pkgs ? pkgs,
entry ? "app.ts",
src,
name,
extraPackages ? [],
}:
pkgs.stdenvNoCC.mkDerivation {
inherit src name;

nativeBuildInputs = with pkgs; [
wrapGAppsHook
gobject-introspection
gnused
self.packages.${system}.ags
];

buildInputs =
extraPackages
++ [
pkgs.gjs
self.packages.${pkgs.system}.astal4
self.packages.${pkgs.system}.astal3
self.packages.${pkgs.system}.io
];

preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : ${with pkgs;
lib.makeBinPath (extraPackages
++ [
dart-sass
fzf
gtk3
])}
)
'';

installPhase = ''
runHook preInstall
mkdir -p $out/bin
mkdir -p $out/share
cp -r * $out/share
ags bundle ${entry} $out/bin/${name} --src $out/share
chmod +x $out/bin/${name}
if ! head -n 1 "$out/bin/${name}" | grep -q "^#!"; then
sed -i '1i #!/${pkgs.gjs}/bin/gjs -m' "$out/bin/${name}"
fi
runHook postInstall
'';
}
13 changes: 6 additions & 7 deletions nix/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@
}: let
inherit (builtins) replaceStrings readFile;

datadirs =
writers.writeNu "datadirs" /*nu*/ ''
$env.XDG_DATA_DIRS
| split row ":"
| filter { $"($in)/gir-1.0" | path exists }
| str join ":"
'';
datadirs = writers.writeNu "datadirs" ''
$env.XDG_DATA_DIRS
| split row ":"
| filter { $"($in)/gir-1.0" | path exists }
| str join ":"
'';

bins = [
gjs
Expand Down
52 changes: 52 additions & 0 deletions nix/template/flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
description = "My Awesome Desktop Shell";

inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";

ags = {
url = "github:aylur/ags";
inputs.nixpkgs.follows = "nixpkgs";
};
};

outputs = {
self,
nixpkgs,
ags,
}: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
packages.${system} = {
default = ags.lib.bundle {
inherit pkgs;
src = ./.;
name = "my-shell";
entry = "app.ts";

# additional libraries and executables to add to gjs' runtime
extraPackages = [
# ags.packages.${system}.battery
# pkgs.fzf
];
};
};

devShells.${system} = {
default = pkgs.mkShell {
buildInputs = [
# includes all Astal libraries
# ags.packages.${system}.agsFull

# includes astal3 astal4 astal-io by default
(ags.packages.${system}.default.overrideAttrs {
extraPackages = [
# cherry pick packages
];
})
];
};
};
};
}

0 comments on commit 967b5c9

Please sign in to comment.