From 7e265f51b117ea308857cfbd38ec9f31e1d178eb Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 10 Jun 2024 16:23:40 +0200 Subject: [PATCH] Split zsh config into separate files --- home/programs/terminal/shell/zsh/init.nix | 58 ++++++++++++------- .../terminal/shell/zsh/rc/functions.zsh | 4 +- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/home/programs/terminal/shell/zsh/init.nix b/home/programs/terminal/shell/zsh/init.nix index 7106025..6d81346 100644 --- a/home/programs/terminal/shell/zsh/init.nix +++ b/home/programs/terminal/shell/zsh/init.nix @@ -3,30 +3,46 @@ let inherit (builtins) readFile; in { - config = { - programs.zsh = { - initExtraFirst = '' - # Do this early so anything that relies on $TERM can work properly - ${readFile ./rc/fallback_term.zsh} - ''; - initExtra = '' - ${readFile ./rc/opts.zsh} - ${readFile ./rc/prompt.zsh} - ${readFile ./rc/keybinds.zsh} + # I prefer having the rc files split across multiple files in my system rather + # than just using readFile and putting them all into the generated zshrc + # this also allows me to source them individually if I need to + # (like in the anonymize function with my prompt) + home.file = { + # TODO: Load these dynamically, by going over all files in ./rc + ".config/zsh/rc/fallback_term.zsh".source = ./rc/fallback_term.zsh; + ".config/zsh/rc/opts.zsh".source = ./rc/opts.zsh; + ".config/zsh/rc/prompt.zsh".source = ./rc/prompt.zsh; + ".config/zsh/rc/keybinds.zsh".source = ./rc/keybinds.zsh; + ".config/zsh/rc/aliases.zsh".source = ./rc/aliases.zsh; + ".config/zsh/rc/functions.zsh".source = ./rc/functions.zsh; + ".config/zsh/rc/misc.zsh".source = ./rc/misc.zsh; + ".config/zsh/rc/completion.zsh".source = ./rc/completion.zsh; + ".config/zsh/rc/profile.zsh".source = ./rc/profile.zsh; + }; - ${readFile ./rc/aliases.zsh} - ${readFile ./rc/functions.zsh} - ${readFile ./rc/misc.zsh} - ''; + programs.zsh = { + initExtraFirst = '' + # Do this early so anything that relies on $TERM can work properly + . ~/.config/zsh/rc/fallback_term.zsh + ''; - completionInit = '' - ${readFile ./rc/completion.zsh} - ''; + initExtra = '' + . ~/.config/zsh/rc/opts.zsh + . ~/.config/zsh/rc/prompt.zsh + . ~/.config/zsh/rc/keybinds.zsh - profileExtra = '' - ${readFile ./rc/profile.zsh} - ''; - }; + . ~/.config/zsh/rc/aliases.zsh + . ~/.config/zsh/rc/functions.zsh + . ~/.config/zsh/rc/misc.zsh + ''; + + completionInit = '' + . ~/.config/zsh/rc/completion.zsh + ''; + + profileExtra = '' + . ~/.config/zsh/rc/profile.zsh + ''; }; } diff --git a/home/programs/terminal/shell/zsh/rc/functions.zsh b/home/programs/terminal/shell/zsh/rc/functions.zsh index f1aa829..c2bc842 100644 --- a/home/programs/terminal/shell/zsh/rc/functions.zsh +++ b/home/programs/terminal/shell/zsh/rc/functions.zsh @@ -198,8 +198,8 @@ anonymize() { # Reset the prompt on initial run to allow this script # to be ran multiple times without user having to reload # PS1 manually - # shellcheck source=/home/itsdrike/.config/shell/prompt - . "${XDG_CONFIG_DIR:-$HOME/.config}/shell/prompt" + # shellcheck source=/home/itsdrike/.config/zsh/rc/prompt + . "${XDG_CONFIG_DIR:-$HOME/.config}/zsh/rc/prompt.zsh" # Regular expression to match 0-255 numbers (color) color_int_re='^(0+)?([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$'