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