diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-10-18 19:43:11 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-10-18 19:45:26 +0200 |
commit | 7b9400b9453a63477d17ad212afba5b5644ae6d3 (patch) | |
tree | 51d5db3356942501cafeb6195234908297625c91 /modules/by-name/zs/zsh/module.nix | |
parent | refactor(modules/legacy/conf/zsh): Modernize module (diff) | |
download | nixos-config-7b9400b9453a63477d17ad212afba5b5644ae6d3.tar.gz nixos-config-7b9400b9453a63477d17ad212afba5b5644ae6d3.zip |
refactor(modules/legacy/conf/zsh): Parameterize and move to new `by-name`
Diffstat (limited to 'modules/by-name/zs/zsh/module.nix')
-rw-r--r-- | modules/by-name/zs/zsh/module.nix | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/modules/by-name/zs/zsh/module.nix b/modules/by-name/zs/zsh/module.nix new file mode 100644 index 00000000..98e0d28a --- /dev/null +++ b/modules/by-name/zs/zsh/module.nix @@ -0,0 +1,94 @@ +{ + config, + pkgs, + lib, + shell_library, + system, + ... +}: let + cfg = config.soispha.programs.zsh; + homeConfig = config.home-manager.users.soispha; +in { + options.soispha.programs.zsh = { + enable = lib.mkEnableOption "zsh"; + }; + + config.home-manager.users.soispha = lib.mkIf cfg.enable { + home.sessionPath = []; + + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + autocd = true; + + # Must be relative to the users home directory (for whatever reason) + # Thus no `${homeConfig.xdg.configHome}` + dotDir = ".config/zsh"; + + history = { + extended = true; + ignoreDups = false; + expireDuplicatesFirst = false; + ignoreSpace = false; + + path = "${homeConfig.xdg.dataHome}/zsh/history"; + save = 9000000; # number of lines to save + size = 9000000; # number of lines to keep + share = false; # share between sessions + }; + historySubstringSearch = { + enable = true; + searchDownKey = "^[[B"; # DOWN Arrow key + searchUpKey = "^[[A"; # UP Arrow key + }; + + loginExtra = + "setopt " # The extra space is important + + lib.concatStringsSep "\nsetopt " [ + "AUTO_CD" + "AUTO_PUSHD" + "CHASE_DOTS" + + "ALWAYS_TO_END" + + "EXTENDED_HISTORY" + "HIST_ALLOW_CLOBBER" + "HIST_VERIFY" + "HIST_FCNTL_LOCK" + "APPEND_HISTORY" + + "DVORAK" + "CORRECT" + + "PROMPT_SUBST" + "TRANSIENT_RPROMPT" # maybe? + + "COMBINING_CHARS" + "VI" + ]; + + initExtraFirst = + builtins.readFile ./config/zsh-init.zsh + + '' + SHELL_LIBRARY_VERSION="2.1.2" source ${shell_library.rawLib.${system}} + # This next line buffers the first line of the following item: + + '' + # NOTE: This must be before the insult, as we otherwise override the previous handler <2024-02-28> + + builtins.readFile ./config/command_not_found.sh + + builtins.readFile ./config/command_not_found_insult.sh + + builtins.readFile ./config/custom_cursor.zsh + + builtins.readFile "${pkgs.fzf}/share/fzf/key-bindings.zsh"; + + shellAliases = { + ll = ". ll"; + lm = ". lm"; + + hisea = "history 0 | grep"; + }; + }; + }; +} |