feat: fish -> nu
This commit is contained in:
parent
a57124d3cb
commit
01cf59206c
1 changed files with 69 additions and 16 deletions
|
@ -1,9 +1,19 @@
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILm0O46zW/XfVOSwz0okRWYeOAg+wCVkCtCAoVTpZsOh"];
|
keys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILm0O46zW/XfVOSwz0okRWYeOAg+wCVkCtCAoVTpZsOh"];
|
||||||
|
|
||||||
|
nu_scripts = "${pkgs.nu_scripts}/share/nu_scripts";
|
||||||
|
mkCompletions = completions:
|
||||||
|
lib.concatStringsSep "\n" (
|
||||||
|
builtins.map (
|
||||||
|
el: "source ${nu_scripts}/custom-completions/${el.name or el}/${el.filename or el}-completions.nu"
|
||||||
|
)
|
||||||
|
completions
|
||||||
|
);
|
||||||
in {
|
in {
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
@ -29,29 +39,72 @@ in {
|
||||||
initExtra =
|
initExtra =
|
||||||
# bash
|
# bash
|
||||||
''
|
''
|
||||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]; then
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "nu" && -z ''${BASH_EXECUTION_STRING} ]]; then
|
||||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
exec ${lib.getExe pkgs.nushell}
|
||||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
direnv.enable = true;
|
direnv = {
|
||||||
fish = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
interactiveShellInit = "set fish_greeting";
|
nix-direnv.enable = true;
|
||||||
plugins = [
|
};
|
||||||
{
|
nushell = {
|
||||||
name = "plugin-git";
|
enable = true;
|
||||||
src = pkgs.fishPlugins.plugin-git.src;
|
extraConfig =
|
||||||
}
|
# nu
|
||||||
];
|
''
|
||||||
|
let carapace_completer = {|spans: list<string>|
|
||||||
|
^${lib.getExe pkgs.carapace} $spans.0 nushell ...$spans
|
||||||
|
| from json
|
||||||
|
| if ($in | default [] | where value == $"($spans | last)ERR" | is-empty) { $in } else { null }
|
||||||
|
}
|
||||||
|
|
||||||
|
let nix_completer = {|spans: list<string>|
|
||||||
|
let current_arg = $spans | length| $in - 1
|
||||||
|
with-env { NIX_GET_COMPLETIONS: $current_arg } { $spans| skip 1| ^nix ...$in }
|
||||||
|
| lines
|
||||||
|
| skip 1
|
||||||
|
| parse "{value}\t{description}"
|
||||||
|
}
|
||||||
|
|
||||||
|
let external_completer = {|spans|
|
||||||
|
let expanded_alias = scope aliases
|
||||||
|
| where name == $spans.0
|
||||||
|
| get -i 0.expansion
|
||||||
|
|
||||||
|
let spans = if $expanded_alias != null {
|
||||||
|
$spans
|
||||||
|
| skip 1
|
||||||
|
| prepend ($expanded_alias | split row ' ' | take 1)
|
||||||
|
} else {
|
||||||
|
$spans
|
||||||
|
}
|
||||||
|
|
||||||
|
match $spans.0 {
|
||||||
|
nix => $nix_completer
|
||||||
|
_ => $carapace_completer
|
||||||
|
} | do $in $spans
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config = {
|
||||||
|
show_banner: false
|
||||||
|
table: { mode: "psql" }
|
||||||
|
completions: {
|
||||||
|
case_sensitive: false
|
||||||
|
external: {
|
||||||
|
enable: true
|
||||||
|
max_results: 100
|
||||||
|
completer: $external_completer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
source ${nu_scripts}/aliases/git/git-aliases.nu
|
||||||
|
${mkCompletions ["git" "man" "rg" "tar"]}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
nix-index.enable = true;
|
|
||||||
nix-index-database.comma.enable = true;
|
|
||||||
starship.enable = true;
|
starship.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.vscode-server.enable = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue