## Aliases ## alias cat = bat alias find = fd alias df = duf alias du = dust -b -d 1 alias just = just --shell "nu" --shell-arg "-c" alias ll = ls -al ## Functions ## def sshdev [port: int = 8080] { $"Listening on localhost:($port)" ^ssh -i ~/.ssh/dev -N -T -R $"1337:localhost:($port)" dev@jolheiser.com } def nixdev [ name: string # Name of the dev shell to use --bash # Use bash instead of nushell --refresh # Refresh the flake ] { let url = $"git+https://git.jojodev.com/jolheiser/dev-shells\#($name)" let c = if ($bash) {""} else {"-c nu"} let refresh = if ($refresh) {"--refresh"} else {""} let cmd = $"nix develop ($refresh) ($url) ($c)" ^nu -c $cmd } def "forge types" [] { ["github", "gitea", "jojodev", "codeberg"] } def clone [ repo: string # Repo name --forge (-f) = "github": string@"forge types" # Forge type (github, gitea, jojodev, codeberg) --owner (-o): string # Owner (default: current dir name) ] { mut id = 'gh' if $forge == 'gitea' { $id = 'gt' } else if $forge == 'jojodev' { $id = 'jj' } else if $forge == 'codeberg' { $id = 'cb' } mut namespace = ($env.PWD | path basename) if $owner != '' { $namespace = $owner } let origin = $'ssh:($id):jolheiser/($repo).git' let upstream = $'($id):($namespace)/($repo).git' ^git clone $origin cd $repo if $namespace != 'jolheiser' { ^git remote add upstream $upstream ^git fetch upstream } } def fg [args ...string] { ^rg --ignore-case --color=always --line-number --no-heading $args | ^fzf --ansi --color 'hl:-1:underline,hl+:-1:underline:reverse' --delimiter ':' --preview "bat --color=always {1} --theme='ctp-mocha' --highlight-line {2}" --preview-window 'up,60%,border-bottom,+{2}+3/3,~3' --bind $"enter:become\(($env.EDITOR) +{2} {1}\)" } def gomodsri [] { let tmp = (mktemp -d) go mod vendor -o $tmp let sri = (go run tailscale.com/cmd/nardump@latest --sri $tmp) $sri | save -f go.mod.sri rm -rf $tmp echo 'nixpkgs.lib.fileContents ./go.mod.sri' } # Run a command if known, otherwise run it with nix def , [ cmd: string # The command to run ...args: string # Command arguments; all flags MUST be quoted ] { if (not (which $cmd | is-empty)) { ^$cmd ...$args return } ^nix run $"nixpkgs#($cmd)" -- ...$args } ## Other ## $env.EDITOR = hx $env.config = ($env.config | upsert "shell_integration" ("WEZTERM_PANE" not-in $env and "SSH_CLIENT" not-in $env)) source ~/.config/nushell/zoxide.nu source ~/.config/nushell/ohmyposh.nu