{ config, pkgs, lib, inputs, ... }: let generate-colors = colors: with colors; '' $base00: #${base00}; $base01: #${base01}; $base02: #${base02}; $base03: #${base03}; $base04: #${base04}; $base05: #${base05}; $base06: #${base06}; $base07: #${base07}; $base08: #${base08}; $base09: #${base09}; $base0A: #${base0A}; $base0B: #${base0B}; $base0C: #${base0C}; $base0D: #${base0D}; $base0E: #${base0E}; $base0F: #${base0F}; ''; in { options.modules.ags = { enable = lib.mkEnableOption "Aylur's GTK Shell with optional Stylix support"; full = lib.mkOption { type = lib.types.bool; default = false; description = "Enable all components (AstalBattery, AstalPowerProfiles etc.)"; }; }; config = lib.mkIf config.modules.ags.enable { programs.ags = { enable = true; extraPackages = if config.modules.ags.full then with inputs.ags.packages.${pkgs.system}; [ apps battery bluetooth greet hyprland mpris network notifd powerprofiles tray wireplumber ] else [ ]; }; home.file.".config/theme_colors.scss".text = if config.modules.stylix.enable then generate-colors config.lib.stylix.colors else null; }; }