{ lib, config, pkgs, flakeRoot,... }: let username = config.defaultUser or "henrov"; moduleName = "stylix"; # Path to stylix assets assetPath = ../../../assets/system/conf/${moduleName}; # Read all files in the asset directory programFiles = builtins.readDir assetPath; files = lib.genAttrs (builtins.attrNames programFiles) (name: { source = "${assetPath}/${name}"; }); # Optional stylix.conf stylixConfFile = "${assetPath}/stylix.conf"; stylixConf = if builtins.pathExists stylixConfFile then builtins.readFile stylixConfFile else ""; # Cursor defaults cursorName = "phinger-cursors-light"; cursorSize = 24; in { ############################ # System packages ############################ environment.systemPackages = [ pkgs.feh pkgs.st ]; stylix = { enable = true; base16Scheme = "${flakeRoot}/assets/system/theming/stylix/catppuccin-mocha.yaml"; polarity = "dark"; targets = { gtk = { enable = true; }; }; }; imports = [ inputs.stylix.nixosModules.stylix ]; ############################ # Home Manager user settings ############################ # Use the _module.args.hmUsers style to avoid "option does not exist" _module.args.hmUsers = { "${username}" = { # Copy all stylix config files into ~/.config/stylix/ xdg.configFile = lib.mapAttrs' (name: value: { name = "${moduleName}/${name}"; value = { inherit (value) source; }; }) files; # Optionally include stylix.conf home.file."${moduleName}/stylix.conf".text = stylixConf; # Session variables home.sessionVariables = { STYLIX_CONF = "$HOME/.config/stylix/stylix.conf"; XCURSOR_THEME = cursorName; XCURSOR_SIZE = toString cursorSize; HYPRCURSOR_THEME = cursorName; HYPRCURSOR_SIZE = toString cursorSize; }; }; }; }