Files
nixos/modules/features/zsh/default.nix

68 lines
1.7 KiB
Nix

{
self,
inputs,
...
}: {
flake.nixosModules.zsh = {
pkgs,
lib,
...
}: {
nixpkgs.overlays = [
(final: prev: {
zsh = self.packages.${pkgs.stdenv.hostPlatform.system}.myZsh;
})
];
programs.zsh = {
enable = true;
enableCompletion = true;
enableBashCompletion = true;
autosuggestions.enable = true;
syntaxHighlighting.enable = true;
histSize = 10000;
};
users.defaultUserShell = pkgs.zsh;
};
perSystem = {
pkgs,
lib,
self',
...
}: {
packages = {
myZsh = inputs.wrappers.wrappers.zsh.wrap {
inherit pkgs;
runtimePkgs = [pkgs.carapace];
zshAliases = {
ls = lib.getExe pkgs.lsd;
cat = lib.getExe pkgs.bat;
lg = lib.getExe pkgs.lazygit;
devenv = lib.getExe pkgs.devenv;
carapace = lib.getExe pkgs.carapace;
man = "man -P \"${lib.getExe pkgs.bat} -p\"";
nsh = "nix-shell -p";
};
zshrc.content = ''
autoload -U compinit && compinit
# export CARAPACE_BRIDGES='zsh,fish,bash,inshellisense' # optional
zstyle ':completion:*' format $'\e[2;37mCompleting %d\e[m'
source <(${lib.getExe pkgs.carapace} _carapace)
setopt NO_CASE_GLOB
export EDITOR=nvim
eval "$(${lib.getExe pkgs.devenv} hook zsh)"
eval "$(${lib.getExe self.packages.${pkgs.host.stdenv.hostPlatform.system}.ohMyPosh} init zsh)"
${lib.getExe pkgs.any-nix-shell} zsh --info-right | source /dev/stdin
'';
};
ohMyPosh = inputs.wrappers.wrappers.oh-my-posh.wrap {
inherit pkgs;
configFile = ./config.toml;
};
};
};
}