diff --git a/modules/programs/zsh/prezto.nix b/modules/programs/zsh/prezto.nix index be183edc..f824c4dc 100644 --- a/modules/programs/zsh/prezto.nix +++ b/modules/programs/zsh/prezto.nix @@ -13,6 +13,7 @@ let ; cfg = config.programs.zsh.prezto; + cfgZsh = config.programs.zsh; relToDotDir = file: @@ -423,12 +424,30 @@ in config = lib.mkIf cfg.enable ( lib.mkMerge [ { - home.file."${relToDotDir ".zprofile"}".source = "${cfg.package}/share/zsh-prezto/runcoms/zprofile"; - home.file."${relToDotDir ".zlogin"}".source = "${cfg.package}/share/zsh-prezto/runcoms/zlogin"; - home.file."${relToDotDir ".zlogout"}".source = "${cfg.package}/share/zsh-prezto/runcoms/zlogout"; home.packages = [ cfg.package ]; - home.file."${relToDotDir ".zshenv"}".source = "${cfg.package}/share/zsh-prezto/runcoms/zshenv"; + home.file."${relToDotDir ".zprofile"}".text = '' + # Generated by Nix + source ${cfg.package}/share/zsh-prezto/runcoms/zprofile + ${cfgZsh.profileExtra} + ''; + home.file."${relToDotDir ".zlogin"}".text = '' + # Generated by Nix + source ${cfg.package}/share/zsh-prezto/runcoms/zlogin + ${cfgZsh.loginExtra} + ''; + home.file."${relToDotDir ".zlogout"}".text = '' + # Generated by Nix + source ${cfg.package}/share/zsh-prezto/runcoms/zlogout + ${cfgZsh.logoutExtra} + ''; + # Using mkAfter to make sure we load Home-Manager's environment + # variables first (see modules/prgrams/zsh.nix) + home.file."${relToDotDir ".zshenv"}".text = lib.mkAfter '' + # Generated by Nix + source ${cfg.package}/share/zsh-prezto/runcoms/zshenv + ${cfgZsh.envExtra} + ''; home.file."${relToDotDir ".zpreztorc"}".text = '' # Generated by Nix ${optionalString (cfg.caseSensitive != null) '' diff --git a/tests/modules/programs/zsh/prezto.nix b/tests/modules/programs/zsh/prezto.nix index ffb5d183..9a22f6f6 100644 --- a/tests/modules/programs/zsh/prezto.nix +++ b/tests/modules/programs/zsh/prezto.nix @@ -1,5 +1,16 @@ { - programs.zsh.prezto.enable = true; + programs.zsh = { + enable = true; + envExtra = "envExtra"; + profileExtra = "profileExtra"; + loginExtra = "loginExtra"; + logoutExtra = "logoutExtra"; + sessionVariables.FOO = "bar"; + prezto = { + enable = true; + extraConfig = "configExtra"; + }; + }; test.stubs = { zsh-prezto = { @@ -10,11 +21,21 @@ echo '# zlogin' > $out/share/zsh-prezto/runcoms/zlogin echo '# zlogout' > $out/share/zsh-prezto/runcoms/zlogout echo '# zshenv' > $out/share/zsh-prezto/runcoms/zshenv + echo '# zshrc' > $out/share/zsh-prezto/runcoms/zshrc ''; }; }; nmt.script = '' - assertFileExists home-files/.zpreztorc + assertFileContains home-files/.zpreztorc 'configExtra' + assertFileContains home-files/.zprofile 'profileExtra' + assertFileContains home-files/.zlogin 'loginExtra' + assertFileContains home-files/.zlogout 'logoutExtra' + assertFileContains home-files/.zshenv 'envExtra' + # make sure we are loading the environment variables + assertFileContains home-files/.zshenv \ + '. "/home/hm-user/.nix-profile/etc/profile.d/hm-session-vars.sh"' + assertFileContains home-files/.zshenv \ + 'export FOO="bar"' ''; }