nixos-config/home-manager/modules/nushell.nix
2025-03-05 22:26:28 -05:00

114 lines
2.9 KiB
Nix

{ pkgs, ... }:
{
programs.nushell = {
enable = true;
envFile.text = ''
# Environment Variables
$env.XDG_CONFIG_HOME = ($env.HOME | path join ".config")
# Starship Prompt
mkdir ~/.cache/starship
starship init nu | save -f ~/.cache/starship/init.nu
# Zoxide
zoxide init nushell | save -f ~/.zoxide.nu
'';
shellAliases = {
update = "sudo nixos-rebuild switch";
clean = "nix-collect-garbage -d";
repair = "nix-store --repair --verify --check-contents";
"." = "cd ../";
".." = "cd ../../";
"..." = "cd ../../../";
"...." = "cd ../../../../";
ps = "procs";
grep = "rg";
cat = "bat";
vim = "nvim";
# Default flags
rm = "rm -i";
chmod = "chmod -R";
cp = "cp -r -i -v";
mv = "mv -i -v";
mkdir = "mkdir -p -v";
df = "df -h";
du = "du -h -s";
dd = "dd status=progress bs=4M conv=fdatasync ";
wgetpaste = "wgetpaste -Xx";
sudo = "sudo "; # Makes sudo work with es
ssh = "TERM=xterm ssh"; # Fixes some issues with ssh on some terminals
wget = "wget -c";
ping = "ping -c 5";
ftp = "ftp -p";
# Misc alieses I use often
ports = "ss -tulanp";
rmd = "rm -rf";
mine = "sudo chown -R $(whoami):users";
benchmark = "hyperfine --warmup 3 ";
c = "clear";
listen = "lsof -P -i -n";
octal = "stat -c '%a %n'";
};
configFile.text = ''
$env.config = {
show_banner: false
}
# Starhip Prompt
use ~/.cache/starship/init.nu
# Zoxide
source ~/.zoxide.nu
# nix shell
def nix-shell [] {
nix-shell --run $env.SHELL
}
def "version-completions" [] {
[
{value: "4", description: "IPv4 address (default)"},
{value: "6", description: "IPv6 address"}
]}
# Define the function with completion annotation
def "whatismyip" [
version?: int@version-completions # Parameter with custom completion
] {
# Validate and set default version
let version = if ($version == null) {
4
} else if ($version in [4 6]) {
$version
} else {
error make {
msg: "Invalid IP version. Must be either 4 or 6."
}
}
# Get IP address
let ip = (http get $"https://api($version).ipify.org")
# Create record and display as table
{
$"ip($version)": $ip
} | table
}
'';
};
home.packages = with pkgs; [
fastfetch
];
programs = {
carapace.enable = true;
carapace.enableNushellIntegration = true;
# starship = {
# enable = true;
# settings = {
# add_newline = true;
# character = {
# success_symbol = "[➜](bold green)";
# error_symbol = "[➜](bold red)";
# };
# };
# };
};
}