mirror of
https://codeberg.org/hyperreal/nushell-config
synced 2024-11-01 16:53:12 +01:00
224 lines
6.1 KiB
Plaintext
224 lines
6.1 KiB
Plaintext
# Nushell Config File
|
|
#
|
|
# version = "0.90.1"
|
|
|
|
# Command existence checker function
|
|
def 'is-installed' [ app: string ] {
|
|
((which $app | length) > 0)
|
|
}
|
|
|
|
#
|
|
# MODULES
|
|
#
|
|
|
|
# weather
|
|
use ~/.config/nushell/modules/get-weather.nu get_weather
|
|
|
|
# ultimate-extractor
|
|
use ~/.config/nushell/modules/ultimate-extractor.nu extract
|
|
|
|
# ssh
|
|
use ~/.config/nushell/modules/ssh.nu
|
|
|
|
|
|
#
|
|
# ALIASES / CUSTOM COMMANDS
|
|
#
|
|
|
|
# weather
|
|
export alias weather = get_weather
|
|
|
|
# Git aliases
|
|
export alias ga = git add
|
|
export alias gcl = git clone
|
|
export alias gcmsg = git commit -m
|
|
export alias gd = git diff
|
|
export alias gl = git pull
|
|
export alias gp = git push
|
|
export alias gr = git remote
|
|
export alias grbi = git rebase -i
|
|
export alias grm = git rm
|
|
export alias grv = git remote -v
|
|
export alias gst = git status
|
|
|
|
# ls's
|
|
export alias la = ls -a
|
|
export alias ll = ls -l
|
|
export alias lal = ls -al
|
|
export alias lse = ^ls -lZ
|
|
|
|
# Doom Emacs
|
|
def doomdoc [] { ~/.config/emacs/bin/doom doctor }
|
|
def dsync [] { ~/.config/emacs/bin/doom sync }
|
|
def dclean [] { ~/.config/emacs/bin/doom clean }
|
|
def dcomp [] { ~/.config/emacs/bin/doom compile }
|
|
def dpurge [] { ~/.config/emacs/bin/doom purge }
|
|
def denv [] { ~/.config/emacs/bin/doom env }
|
|
def dupgrade [] { ~/.config/emacs/bin/doom upgrade }
|
|
|
|
# firewalld
|
|
export alias fw = sudo firewall-cmd
|
|
export alias fwp = sudo firewall-cmd --permanent
|
|
export alias fwr = sudo firewall-cmd --reload
|
|
export alias fwrp = sudo firewall-cmd --runtime-to-permanent
|
|
|
|
# Execute bash on host (atomic desktop)
|
|
export alias hostexec = distrobox-host-exec bash
|
|
|
|
# APT
|
|
export alias acs = sudo apt-cache search
|
|
export alias acp = sudo apt-cache policy
|
|
export alias afs = sudo apt-file search
|
|
export alias afu = sudo apt-file update
|
|
export alias aac = sudo apt autoclean
|
|
export alias agc = sudo apt clean
|
|
export alias agi = sudo apt install
|
|
export alias agli = sudo apt list --installed
|
|
export alias agp = sudo apt purge
|
|
export alias agr = sudo apt remove
|
|
export alias agu = sudo apt update
|
|
export alias agud = sudo apt update and sudo apt dist-upgrade
|
|
export alias agar = sudo apt autoremove
|
|
|
|
# DNF
|
|
export alias dnfc = sudo dnf clean all
|
|
export alias dnfi = sudo dnf install
|
|
export alias dnfu = sudo dnf update
|
|
export alias dnfr = sudo dnf remove
|
|
export alias dnfs = sudo dnf search
|
|
|
|
# Copy SSH public key to clipboard
|
|
def pubkey [] { open --raw ~/.ssh/id_ed25519.pub | str trim | xclip -selection clipboard }
|
|
|
|
# Get public ip info
|
|
def pubip [] { curl --silent ipinfo.io | from json }
|
|
|
|
# Get Mullvad info
|
|
def amimullvad [] { curl -sSL https://am.i.mullvad.net/json | from json }
|
|
|
|
# Uptime info
|
|
def upt [] { jc uptime | from json }
|
|
|
|
# df info
|
|
def dfj [] { jc df | from json }
|
|
|
|
# /etc/fstab info
|
|
def etc-fstab [] { open --raw /etc/fstab | jc --fstab | from json }
|
|
|
|
# memory free info
|
|
def memfree [] { jc free | from json }
|
|
|
|
# /etc/group
|
|
def etc-group [] { open --raw /etc/group | jc --group | from json }
|
|
|
|
# /etc/passwd
|
|
def etc-passwd [] { open --raw /etc/passwd | jc --passwd | from json }
|
|
|
|
# Network connections
|
|
def netcons [] { jc lsof -i | from json }
|
|
|
|
# Ports
|
|
def tulp [] { jc ss -tulp | from json }
|
|
|
|
# Open ports
|
|
def openports [] { sudo jc lsof -i | from json | find "LISTEN" }
|
|
|
|
# List sockets in use
|
|
def lsock [] { sudo jc lsof -nP | from json }
|
|
|
|
# List UDP sockets in use
|
|
def lsocku [] { sudo jc lsof -nP | from json | find "UDP" }
|
|
|
|
# List TCP sockets in use
|
|
def lsockt [] { sudo jc lsof -nP | from json | find "TCP" }
|
|
|
|
# Print timestamp as %FT%T%:z
|
|
def tstampz [] { date now | format date "%FT%T%:z" }
|
|
|
|
# Create new directory and enter it
|
|
def --env mkd [path] { mkdir $path; cd $path }
|
|
|
|
# Display pid info of command
|
|
def pids [cmd] { ps | where name == "$cmd" }
|
|
|
|
# Get time in specific time zone
|
|
def whattimein [string] { date now | date to-timezone $string }
|
|
|
|
# cd to home and clear screen
|
|
def --env rsrc [] { cd $env.HOME; clear }
|
|
|
|
# extract
|
|
def x [filename: path] { extract $filename }
|
|
|
|
# Convert filename to given case
|
|
# Ex. caseify camel hello_world.txt
|
|
# => helloWorld.txt
|
|
# Based on https://github.com/nushell/nu_scripts/blob/main/sourced/cool-oneliners/file_convert_naming_case.nu
|
|
def caseify [case: string, filename: path] {
|
|
let ext = (echo $filename | path parse | get extension)
|
|
let cur_stem = (echo $filename | path parse | get stem)
|
|
let new_name = match $case {
|
|
"camel" => (((echo $cur_stem | str camel-case) + "." + $ext) | str join),
|
|
"kebab" => (((echo $cur_stem | str kebab-case) + "." + $ext) | str join),
|
|
"lower" => (((echo $cur_stem | str downcase) + "." + $ext) | str join),
|
|
"pascal" => (((echo $cur_stem | str pascal-case) + "." + $ext) | str join),
|
|
"screamsnake" => (((echo $cur_stem | str screaming-snake-case) + "." + $ext) | str join),
|
|
"snake" => (((echo $cur_stem | str snake-case) + "." + $ext) | str join),
|
|
_ => "Invalid case option"
|
|
}
|
|
mv $filename $new_name
|
|
}
|
|
|
|
# Select a host to SSH into
|
|
def nussh [] {
|
|
let ssh_host = (ssh ssh-list | get Host | input list $"(ansi yellow)Which host to SSH into?(ansi reset)")
|
|
if ($ssh_host | describe) != "string" {
|
|
echo "Operation cancelled"
|
|
return
|
|
}
|
|
autossh -M 0 $ssh_host
|
|
}
|
|
|
|
# Select an open source license and save to LICENSE in current working directory
|
|
def nulicense [] {
|
|
let licenses = (http get https://api.github.com/licenses)
|
|
let license_name = ($licenses | get name | input list $"(ansi yellow)Choose an open source license:(ansi reset)")
|
|
if ($license_name | describe) != "string" {
|
|
echo "Operation cancelled"
|
|
return
|
|
}
|
|
let license_body = (http get ($licenses | where name == $license_name).url.0).body
|
|
$license_body | save --raw -f LICENSE
|
|
}
|
|
|
|
# Convert YAML to JSON
|
|
def yaml2json [filename: path] {
|
|
let stem = (echo $filename | path parse | get stem)
|
|
open --raw $filename | from yaml | to json | save --raw ($stem + ".json" | str join)
|
|
}
|
|
|
|
# Download a file with httpie
|
|
def htdl [url: string] {
|
|
^http -d $url
|
|
}
|
|
|
|
$env.config = {
|
|
rm: {
|
|
always_trash: true
|
|
}
|
|
|
|
table: {
|
|
show_empty: false
|
|
}
|
|
|
|
keybindings: [
|
|
{
|
|
name: nussh
|
|
modifier: alt
|
|
keycode: char_s
|
|
mode: [emacs vi_normal vi_insert]
|
|
event: { send: executehostcommand cmd: nussh }
|
|
}
|
|
]
|
|
}
|