config/modules/home/apps/helpers/ags/default.nix
2025-05-28 17:04:41 -04:00

108 lines
2.7 KiB
Nix

{
options,
config,
lib,
inputs,
pkgs,
...
}:
with lib;
with lib.custom; let
cfg = config.apps.helpers.ags;
requiredDeps = with pkgs; [
config.wayland.windowManager.hyprland.package
bash
coreutils
gawk
sassc
imagemagick
procps
ripgrep
util-linux
gtksourceview
webkitgtk_4_1
brightnessctl
gvfs
accountsservice
swww
gnome-control-center
nautilus
totem
loupe
];
guiDeps = with pkgs; [
gnome-control-center
overskride
wlogout
];
dependencies = requiredDeps ++ guiDeps;
in {
options.apps.helpers.ags = with types; {
enable = mkBoolOpt false "Enable AGS";
};
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
programs.ags = {
enable = true;
# Generate _colors.scss with our theme colors
configDir = pkgs.runCommand "ags-config" {} ''
cp -r ${./cfg} $out
chmod -R +w $out
cat > $out/scss/_colors.scss << EOF
/* Generated from lib/theme/default.nix */
$rosewater: ${colors.rosewater.hex};
$flamingo: ${colors.flamingo.hex};
$pink: ${colors.pink.hex};
$mauve: ${colors.mauve.hex};
$red: ${colors.red.hex};
$maroon: ${colors.maroon.hex};
$peach: ${colors.peach.hex};
$yellow: ${colors.yellow.hex};
$green: ${colors.green.hex};
$teal: ${colors.teal.hex};
$sky: ${colors.sky.hex};
$sapphire: ${colors.sapphire.hex};
$blue: ${colors.blue.hex};
$lavender: ${colors.lavender.hex};
$text: ${colors.text.hex};
$subtext1: ${colors.subtext1.hex};
$subtext0: ${colors.subtext0.hex};
$overlay2: ${colors.overlay2.hex};
$overlay1: ${colors.overlay1.hex};
$overlay0: ${colors.overlay0.hex};
$surface2: ${colors.surface2.hex};
$surface1: ${colors.surface1.hex};
$surface0: ${colors.surface0.hex};
$base: ${colors.base.hex};
$mantle: ${colors.mantle.hex};
$crust: ${colors.crust.hex};
/* Default accent color */
$accent: ${colors.sapphire.hex};
EOF
'';
extraPackages = dependencies;
};
systemd.user.services.ags = {
Unit = {
Description = "Aylur's Gtk Shell";
PartOf = [
"tray.target"
"hyprland-session.target"
];
};
Service = {
Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath dependencies}";
ExecStart = "${config.programs.ags.package}/bin/ags";
Restart = "on-failure";
};
Install.WantedBy = ["hyprland-session.target"];
};
};
}