diff --git a/Droidnix/README.org b/Droidnix/README.org index b4cf9e115..c14ea28e2 100644 --- a/Droidnix/README.org +++ b/Droidnix/README.org @@ -1035,28 +1035,28 @@ in ** =generated/modules/terminals/kitty.nix= This file sets up Kitty terminal #+BEGIN_SRC nix :tangle generated/modules/terminals/kitty.nix :noweb tangle :mkdirp yes :eval never-html -{ lib, config, pkgs, flakeRoot, ... }: +{ lib, config, flakeRoot, ... }: let - # --- Module metadata --- - moduleName = "kitty"; # Change per module - assetPath = "${flakeRoot}/assets/system/conf/${moduleName}"; # Path to kitty config - username = config.defaultUser or "henrov"; # Use default user - enableProgram = config.enableKitty or true; # Toggle for this module + # --- Module-specific variables --- + moduleName = "kitty"; + username = config.defaultUser or "henrov"; + assetPath = "${flakeRoot}/assets/system/conf/${moduleName}"; - # Read asset files - assetFiles = builtins.readDir assetPath; - - # Map files → attrset - files = lib.genAttrs (builtins.attrNames assetFiles) (name: { + # Read all files in the asset directory + programFiles = builtins.readDir assetPath; + files = lib.genAttrs (builtins.attrNames programFiles) (name: { src = "${assetPath}/${name}"; }); + + # Top-level enable toggle + enableProgram = config.enableKitty or true; in { - # --- Top-level toggle option --- + # --- Declare the top-level toggle for this module --- options.enableKitty = lib.mkEnableOption "Enable Kitty terminal integration"; - # --- Apply configuration only if enabled --- + # --- Actual configuration applied only if enabled --- config = lib.mkIf enableProgram { # Dendritic container for this program @@ -1066,21 +1066,22 @@ in assetsDir = assetPath; files = files; - # Program-specific metadata - theme = "catppuccin-mocha"; + # Example program-specific metadata + theme = "Catppuccin-Mocha"; }; - # Deploy config files to XDG config + # Deploy config files to user's ~/.config home-manager.users.${username} = { programs.kitty.enable = true; - xdg.configFile = lib.mapAttrs' (name: value: { - name = "${moduleName}/${name}"; - value.source = value.src; - }) files; + xdg.configFile = + lib.mapAttrs' (name: value: { + name = "${moduleName}/${name}"; + value.source = value.src; + }) files; }; - # Optional systemd service to sync Kitty config (example) + # Optional: systemd service to sync / deploy configuration systemd.services."${moduleName}-sync" = { description = "Sync ${moduleName} configuration"; wantedBy = [ "multi-user.target" ]; @@ -1092,19 +1093,23 @@ in ExecStart = '' set -euo pipefail CONF="${assetPath}" + USER_HOME="/home/${username}" - # Sync each file (example logic) + # Copy all asset files into user's config directory for f in ${lib.concatStringsSep " " (builtins.attrNames files)}; do - cp -u "$CONF/$f" "$USER_HOME/.config/${moduleName}/$f" + cp -u "$CONF/$f" "$USER_HOME/.config/${moduleName}/$f" done ''; }; + # Restart service if assets change restartTriggers = [ assetPath ]; - # Use system-wide binaries without referencing pkgs directly + # Minimal PATH for the service path = [ - "/run/current-system/sw/bin/coreutils" + # Use symbolic references if needed, e.g., coreutils binaries + # pkgs.coreutils + # pkgs.gnugrep ]; }; }; diff --git a/Droidnix/generated/modules/terminals/kitty.nix b/Droidnix/generated/modules/terminals/kitty.nix index 6d25c216b..64bc77a63 100644 --- a/Droidnix/generated/modules/terminals/kitty.nix +++ b/Droidnix/generated/modules/terminals/kitty.nix @@ -1,25 +1,25 @@ -{ lib, config, pkgs, flakeRoot, ... }: +{ lib, config, flakeRoot, ... }: let - # --- Module metadata --- - moduleName = "kitty"; # Change per module - assetPath = "${flakeRoot}/assets/system/conf/${moduleName}"; # Path to kitty config - username = config.defaultUser or "henrov"; # Use default user - enableProgram = config.enableKitty or true; # Toggle for this module + # --- Module-specific variables --- + moduleName = "kitty"; + username = config.defaultUser or "henrov"; + assetPath = "${flakeRoot}/assets/system/conf/${moduleName}"; - # Read asset files - assetFiles = builtins.readDir assetPath; - - # Map files → attrset - files = lib.genAttrs (builtins.attrNames assetFiles) (name: { + # Read all files in the asset directory + programFiles = builtins.readDir assetPath; + files = lib.genAttrs (builtins.attrNames programFiles) (name: { src = "${assetPath}/${name}"; }); + + # Top-level enable toggle + enableProgram = config.enableKitty or true; in { - # --- Top-level toggle option --- + # --- Declare the top-level toggle for this module --- options.enableKitty = lib.mkEnableOption "Enable Kitty terminal integration"; - # --- Apply configuration only if enabled --- + # --- Actual configuration applied only if enabled --- config = lib.mkIf enableProgram { # Dendritic container for this program @@ -29,21 +29,22 @@ in assetsDir = assetPath; files = files; - # Program-specific metadata - theme = "catppuccin-mocha"; + # Example program-specific metadata + theme = "Catppuccin-Mocha"; }; - # Deploy config files to XDG config + # Deploy config files to user's ~/.config home-manager.users.${username} = { programs.kitty.enable = true; - xdg.configFile = lib.mapAttrs' (name: value: { - name = "${moduleName}/${name}"; - value.source = value.src; - }) files; + xdg.configFile = + lib.mapAttrs' (name: value: { + name = "${moduleName}/${name}"; + value.source = value.src; + }) files; }; - # Optional systemd service to sync Kitty config (example) + # Optional: systemd service to sync / deploy configuration systemd.services."${moduleName}-sync" = { description = "Sync ${moduleName} configuration"; wantedBy = [ "multi-user.target" ]; @@ -55,19 +56,23 @@ in ExecStart = '' set -euo pipefail CONF="${assetPath}" + USER_HOME="/home/${username}" - # Sync each file (example logic) + # Copy all asset files into user's config directory for f in ${lib.concatStringsSep " " (builtins.attrNames files)}; do - cp -u "$CONF/$f" "$USER_HOME/.config/${moduleName}/$f" + cp -u "$CONF/$f" "$USER_HOME/.config/${moduleName}/$f" done ''; }; + # Restart service if assets change restartTriggers = [ assetPath ]; - # Use system-wide binaries without referencing pkgs directly + # Minimal PATH for the service path = [ - "/run/current-system/sw/bin/coreutils" + # Use symbolic references if needed, e.g., coreutils binaries + # pkgs.coreutils + # pkgs.gnugrep ]; }; };