diff options
| author | Arpit Chakladar <arpitchakladar@proton.me> | 2026-03-12 19:48:47 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpitchakladar@proton.me> | 2026-03-12 19:48:47 +0530 |
| commit | 532107493512bb56581df1c60166830e44bd5076 (patch) | |
| tree | 3907b9ba9c58ba1c16703d367fb98c12f22a551b /modules/tools/zsh | |
| parent | 798ed8b954ffa3bad66b23628b381a033a8bb0aa (diff) | |
| download | home-manager-config-532107493512bb56581df1c60166830e44bd5076.tar.gz home-manager-config-532107493512bb56581df1c60166830e44bd5076.zip | |
Added wrapper functions for devenv shell, nix-shell and nix develop commands that starts the environment in zsh automatically
Diffstat (limited to 'modules/tools/zsh')
| -rw-r--r-- | modules/tools/zsh/default.nix | 11 | ||||
| -rw-r--r-- | modules/tools/zsh/nix-aliases.sh | 27 |
2 files changed, 36 insertions, 2 deletions
diff --git a/modules/tools/zsh/default.nix b/modules/tools/zsh/default.nix index 0fed380..fcb7829 100644 --- a/modules/tools/zsh/default.nix +++ b/modules/tools/zsh/default.nix @@ -4,12 +4,15 @@ options.tools.zsh = { enable = lib.mkEnableOption "Enables zsh."; }; - - config = lib.mkIf config.tools.zsh.enable { + + config = let + nixCommandWrappers = builtins.readFile ./nix-aliases.sh; + in lib.mkIf config.tools.zsh.enable { programs.zsh = { enable = true; dotDir = "${config.xdg.configHome}/zsh"; history.path = "${config.xdg.cacheHome}/zsh/history"; + enableCompletion = true; initContent = '' setopt PROMPT_SUBST @@ -17,9 +20,13 @@ bindkey "^[[3~" delete-char bindkey "^?" backward-delete-char + ${nixCommandWrappers} ''; }; + programs.bash.initExtra = lib.mkIf config.programs.bash.enable + (lib.mkAfter nixCommandWrappers); + home.sessionVariables.SHELL = "${config.programs.zsh.package}/bin/zsh"; }; } diff --git a/modules/tools/zsh/nix-aliases.sh b/modules/tools/zsh/nix-aliases.sh new file mode 100644 index 0000000..0a2f453 --- /dev/null +++ b/modules/tools/zsh/nix-aliases.sh @@ -0,0 +1,27 @@ +nix-shell() { + for arg in "$@"; do + if [[ "$arg" == "--run" || "$arg" == "--command" ]]; then + command nix-shell "$@" + return + fi + done + + command nix-shell "$@" --run "$SHELL" +} + +nix() { + if [[ "$1" == "develop" ]]; then + local args=("${@:2}") + + for arg in "${args[@]}"; do + if [[ "$arg" == "-c" || "$arg" == "--command" ]]; then + command nix "$@" + return + fi + done + + command nix develop "${args[@]}" -c "$SHELL" + else + command nix "$@" + fi +} |
