tree-wide change. seperated config from 'real' modles.
This commit is contained in:
parent
3eee4e105d
commit
a0c1ad0beb
59 changed files with 377 additions and 424 deletions
44
configs/home-manager/nushell/completions/just-completions.nu
Normal file
44
configs/home-manager/nushell/completions/just-completions.nu
Normal file
|
@ -0,0 +1,44 @@
|
|||
def "nu-complete just recipes" [] {
|
||||
^just --unsorted --dump --dump-format json
|
||||
| from json
|
||||
| get recipes
|
||||
| transpose k v
|
||||
| each {|x|
|
||||
{
|
||||
value: $x.k,
|
||||
description: ( $x.v.parameters
|
||||
| each {|y|
|
||||
if ($y.default|is-empty) {
|
||||
$y.name
|
||||
} else {
|
||||
$'($y.name)="($y.default)"'
|
||||
}
|
||||
}
|
||||
| str join ' '
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def "nu-complete just args" [context: string, offset: int] {
|
||||
let r = ($context | split row ' ')
|
||||
^just -u --dump --dump-format json
|
||||
| from json
|
||||
| get recipes
|
||||
| get ($r.1)
|
||||
| get body
|
||||
| each {|x| {description: ($x | get 0) }}
|
||||
| prepend ''
|
||||
|
||||
}
|
||||
|
||||
export def just [
|
||||
recipes?: string@"nu-complete just recipes"
|
||||
...args: any@"nu-complete just args"
|
||||
] {
|
||||
if ($recipes | is-empty) {
|
||||
^just
|
||||
} else {
|
||||
^just $recipes ...$args
|
||||
}
|
||||
}
|
65
configs/home-manager/nushell/completions/make-completions.nu
Normal file
65
configs/home-manager/nushell/completions/make-completions.nu
Normal file
|
@ -0,0 +1,65 @@
|
|||
def "nu-complete make" [] {
|
||||
ls
|
||||
| find --ignore-case makefile
|
||||
| open $in.0.name
|
||||
| lines
|
||||
| find ':'
|
||||
| where ($it | str starts-with '.') == false
|
||||
| split column ' '
|
||||
| get column1
|
||||
| find ':'
|
||||
| str replace ':' ''
|
||||
}
|
||||
|
||||
def "nu-complete make jobs" [] {
|
||||
seq 1 (sys | get cpu | length)
|
||||
}
|
||||
|
||||
def "nu-complete make files" [] {
|
||||
ls **/* | where type == file | get name
|
||||
}
|
||||
|
||||
def "nu-complete make dirs" [] {
|
||||
ls **/* | where type == dir | get name
|
||||
}
|
||||
|
||||
export extern "make" [
|
||||
command?: string@"nu-complete make"
|
||||
--always-make(-B) # Unconditionally make all targets.
|
||||
--directory(-C): string@"nu-complete make dirs" # Change to DIRECTORY before doing anything.
|
||||
--debug(-d) # Print various types of debugging information.
|
||||
--environment-overrides(-e) # Environment variables override makefiles.
|
||||
--eval(-E): string # Evaluate STRING as a makefile statement.
|
||||
--file(-f) # Read FILE as a makefile.
|
||||
--help(-h) # Print this message and exit.
|
||||
--ignore-errors(-i) # Ignore errors from recipes.
|
||||
--include-dir(-I): string@"nu-complete make dirs" # Search DIRECTORY for included makefiles.
|
||||
--jobs(-j): int@"nu-complete make jobs" # Allow N jobs at once; infinite jobs with no arg.
|
||||
--keep-going(-k) # Keep going when some targets can't be made.
|
||||
--load-average(-l): int@"nu-complete make jobs" # Don't start multiple jobs unless load is below N.
|
||||
--check-symlink-times(-L) # Use the latest mtime between symlinks and target.
|
||||
--just-print(-n) # Don't actually run any recipe; just print them.
|
||||
--dry-run
|
||||
--recon
|
||||
--assume-old: string@"nu-complete make files" # Consider FILE to be very old and don't remake it.
|
||||
--old-file(-o): string@"nu-complete make files"
|
||||
--output-sync(-O) # Synchronize output of parallel jobs by TYPE.
|
||||
--print-data-base(-p) # Print make's internal database.
|
||||
--question(-q) # Run no recipe; exit status says if up to date.
|
||||
--no-builtin-rules(-r) # Disable the built-in implicit rules.
|
||||
--no-builtin-variables(-R) # Disable the built-in variable settings.
|
||||
--silent(-s) # Don't echo recipes.
|
||||
--quiet
|
||||
--no-silent # Echo recipes (disable --silent mode).
|
||||
--stop(-S) # Turns off -k.
|
||||
--no-keep-going
|
||||
--touch(-t) # Touch targets instead of remaking them.
|
||||
--trace # Print tracing information.
|
||||
--version(-v) # Print the version number of make and exit.
|
||||
--print-directory(-w) # Print the current directory.
|
||||
--no-print-directory # Turn off -w, even if it was turned on implicitly.
|
||||
--what-if(-W): string@"nu-complete make files" # Consider FILE to be infinitely new.
|
||||
--new-file: string@"nu-complete make files"
|
||||
--assume-new: string@"nu-complete make files"
|
||||
--warn-undefined-variables # Warn when an undefined variable is referenced.
|
||||
]
|
2
configs/home-manager/nushell/completions/mod.nu
Normal file
2
configs/home-manager/nushell/completions/mod.nu
Normal file
|
@ -0,0 +1,2 @@
|
|||
export use just-completions.nu *
|
||||
export use make-completions.nu *
|
65
configs/home-manager/nushell/config.nu
Normal file
65
configs/home-manager/nushell/config.nu
Normal file
|
@ -0,0 +1,65 @@
|
|||
# Nushell Config File
|
||||
#
|
||||
# version = "0.91.0"
|
||||
|
||||
$env.config = {
|
||||
history: {
|
||||
file_format: "sqlite" # "sqlite" or "plaintext"
|
||||
}
|
||||
completions: {
|
||||
algorithm: "fuzzy" # prefix or fuzzy
|
||||
}
|
||||
filesize: {
|
||||
metric: true # 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: {
|
||||
emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default)
|
||||
vi_insert: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default)
|
||||
vi_normal: blink_block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default)
|
||||
}
|
||||
|
||||
edit_mode: vi # emacs, vi
|
||||
shell_integration: true # enables terminal shell integration. Off by default, as some terminals have issues with this.
|
||||
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
|
||||
# enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this.
|
||||
# Zellij does not modify the term var, so we have to special-case it.
|
||||
use_kitty_protocol: ($env.TERM == 'xterm-kitty' and $env.ZELLIJ? == null)
|
||||
highlight_resolved_externals: true # true enables highlighting of external commands in the repl resolved by which.
|
||||
}
|
||||
|
||||
alias please = sudo (history | last | get command)
|
||||
alias la = ls -a
|
||||
alias ll = ls -l
|
||||
alias lla = ls -la
|
||||
alias pyactivate = overlay use ./.venv/bin/activate.nu
|
||||
alias tmux = tmux -u
|
||||
# converts all .doc and .docx files in the local directory to pdfs using libreoffice
|
||||
alias doc2pdf = loffice --convert-to pdf --headless *.docx
|
||||
#common options for sshfs
|
||||
alias sshmnt = sshfs -o idmap=user,compression=no,reconnect,follow_symlinks,dir_cache=yes,ServerAliveInterval=15
|
||||
|
||||
|
||||
#look up something on cheat.sh
|
||||
def cheat [query: string] {
|
||||
curl $"cheat.sh/($query)"
|
||||
}
|
||||
#look up the weather
|
||||
def wttr [
|
||||
location?: string
|
||||
--format (-f): string
|
||||
] {
|
||||
http get $"https://wttr.in/($location)?format=($format)"
|
||||
}
|
||||
|
||||
# parses git log into a nushell table.
|
||||
def --wrapped git-log [...rest] {
|
||||
git log --pretty=%h»¦«%H»¦«%s»¦«%aN»¦«%aE»¦«%aD ...$rest | lines | split column "»¦«" commit full-commit subject name email date | upsert date {|d| $d.date | into datetime}
|
||||
}
|
||||
|
||||
# lists all the authors and how many commits they made in a histogram
|
||||
def git-authors [] {
|
||||
git-log --all | select name date | histogram name
|
||||
}
|
||||
|
||||
use completions *
|
40
configs/home-manager/nushell/default.nix
Normal file
40
configs/home-manager/nushell/default.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.file = {
|
||||
".config/nushell/completions".source = ./completions;
|
||||
};
|
||||
|
||||
programs = {
|
||||
#sessionVariables, sessionPath and shellAliases are not applied to nushell.
|
||||
nushell = {
|
||||
enable = true;
|
||||
configFile.source = ./config.nu;
|
||||
envFile.source = ./env.nu;
|
||||
};
|
||||
|
||||
yazi.enableNushellIntegration = true;
|
||||
zoxide.enableNushellIntegration = true;
|
||||
starship.enableNushellIntegration = true;
|
||||
eza.enableNushellIntegration = true;
|
||||
carapace = {
|
||||
enable = true;
|
||||
enableNushellIntegration = true;
|
||||
};
|
||||
direnv.enableNushellIntegration = true;
|
||||
};
|
||||
services = {
|
||||
gpg-agent.enableNushellIntegration = true;
|
||||
pueue = {
|
||||
enable = true;
|
||||
settings = {
|
||||
daemon = {
|
||||
default_parallel_tasks = 5;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
27
configs/home-manager/nushell/env.nu
Normal file
27
configs/home-manager/nushell/env.nu
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Nushell Environment Config File
|
||||
#
|
||||
# version = "0.91.0"
|
||||
# The prompt indicators are environmental variables that represent
|
||||
# the state of the prompt
|
||||
$env.PROMPT_INDICATOR = {|| "> " }
|
||||
$env.PROMPT_INDICATOR_VI_INSERT = {|| "> " }
|
||||
$env.PROMPT_INDICATOR_VI_NORMAL = {|| ": " }
|
||||
$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " }
|
||||
|
||||
# home managers path, shell aliases, and env vars are not applied to nushell.
|
||||
use std "path add"
|
||||
# $env.PATH = ($env.PATH | split row (char esep))
|
||||
path add ($env.HOME | path join ".cargo" "bin")
|
||||
path add ($env.HOME | path join ".local" "bin")
|
||||
path add ($env.HOME | path join ".nix-profile" "bin")
|
||||
path add ('/opt')
|
||||
$env.PATH = ($env.PATH | uniq)
|
||||
|
||||
$env.PIPENV_VENV_IN_PROJECT = 1
|
||||
$env.POETRY_VIRTUALENVS_IN_PROJECT = 1
|
||||
$env.XDG_DATA_HOME = ( $env.HOME | path join ".local" "share" )
|
||||
|
||||
$env.NU_LIB_DIRS = [
|
||||
...
|
||||
$nu.default-config-dir
|
||||
]
|
27
configs/home-manager/nushell/scripts/ultimate_extractor.nu
Normal file
27
configs/home-manager/nushell/scripts/ultimate_extractor.nu
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Function to extract archives with different extensions.
|
||||
export def extract [name:string] {
|
||||
let handlers = [
|
||||
[extension command];
|
||||
['tar\.bz2|tbz|tbz2' 'tar xvjf']
|
||||
['tar\.gz|tgz' 'tar xvzf']
|
||||
['tar\.xz|txz' 'tar xvf']
|
||||
['tar\.Z' 'tar xvZf']
|
||||
['bz2' 'bunzip2']
|
||||
['deb' 'ar x']
|
||||
['gz' 'gunzip']
|
||||
['pkg' 'pkgutil --expand']
|
||||
['rar' 'unrar x']
|
||||
['tar' 'tar xvf']
|
||||
['xz' 'xz --decompress']
|
||||
['zip|war|jar|nupkg' 'unzip']
|
||||
['Z' 'uncompress']
|
||||
['7z' '7za x']
|
||||
]
|
||||
let maybe_handler = ($handlers | where $name =~ $'\.(($it.extension))$')
|
||||
if ($maybe_handler | is-empty) {
|
||||
error make { msg: "unsupported file extension" }
|
||||
} else {
|
||||
let handler = ($maybe_handler | first)
|
||||
nu -c ($handler.command + ' ' + $"'($name)'")
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue