aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar@proton.me>2026-03-12 19:48:47 +0530
committerArpit Chakladar <arpitchakladar@proton.me>2026-03-12 19:48:47 +0530
commit532107493512bb56581df1c60166830e44bd5076 (patch)
tree3907b9ba9c58ba1c16703d367fb98c12f22a551b
parent798ed8b954ffa3bad66b23628b381a033a8bb0aa (diff)
downloadhome-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
-rw-r--r--flake.lock6
-rw-r--r--modules/tools/devenv/alias.sh28
-rw-r--r--modules/tools/devenv/default.nix14
-rw-r--r--modules/tools/zsh/default.nix11
-rw-r--r--modules/tools/zsh/nix-aliases.sh27
5 files changed, 68 insertions, 18 deletions
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
+}