mirror of
https://github.com/Theaninova/TheaninovOS.git
synced 2025-12-11 02:56:27 +00:00
109 lines
1.9 KiB
Nix
109 lines
1.9 KiB
Nix
{
|
|
writeShellScript,
|
|
ags,
|
|
matugen,
|
|
hyprland,
|
|
stdenv,
|
|
cage,
|
|
swww,
|
|
esbuild,
|
|
dart-sass,
|
|
fd,
|
|
fzf,
|
|
brightnessctl,
|
|
gbmonctl,
|
|
kitty,
|
|
accountsservice,
|
|
slurp,
|
|
wf-recorder,
|
|
wl-clipboard,
|
|
wayshot,
|
|
swappy,
|
|
hyprpicker,
|
|
pavucontrol,
|
|
networkmanager,
|
|
gtk3,
|
|
which,
|
|
}:
|
|
let
|
|
name = "asztal";
|
|
|
|
agsPackage = ags.override { extraPackages = [ accountsservice ]; };
|
|
|
|
dependencies = [
|
|
which
|
|
dart-sass
|
|
fd
|
|
fzf
|
|
brightnessctl
|
|
kitty
|
|
gbmonctl
|
|
swww
|
|
matugen
|
|
hyprland
|
|
slurp
|
|
wf-recorder
|
|
wl-clipboard
|
|
wayshot
|
|
swappy
|
|
hyprpicker
|
|
pavucontrol
|
|
networkmanager
|
|
gtk3
|
|
];
|
|
|
|
addBins = list: builtins.concatStringsSep ":" (builtins.map (p: "${p}/bin") list);
|
|
|
|
greeter = writeShellScript "greeter" ''
|
|
export PATH=$PATH:${addBins dependencies}
|
|
${cage}/bin/cage -ds -m last ${agsPackage}/bin/ags -- -c ${config}/greeter.js
|
|
'';
|
|
|
|
desktop = writeShellScript name ''
|
|
export PATH=$PATH:${addBins dependencies}
|
|
${agsPackage}/bin/ags -b ${name} -c ${config}/config.js $@
|
|
'';
|
|
|
|
config = stdenv.mkDerivation {
|
|
inherit name;
|
|
src = ./.;
|
|
|
|
buildPhase = ''
|
|
${esbuild}/bin/esbuild \
|
|
--bundle ./main.ts \
|
|
--outfile=main.js \
|
|
--format=esm \
|
|
--external:resource://\* \
|
|
--external:gi://\* \
|
|
|
|
${esbuild}/bin/esbuild \
|
|
--bundle ./greeter/greeter.ts \
|
|
--outfile=greeter.js \
|
|
--format=esm \
|
|
--external:resource://\* \
|
|
--external:gi://\* \
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r assets $out
|
|
cp -r style $out
|
|
cp -r greeter $out
|
|
cp -r widget $out
|
|
cp -f main.js $out/config.js
|
|
cp -f greeter.js $out/greeter.js
|
|
'';
|
|
};
|
|
in
|
|
stdenv.mkDerivation {
|
|
inherit name;
|
|
src = config;
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp -r . $out
|
|
cp ${desktop} $out/bin/${name}
|
|
cp ${greeter} $out/bin/greeter
|
|
'';
|
|
}
|