From 532107493512bb56581df1c60166830e44bd5076 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Thu, 12 Mar 2026 19:48:47 +0530 Subject: Added wrapper functions for devenv shell, nix-shell and nix develop commands that starts the environment in zsh automatically --- flake.lock | 6 +++--- modules/tools/devenv/alias.sh | 28 ++++++++++++++++++++++++++++ modules/tools/devenv/default.nix | 14 +------------- modules/tools/zsh/default.nix | 11 +++++++++-- modules/tools/zsh/nix-aliases.sh | 27 +++++++++++++++++++++++++++ 5 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 modules/tools/devenv/alias.sh create mode 100644 modules/tools/zsh/nix-aliases.sh diff --git a/flake.lock b/flake.lock index b339b3a..1431092 100644 --- a/flake.lock +++ b/flake.lock @@ -62,11 +62,11 @@ ] }, "locked": { - "lastModified": 1773286336, - "narHash": "sha256-+yFtmhOHterllxWmV6YbdevTXpJdGS0mS0UmJ0k9fh0=", + "lastModified": 1773324064, + "narHash": "sha256-CxgWYEenlf1z5KmbUSnBJ10rwfcV5Hbc00arXA6AMJc=", "owner": "nix-community", "repo": "home-manager", - "rev": "7d06e0cefe6e4a1e85b2b3274dcb0b3da242a557", + "rev": "7cd3093fc6a08f72b42761a37891624812859453", "type": "github" }, "original": { diff --git a/modules/tools/devenv/alias.sh b/modules/tools/devenv/alias.sh new file mode 100644 index 0000000..e63dbd8 --- /dev/null +++ b/modules/tools/devenv/alias.sh @@ -0,0 +1,28 @@ +devenv() { + local has_reload=false + local is_shell=false + + for arg in "$@"; do + if [[ "$arg" == "--reload" || "$arg" == "--no-reload" ]]; then + has_reload=true + fi + if [[ "$arg" == "shell" ]]; then + is_shell=true + fi + done + + if [[ "$is_shell" == true ]]; then + if [[ "$has_reload" == true ]]; then + command devenv "$@" "$SHELL" + else + command devenv "$@" --no-reload "$SHELL" + fi + return + fi + + if [[ "$has_reload" == true ]]; then + command devenv "$@" + else + command devenv "$@" --no-reload + fi +} diff --git a/modules/tools/devenv/default.nix b/modules/tools/devenv/default.nix index 56574b7..ddb7716 100644 --- a/modules/tools/devenv/default.nix +++ b/modules/tools/devenv/default.nix @@ -6,19 +6,7 @@ }; config = let - # Use --no-reload by default for devenv shell - shellIntegration = '' -devenv() { - for arg in "$@"; do - if [[ "$arg" == "--reload" || "$arg" == "--no-reload" ]]; then - command devenv "$@" - return - fi - done - - command devenv "$@" --no-reload -} -''; + shellIntegration = builtins.readFile ./alias.sh; in lib.mkIf config.tools.devenv.enable { home.packages = with pkgs; [ devenv 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 +} -- cgit v1.2.3