mirror of
https://github.com/ellmau/nixos.git
synced 2025-12-19 09:29:36 +01:00
69 lines
2.1 KiB
Nix
69 lines
2.1 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib; {
|
|
options.elss.zsh.enable = mkEnableOption "Setup systemwide zsh";
|
|
config = let
|
|
inherit (elss.withConfig config) mapAllUsers;
|
|
cfg = config.elss.zsh;
|
|
in
|
|
mkIf cfg.enable {
|
|
environment = {
|
|
shells = [pkgs.zsh];
|
|
pathsToLink = ["/share/zsh/"];
|
|
sessionVariables = rec {
|
|
XDG_CACHE_HOME = "\${HOME}/.cache";
|
|
XDG_CONFIG_HOME = "\${HOME}/.config";
|
|
XDG_BIN_HOME = "\${HOME}/.local/bin";
|
|
XDG_DATA_HOME = "\${HOME}/.local/share";
|
|
|
|
PATH = [
|
|
"\${XDG_BIN_HOME}"
|
|
];
|
|
};
|
|
};
|
|
programs = {
|
|
zsh = {
|
|
enable = true;
|
|
enableCompletion = true;
|
|
enableGlobalCompInit = true;
|
|
autosuggestions.enable = true;
|
|
syntaxHighlighting = {
|
|
enable = true;
|
|
highlighters = ["main" "brackets" "root" "line"];
|
|
#styles = { cursor = "standout,underline"; };
|
|
};
|
|
setOptions = ["auto_pushd" "correct" "rcexpandparam" "numericglobsort" "nobeep" "appendhistory"];
|
|
shellInit = ''
|
|
if [[ $TERM == "dumb" ]]; then
|
|
INSIDE_EMACS=1
|
|
fi;
|
|
'';
|
|
|
|
interactiveShellInit = ''
|
|
source ${pkgs.zsh-nix-shell}/share/zsh-nix-shell/nix-shell.plugin.zsh
|
|
|
|
zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX + $#SUFFIX) / 3 )) )'
|
|
zstyle ':completion:*:descriptions' format "- %d -"
|
|
zstyle ':completion:*:corrections' format "- %d - (errors %e})"
|
|
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
|
|
zstyle ':completion:*:manuals' separate-sections true
|
|
zstyle ':completion:*:manuals.(^1*)' insert-sections true
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion:*' verbose yes
|
|
zstyle ':completion:*' squeeze-slashes true
|
|
zstyle ':completion:*:*:kill:*' menu yes select
|
|
zstyle ':completion:*:kill:*' force-list always
|
|
'';
|
|
};
|
|
};
|
|
|
|
users.users = mapAllUsers (
|
|
_: {shell = pkgs.zsh;}
|
|
);
|
|
};
|
|
}
|