mirror of
https://github.com/LnL7/nix-darwin.git
synced 2024-12-14 11:57:34 +00:00
676ef10377
This should enable `nix run` to work under shells like fish and zsh, as well as making child shells not needlessly reset any environment that should be inherited. Implementation adapted from NixOS.
50 lines
2.1 KiB
Nix
50 lines
2.1 KiB
Nix
{ config, pkgs, ... }:
|
|
|
|
{
|
|
environment.systemPath = [ pkgs.hello ];
|
|
environment.shellAliases.ls = "ls -G";
|
|
environment.interactiveShellInit = "source /etc/environment.d/*.conf";
|
|
|
|
programs.zsh.enable = true;
|
|
programs.zsh.enableCompletion = true;
|
|
programs.zsh.enableBashCompletion = false;
|
|
|
|
programs.zsh.shellInit = "source /etc/zshenv.d/*.conf";
|
|
programs.zsh.interactiveShellInit = "source /etc/zshrc.d/*.conf";
|
|
programs.zsh.loginShellInit = "source /etc/zprofile.d/*.conf";
|
|
programs.zsh.promptInit = "autoload -U promptinit && promptinit && prompt off";
|
|
|
|
programs.zsh.variables.FOO = "42";
|
|
|
|
test = ''
|
|
echo >&2 "checking for share/zsh in /sw"
|
|
test -e ${config.out}/sw/share/zsh
|
|
|
|
echo >&2 "checking setEnvironment in /etc/zshenv"
|
|
fgrep '. ${config.system.build.setEnvironment}' ${config.out}/etc/zshenv
|
|
echo >&2 "checking SHELL in setEnvironment"
|
|
grep 'export SHELL="${pkgs.zsh}/bin/zsh"' ${config.system.build.setEnvironment}
|
|
echo >&2 "checking nix-shell return /etc/zshenv"
|
|
grep 'if test -n "$IN_NIX_SHELL"; then return; fi' ${config.out}/etc/zshenv
|
|
echo >&2 "checking zshenv.d in /etc/zshenv"
|
|
grep 'source /etc/zshenv.d/\*.conf' ${config.out}/etc/zshenv
|
|
|
|
echo >&2 "checking environment.d in /etc/zshrc"
|
|
grep 'source /etc/environment.d/\*.conf' ${config.out}/etc/zshrc
|
|
echo >&2 "checking zshrc.d in /etc/zshrc"
|
|
grep 'source /etc/zshrc.d/\*.conf' ${config.out}/etc/zshrc
|
|
echo >&2 "checking prompt off in /etc/zshrc"
|
|
grep 'prompt off' ${config.out}/etc/zshrc
|
|
echo >&2 "checking compinit in /etc/zshrc"
|
|
grep 'autoload -U compinit && compinit' ${config.out}/etc/zshrc
|
|
echo >&2 "checking bashcompinit in /etc/zshrc"
|
|
grep -vq 'bashcompinit' ${config.out}/etc/zshrc
|
|
|
|
echo >&2 "checking zprofile.d in /etc/zprofile"
|
|
grep 'source /etc/zprofile.d/\*.conf' ${config.out}/etc/zprofile
|
|
echo >&2 "checking zsh variables in /etc/zprofile"
|
|
grep 'FOO="42"' ${config.out}/etc/zprofile
|
|
echo >&2 "checking shell aliases in /etc/zprofile"
|
|
grep 'alias ls="ls -G"' ${config.out}/etc/zprofile
|
|
'';
|
|
}
|