diff --git a/home-manager/common/software/cli/fish/functions.nix b/home-manager/common/software/cli/fish/functions.nix index e69de29b..13ae6346 100644 --- a/home-manager/common/software/cli/fish/functions.nix +++ b/home-manager/common/software/cli/fish/functions.nix @@ -0,0 +1,195 @@ +{ ... }: { + programs.fish.functions = { + # GPG related functions + encrypt = '' + set output $argv-$(ddate).enc + gpg --encrypt --armor --output $output -r $PGP_KEY_ID "$argv" && echo "Encrypted: $argv -> $output" + ''; + decrypt = '' + set output $(echo $argv | rev | cut -c16- | rev) + gpg --decrypt -r $PGP_KEY_ID --output $output $argv && echo "Decrypted: $argv -> $output" + ''; + + update_secrets = '' + pushd /etc/nixos/git + nix develop -c \ + find secrets -name "*.yaml" -exec sops updatekeys {} \; + ''; + restart-docker = '' + if [ (hostname) = "nuc-server" ] + pushd /Storage/Data/docker-compose/ifargle.com/ + else + pushd /Storage/Data/docker-compose/sysctl.io/ + end + docker stop $argv + docker rm $argv + git pull + docker compose up -d $argv + popd + ''; + # Deploy-RS script + deploy-rs = '' + pushd /etc/nixos/git/ + echo -en "Restarting DERP Relays.... " + echo -en "Osaka" + ssh -qA osaka-linode-01 "sudo systemctl restart podman-derp" + echo -en ", Frankfurt" + ssh -qA frankfurt-linode-01 "sudo systemctl restart podman-derp" + echo -en ", Milan" + ssh -qA milan-linode-01 "sudo systemctl restart podman-derp" + echo -e "... Done" + deploy -s + popd + ''; + # Build ISOs/SD Card Images + nixos-build-all-images = '' + echo "Building Linode image..." + nixos-build-linode-img $argv + echo "Building Raspberry Pi image..." + nixos-build-pi-img $argv + echo "Building ISO Console image..." + nixos-build-console $argv + echo "Building ISO Desktop image..." + nixos-build-desktop $argv + ls -lah ~/ | grep nixos + ''; + nixos-build-pi-img = '' + pushd /etc/nixos/git + git pull + nix build .#imageConfigurations.nixos-rpi4-img $argv + cp result/sd-image/nixos-sd-image* ~/. + rm -f result + popd + ''; + nixos-build-linode-img = '' + pushd /etc/nixos/git + git pull + nix build .#imageConfigurations.nixos-linode-img $argv + cp result/nixos.img.gz ~/nixos-linode-$(ddate)-$(git rev-parse HEAD | cut -b 32-).img.gz + rm -f result + popd + ''; + nixos-build-console = '' + pushd /etc/nixos/git + git pull + nix build .#imageConfigurations.nixos-iso-console $argv + cp result/iso/nixos.iso ~/nixos-console-$(ddate)-$(git rev-parse HEAD | cut -b 32-).iso + rm -f result + popd + ''; + nixos-build-desktop = '' + pushd /etc/nixos/git + git pull + nix build .#imageConfigurations.nixos-iso-desktop $argv + cp result/iso/nixos.iso ~/nixos-desktop-$(ddate)-$(git rev-parse HEAD | cut -b 32-).iso + rm -f result + popd + ''; + + # NixOS Related + nix-clean-all = '' + echo -ne "Cleaning up home manager... " + systemctl --user start clean-home-manager.service 2> /dev/null + echo " done" + echo -ne "Optimizing the nix store... " + sudo nix-store --optimize 2> /dev/null + echo " done" + echo -ne "nix-store: Collecting Garbage..." + sudo nix-store --gc 2> /dev/null + echo " done" + echo -ne "Collecting garbage... " + sudo nix-collect-garbage -d 2> /dev/null + echo " done" + ''; + + # BTRFS Related + clean-boot-snapshots = '' + echo -en "Deleting boot snapshots...." + for i in $(sudo snapper -c root list | grep boot | awk {'print $1'} | head -n -4); + echo -en " $i," + sudo snapper -c root delete $i; + end + echo "Remaining snapshots:" + sudo snapper -c root list + echo -e " done." + ''; + + clean-all-snapshots = '' + set subvolumes $(sudo snapper list-configs --column config | tail -n +3) + set types "timeline" "boot" "btrfs-backup" + set num_timeline "14" + set num_boot "5" + set num_btrfs_backup "5" + + for volume in $subvolumes; + echo "Found Volume: $volume"; + for type in $types; + set safe_type (string replace -a "-" "_" $type) + set type_num (eval "echo \$num_$safe_type") + echo " Retaining '$type_num' snapshots for volume '$volume' snaphsot type '$type'"; + + echo -en " Deleting snapshots.... " + set snapshots $(sudo snapper -c $volume list | grep $type | awk {'print $1'} | head -n -$type_num) + for snapshot in $snapshots + echo -en " $snapshot," + sudo snapper -c $volume delete $snapshot + end + echo -e " done." + end; + + echo " Remaining Snapshots in subvolume $volume" + sudo snapper -c $volume list + end + ''; + clean-timeline-snapshots = '' + set subvolumes $(sudo snapper list-configs --column config | tail -n +3) + set types "timeline" + set num_timeline "14" + + for volume in $subvolumes; + echo "Found Volume: $volume"; + for type in $types; + set safe_type (string replace -a "-" "_" $type) + set type_num (eval "echo \$num_$safe_type") + echo " Retaining '$type_num' snapshots for volume '$volume' snaphsot type '$type'"; + + echo -en " Deleting snapshots.... " + set snapshots $(sudo snapper -c $volume list | grep $type | awk {'print $1'} | head -n -$type_num) + for snapshot in $snapshots + echo -en " $snapshot," + sudo snapper -c $volume delete $snapshot + end + echo -e " done." + end; + + echo " Remaining Snapshots in subvolume $volume" + sudo snapper -c $volume list + end + ''; + clean-btrfs-backup-snapshots = '' + set subvolumes $(sudo snapper list-configs --column config | tail -n +3) + set types "btrfs-backup" + set num_btrfs_backup "5" + + for volume in $subvolumes; + echo "Found Volume: $volume"; + for type in $types; + set safe_type (string replace -a "-" "_" $type) + set type_num (eval "echo \$num_$safe_type") + echo " Retaining '$type_num' snapshots for volume '$volume' snaphsot type '$type'"; + + echo -en " Deleting snapshots.... " + set snapshots $(sudo snapper -c $volume list | grep $type | awk {'print $1'} | head -n -$type_num) + for snapshot in $snapshots + echo -en " $snapshot," + sudo snapper -c $volume delete $snapshot + end + echo -e " done." + end; + + echo " Remaining Snapshots in subvolume $volume" + sudo snapper -c $volume list + end + ''; + }; +}