initial
This commit is contained in:
100
hosts/sarien/users/user/programs/shell/nushell.nix
Normal file
100
hosts/sarien/users/user/programs/shell/nushell.nix
Normal file
@ -0,0 +1,100 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.shell.nushell;
|
||||
in {
|
||||
options = {
|
||||
shell.nushell.enable =
|
||||
mkEnableOption "enable nushell";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
programs.oh-my-posh.enableNushellIntegration = true;
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableNushellIntegration = true;
|
||||
};
|
||||
programs.carapace = {
|
||||
enable = true;
|
||||
enableNushellIntegration = true;
|
||||
};
|
||||
programs.atuin = {
|
||||
enable = true;
|
||||
enableNushellIntegration = true;
|
||||
flags = [
|
||||
"--disable-up-arrow"
|
||||
];
|
||||
};
|
||||
programs.nushell = {
|
||||
enable = true;
|
||||
environmentVariables = {
|
||||
CARAPACE_BRIDGES = "zsh,fish,bash,inshellisense";
|
||||
CARAPACE_MATCH = 1;
|
||||
EDITOR = "hx";
|
||||
};
|
||||
shellAliases = {
|
||||
cd = "z";
|
||||
cat = "bat";
|
||||
l = "ls -l";
|
||||
nix-shell = "nix-shell --command nu";
|
||||
};
|
||||
extraConfig = ''
|
||||
$env.config = {
|
||||
show_banner: false
|
||||
shell_integration: {
|
||||
# osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title
|
||||
osc2: true
|
||||
# osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory
|
||||
osc7: true
|
||||
# osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8
|
||||
osc8: true
|
||||
# osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal
|
||||
osc9_9: false
|
||||
# osc133 is several escapes invented by Final Term which include the supported ones below.
|
||||
# 133;A - Mark prompt start
|
||||
# 133;B - Mark prompt end
|
||||
# 133;C - Mark pre-execution
|
||||
# 133;D;exit - Mark execution finished with exit code
|
||||
# This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is
|
||||
osc133: true
|
||||
# osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features
|
||||
# 633;A - Mark prompt start
|
||||
# 633;B - Mark prompt end
|
||||
# 633;C - Mark pre-execution
|
||||
# 633;D;exit - Mark execution finished with exit code
|
||||
# 633;E - Explicitly set the command line with an optional nonce
|
||||
# 633;P;Cwd=<path> - Mark the current working directory and communicate it to the terminal
|
||||
# and also helps with the run recent menu in vscode
|
||||
osc633: true
|
||||
# reset_application_mode is escape \x1b[?1l and was added to help ssh work better
|
||||
reset_application_mode: true
|
||||
}
|
||||
|
||||
ls: {
|
||||
use_ls_colors: true
|
||||
clickable_links: true
|
||||
}
|
||||
|
||||
rm: {
|
||||
always_trash: true
|
||||
}
|
||||
edit_mode: 'vi'
|
||||
completions: {
|
||||
case_sensitive: false
|
||||
quick: true
|
||||
partial: true
|
||||
algorithm: "fuzzy"
|
||||
external: {
|
||||
enable: true
|
||||
# max_results: 100
|
||||
# completer: $carapace_completer # check 'carapace_completer'
|
||||
}
|
||||
}
|
||||
}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user