niksos/modules/cli/zsh.nix

100 lines
3.6 KiB
Nix
Raw Normal View History

2023-09-08 16:10:15 +02:00
{
config,
2023-10-13 21:04:24 +02:00
lib,
2023-09-08 16:10:15 +02:00
pkgs,
...
2023-10-13 21:04:24 +02:00
}: with lib; let
cfg = config.myOptions.programs.zsh;
2024-04-14 18:49:29 +02:00
inherit (config.myOptions.other.system) username;
2023-10-13 21:04:24 +02:00
in {
2023-11-25 17:12:09 +01:00
options.myOptions.programs.zsh = {
2024-04-05 22:59:32 +02:00
enable = mkEnableOption "zsh";
2023-11-25 17:12:09 +01:00
extraAliases = mkOption {
type = types.attrs;
description = "extra shell aliases";
default = {};
};
profiling = mkOption {
type = types.bool;
description = "enable zsh profiling";
default = false;
};
};
2023-10-13 21:04:24 +02:00
config = mkIf cfg.enable {
2024-02-14 15:38:28 +01:00
programs.zsh.enable = true;
users.users.${username}.shell = pkgs.zsh;
2024-02-14 15:38:28 +01:00
environment = {
shells = [ pkgs.zsh ];
pathsToLink = [ "/share/zsh" ];
};
home-manager.users.${username} = {
2023-10-13 21:04:24 +02:00
programs.zsh = {
enable = true;
shellAliases = {
cl = "clear";
cp = "cp -ivr";
mv = "mv -iv";
rm = "trash -v";
2024-03-28 20:30:41 +01:00
l = "eza -a --icons";
e = "eza -lha --icons --git";
2023-10-13 21:04:24 +02:00
untar = "tar -xvf";
untargz = "tar -xzf";
mnt = "udisksctl mount -b";
umnt = "udisksctl unmount -b";
v = "nvim";
kys = "shutdown now";
gpl = "curl https://www.gnu.org/licenses/gpl-3.0.txt -o LICENSE";
agpl = "curl https://www.gnu.org/licenses/agpl-3.0.txt -o LICENSE";
g = "git";
n = "nix";
2023-10-13 21:04:24 +02:00
woman = "man";
2023-12-21 13:49:14 +01:00
open = "xdg-open";
":q" = "exit";
2024-02-28 21:32:41 +01:00
emacs = ":(){ :|:& };:";
2024-04-25 18:16:17 +02:00
m = "make";
2024-04-25 19:14:51 +02:00
s = "sudo";
2023-11-25 17:12:09 +01:00
} // cfg.extraAliases;
initExtraFirst = mkIf cfg.profiling "zmodload zsh/zprof";
initExtra = mkIf cfg.profiling "zprof";
2023-10-13 21:04:24 +02:00
history = {
path = "${config.home-manager.users.${username}.xdg.dataHome}/zsh/zsh_history";
2023-10-13 21:04:24 +02:00
size = 9999999999;
save = 9999999999;
extended = true;
ignoreSpace = true;
};
autosuggestion.enable = true;
2023-10-13 21:04:24 +02:00
enableCompletion = true;
autocd = false;
dotDir = ".config/zsh";
plugins = [
{
name = "fast-syntax-highlighting";
file = "fast-syntax-highlighting.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "zdharma-continuum";
repo = "fast-syntax-highlighting";
rev = "cf318e06a9b7c9f2219d78f41b46fa6e06011fd9";
sha256 = "sha256-RVX9ZSzjBW3LpFs2W86lKI6vtcvDWP6EPxzeTcRZua4=";
};
}
{
name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh";
src = pkgs.fetchFromGitHub {
owner = "chisui";
repo = "zsh-nix-shell";
rev = "v0.7.0";
sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
};
}
];
};
2023-09-08 16:10:15 +02:00
};
};
}