mirror of
https://github.com/nix-community/home-manager.git
synced 2024-12-15 17:50:53 +00:00
2116fe6b50
This patch moves both home.sessionVariables and programs.zsh.sessionVariables from .zshrc to .zshenv. Additionally, these two kinds of session variables will not be sourced more than once to allow user-customized ones to take effect. Before, session variables are in .zshrc, which causes non-interactive shells to not be able to get those variables. For example, running a command through SSH is in a non-interactive and non-login shell, which suffers from this. With this patch, all kinds of shells can get session variables. The reason why these session variables are not moved to .zprofile is that programs started by systemd user instances are not able to get variables defined in that file. For example, GNOME Terminal (gnome-terminal-server.service) is one of these programs and doesn't get variables defined in .zprofile. As a result, the shells it starts, which are interactive and non-login, do not get those variables. Fixes #2445 Related NixOS/nixpkgs#33219 Related NixOS/nixpkgs#45784 This file is not formatted before and is excluded by ./format, so I don't format it.
24 lines
446 B
Nix
24 lines
446 B
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
{
|
|
config = {
|
|
programs.zsh = {
|
|
enable = true;
|
|
|
|
sessionVariables = {
|
|
V1 = "v1";
|
|
V2 = "v2-${config.programs.zsh.sessionVariables.V1}";
|
|
};
|
|
};
|
|
|
|
test.stubs.zsh = { };
|
|
|
|
nmt.script = ''
|
|
assertFileExists home-files/.zshenv
|
|
assertFileRegex home-files/.zshenv 'export V1="v1"'
|
|
assertFileRegex home-files/.zshenv 'export V2="v2-v1"'
|
|
'';
|
|
};
|
|
}
|