Files

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

86 lines
1.6 KiB
Nix
Raw Permalink Normal View History

2025-10-09 14:15:47 +02:00
{
lib,
ags,
astal,
dart-sass,
fzf,
gjs,
gnused,
gobject-introspection,
gtk3,
gtk4-layer-shell,
stdenvNoCC,
wrapGAppsHook3,
wrapGAppsHook4,
}:
{
entry ? "app.ts",
dependencies ? [ ],
enableGtk4 ? false,
...
}@attrs:
stdenvNoCC.mkDerivation (
finalAttrs:
attrs
// {
nativeBuildInputs = (attrs.nativeBuildInputs or [ ]) ++ [
(ags.override { extraPackages = dependencies; })
gnused
gobject-introspection
(if enableGtk4 then wrapGAppsHook4 else wrapGAppsHook3)
];
buildInputs =
(attrs.buildInputs or [ ])
++ dependencies
++ [
gjs
astal.astal4
astal.astal3
astal.io
];
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : ${
lib.makeBinPath (
dependencies
++ [
dart-sass
fzf
gtk3
]
)
}
)
''
+ lib.optionalString enableGtk4 ''
gappsWrapperArgs+=(
--set LD_PRELOAD "${gtk4-layer-shell}/lib/libgtk4-layer-shell.so"
)
''
+ (attrs.preFixup or "");
installPhase =
let
outBin = "$out/bin/${finalAttrs.pname}";
in
# bash
''
runHook preInstall
mkdir -p "$out/bin" "$out/share"
cp -r ./* "$out/share"
ags bundle "${entry}" "${outBin}" -d "SRC='$out/share'"
chmod +x "${outBin}"
if ! head -n 1 "${outBin}" | grep -q "^#!"; then
sed -i '1i #!${gjs}/bin/gjs -m' "${outBin}"
fi
runHook postInstall
'';
}
)