nix machine / user configurations
1{ pkgs, lib, ... }: 2{ 3 programs.carapace.enable = true; 4 programs.carapace.enableNushellIntegration = true; 5 programs.nushell = { 6 enable = true; 7 shellAliases = { 8 myip = lib.mkForce "echo"; 9 }; 10 extraEnv = '' 11 source-env ${./prompt.nu} 12 ''; 13 extraConfig = '' 14 let carapace_completer = {|spans: list<string>| 15 carapace $spans.0 nushell ...$spans 16 | from json 17 | if ($in | default [] | where value == $"($spans | last)ERR" | is-empty) { $in } else { null } 18 } 19 $env.CARAPACE_BRIDGES = 'zsh,fish,bash,inshellisense' 20 21 let fish_completer = {|spans| 22 ${lib.getExe pkgs.fish} --command $'complete "--do-complete=($spans | str join " ")"' 23 | $"value(char tab)description(char newline)" + $in 24 | from tsv --flexible --no-infer 25 } 26 27 let zoxide_completer = {|spans| 28 $spans | skip 1 | zoxide query -l ...$in | lines | where {|x| $x != $env.PWD} 29 } 30 31 let multiple_completers = {|spans| 32 ## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions 33 let expanded_alias = scope aliases 34 | where name == $spans.0 35 | get -i 0.expansion 36 37 let spans = if $expanded_alias != null { 38 $spans 39 | skip 1 40 | prepend ($expanded_alias | split row ' ' | take 1) 41 } else { 42 $spans 43 } 44 ## alias fixer end 45 46 match $spans.0 { 47 __zoxide_z | __zoxide_zi => $zoxide_completer 48 _ => $carapace_completer 49 } | do $in $spans 50 } 51 52 $env.config = { 53 show_banner: false, 54 completions: { 55 case_sensitive: false # case-sensitive completions 56 quick: true # set to false to prevent auto-selecting completions 57 partial: true # set to false to prevent partial filling of the prompt 58 algorithm: "fuzzy" # prefix or fuzzy 59 external: { 60 # set to false to prevent nushell looking into $env.PATH to find more suggestions 61 enable: true 62 # set to lower can improve completion performance at the cost of omitting some options 63 max_results: 100 64 completer: $multiple_completers 65 } 66 } 67 } 68 $env.PATH = ($env.PATH | 69 split row (char esep) | 70 append /usr/bin/env 71 ) 72 73 source ${./aliases.nu} 74 ''; 75 }; 76}