diff --git a/pkgs/shells/fish/default.nix b/pkgs/shells/fish/default.nix index 82ba76c005b8b..40a8a0e278efa 100644 --- a/pkgs/shells/fish/default.nix +++ b/pkgs/shells/fish/default.nix @@ -148,6 +148,20 @@ let hash = "sha256-YUyfVkPNB5nfOROV+mu8NklCe7g5cizjsRTTu8GjslA="; }; + patches = [ + # We don’t want to run `/usr/libexec/path_helper` on nix-darwin, + # as it pulls in paths not tracked in the system configuration + # and messes up the order of `$PATH`. Upstream are unfortunately + # unwilling to accept a change for this and have recommended that + # it should be a distro‐specific patch intesad. + # + # See: + # + # * + # * + ./nix-darwin-path.patch + ]; + # Fix FHS paths in tests postPatch = '' # src/fish_tests.cpp diff --git a/pkgs/shells/fish/nix-darwin-path.patch b/pkgs/shells/fish/nix-darwin-path.patch new file mode 100644 index 0000000000000..9651103a2ec47 --- /dev/null +++ b/pkgs/shells/fish/nix-darwin-path.patch @@ -0,0 +1,13 @@ +diff --git a/share/config.fish b/share/config.fish +index d85fd1e185..1d2b5dd598 100644 +--- a/share/config.fish ++++ b/share/config.fish +@@ -156,7 +156,7 @@ + # Some things should only be done for login terminals + # This used to be in etc/config.fish - keep it here to keep the semantics + # +-if status --is-login ++if status --is-login && not set -q __NIX_DARWIN_SET_ENVIRONMENT_DONE + if command -sq /usr/libexec/path_helper + # Adapt construct_path from the macOS /usr/libexec/path_helper + # executable for fish; see