1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2024-12-14 11:57:34 +00:00
nix-darwin/tests/programs-zsh.nix
Andrew Childs 676ef10377 Unify environment configuration and don't run in child shells
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.
2018-10-25 01:00:52 +09:00

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
'';
}