about summary refs log tree commit diff
diff options
context:
space:
mode:
authormulti <depot@in-addr.xyz>2020-11-23T09·34+0000
committermulti <depot@in-addr.xyz>2020-11-23T18·41+0000
commitc56f402383491ee2841ea64edf2022ba361d0b87 (patch)
tree39cf68f8b40266e5bf8112c0eeab5be17476bc95
parentf49c86139f2bfccc97b5fab97f208db3fafd296e (diff)
feat(users/multi/home): add readline configuration and nix-shell handling to bashrc. r/1916
This adds my standard inputrc to my home-manager configuration, via the
latter's readline module, and adds nix-shell detection to my bash prompt
string.

Additionally, nix-shell is wrapped in a shell function, so that entering
a nix-shell environment automatically runs bash as a subprocess where
appropriate, as the default environment spawned by nix-shell is not to
my liking.

Change-Id: Id5b1b9415a185ad9920f268c66de32d6ccc0b452
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2146
Reviewed-by: multi <depot@in-addr.xyz>
Tested-by: BuildkiteCI
-rw-r--r--users/multi/home/configs/whitby.nix43
1 files changed, 40 insertions, 3 deletions
diff --git a/users/multi/home/configs/whitby.nix b/users/multi/home/configs/whitby.nix
index 1ed95770f7a3..9d455a177185 100644
--- a/users/multi/home/configs/whitby.nix
+++ b/users/multi/home/configs/whitby.nix
@@ -19,16 +19,53 @@ in
     bash = {
       enable = true;
       initExtra = ''
-        bind '"\e[5~":history-search-backward'
-        bind '"\e[6~":history-search-forward'
+        PS1="[\\u@\\h:\\w"
+        if [[ -n "$IN_NIX_SHELL" ]]; then
+            PS1="$PS1 (nix-shell)]\\\$ "
+        else
+            PS1="$PS1]\\\$ "
+        fi
 
-        PS1="[\\u@\\h:\\w]\\\$ "
+        nix-shell() {
+            local comarg=0
+            for i in "$@"; do
+                [[ "$i" == "--command" ]] && comarg=1
+            done
+
+            if (( commarg == 0 )); then
+                command nix-shell --command bash "$@"
+            else
+                command nix-shell "$@"
+            fi
+        }
 
         _Z_CMD=d
         source ~/.z.sh
       '';
     };
 
+    readline = {
+      enable = true;
+      bindings = {
+        "\\e[5~" = "history-search-backward";
+        "\\e[6~" = "history-search-forward";
+        "\\C-w" = "\"\\e\\C-h\"";
+      };
+      includeSystemConfig = false;
+      variables = {
+        expand-tilde = true;
+        colored-stats = true;
+        page-completions = false;
+        menu-complete-display-prefix = true;
+        colored-completion-prefix = true;
+        completion-query-items = 0;
+        completion-ignore-case = true;
+        revert-all-at-newline = true;
+        show-all-if-ambiguous = true;
+        skip-completed-text = true;
+      };
+    };
+
     tmux = {
       enable = true;
       terminal = "tmux-256color";