diff --git a/modules/base/zsh/default.nix b/modules/base/zsh/default.nix index 10ddfcf4..ce196704 100644 --- a/modules/base/zsh/default.nix +++ b/modules/base/zsh/default.nix @@ -39,7 +39,6 @@ let }); in { - programs.zsh.enable = true; chvp.base.zfs.systemLinks = [{ path = "/root/.local/share/autojump"; type = "cache"; }]; chvp.base.zfs.homeLinks = [{ path = ".local/share/autojump"; type = "cache"; }]; home-manager.users.charlotte = { ... }: (base "/home/charlotte"); diff --git a/patches/217205.patch b/patches/217205.patch new file mode 100644 index 00000000..46d04bc0 --- /dev/null +++ b/patches/217205.patch @@ -0,0 +1,98 @@ +From 878c20de9c2b9fc4b3e777f5a4d9f5c3b2d723b5 Mon Sep 17 00:00:00 2001 +From: Lin Jian +Date: Mon, 20 Feb 2023 02:26:31 +0800 +Subject: [PATCH] zsh: set environment variables in zshenv instead of zprofile + +This patch fixes two issues: + +1. The file in which environment variables are set is inconsistent. + - This file sets them in zprofile since 2011[1]. This is the case + when programs.zsh.enable is not set. + - Zsh module sets them in zshenv since the very beginning in + 2012[2]. This is the case when programs.zsh.enable is set. + +2. Setting environment variables in zprofile overrides what users set +in .zshenv. See these[3] home-manager[4] issues[5]. + +[1]: 0009c1f650ba619de97df36322fbd0346db0c099 +[2]: ffa4b28dcec622c98c1491a09c9b254dc13b0741 +[3]: https://github.com/nix-community/home-manager/issues/2751#issuecomment-1048682643 +[4]: https://github.com/nix-community/home-manager/issues/2991 +[5]: https://github.com/nix-community/home-manager/issues/3681#issuecomment-1436054233 +--- + .../manual/release-notes/rl-2305.section.md | 2 ++ + pkgs/shells/zsh/default.nix | 24 +++++++++---------- + 2 files changed, 14 insertions(+), 12 deletions(-) + +diff --git a/nixos/doc/manual/release-notes/rl-2305.section.md b/nixos/doc/manual/release-notes/rl-2305.section.md +index 3e63ddced6115..bb3c5c3356eab 100644 +--- a/nixos/doc/manual/release-notes/rl-2305.section.md ++++ b/nixos/doc/manual/release-notes/rl-2305.section.md +@@ -187,6 +187,8 @@ In addition to numerous new and upgraded packages, this release has the followin + The `{aclUse,superUser,disableActions}` attributes have been renamed, `pluginsConfig` now also accepts an attribute set of booleans, passing plain PHP is deprecated. + Same applies to `acl` which now also accepts structured settings. + ++- The `zsh` package is now configured with `--enable-zshenv=${placeholder "out"}/etc/zshenv` instead of `--enable-zprofile=${placeholder "out"}/etc/zprofile` and contents in the previous `$out/zsh/zprofile` is modified and moved to `$out/zsh/zshenv`. This change only affects NixOS systems where `programs.zsh.enable` is `false`: `zsh` now sources `/etc/profile` in the system-level zshenv instead of zprofile. ++ + - The `wordpress` service now takes configuration via the `services.wordpress.sites..settings` attribute set, `extraConfig` is still available to append additional text to `wp-config.php`. + + - To reduce closure size in `nixos/modules/profiles/minimal.nix` profile disabled installation documentations and manuals. Also disabled `logrotate` and `udisks2` services. +diff --git a/pkgs/shells/zsh/default.nix b/pkgs/shells/zsh/default.nix +index 5a003b889a04a..1fe94a9506db7 100644 +--- a/pkgs/shells/zsh/default.nix ++++ b/pkgs/shells/zsh/default.nix +@@ -42,7 +42,7 @@ stdenv.mkDerivation { + "--enable-multibyte" + "--with-tcsetpgrp" + "--enable-pcre" +- "--enable-zprofile=${placeholder "out"}/etc/zprofile" ++ "--enable-zshenv=${placeholder "out"}/etc/zshenv" + "--disable-site-fndir" + ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform && !stdenv.hostPlatform.isStatic) [ + # Also see: https://github.com/buildroot/buildroot/commit/2f32e668aa880c2d4a2cce6c789b7ca7ed6221ba +@@ -64,10 +64,10 @@ stdenv.mkDerivation { + postInstall = '' + make install.info install.html + mkdir -p $out/etc/ +- cat > $out/etc/zprofile < $out/etc/zshenv <