Rewrite my ./generated/modules/traveldroid/desktop/stylix.nix to integrate nicely with my existing flake.nix en host.nix Avoid infinite recursion Just look at how to rewrite this, ignore previous interactions around stylix.nix This version worked, stay as close to it as you can. Specifically avoid this error: error: The option `home-manager.users.henrov.stylix' does not exist. Definition values: - In `/nix/store/lbvakwy35r61bb10s9pj921dsndq5g2p-source/Droidnix/generated/modules/traveldroid/desktop/stylix.nix': { enable = true; targets = { gtk = { enable = true; ... Just add gtk.target = enable I added gtk.nix for reference I added thunar.nix for reference ------------------------------------------------------------------------ { lib, config, pkgs, ... }: let username = config.defaultUser or "henrov"; moduleName = "stylix"; assetPath = ../../../assets/system/conf/${moduleName}; # Read all files in asset directory programFiles = builtins.readDir assetPath; files = lib.genAttrs (builtins.attrNames programFiles) (name: { source = "${assetPath}/${name}"; }); # Read 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 ]; # Home Manager user settings _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; # 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; }; }; }; } ------------------------------------------------------------------------ flake.nix { description = "Droidnix: A dendritic NixOS + Home Manager configuration"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; import-tree.url = "github:vic/import-tree"; stylix = { url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; zen-browser = { url = "github:youwen5/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland.url = "github:hyprwm/Hyprland"; }; outputs = { self, nixpkgs, home-manager, import-tree, stylix, hyprland, zen-browser, ... }: let system = "x86_64-linux"; flakeRoot = self; in { nixosConfigurations = { traveldroid = nixpkgs.lib.nixosSystem { inherit system; modules = [ ./generated/hosts/traveldroid/host.nix ]; specialArgs = { inherit flakeRoot; inherit home-manager import-tree stylix hyprland zen-browser; }; }; }; }; } ------------------------------------------------------------------------ host.nix { lib, config, pkgs, flakeRoot, import-tree, home-manager, ... }: let hostname = "traveldroid"; modulesPath = "${flakeRoot}/generated/modules/${hostname}"; usersPath = "${flakeRoot}/generated/users"; hostModules = import-tree modulesPath; globalUsers = import-tree usersPath; allModules = hostModules.imports ++ globalUsers.imports; in { ################################# # Core system config ################################# networking.hostName = hostname; system.stateVersion = "26.05"; ################################# # Imports ################################# imports = [ ./boot.nix ./hardware-configuration.nix # REQUIRED for Home Manager home-manager.nixosModules.home-manager ] ++ allModules; ################################# # Home Manager integration ################################# home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; } gtk.nix: { pkgs, config, lib, ... }: let # Resolve the username from the host config username = config.defaultUser or "henrov"; in { ############################ # System-level GTK packages ############################ environment.systemPackages = with pkgs; [ gtk3 gtk4 ]; ############################ # Home Manager user-level GTK configuration ############################ # Directly assign the GTK config to the user, no recursiveUpdate home-manager.users."${username}" = { gtk = { enable = true; # GTK theme theme = { name = "Catppuccin-Mocha-Standard-Blue-Dark"; package = pkgs.magnetic-catppuccin-gtk; }; # Icon theme iconTheme = { name = "Papirus-Dark"; package = pkgs.papirus-icon-theme; }; # Extra GTK3 / GTK4 settings gtk3.extraConfig = { "gtk-application-prefer-dark-theme" = 1; }; gtk4.extraConfig = { "gtk-application-prefer-dark-theme" = 1; }; }; }; } Thunar.nix: { pkgs, config, lib, ... }: let # Resolve the default username from host config username = config.defaultUser or "henrov"; in { ############################ # System-level packages ############################ environment.systemPackages = with pkgs; [ thunar # main file manager thunar-archive-plugin # zip, tar, rar, 7z support thunar-volman # auto-mount removable drives gvfs # support for external drives and network shares xarchiver # optional GUI archive manager ]; ############################ # Home Manager user-level configuration ############################ # Direct assignment to the user avoids recursiveUpdate issues home-manager.users."${username}" = { home.stateVersion = "26.05"; # required home.sessionVariables = { FILE_MANAGER = "thunar"; USERNAME = username; }; }; }