feat: nu
This commit is contained in:
parent
9975ab9a01
commit
d4fc0626f4
12 changed files with 949 additions and 257 deletions
84
flake.lock
84
flake.lock
|
@ -17,11 +17,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714136352,
|
"lastModified": 1715101957,
|
||||||
"narHash": "sha256-BtWQ2Th/jamO1SlD+2ASSW5Jaf7JhA/JLpQHk0Goqpg=",
|
"narHash": "sha256-fs5uVQFTfgb4L9pnhldeyTHNcYwn1U4nKYoCBJ6W3W4=",
|
||||||
"owner": "ryantm",
|
"owner": "ryantm",
|
||||||
"repo": "agenix",
|
"repo": "agenix",
|
||||||
"rev": "24a7ea390564ccd5b39b7884f597cfc8d7f6f44e",
|
"rev": "07479c2e7396acaaaac5925483498154034ea80a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -37,11 +37,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713405367,
|
"lastModified": 1714962118,
|
||||||
"narHash": "sha256-HZfBEaZM1KxHLJwGSuCwjDA+EWJpMZl0kUpltaM0ZeU=",
|
"narHash": "sha256-WPdJ/MgA/lhCvpMX/VY2kuk/u4iIZL4r0UlmU+f7iwg=",
|
||||||
"owner": "caarlos0",
|
"owner": "caarlos0",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "89b16b80f3f3a0944a86605e3a6ac4ecebff45b0",
|
"rev": "4c58f507b9f0a2167fdf6daa70848b5af8cc58dc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -57,11 +57,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714216681,
|
"lastModified": 1714861119,
|
||||||
"narHash": "sha256-DAr4pB6ztv3vJtfGEf9EMV81zZ8GVt/GM16VjnqjBiQ=",
|
"narHash": "sha256-CBOLznZe7zYDeSo+CG5nqjTYPafs8zceuBBLMNVN6ho=",
|
||||||
"owner": "catppuccin",
|
"owner": "catppuccin",
|
||||||
"repo": "toolbox",
|
"repo": "toolbox",
|
||||||
"rev": "7303828d5afe39457541ba9ef161d527bfed89c3",
|
"rev": "1589be5969f8d4b456d8ee6a329938885dc6c6af",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -77,11 +77,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713966850,
|
"lastModified": 1715012932,
|
||||||
"narHash": "sha256-AHAkkTUjk86rED3pQh8i4OiSze+OHe697L0o3zhv89A=",
|
"narHash": "sha256-7k52tSu8Y8U3Dlt7og4bdMBtE41looy8uxBxHvpvEWs=",
|
||||||
"owner": "catppuccin",
|
"owner": "catppuccin",
|
||||||
"repo": "vscode",
|
"repo": "vscode",
|
||||||
"rev": "75d96f3ae48b249f77124688a026ca5d7eeb5fb2",
|
"rev": "454290d104a3ea7f2cfceae114e9716b36e9b490",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -121,11 +121,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713680591,
|
"lastModified": 1714890282,
|
||||||
"narHash": "sha256-3pbv7UgAgetwz9YdjzIT/lZ6Rgj6wj6MR4mphBLyDjU=",
|
"narHash": "sha256-0dRK2ChvkhWrLM6H3d4r+rXP/UDxTJ6Vkdr22uGb1H0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "fenix",
|
"repo": "fenix",
|
||||||
"rev": "19aaa94a73cc670a4d87e84f0909966cd8f8cd79",
|
"rev": "24d83329e95a3bc48cbe9f3cd23813c210a25ea6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -141,11 +141,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1712014858,
|
"lastModified": 1714641030,
|
||||||
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
|
"narHash": "sha256-yzcRNDoyVP7+SCNX0wmuDju1NUCt8Dz9+lyUXEI0dbI=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
|
"rev": "e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -200,11 +200,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714515075,
|
"lastModified": 1715077503,
|
||||||
"narHash": "sha256-azMK7aWH0eUc3IqU4Fg5rwZdB9WZBvimOGG3piqvtsY=",
|
"narHash": "sha256-AfHQshzLQfUqk/efMtdebHaQHqVntCMjhymQzVFLes0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "6d3b6dc9222c12b951169becdf4b0592ee9576ef",
|
"rev": "6e277d9566de9976f47228dd8c580b97488734d4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -219,11 +219,11 @@
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714434500,
|
"lastModified": 1715065392,
|
||||||
"narHash": "sha256-SmmC9p8uvxRjnuDMm/8kRW0K2cWgdHozst/u0OOFKSY=",
|
"narHash": "sha256-lu3OSBM9yl8VTQqbRjBgqKYgS4QnskRiN0QSQUKUiMo=",
|
||||||
"owner": "nekowinston",
|
"owner": "nekowinston",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "4efb75611200530626aa08fa4302b0c994bfc85f",
|
"rev": "ce473a9bcf73d7d4d0189243d7f1ac8887ddf83d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -239,11 +239,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714273701,
|
"lastModified": 1714878592,
|
||||||
"narHash": "sha256-bmoeZ5zMSSO/e8P51yjrzaxA9uzA3SZAEFvih6S3LFo=",
|
"narHash": "sha256-E68C03sYRsYFsK7wiGHUIJm8IsyPRALOrFoTL0glXnI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "941c4973c824509e0356be455d89613611f76c8a",
|
"rev": "a362555e9dbd4ecff3bb98969bbdb8f79fe87f10",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -263,11 +263,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714526701,
|
"lastModified": 1715044893,
|
||||||
"narHash": "sha256-SO5QvTx6gEbEDqRJVzQGhwftmJICJM+h0cvql9z4kTg=",
|
"narHash": "sha256-E5nf7cUIddz7jW20/imPD3ROUjIl5FFHSvGitNB1aWc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "24c85bf514f34dc679f0cfd35c66065975cb635e",
|
"rev": "f3aeab3207826319519f1c7d05c856b3039515aa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -278,11 +278,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713537308,
|
"lastModified": 1714763106,
|
||||||
"narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=",
|
"narHash": "sha256-DrDHo74uTycfpAF+/qxZAMlP/Cpe04BVioJb6fdI0YY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f",
|
"rev": "e9be42459999a253a9f92559b1f5b72e1b44c13d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -294,11 +294,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714253743,
|
"lastModified": 1714906307,
|
||||||
"narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=",
|
"narHash": "sha256-UlRZtrCnhPFSJlDQE7M0eyhgvuuHBTe1eJ9N9AQlJQ0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994",
|
"rev": "25865a40d14b3f9cf19f19b924e2ab4069b09588",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -326,11 +326,11 @@
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714596740,
|
"lastModified": 1715101703,
|
||||||
"narHash": "sha256-V3ZR38xu3JSUrg04wMTp0fzDSP+ogNJOOU5ckreCzLQ=",
|
"narHash": "sha256-+e4s7BYYiTi3oPaZJ6TYJGr0V0xiPyKijgCb/Ax095s=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "c8456769a0904ac761020a76bf0bb72a92c27c7c",
|
"rev": "4edb956cecd5141f30782ed388a1e2876011f1e4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -476,11 +476,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714355896,
|
"lastModified": 1715017675,
|
||||||
"narHash": "sha256-rtv+nJJ12V7w68j8vIcGacfS1yuK1/dBgglSKWzYMTM=",
|
"narHash": "sha256-4bMsnv8KLzz8HWvYzeIjKqRF7IRCLSjo3EC862+L2Dk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-wsl",
|
"repo": "nixos-wsl",
|
||||||
"rev": "acb893461a4bee4e77b1a27b1410d4995b52174c",
|
"rev": "1cb8f3c13dee0d40437a9b4b1cf943c06c0cddc4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
115
home/apps/cli.nix
Normal file
115
home/apps/cli.nix
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
srcs = pkgs.callPackage ../../_sources/generated.nix { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = [ pkgs.onefetch ];
|
||||||
|
sessionVariables = {
|
||||||
|
LESS = "-R --use-color";
|
||||||
|
LESSHISTFILE = "-";
|
||||||
|
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
atuin = {
|
||||||
|
enable = true;
|
||||||
|
flags = [ "--disable-up-arrow" ];
|
||||||
|
settings = {
|
||||||
|
inline_height = 30;
|
||||||
|
style = "compact";
|
||||||
|
sync_address = "https://atuin.winston.sh";
|
||||||
|
sync_frequency = "5m";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
bat = {
|
||||||
|
enable = true;
|
||||||
|
themes = {
|
||||||
|
"Catppuccin Latte" = {
|
||||||
|
src = "${srcs.catppuccin-bat.src}/themes";
|
||||||
|
file = "Catppuccin Latte.tmTheme";
|
||||||
|
};
|
||||||
|
"Catppuccin Frappe" = {
|
||||||
|
src = "${srcs.catppuccin-bat.src}/themes";
|
||||||
|
file = "Catppuccin Frappe.tmTheme";
|
||||||
|
};
|
||||||
|
"Catppuccin Macchiato" = {
|
||||||
|
src = "${srcs.catppuccin-bat.src}/themes";
|
||||||
|
file = "Catppuccin Macchiato.tmTheme";
|
||||||
|
};
|
||||||
|
"Catppuccin Mocha" = {
|
||||||
|
src = "${srcs.catppuccin-bat.src}/themes";
|
||||||
|
file = "Catppuccin Mocha.tmTheme";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
btop = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
theme_background = false;
|
||||||
|
vim_keys = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
direnv.enable = true;
|
||||||
|
direnv.nix-direnv.enable = true;
|
||||||
|
|
||||||
|
eza = {
|
||||||
|
enable = true;
|
||||||
|
icons = true;
|
||||||
|
extraOptions = [
|
||||||
|
"--group"
|
||||||
|
"--group-directories-first"
|
||||||
|
"--no-permissions"
|
||||||
|
"--octal-permissions"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
colors = {
|
||||||
|
fg = "#cdd6f4";
|
||||||
|
"fg+" = "#cdd6f4";
|
||||||
|
hl = "#f38ba8";
|
||||||
|
"hl+" = "#f38ba8";
|
||||||
|
header = "#ff69b4";
|
||||||
|
info = "#cba6f7";
|
||||||
|
marker = "#f5e0dc";
|
||||||
|
pointer = "#f5e0dc";
|
||||||
|
prompt = "#cba6f7";
|
||||||
|
spinner = "#f5e0dc";
|
||||||
|
};
|
||||||
|
defaultOptions = [
|
||||||
|
"--height=30%"
|
||||||
|
"--layout=reverse"
|
||||||
|
"--info=inline"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
less.enable = true;
|
||||||
|
|
||||||
|
nix-index-database.comma.enable = true;
|
||||||
|
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = builtins.fromTOML (builtins.readFile ./starship/config.toml);
|
||||||
|
};
|
||||||
|
|
||||||
|
tealdeer = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
style = {
|
||||||
|
description.foreground = "white";
|
||||||
|
command_name.foreground = "green";
|
||||||
|
example_text.foreground = "blue";
|
||||||
|
example_code.foreground = "white";
|
||||||
|
example_variable.foreground = "yellow";
|
||||||
|
};
|
||||||
|
updates.auto_update = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
zoxide.enable = true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -67,19 +67,51 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zsh = {
|
programs.zsh.initExtra = ''
|
||||||
initExtra = ''
|
zadm_sync() {
|
||||||
zadm_sync() {
|
BAT_THEME="Catppuccin $(dark-mode-ternary Mocha Latte)"
|
||||||
BAT_THEME="Catppuccin $(dark-mode-ternary Mocha Latte)"
|
LS_COLORS="$(cat $(dark-mode-ternary ${vividMocha} ${vividLatte}))"
|
||||||
LS_COLORS="$(cat $(dark-mode-ternary ${vividMocha} ${vividLatte}))"
|
STARSHIP_CONFIG__PALETTE="catppuccin_$(dark-mode-ternary mocha latte)"
|
||||||
STARSHIP_CONFIG__PALETTE="catppuccin_$(dark-mode-ternary mocha latte)"
|
|
||||||
|
|
||||||
export BAT_THEME LS_COLORS STARSHIP_CONFIG__PALETTE
|
export BAT_THEME LS_COLORS STARSHIP_CONFIG__PALETTE
|
||||||
|
|
||||||
fast-theme "XDG:catppuccin-$(dark-mode-ternary mocha latte)" >/dev/null
|
fast-theme "XDG:catppuccin-$(dark-mode-ternary mocha latte)" >/dev/null
|
||||||
|
}
|
||||||
|
add-zsh-hook precmd zadm_sync
|
||||||
|
'';
|
||||||
|
programs.nushell.extraConfig = ''
|
||||||
|
def dark-mode-ternary [dark: string, light: string] {
|
||||||
|
let system = (uname | get operating-system);
|
||||||
|
|
||||||
|
if ($system == "Darwin") {
|
||||||
|
if ((defaults read -g AppleInterfaceStyle e> /dev/null =) == "Dark") {
|
||||||
|
$dark
|
||||||
|
} else {
|
||||||
|
$light
|
||||||
|
}
|
||||||
|
} else if ($system == "Linux") {
|
||||||
|
if ((dbus-send --session --print-reply=literal --reply-timeout=5 --dest=org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop org.freedesktop.portal.Settings.Read string:'org.freedesktop.appearance' string:'color-scheme' e> /dev/null | str contains "uint32 1")) {
|
||||||
|
$dark
|
||||||
|
} else {
|
||||||
|
$light
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$light
|
||||||
}
|
}
|
||||||
add-zsh-hook precmd zadm_sync
|
}
|
||||||
'';
|
|
||||||
};
|
$env.config = ($env.config? | default {})
|
||||||
|
$env.config.hooks = ($env.config.hooks? | default {})
|
||||||
|
$env.config.hooks.pre_prompt = (
|
||||||
|
$env.config.hooks.pre_prompt?
|
||||||
|
| default []
|
||||||
|
| append [
|
||||||
|
{ $env.config.color_config = (catppuccin (dark-mode-ternary mocha latte)) }
|
||||||
|
{ $env.BAT_THEME = $"Catppuccin (dark-mode-ternary Mocha Latte)" }
|
||||||
|
{ $env.STARSHIP_CONFIG__PALETTE = $"catppuccin_(dark-mode-ternary mocha latte)" }
|
||||||
|
{ $env.LS_COLORS = (cat (dark-mode-ternary ${vividMocha} ${vividLatte})) }
|
||||||
|
]
|
||||||
|
)
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./browsers.nix
|
./browsers.nix
|
||||||
|
./cli.nix
|
||||||
./colorscheme-sync.nix
|
./colorscheme-sync.nix
|
||||||
./discord.nix
|
./discord.nix
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
|
@ -15,6 +16,7 @@
|
||||||
./media.nix
|
./media.nix
|
||||||
./neovim.nix
|
./neovim.nix
|
||||||
./newsboat.nix
|
./newsboat.nix
|
||||||
|
./nu.nix
|
||||||
./rice.nix
|
./rice.nix
|
||||||
./sway.nix
|
./sway.nix
|
||||||
./tmux.nix
|
./tmux.nix
|
||||||
|
|
59
home/apps/nu.nix
Normal file
59
home/apps/nu.nix
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
{ lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
plugins = "${pkgs.nu_scripts}/share/nu_scripts";
|
||||||
|
|
||||||
|
mkCompletions =
|
||||||
|
completions:
|
||||||
|
lib.concatStringsSep "\n" (
|
||||||
|
builtins.map (
|
||||||
|
el:
|
||||||
|
let
|
||||||
|
name = el.name or el;
|
||||||
|
filename = el.filename or el;
|
||||||
|
in
|
||||||
|
"source ${plugins}/custom-completions/${name}/${filename}-completions.nu"
|
||||||
|
) completions
|
||||||
|
);
|
||||||
|
|
||||||
|
completions = [
|
||||||
|
"cargo"
|
||||||
|
"composer"
|
||||||
|
"gh"
|
||||||
|
"git"
|
||||||
|
"just"
|
||||||
|
"man"
|
||||||
|
"nix"
|
||||||
|
"npm"
|
||||||
|
"pnpm"
|
||||||
|
"poetry"
|
||||||
|
"rg"
|
||||||
|
"tar"
|
||||||
|
{
|
||||||
|
name = "tealdeer";
|
||||||
|
filename = "tldr";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "yarn";
|
||||||
|
filename = "yarn-v4";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = [ pkgs.carapace ];
|
||||||
|
programs.nushell = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
configFile.source = ./nu/config.nu;
|
||||||
|
|
||||||
|
extraConfig =
|
||||||
|
''
|
||||||
|
source ${plugins}/aliases/git/git-aliases.nu
|
||||||
|
''
|
||||||
|
+ mkCompletions completions;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."nushell/config" = {
|
||||||
|
source = ./nu/config;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
}
|
254
home/apps/nu/config.nu
Normal file
254
home/apps/nu/config.nu
Normal file
|
@ -0,0 +1,254 @@
|
||||||
|
use ($nu.default-config-dir | path join 'config/keybindings.nu')
|
||||||
|
use ($nu.default-config-dir | path join 'catppuccin.nu')
|
||||||
|
|
||||||
|
let carapace_completer = {|spans|
|
||||||
|
carapace $spans.0 nushell ...$spans | from json
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.PROMPT_INDICATOR = {|| "λ " }
|
||||||
|
$env.PROMPT_INDICATOR_VI_INSERT = {|| "λ " }
|
||||||
|
$env.PROMPT_INDICATOR_VI_NORMAL = {|| "$ " }
|
||||||
|
$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " }
|
||||||
|
|
||||||
|
$env.config = {
|
||||||
|
show_banner: false
|
||||||
|
|
||||||
|
ls: {
|
||||||
|
# use the LS_COLORS environment variable to colorize output
|
||||||
|
use_ls_colors: true
|
||||||
|
# enable or disable clickable links. Your terminal has to support links.
|
||||||
|
clickable_links: true
|
||||||
|
}
|
||||||
|
|
||||||
|
rm: {
|
||||||
|
# always act as if -t was given. Can be overridden with -p
|
||||||
|
always_trash: false
|
||||||
|
}
|
||||||
|
|
||||||
|
table: {
|
||||||
|
# basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other
|
||||||
|
mode: thin
|
||||||
|
# "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column
|
||||||
|
index_mode: auto
|
||||||
|
# show 'empty list' and 'empty record' placeholders for command output
|
||||||
|
show_empty: true
|
||||||
|
# a left right padding of each column in a table
|
||||||
|
padding: { left: 1, right: 1 }
|
||||||
|
trim: {
|
||||||
|
# `wrapping` or `truncating`
|
||||||
|
methodology: truncating
|
||||||
|
# A strategy used by the 'wrapping' methodology
|
||||||
|
wrapping_try_keep_words: true
|
||||||
|
# A suffix used by the 'truncating' methodology
|
||||||
|
truncating_suffix: "…"
|
||||||
|
}
|
||||||
|
# show header text on separator/border line
|
||||||
|
header_on_separator: false
|
||||||
|
|
||||||
|
# limit data rows from top and bottom after reaching a set point
|
||||||
|
# abbreviated_row_count: 10
|
||||||
|
}
|
||||||
|
|
||||||
|
error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages
|
||||||
|
|
||||||
|
# datetime_format determines what a datetime rendered in the shell would look like.
|
||||||
|
# Behavior without this configuration point will be to "humanize" the datetime display,
|
||||||
|
# showing something like "a day ago."
|
||||||
|
datetime_format: {
|
||||||
|
# shows up in displays of variables or other datetime's outside of tables
|
||||||
|
# normal: '%a, %d %b %Y %H:%M:%S %z'
|
||||||
|
|
||||||
|
# generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format
|
||||||
|
table: '%Y-%m-%d %I:%M:%S%p'
|
||||||
|
}
|
||||||
|
|
||||||
|
explore: {
|
||||||
|
status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" },
|
||||||
|
command_bar_text: { fg: "#C4C9C6" },
|
||||||
|
highlight: { fg: "black", bg: "yellow" },
|
||||||
|
status: {
|
||||||
|
error: { fg: "white", bg: "red" },
|
||||||
|
warn: {}
|
||||||
|
info: {}
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
split_line: { fg: "#404040" },
|
||||||
|
selected_cell: { bg: light_blue },
|
||||||
|
selected_row: {},
|
||||||
|
selected_column: {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
history: {
|
||||||
|
# Session has to be reloaded for this to take effect
|
||||||
|
max_size: 100_000
|
||||||
|
# Enable to share history between multiple sessions, else you have to close the session to write history to file
|
||||||
|
sync_on_enter: true
|
||||||
|
# "sqlite" or "plaintext"
|
||||||
|
file_format: "plaintext"
|
||||||
|
# only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions.
|
||||||
|
isolation: false
|
||||||
|
}
|
||||||
|
|
||||||
|
completions: {
|
||||||
|
# set to true to enable case-sensitive completions
|
||||||
|
case_sensitive: false
|
||||||
|
# set this to false to prevent auto-selecting completions when only one remains
|
||||||
|
quick: true
|
||||||
|
# set this to false to prevent partial filling of the prompt
|
||||||
|
partial: true
|
||||||
|
# prefix or fuzzy
|
||||||
|
algorithm: "prefix"
|
||||||
|
external: {
|
||||||
|
# set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow
|
||||||
|
enable: true
|
||||||
|
# setting it lower can improve completion performance at the cost of omitting some options
|
||||||
|
max_results: 100
|
||||||
|
# check 'carapace_completer' above as an example
|
||||||
|
completer: $carapace_completer
|
||||||
|
}
|
||||||
|
use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS
|
||||||
|
}
|
||||||
|
|
||||||
|
filesize: {
|
||||||
|
metric: false # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
|
||||||
|
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto
|
||||||
|
}
|
||||||
|
|
||||||
|
cursor_shape: {
|
||||||
|
# block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default)
|
||||||
|
emacs: inherit
|
||||||
|
# block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default)
|
||||||
|
vi_insert: inherit
|
||||||
|
# block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default)
|
||||||
|
vi_normal: inherit
|
||||||
|
}
|
||||||
|
|
||||||
|
color_config: (catppuccin "mocha")
|
||||||
|
use_grid_icons: true
|
||||||
|
# always, never, number_of_rows, auto
|
||||||
|
footer_mode: 20
|
||||||
|
# the precision for displaying floats in tables
|
||||||
|
float_precision: 2
|
||||||
|
# command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
|
||||||
|
# buffer_editor: ""
|
||||||
|
use_ansi_coloring: true
|
||||||
|
# enable bracketed paste, currently useless on windows
|
||||||
|
bracketed_paste: true
|
||||||
|
# emacs, vi
|
||||||
|
edit_mode: vi
|
||||||
|
# enables terminal shell integration. Off by default, as some terminals have issues with this.
|
||||||
|
shell_integration: ($env.TERM_PROGRAM == "WezTerm")
|
||||||
|
# true or false to enable or disable right prompt to be rendered on last line of the prompt.
|
||||||
|
render_right_prompt_on_last_line: false
|
||||||
|
# enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this.
|
||||||
|
use_kitty_protocol: ($env.TERM_PROGRAM == "WezTerm")
|
||||||
|
# true enables highlighting of external commands in the repl resolved by which.
|
||||||
|
highlight_resolved_externals: false
|
||||||
|
# the maximum number of times nushell allows recursion before stopping it
|
||||||
|
recursion_limit: 50
|
||||||
|
|
||||||
|
hooks: {
|
||||||
|
env_change: {
|
||||||
|
PWD: [
|
||||||
|
{if (".git" | path exists) {
|
||||||
|
onefetch --no-merges --no-bots --no-color-palette --text-colors 1 1 3 4 4
|
||||||
|
}}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
# run to display the output of a pipeline
|
||||||
|
display_output: "if (term size).columns >= 100 { table -e } else { table }"
|
||||||
|
# return an error message when a command is not found
|
||||||
|
command_not_found: { null }
|
||||||
|
}
|
||||||
|
|
||||||
|
menus: [
|
||||||
|
# Configuration for default nushell menus
|
||||||
|
# Note the lack of source parameter
|
||||||
|
{
|
||||||
|
name: completion_menu
|
||||||
|
only_buffer_difference: false
|
||||||
|
marker: "| "
|
||||||
|
type: {
|
||||||
|
layout: columnar
|
||||||
|
columns: 4
|
||||||
|
# Optional value. If missing all the screen width is used to calculate column width
|
||||||
|
col_width: 20
|
||||||
|
col_padding: 2
|
||||||
|
}
|
||||||
|
style: {
|
||||||
|
text: green
|
||||||
|
selected_text: { attr: r }
|
||||||
|
description_text: yellow
|
||||||
|
match_text: { attr: u }
|
||||||
|
selected_match_text: { attr: ur }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: ide_completion_menu
|
||||||
|
only_buffer_difference: false
|
||||||
|
marker: "| "
|
||||||
|
type: {
|
||||||
|
layout: ide
|
||||||
|
min_completion_width: 0,
|
||||||
|
max_completion_width: 50,
|
||||||
|
max_completion_height: 10, # will be limited by the available lines in the terminal
|
||||||
|
padding: 0,
|
||||||
|
border: true,
|
||||||
|
cursor_offset: 0,
|
||||||
|
description_mode: "prefer_right"
|
||||||
|
min_description_width: 0
|
||||||
|
max_description_width: 50
|
||||||
|
max_description_height: 10
|
||||||
|
description_offset: 1
|
||||||
|
# If true, the cursor pos will be corrected, so the suggestions match up with the typed text
|
||||||
|
#
|
||||||
|
# C:\> str
|
||||||
|
# str join
|
||||||
|
# str trim
|
||||||
|
# str split
|
||||||
|
correct_cursor_pos: false
|
||||||
|
}
|
||||||
|
style: {
|
||||||
|
text: green
|
||||||
|
selected_text: { attr: r }
|
||||||
|
description_text: yellow
|
||||||
|
match_text: { attr: u }
|
||||||
|
selected_match_text: { attr: ur }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: history_menu
|
||||||
|
only_buffer_difference: true
|
||||||
|
marker: "? "
|
||||||
|
type: {
|
||||||
|
layout: list
|
||||||
|
page_size: 10
|
||||||
|
}
|
||||||
|
style: {
|
||||||
|
text: green
|
||||||
|
selected_text: green_reverse
|
||||||
|
description_text: yellow
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: help_menu
|
||||||
|
only_buffer_difference: true
|
||||||
|
marker: "? "
|
||||||
|
type: {
|
||||||
|
layout: description
|
||||||
|
columns: 4
|
||||||
|
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
|
||||||
|
col_padding: 2
|
||||||
|
selection_rows: 4
|
||||||
|
description_rows: 10
|
||||||
|
}
|
||||||
|
style: {
|
||||||
|
text: green
|
||||||
|
selected_text: green_reverse
|
||||||
|
description_text: yellow
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
keybindings: (keybindings)
|
||||||
|
}
|
323
home/apps/nu/config/keybindings.nu
Normal file
323
home/apps/nu/config/keybindings.nu
Normal file
|
@ -0,0 +1,323 @@
|
||||||
|
export def main [] {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
name: completion_menu
|
||||||
|
modifier: none
|
||||||
|
keycode: tab
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: menu name: completion_menu }
|
||||||
|
{ send: menunext }
|
||||||
|
{ edit: complete }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: ide_completion_menu
|
||||||
|
modifier: control
|
||||||
|
keycode: char_n
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: menu name: ide_completion_menu }
|
||||||
|
{ send: menunext }
|
||||||
|
{ edit: complete }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# replaced by Atuin.sh
|
||||||
|
# {
|
||||||
|
# name: history_menu
|
||||||
|
# modifier: control
|
||||||
|
# keycode: char_r
|
||||||
|
# mode: [vi_insert, vi_normal]
|
||||||
|
# event: { send: menu name: history_menu }
|
||||||
|
# }
|
||||||
|
{
|
||||||
|
name: help_menu
|
||||||
|
modifier: none
|
||||||
|
keycode: f1
|
||||||
|
mode: [vi_insert, vi_normal]
|
||||||
|
event: { send: menu name: help_menu }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: completion_previous_menu
|
||||||
|
modifier: shift
|
||||||
|
keycode: backtab
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { send: menuprevious }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: escape
|
||||||
|
modifier: none
|
||||||
|
keycode: escape
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
# NOTE: does not appear to work
|
||||||
|
event: { send: esc }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: cancel_command
|
||||||
|
modifier: control
|
||||||
|
keycode: char_c
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { send: ctrlc }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: quit_shell
|
||||||
|
modifier: control
|
||||||
|
keycode: char_d
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { send: ctrld }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: clear_screen
|
||||||
|
modifier: control
|
||||||
|
keycode: char_l
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { send: clearscreen }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: search_history
|
||||||
|
modifier: control
|
||||||
|
keycode: char_q
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { send: searchhistory }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: open_command_editor
|
||||||
|
modifier: control
|
||||||
|
keycode: char_o
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { send: openeditor }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_up
|
||||||
|
modifier: none
|
||||||
|
keycode: up
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: menuup }
|
||||||
|
{ send: up }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_down
|
||||||
|
modifier: none
|
||||||
|
keycode: down
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: menudown }
|
||||||
|
{ send: down }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_left
|
||||||
|
modifier: none
|
||||||
|
keycode: left
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: menuleft }
|
||||||
|
{ send: left }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_right_or_take_history_hint
|
||||||
|
modifier: none
|
||||||
|
keycode: right
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: historyhintcomplete }
|
||||||
|
{ send: menuright }
|
||||||
|
{ send: right }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_one_word_left
|
||||||
|
modifier: control
|
||||||
|
keycode: left
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { edit: movewordleft }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_one_word_right_or_take_history_hint
|
||||||
|
modifier: control
|
||||||
|
keycode: right
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: historyhintwordcomplete }
|
||||||
|
{ edit: movewordright }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_to_line_start
|
||||||
|
modifier: none
|
||||||
|
keycode: home
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { edit: movetolinestart }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_to_line_start
|
||||||
|
modifier: control
|
||||||
|
keycode: char_a
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { edit: movetolinestart }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_to_line_end_or_take_history_hint
|
||||||
|
modifier: none
|
||||||
|
keycode: end
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: historyhintcomplete }
|
||||||
|
{ edit: movetolineend }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_to_line_end_or_take_history_hint
|
||||||
|
modifier: control
|
||||||
|
keycode: char_e
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: historyhintcomplete }
|
||||||
|
{ edit: movetolineend }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_to_line_start
|
||||||
|
modifier: control
|
||||||
|
keycode: home
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { edit: movetolinestart }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_to_line_end
|
||||||
|
modifier: control
|
||||||
|
keycode: end
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { edit: movetolineend }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_up
|
||||||
|
modifier: control
|
||||||
|
keycode: char_p
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: menuup }
|
||||||
|
{ send: up }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_down
|
||||||
|
modifier: control
|
||||||
|
keycode: char_t
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{ send: menudown }
|
||||||
|
{ send: down }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: delete_one_character_backward
|
||||||
|
modifier: none
|
||||||
|
keycode: backspace
|
||||||
|
mode: [vi_insert]
|
||||||
|
event: { edit: backspace }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: delete_one_word_backward
|
||||||
|
modifier: control
|
||||||
|
keycode: backspace
|
||||||
|
mode: [vi_insert]
|
||||||
|
event: { edit: backspaceword }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: delete_one_character_forward
|
||||||
|
modifier: none
|
||||||
|
keycode: delete
|
||||||
|
mode: [vi_insert]
|
||||||
|
event: { edit: delete }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: delete_one_character_forward
|
||||||
|
modifier: control
|
||||||
|
keycode: delete
|
||||||
|
mode: [vi_insert]
|
||||||
|
event: { edit: delete }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: delete_one_character_backward
|
||||||
|
modifier: control
|
||||||
|
keycode: char_h
|
||||||
|
mode: [vi_insert]
|
||||||
|
event: { edit: backspace }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: delete_one_word_backward
|
||||||
|
modifier: control
|
||||||
|
keycode: char_w
|
||||||
|
mode: [vi_insert]
|
||||||
|
event: { edit: backspaceword }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: move_left
|
||||||
|
modifier: none
|
||||||
|
keycode: backspace
|
||||||
|
mode: vi_normal
|
||||||
|
event: { edit: moveleft }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: cut_line_from_start
|
||||||
|
modifier: control
|
||||||
|
keycode: char_u
|
||||||
|
mode: [vi_normal, vi_insert]
|
||||||
|
event: { edit: cutfromstart }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: copy_selection
|
||||||
|
modifier: control_shift
|
||||||
|
keycode: char_c
|
||||||
|
mode: emacs
|
||||||
|
event: { edit: copyselectionsystem }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: cut_selection
|
||||||
|
modifier: control_shift
|
||||||
|
keycode: char_x
|
||||||
|
mode: emacs
|
||||||
|
event: { edit: cutselectionsystem }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: paste_system
|
||||||
|
modifier: control_shift
|
||||||
|
keycode: char_v
|
||||||
|
mode: emacs
|
||||||
|
event: { edit: pastesystem }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: select_all
|
||||||
|
modifier: control_shift
|
||||||
|
keycode: char_a
|
||||||
|
mode: emacs
|
||||||
|
event: { edit: selectall }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
'$schema' = 'https://starship.rs/config-schema.json'
|
'$schema' = 'https://starship.rs/config-schema.json'
|
||||||
|
|
||||||
format = """
|
format = """
|
||||||
[╭](surface2)\
|
[┌](surface2)\
|
||||||
$directory\
|
$directory\
|
||||||
$username\
|
$username\
|
||||||
$hostname\
|
$hostname\
|
||||||
|
@ -71,8 +71,7 @@ $terraform)\
|
||||||
$line_break\
|
$line_break\
|
||||||
\
|
\
|
||||||
$shell\
|
$shell\
|
||||||
[╰](surface2)\
|
[└](surface2)"""
|
||||||
$character"""
|
|
||||||
|
|
||||||
add_newline = true
|
add_newline = true
|
||||||
continuation_prompt = '[>](bold subtext0) '
|
continuation_prompt = '[>](bold subtext0) '
|
||||||
|
|
|
@ -291,5 +291,17 @@
|
||||||
"vs-kubernetes": {
|
"vs-kubernetes": {
|
||||||
"vs-kubernetes.crd-code-completion": "enabled",
|
"vs-kubernetes.crd-code-completion": "enabled",
|
||||||
"vs-kubernetes.minikube-show-information-expiration": "2024-06-09T06:56:22.175Z"
|
"vs-kubernetes.minikube-show-information-expiration": "2024-06-09T06:56:22.175Z"
|
||||||
|
},
|
||||||
|
"editor.tokenColorCustomizations": {
|
||||||
|
"[Catppuccin Mocha]": {
|
||||||
|
"textMateRules": [
|
||||||
|
{
|
||||||
|
"scope": "storage.type.dhall",
|
||||||
|
"settings": {
|
||||||
|
"foreground": "#FF0000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,10 @@ local act = wezterm.action
|
||||||
|
|
||||||
local shortcuts = {}
|
local shortcuts = {}
|
||||||
|
|
||||||
|
---@param key string
|
||||||
|
---@param mods string|string[]
|
||||||
|
---@param action wezterm.Action
|
||||||
|
---@return nil
|
||||||
local map = function(key, mods, action)
|
local map = function(key, mods, action)
|
||||||
if type(mods) == "string" then
|
if type(mods) == "string" then
|
||||||
table.insert(shortcuts, { key = key, mods = mods, action = action })
|
table.insert(shortcuts, { key = key, mods = mods, action = action })
|
||||||
|
@ -127,12 +131,12 @@ M.apply = function(c)
|
||||||
{
|
{
|
||||||
event = { Down = { streak = 1, button = { WheelUp = 1 } } },
|
event = { Down = { streak = 1, button = { WheelUp = 1 } } },
|
||||||
mods = "NONE",
|
mods = "NONE",
|
||||||
action = wezterm.action.ScrollByLine(5),
|
action = act.ScrollByLine(5),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
event = { Down = { streak = 1, button = { WheelDown = 1 } } },
|
event = { Down = { streak = 1, button = { WheelDown = 1 } } },
|
||||||
mods = "NONE",
|
mods = "NONE",
|
||||||
action = wezterm.action.ScrollByLine(-5),
|
action = act.ScrollByLine(-5),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,6 +4,8 @@ local utils = require("config.utils")
|
||||||
|
|
||||||
require("config.keys").apply(c)
|
require("config.keys").apply(c)
|
||||||
|
|
||||||
|
c.default_prog = { "nu" }
|
||||||
|
|
||||||
c.font = wezterm.font_with_fallback({
|
c.font = wezterm.font_with_fallback({
|
||||||
"Berkeley Mono",
|
"Berkeley Mono",
|
||||||
"Symbols Nerd Font",
|
"Symbols Nerd Font",
|
||||||
|
@ -28,8 +30,6 @@ if utils.is_darwin() then
|
||||||
require("bar.plugin").apply_to_config(c)
|
require("bar.plugin").apply_to_config(c)
|
||||||
end
|
end
|
||||||
|
|
||||||
require("catppuccin.plugin").apply_to_config(c, {
|
require("catppuccin.plugin").apply_to_config(c, { sync = true })
|
||||||
sync = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
return c
|
return c
|
||||||
|
|
|
@ -15,209 +15,101 @@ let
|
||||||
}) plugins);
|
}) plugins);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
home.sessionVariables = {
|
programs.zsh = {
|
||||||
LESS = "-R --use-color";
|
enable = true;
|
||||||
LESSHISTFILE = "-";
|
autosuggestion.enable = true;
|
||||||
MANPAGER = "sh -c 'col -bx | bat -l man -p'";
|
enableCompletion = true;
|
||||||
};
|
|
||||||
home.packages = [ pkgs.onefetch ];
|
|
||||||
|
|
||||||
programs = {
|
initExtraFirst = ''
|
||||||
atuin = {
|
zvm_config() {
|
||||||
enable = true;
|
ZVM_INIT_MODE=sourcing
|
||||||
flags = [ "--disable-up-arrow" ];
|
ZVM_CURSOR_STYLE_ENABLED=false
|
||||||
settings = {
|
ZVM_VI_HIGHLIGHT_BACKGROUND=black
|
||||||
inline_height = 30;
|
ZVM_VI_HIGHLIGHT_EXTRASTYLE=bold,underline
|
||||||
style = "compact";
|
ZVM_VI_HIGHLIGHT_FOREGROUND=white
|
||||||
sync_address = "https://atuin.winston.sh";
|
}
|
||||||
sync_frequency = "5m";
|
'';
|
||||||
};
|
initExtra =
|
||||||
};
|
''
|
||||||
bat = {
|
function incognito() {
|
||||||
enable = true;
|
if [[ -n $ZSH_INCOGNITO ]]; then
|
||||||
themes = {
|
add-zsh-hook precmd _atuin_precmd
|
||||||
"Catppuccin Latte" = {
|
add-zsh-hook preexec _atuin_preexec
|
||||||
src = "${srcs.catppuccin-bat.src}/themes";
|
unset ZSH_INCOGNITO
|
||||||
file = "Catppuccin Latte.tmTheme";
|
else
|
||||||
};
|
add-zsh-hook -d precmd _atuin_precmd
|
||||||
"Catppuccin Frappe" = {
|
add-zsh-hook -d preexec _atuin_preexec
|
||||||
src = "${srcs.catppuccin-bat.src}/themes";
|
export ZSH_INCOGNITO=1
|
||||||
file = "Catppuccin Frappe.tmTheme";
|
fi
|
||||||
};
|
}
|
||||||
"Catppuccin Macchiato" = {
|
|
||||||
src = "${srcs.catppuccin-bat.src}/themes";
|
|
||||||
file = "Catppuccin Macchiato.tmTheme";
|
|
||||||
};
|
|
||||||
"Catppuccin Mocha" = {
|
|
||||||
src = "${srcs.catppuccin-bat.src}/themes";
|
|
||||||
file = "Catppuccin Mocha.tmTheme";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
btop = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
theme_background = false;
|
|
||||||
vim_keys = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
direnv.enable = true;
|
onefetch_in_git_dir() {
|
||||||
direnv.nix-direnv.enable = true;
|
if [[ -d '.git' ]]; then
|
||||||
|
${pkgs.onefetch}/bin/onefetch --no-merges --no-bots --no-color-palette --text-colors 1 1 3 4 4
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
eza = {
|
add-zsh-hook chpwd onefetch_in_git_dir
|
||||||
enable = true;
|
''
|
||||||
icons = true;
|
+ lib.optionalString isLinux ''
|
||||||
extraOptions = [
|
function open() {
|
||||||
"--group"
|
nohup xdg-open "$*" > /dev/null 2>&1
|
||||||
"--group-directories-first"
|
|
||||||
"--no-permissions"
|
|
||||||
"--octal-permissions"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fzf = {
|
|
||||||
enable = true;
|
|
||||||
colors = {
|
|
||||||
fg = "#cdd6f4";
|
|
||||||
"fg+" = "#cdd6f4";
|
|
||||||
hl = "#f38ba8";
|
|
||||||
"hl+" = "#f38ba8";
|
|
||||||
header = "#ff69b4";
|
|
||||||
info = "#cba6f7";
|
|
||||||
marker = "#f5e0dc";
|
|
||||||
pointer = "#f5e0dc";
|
|
||||||
prompt = "#cba6f7";
|
|
||||||
spinner = "#f5e0dc";
|
|
||||||
};
|
|
||||||
defaultOptions = [
|
|
||||||
"--height=30%"
|
|
||||||
"--layout=reverse"
|
|
||||||
"--info=inline"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
less.enable = true;
|
|
||||||
|
|
||||||
nix-index-database.comma.enable = true;
|
|
||||||
|
|
||||||
starship = {
|
|
||||||
enable = true;
|
|
||||||
settings = builtins.fromTOML (builtins.readFile ./starship/config.toml);
|
|
||||||
};
|
|
||||||
|
|
||||||
tealdeer = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
style = {
|
|
||||||
description.foreground = "white";
|
|
||||||
command_name.foreground = "green";
|
|
||||||
example_text.foreground = "blue";
|
|
||||||
example_code.foreground = "white";
|
|
||||||
example_variable.foreground = "yellow";
|
|
||||||
};
|
|
||||||
updates.auto_update = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
zoxide.enable = true;
|
|
||||||
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
|
|
||||||
initExtraFirst = ''
|
|
||||||
zvm_config() {
|
|
||||||
ZVM_INIT_MODE=sourcing
|
|
||||||
ZVM_CURSOR_STYLE_ENABLED=false
|
|
||||||
ZVM_VI_HIGHLIGHT_BACKGROUND=black
|
|
||||||
ZVM_VI_HIGHLIGHT_EXTRASTYLE=bold,underline
|
|
||||||
ZVM_VI_HIGHLIGHT_FOREGROUND=white
|
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
initExtra =
|
|
||||||
''
|
|
||||||
function incognito() {
|
|
||||||
if [[ -n $ZSH_INCOGNITO ]]; then
|
|
||||||
add-zsh-hook precmd _atuin_precmd
|
|
||||||
add-zsh-hook preexec _atuin_preexec
|
|
||||||
unset ZSH_INCOGNITO
|
|
||||||
else
|
|
||||||
add-zsh-hook -d precmd _atuin_precmd
|
|
||||||
add-zsh-hook -d preexec _atuin_preexec
|
|
||||||
export ZSH_INCOGNITO=1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
onefetch_in_git_dir() {
|
dotDir = ".config/zsh";
|
||||||
if [[ -d '.git' ]]; then
|
oh-my-zsh = {
|
||||||
${pkgs.onefetch}/bin/onefetch --no-merges --no-bots --no-color-palette --text-colors 1 1 3 4 4
|
enable = true;
|
||||||
fi
|
plugins =
|
||||||
}
|
[
|
||||||
|
"colored-man-pages"
|
||||||
add-zsh-hook chpwd onefetch_in_git_dir
|
"colorize"
|
||||||
''
|
"git"
|
||||||
+ lib.optionalString isLinux ''
|
"kubectl"
|
||||||
function open() {
|
]
|
||||||
nohup xdg-open "$*" > /dev/null 2>&1
|
++ lib.optionals pkgs.stdenv.isDarwin [
|
||||||
}
|
"dash"
|
||||||
'';
|
"macos"
|
||||||
|
];
|
||||||
dotDir = ".config/zsh";
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
plugins =
|
|
||||||
[
|
|
||||||
"colored-man-pages"
|
|
||||||
"colorize"
|
|
||||||
"git"
|
|
||||||
"kubectl"
|
|
||||||
]
|
|
||||||
++ lib.optionals pkgs.stdenv.isDarwin [
|
|
||||||
"dash"
|
|
||||||
"macos"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
plugins = zshPlugins [
|
|
||||||
{
|
|
||||||
src = pkgs.zsh-vi-mode;
|
|
||||||
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
src = pkgs.zsh-nix-shell;
|
|
||||||
file = "share/zsh-nix-shell/nix-shell.plugin.zsh";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
src = pkgs.zsh-fast-syntax-highlighting.overrideAttrs (_: {
|
|
||||||
src = srcs.zsh-fast-syntax-highlighting.src;
|
|
||||||
});
|
|
||||||
file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
shellAliases = {
|
|
||||||
cat = "bat";
|
|
||||||
|
|
||||||
ls = "eza";
|
|
||||||
ll = "eza -l";
|
|
||||||
la = "eza -a";
|
|
||||||
lt = "eza -T";
|
|
||||||
lla = "eza -la";
|
|
||||||
llt = "eza -lT";
|
|
||||||
|
|
||||||
cp = "cp -i";
|
|
||||||
mv = "mv -i";
|
|
||||||
rm = "rm -i";
|
|
||||||
|
|
||||||
# switch between yubikeys for the same GPG key
|
|
||||||
switch_yubikeys = ''gpg-connect-agent "scd serialno" "learn --force" "/bye"'';
|
|
||||||
|
|
||||||
# podman
|
|
||||||
docker = "podman";
|
|
||||||
docker-compose = "podman-compose";
|
|
||||||
};
|
|
||||||
history.path = "${config.xdg.configHome}/zsh/history";
|
|
||||||
};
|
};
|
||||||
|
plugins = zshPlugins [
|
||||||
|
{
|
||||||
|
src = pkgs.zsh-vi-mode;
|
||||||
|
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
src = pkgs.zsh-nix-shell;
|
||||||
|
file = "share/zsh-nix-shell/nix-shell.plugin.zsh";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
src = pkgs.zsh-fast-syntax-highlighting.overrideAttrs (_: {
|
||||||
|
src = srcs.zsh-fast-syntax-highlighting.src;
|
||||||
|
});
|
||||||
|
file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
shellAliases = {
|
||||||
|
cat = "bat";
|
||||||
|
|
||||||
|
ls = "eza";
|
||||||
|
ll = "eza -l";
|
||||||
|
la = "eza -a";
|
||||||
|
lt = "eza -T";
|
||||||
|
lla = "eza -la";
|
||||||
|
llt = "eza -lT";
|
||||||
|
|
||||||
|
cp = "cp -i";
|
||||||
|
mv = "mv -i";
|
||||||
|
rm = "rm -i";
|
||||||
|
|
||||||
|
# switch between yubikeys for the same GPG key
|
||||||
|
switch_yubikeys = ''gpg-connect-agent "scd serialno" "learn --force" "/bye"'';
|
||||||
|
|
||||||
|
# podman
|
||||||
|
docker = "podman";
|
||||||
|
docker-compose = "podman-compose";
|
||||||
|
};
|
||||||
|
history.path = "${config.xdg.configHome}/zsh/history";
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."fsh".source = "${srcs.catppuccin-zsh-fsh.src}/themes";
|
xdg.configFile."fsh".source = "${srcs.catppuccin-zsh-fsh.src}/themes";
|
||||||
|
|
Loading…
Reference in a new issue