{ lib, config, pkgs, flakeRoot, ... }: let # Use defaultUser or fallback to "henrov" username = config.defaultUser or "henrov"; generatedZsh = "${flakeRoot}/generated/.config/zsh/.zshrc"; in { ################################# # Install Zsh system-wide ################################# environment.systemPackages = [ pkgs.zsh ]; ################################# # Home Manager user configuration ################################# home-manager.users = { ${username} = { programs.zsh = { enable = true; enableCompletion = true; # autocd = true; ohMyZsh = { enable = true; theme = ""; plugins = [ "git" "sudo" "extract" "colored-man-pages" "command-not-found" "history" "docker" "kubectl" ]; }; # autosuggestions.enable = true; syntaxHighlighting.enable = true; }; # Use ~/.config/zsh as ZDOTDIR home.sessionVariables = { ZDOTDIR = "${config.home.homeDirectory}/.config/zsh"; }; # Deploy the generated .zshrc home.file.".config/zsh/.zshrc".source = generatedZsh; }; }; }