aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-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
4 files changed, 65 insertions, 15 deletions
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
+}