Update zsh patch

This commit is contained in:
Charlotte Van Petegem 2023-03-13 10:09:10 +01:00
parent 4e49d3ad2d
commit 113b9ffa2c
No known key found for this signature in database
GPG key ID: 019E764B7184435A

View file

@ -1,4 +1,4 @@
From 878c20de9c2b9fc4b3e777f5a4d9f5c3b2d723b5 Mon Sep 17 00:00:00 2001
From 8e2e741ab5bdea119a34013b1387eb3f281841cb Mon Sep 17 00:00:00 2001
From: Lin Jian <me@linj.tech>
Date: Mon, 20 Feb 2023 02:26:31 +0800
Subject: [PATCH] zsh: set environment variables in zshenv instead of zprofile
@ -6,39 +6,55 @@ 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.
- This file sets them in zprofile when programs.zsh.enable is not
set.
- Zsh module sets them in zshenv 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].
in .zshenv. See these[1] home-manager[2] issues[3].
[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
/etc/profile is also changed to /etc/set-environment. Here is a
comparison:
Using /etc/profile:
- Pros
- config.environment.shellInit is sourced in all zsh
- Cons
- config.environment.loginShellInit is also sourced in non-login zsh
- config.programs.bash.shellInit is also sourced in all zsh
- config.programs.bash.loginShellInit is also sourced in all zsh
Using /etc/set-environment:
- Pros
- config.programs.bash.shellInit is not sourced in any zsh
- config.programs.bash.loginShellInit is not sourced in any zsh
- Cons
- config.environment.shellInit is not sourced in any zsh
- config.environment.loginShellInit is not sourced in any zsh
[1]: https://github.com/nix-community/home-manager/issues/2751#issuecomment-1048682643
[2]: https://github.com/nix-community/home-manager/issues/2991
[3]: 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(-)
pkgs/shells/zsh/default.nix | 28 ++++++++++---------
2 files changed, 17 insertions(+), 13 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
index 3e63ddced6115..b3bf583236de1 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 `zsh` package changes the way to set environment variables on NixOS systems where `programs.zsh.enable` equals `false`. It now sources `/etc/set-environment` when reading the system-level `zshenv` file. Before, it sourced `/etc/profile` when reading the system-level `zprofile` file.
+
- The `wordpress` service now takes configuration via the `services.wordpress.sites.<name>.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
index 5a003b889a04a..3a5a83ad1f8c1 100644
--- a/pkgs/shells/zsh/default.nix
+++ b/pkgs/shells/zsh/default.nix
@@ -42,7 +42,7 @@ stdenv.mkDerivation {
@ -50,7 +66,7 @@ index 5a003b889a04a..1fe94a9506db7 100644
"--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 {
@@ -64,34 +64,36 @@ stdenv.mkDerivation {
postInstall = ''
make install.info install.html
mkdir -p $out/etc/
@ -64,7 +80,10 @@ index 5a003b889a04a..1fe94a9506db7 100644
else
emulate bash
alias shopt=false
@@ -75,23 +75,23 @@ if test -e /etc/NIXOS; then
- . /etc/profile
+ if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]; then
+ . /etc/set-environment
+ fi
unalias shopt
emulate zsh
fi