{ lib, pkgs, config, ... }: let ################################# # Determine default username ################################# username = config.defaultUser or "henrov"; moduleName = "kitty"; ################################# # Paths to assets ################################# assetPath = ../../../assets/traveldroid/conf/${moduleName}; programFiles = builtins.readDir assetPath; # Convert asset files into a nix attribute set files = lib.genAttrs (builtins.attrNames programFiles) (name: { source = "${assetPath}/${name}"; }); in { ################################# # System-wide packages ################################# environment.systemPackages = [ pkgs.kitty ]; ################################# # Home Manager user configuration ################################# _module.args.hmUsers = { ${username} = { # Enable Kitty through Home Manager programs.kitty.enable = true; # Extra user-specific config snippet programs.kitty.extraConfig = '' # Include the Catppuccin-Mocha theme include themes/Catppuccin-Mocha.conf ''; # Map all asset files into ~/.config/kitty/ home.file = lib.mkMerge ( map (name: { ".config/${moduleName}/${name}" = { source = files.${name}.source; }; }) (builtins.attrNames files) ); }; }; }