Compare commits
4 commits
e9a49bc050
...
45179ade64
Author | SHA1 | Date | |
---|---|---|---|
45179ade64 |
|||
49882fbae8 |
|||
3bd3da0c0d |
|||
32f12cf705 |
13 changed files with 548 additions and 31 deletions
16
flake.nix
16
flake.nix
|
@ -19,22 +19,28 @@
|
||||||
fish
|
fish
|
||||||
helix
|
helix
|
||||||
kakoune
|
kakoune
|
||||||
|
nushell
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
pkgsFor;
|
pkgsFor;
|
||||||
|
|
||||||
apps = eachSystem (system: let
|
apps = eachSystem (system: let
|
||||||
inherit (inputs.self.packages.${system}) fish helix;
|
inherit (inputs.self.packages.${system}) fish helix nushell;
|
||||||
in {
|
in {
|
||||||
default = {
|
default = inputs.self.apps.${system}.nushell;
|
||||||
type = "app";
|
|
||||||
program = "${fish}/bin/fish";
|
|
||||||
};
|
|
||||||
helix = {
|
helix = {
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${helix}/bin/hx";
|
program = "${helix}/bin/hx";
|
||||||
};
|
};
|
||||||
|
nushell = {
|
||||||
|
type = "app";
|
||||||
|
program = "${nushell}/bin/nu";
|
||||||
|
};
|
||||||
|
fish = {
|
||||||
|
type = "app";
|
||||||
|
program = "${fish}/bin/fish";
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
templates = import ./templates;
|
templates = import ./templates;
|
||||||
|
|
|
@ -37,16 +37,17 @@ in {
|
||||||
television
|
television
|
||||||
trash-cli
|
trash-cli
|
||||||
util-linux
|
util-linux
|
||||||
uutils-coreutils-noprefix
|
|
||||||
w3m
|
w3m
|
||||||
wireguard-tools
|
wireguard-tools
|
||||||
zip
|
zip
|
||||||
zoxide
|
zoxide
|
||||||
;
|
;
|
||||||
|
inherit fish;
|
||||||
}
|
}
|
||||||
++ builtins.attrValues (hiPrioSet {
|
++ builtins.attrValues (hiPrioSet {
|
||||||
inherit helix fish;
|
inherit helix;
|
||||||
|
inherit (pkgs) uutils-coreutils-noprefix;
|
||||||
});
|
});
|
||||||
# helix as the only editor, a reasonable choice.
|
# helix as the only editor, a reasonable choice.
|
||||||
environment.sessionVariables.EDITOR = "hx";
|
environment.variables.EDITOR = "hx";
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,7 +70,6 @@ in {
|
||||||
obsidian
|
obsidian
|
||||||
microfetch
|
microfetch
|
||||||
nmap
|
nmap
|
||||||
nushell
|
|
||||||
pamixer
|
pamixer
|
||||||
pwvucontrol
|
pwvucontrol
|
||||||
pdfarranger
|
pdfarranger
|
||||||
|
|
|
@ -49,7 +49,7 @@ in {
|
||||||
};
|
};
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = package;
|
type = package;
|
||||||
default = pkgs.nushell;
|
default = self.packages.${pkgs.stdenv.system}.nushell;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -69,11 +69,8 @@ in {
|
||||||
"nix"
|
"nix"
|
||||||
"docker"
|
"docker"
|
||||||
];
|
];
|
||||||
# shell = self.packages.${pkgs.stdenv.system}.fish;
|
shell = self.packages.${pkgs.stdenv.system}.nushell;
|
||||||
shell = pkgs.nushell;
|
|
||||||
# hashedPasswordFile = "/etc/passwords/cr";
|
|
||||||
};
|
};
|
||||||
# root.hashedPasswordFile = "/persist/passwords/root";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
in {
|
in {
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = [pkgs.xdg-utils];
|
systemPackages = [pkgs.xdg-utils];
|
||||||
sessionVariables = {
|
variables = {
|
||||||
TERMINAL = "${terminal}";
|
TERMINAL = "${terminal}";
|
||||||
XDG_CACHE_HOME = "/home/${username}/.config";
|
XDG_CACHE_HOME = "/home/${username}/.config";
|
||||||
};
|
};
|
||||||
|
|
|
@ -28,7 +28,7 @@ in {
|
||||||
};
|
};
|
||||||
# Set the ssh socket globally. This alows all applications and shells to use
|
# Set the ssh socket globally. This alows all applications and shells to use
|
||||||
# the ssh-agent.
|
# the ssh-agent.
|
||||||
sessionVariables."SSH_AUTH_SOCK" = "/run/user/1000/ssh-agent.sock";
|
variables."SSH_AUTH_SOCK" = "/run/user/1000/ssh-agent.sock";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,9 @@ PanelWindow {
|
||||||
WlrLayershell.layer: WlrLayer.Background
|
WlrLayershell.layer: WlrLayer.Background
|
||||||
WlrLayershell.namespace: "shell:background"
|
WlrLayershell.namespace: "shell:background"
|
||||||
|
|
||||||
// property string basePath: "file:///home/cr/Documents/Backgrounds/"
|
property string basePath: "file:///home/cr/Documents/Backgrounds/"
|
||||||
// property var absPath: folderModel.get(Math.floor(Math.random() * folderModel.count), "filePath")
|
property var absPath: folderModel.get(Math.floor(Math.random() * folderModel.count), "filePath")
|
||||||
// property var finalPath: absPath
|
property var finalPath: absPath
|
||||||
|
|
||||||
// property bool _: log()
|
// property bool _: log()
|
||||||
// function log() {
|
// function log() {
|
||||||
|
@ -22,7 +22,7 @@ PanelWindow {
|
||||||
// }
|
// }
|
||||||
FolderListModel {
|
FolderListModel {
|
||||||
id: folderModel
|
id: folderModel
|
||||||
// folder: root.basePath
|
folder: root.basePath
|
||||||
nameFilters: ["*.png"]
|
nameFilters: ["*.png"]
|
||||||
showDirs: false
|
showDirs: false
|
||||||
showFiles: true
|
showFiles: true
|
||||||
|
@ -35,14 +35,14 @@ PanelWindow {
|
||||||
right: true
|
right: true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Item {
|
Item {
|
||||||
// id: background
|
id: background
|
||||||
// anchors.fill: parent
|
anchors.fill: parent
|
||||||
// Image {
|
Image {
|
||||||
// id: image
|
id: image
|
||||||
// source: Qt.resolvedUrl(root.finalPath)
|
source: Qt.resolvedUrl(root.finalPath)
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
Timer {
|
Timer {
|
||||||
id: timer
|
id: timer
|
||||||
// 10 minutes
|
// 10 minutes
|
||||||
|
|
|
@ -69,7 +69,7 @@ layout {
|
||||||
// xwayland stuff
|
// xwayland stuff
|
||||||
// spawn-at-startup "xwayland-satellite"
|
// spawn-at-startup "xwayland-satellite"
|
||||||
spawn-at-startup "kwalletd6"
|
spawn-at-startup "kwalletd6"
|
||||||
spawn-at-startup "bash" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell"
|
spawn-at-startup "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell"
|
||||||
environment {
|
environment {
|
||||||
DISPLAY ":0"
|
DISPLAY ":0"
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@ binds {
|
||||||
spawn "brave"
|
spawn "brave"
|
||||||
}
|
}
|
||||||
Mod+D {
|
Mod+D {
|
||||||
spawn "bash" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell msg launcher open"
|
spawn "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell msg launcher open"
|
||||||
}
|
}
|
||||||
Mod+Alt+L {
|
Mod+Alt+L {
|
||||||
spawn "swaylock"
|
spawn "swaylock"
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
helix = pkgs.callPackage ./helix {};
|
helix = pkgs.callPackage ./helix {};
|
||||||
kakoune = pkgs.callPackage ./kakoune.nix {};
|
kakoune = pkgs.callPackage ./kakoune.nix {};
|
||||||
fish = pkgs.callPackage ./fish {inherit lib;};
|
fish = pkgs.callPackage ./fish {inherit lib;};
|
||||||
|
nushell = pkgs.callPackage ./nushell {};
|
||||||
in {
|
in {
|
||||||
inherit kakoune fish helix;
|
inherit kakoune fish helix nushell;
|
||||||
}
|
}
|
||||||
|
|
328
packages/nushell/config.nu
Normal file
328
packages/nushell/config.nu
Normal file
|
@ -0,0 +1,328 @@
|
||||||
|
#! /usr/bin/env nu
|
||||||
|
|
||||||
|
$env.config = {
|
||||||
|
bracketed_paste: true
|
||||||
|
buffer_editor: "hx"
|
||||||
|
datetime_format: {}
|
||||||
|
edit_mode: vi
|
||||||
|
error_style: fancy
|
||||||
|
float_precision: 2
|
||||||
|
footer_mode: 25
|
||||||
|
render_right_prompt_on_last_line: false
|
||||||
|
show_banner: false
|
||||||
|
use_ansi_coloring: true
|
||||||
|
use_kitty_protocol: true
|
||||||
|
|
||||||
|
shell_integration: {
|
||||||
|
osc2: false
|
||||||
|
osc7: true
|
||||||
|
osc8: true
|
||||||
|
osc9_9: false
|
||||||
|
osc133: true
|
||||||
|
osc633: true
|
||||||
|
reset_application_mode: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.ls = {
|
||||||
|
clickable_links: true
|
||||||
|
use_ls_colors: true
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.rm.always_trash = true
|
||||||
|
|
||||||
|
$env.config.table = {
|
||||||
|
header_on_separator: true
|
||||||
|
footer_inheritance: true
|
||||||
|
index_mode: always
|
||||||
|
mode: compact
|
||||||
|
missing_value_symbol: kek
|
||||||
|
padding: {left: 1 right: 1}
|
||||||
|
show_empty: false
|
||||||
|
trim: {
|
||||||
|
methodology: wrapping
|
||||||
|
truncating_suffix: "..."
|
||||||
|
wrapping_try_keep_words: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.explore = {
|
||||||
|
command_bar_text: {fg: "#C4C9C6"}
|
||||||
|
highlight: {fg: black bg: yellow}
|
||||||
|
status: {
|
||||||
|
error: {fg: white bg: red}
|
||||||
|
warn: {}
|
||||||
|
info: {}
|
||||||
|
}
|
||||||
|
status_bar_background: {fg: "#1D1F21" bg: "#C4C9C6"}
|
||||||
|
table: {
|
||||||
|
split_line: {fg: "#404040"}
|
||||||
|
selected_cell: {bg: light_blue}
|
||||||
|
selected_row: {}
|
||||||
|
selected_column: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.history = {
|
||||||
|
file_format: sqlite
|
||||||
|
isolation: false
|
||||||
|
max_size: 100_000
|
||||||
|
sync_on_enter: true
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.cursor_shape = {
|
||||||
|
vi_insert: line
|
||||||
|
vi_normal: block
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.hooks = {
|
||||||
|
command_not_found: {|| }
|
||||||
|
|
||||||
|
pre_execution: [
|
||||||
|
{
|
||||||
|
let prompt = commandline | str trim
|
||||||
|
|
||||||
|
if ($prompt | is-empty) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
print $"(ansi title)($prompt) — nu(char bel)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
env_change: {
|
||||||
|
PWD: [
|
||||||
|
{||
|
||||||
|
if not ($env.PWD | path join .envrc | path exists) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (which direnv | is-empty) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
direnv export json | from json | default {} | load-env
|
||||||
|
$env.PATH = $env.PATH | split row (char env_sep)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.menus = [
|
||||||
|
{
|
||||||
|
marker: $"(ansi yellow)╋ "
|
||||||
|
name: help_menu
|
||||||
|
only_buffer_difference: true
|
||||||
|
style: {
|
||||||
|
description_text: yellow
|
||||||
|
selected_text: red_reverse
|
||||||
|
text: yellow
|
||||||
|
}
|
||||||
|
type: {
|
||||||
|
col_padding: 2
|
||||||
|
col_width: 20
|
||||||
|
columns: 4
|
||||||
|
description_rows: 10
|
||||||
|
layout: description
|
||||||
|
selection_rows: 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
$env.config.keybindings = [
|
||||||
|
{
|
||||||
|
name: copy_commandline
|
||||||
|
modifier: alt
|
||||||
|
keycode: char_c
|
||||||
|
mode: [vi_normal vi_insert]
|
||||||
|
event: {
|
||||||
|
send: executehostcommand
|
||||||
|
cmd: 'commandline | nu-highlight | $"```ansi\n($in)\n```" | wl-copy $in'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: escape
|
||||||
|
modifier: none
|
||||||
|
keycode: escape
|
||||||
|
mode: [vi_normal vi_insert]
|
||||||
|
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: open_command_editor
|
||||||
|
modifier: control
|
||||||
|
keycode: char_o
|
||||||
|
mode: [vi_normal vi_insert]
|
||||||
|
event: {send: openeditor}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: abbr
|
||||||
|
modifier: control
|
||||||
|
keycode: space
|
||||||
|
mode: [vi_normal vi_insert]
|
||||||
|
event: [
|
||||||
|
{send: menu name: abbr_menu}
|
||||||
|
{edit: insertchar value: " "}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
{
|
||||||
|
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: control
|
||||||
|
keycode: char_a
|
||||||
|
mode: [vi_normal vi_insert]
|
||||||
|
event: {edit: movetolinestart}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
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: 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: newline_or_run_command
|
||||||
|
modifier: none
|
||||||
|
keycode: enter
|
||||||
|
mode: vi_insert
|
||||||
|
event: {send: enter}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name: take_history_hint
|
||||||
|
modifier: control
|
||||||
|
keycode: char_f
|
||||||
|
mode: [vi_normal vi_insert]
|
||||||
|
event: {
|
||||||
|
until: [
|
||||||
|
{send: historyhintcomplete}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
let env_vars_file = '/tmp/nushell-env-vars'
|
||||||
|
if not ($env_vars_file | path exists) {
|
||||||
|
open /etc/profile
|
||||||
|
| lines
|
||||||
|
| select 11
|
||||||
|
| str trim
|
||||||
|
| split column ' ' del path
|
||||||
|
| get path.0
|
||||||
|
| open $in
|
||||||
|
| str trim
|
||||||
|
| lines
|
||||||
|
| parse 'export {name}="{value}"'
|
||||||
|
| transpose --header-row --as-record
|
||||||
|
| tee { load-env $in }
|
||||||
|
| to nuon
|
||||||
|
| save --force $env_vars_file
|
||||||
|
} else {
|
||||||
|
open $env_vars_file
|
||||||
|
| from nuon
|
||||||
|
| load-env $in
|
||||||
|
}
|
||||||
|
|
||||||
|
# fix sudo by prepending /run/wrappers/bin to the PATH.
|
||||||
|
$env.PATH = ($env.PATH | split row (char esep) | prepend '/run/wrappers/bin')
|
||||||
|
|
||||||
|
$env.CARAPACE_BRIDGES = 'inshellisense,fish,carapace,clap,bash'
|
||||||
|
$env.CARAPACE_MATCH = 1
|
||||||
|
|
||||||
|
# Set environment variables according to the path of the clone
|
||||||
|
$env.TOPIARY_CONFIG_FILE = ($env.HOME | path join .config | path join topiary languages.ncl)
|
||||||
|
$env.TOPIARY_LANGUAGE_DIR = ($env.HOME | path join .config | path join topiary languages)
|
||||||
|
# The prompt indicators are environmental variables that represent
|
||||||
|
# the state of the prompt.
|
46
packages/nushell/default.nix
Normal file
46
packages/nushell/default.nix
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
{pkgs, ...}: let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
inherit (lib.meta) getExe;
|
||||||
|
|
||||||
|
nu-config =
|
||||||
|
pkgs.writeText "nu-init"
|
||||||
|
# nu
|
||||||
|
''
|
||||||
|
#!/usr/bin/env nu
|
||||||
|
source ${./config.nu}
|
||||||
|
source ${./prompt.nu}
|
||||||
|
|
||||||
|
let autoload_dir = $nu.user-autoload-dirs.0
|
||||||
|
mkdir $autoload_dir
|
||||||
|
|
||||||
|
let zoxide_path = $autoload_dir | path join zoxide.nu
|
||||||
|
if not ($zoxide_path | path exists) {
|
||||||
|
${getExe pkgs.zoxide} init nushell --cmd cd | save -f $zoxide_path
|
||||||
|
}
|
||||||
|
# Atuin is too slow, sadly.
|
||||||
|
# let atuin_path = $autoload_dir | path join atuin.nu
|
||||||
|
# if not ($atuin_path | path exists) {
|
||||||
|
# ${getExe pkgs.atuin} init nu | save -f $atuin_path
|
||||||
|
# }
|
||||||
|
let carapace_path = $autoload_dir | path join carapace.nu
|
||||||
|
if not ($carapace_path | path exists) {
|
||||||
|
${getExe pkgs.carapace} _carapace nushell | save -f $carapace_path
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
packages = import ./packages.nix pkgs;
|
||||||
|
in
|
||||||
|
(pkgs.symlinkJoin {
|
||||||
|
name = "nushell";
|
||||||
|
paths = [pkgs.nushell] ++ packages;
|
||||||
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/nu --add-flags "\
|
||||||
|
--config ${nu-config}"
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
.overrideAttrs (_: {
|
||||||
|
passthru = {
|
||||||
|
shellPath = "/bin/nu";
|
||||||
|
};
|
||||||
|
meta.mainProgram = "nu";
|
||||||
|
})
|
66
packages/nushell/packages.nix
Normal file
66
packages/nushell/packages.nix
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
pkgs:
|
||||||
|
builtins.attrValues {
|
||||||
|
inherit
|
||||||
|
(pkgs)
|
||||||
|
# better cd
|
||||||
|
zoxide
|
||||||
|
# pipe viewer
|
||||||
|
pv
|
||||||
|
# hex editor
|
||||||
|
bvi
|
||||||
|
#better ls
|
||||||
|
eza
|
||||||
|
atuin
|
||||||
|
# better cat
|
||||||
|
bat
|
||||||
|
# clipboard
|
||||||
|
# yazi
|
||||||
|
serpl
|
||||||
|
diff-so-fancy
|
||||||
|
tig
|
||||||
|
direnv
|
||||||
|
sesh
|
||||||
|
mprocs
|
||||||
|
curlie
|
||||||
|
entr
|
||||||
|
procs
|
||||||
|
sd
|
||||||
|
# mult
|
||||||
|
glow
|
||||||
|
# dua-cli
|
||||||
|
dust
|
||||||
|
kondo
|
||||||
|
# better grep
|
||||||
|
ripgrep
|
||||||
|
# IP stuff
|
||||||
|
dig
|
||||||
|
# simply the best fetch tool out there
|
||||||
|
microfetch
|
||||||
|
fzf
|
||||||
|
element
|
||||||
|
difftastic
|
||||||
|
hexyl
|
||||||
|
yazi
|
||||||
|
gnumake
|
||||||
|
asciinema
|
||||||
|
inetutils
|
||||||
|
tokei
|
||||||
|
starship
|
||||||
|
wget
|
||||||
|
cpufetch
|
||||||
|
watchman
|
||||||
|
tealdeer
|
||||||
|
hyperfine
|
||||||
|
imagemagick
|
||||||
|
ffmpeg-full
|
||||||
|
timg
|
||||||
|
nmap
|
||||||
|
fd
|
||||||
|
jq
|
||||||
|
rsync
|
||||||
|
figlet
|
||||||
|
unzip
|
||||||
|
zip
|
||||||
|
ouch
|
||||||
|
;
|
||||||
|
}
|
73
packages/nushell/prompt.nu
Normal file
73
packages/nushell/prompt.nu
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
use std null_device
|
||||||
|
|
||||||
|
export-env {
|
||||||
|
load-env {
|
||||||
|
PROMPT_COMMAND: {||
|
||||||
|
let exit_code = $env.LAST_EXIT_CODE
|
||||||
|
mut path_segment = $env.PWD | path basename
|
||||||
|
|
||||||
|
let exit_code_segment = if ($exit_code == 0) {
|
||||||
|
""
|
||||||
|
} else {
|
||||||
|
$"(ansi yellow)━┫(ansi red)($exit_code)(ansi yellow)┣━"
|
||||||
|
}
|
||||||
|
|
||||||
|
[$"(ansi yellow)┏" $exit_code_segment "━ " $path_segment "\n"] | str join
|
||||||
|
}
|
||||||
|
TRANSIENT_PROMPT_COMMAND: {||
|
||||||
|
let path_segment = $env.PWD | path basename
|
||||||
|
|
||||||
|
let exit_code_segment = if ($env.LAST_EXIT_CODE == 0) {
|
||||||
|
""
|
||||||
|
} else {
|
||||||
|
$"(ansi yellow)━┫(ansi red)($env.LAST_EXIT_CODE)(ansi yellow)┣━"
|
||||||
|
}
|
||||||
|
|
||||||
|
[$"(ansi yellow)━" $exit_code_segment "━ " $path_segment] | str join
|
||||||
|
}
|
||||||
|
PROMPT_INDICATOR_VI_INSERT: $"(ansi yellow)┃ "
|
||||||
|
PROMPT_INDICATOR_VI_NORMAL: $"(ansi yellow)┋ "
|
||||||
|
PROMPT_MULTILINE_INDICATOR: $"(ansi yellow)┃ "
|
||||||
|
TRANSIENT_PROMPT_INDICATOR_VI_INSERT: " "
|
||||||
|
TRANSIENT_PROMPT_INDICATOR_VI_NORMAL: " "
|
||||||
|
TRANSIENT_PROMPT_MULTILINE_INDICATOR: $"(ansi yellow)┃ "
|
||||||
|
|
||||||
|
config: (
|
||||||
|
$env.config? | default {} | merge {
|
||||||
|
render_right_prompt_on_last_line: true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
PROMPT_COMMAND_RIGHT: {||
|
||||||
|
let jj_status = try {
|
||||||
|
jj --quiet --color always --ignore-working-copy log --no-graph --revisions @ --template '
|
||||||
|
separate(
|
||||||
|
" ",
|
||||||
|
if(empty, label("empty", "(empty)")),
|
||||||
|
coalesce(
|
||||||
|
surround(
|
||||||
|
"\"",
|
||||||
|
"\"",
|
||||||
|
if(
|
||||||
|
description.first_line().substr(0, 24).starts_with(description.first_line()),
|
||||||
|
description.first_line().substr(0, 24),
|
||||||
|
description.first_line().substr(0, 23) ++ "…"
|
||||||
|
)
|
||||||
|
),
|
||||||
|
label(if(empty, "empty"), description_placeholder)
|
||||||
|
),
|
||||||
|
bookmarks.join(", "),
|
||||||
|
change_id.shortest(),
|
||||||
|
commit_id.shortest(),
|
||||||
|
if(conflict, label("conflict", "(conflict)")),
|
||||||
|
if(divergent, label("divergent prefix", "(divergent)")),
|
||||||
|
if(hidden, label("hidden prefix", "(hidden)")),
|
||||||
|
)
|
||||||
|
' err> $null_device
|
||||||
|
} catch {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
$jj_status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue