diff --git a/options/custom/programs/fish.nix b/options/custom/programs/fish.nix
index 24b98ef..5ed6b03 100644
--- a/options/custom/programs/fish.nix
+++ b/options/custom/programs/fish.nix
@@ -19,231 +19,233 @@ in {
         inherit enable interactiveShellInit shellAbbrs;
       };
 
-      ${config.custom.username}.programs.fish = let
-        # Expand abbreviations anywhere in the shell
-        #?? sudo ABBREVIATION
-        anywhere = expansion: {
-          inherit expansion;
-          position = "anywhere";
-          setCursor = true;
-        };
-
-        # Set cursor position to %
-        #?? % | EXPANSION
-        cursor = expansion: {
-          inherit expansion;
-          setCursor = true;
-        };
-      in {
+      ${config.custom.username}.programs.fish = {
         enable = true;
 
-        shellAbbrs = {
-          "/e" = anywhere "/etc/%";
-          "/en" = anywhere "/etc/nixos/%";
-          "/h" = anywhere "~/%";
-          "/hd" = anywhere "~/.dev/%";
-          "/n" = anywhere "/nix/%";
-          "/nv" = anywhere "/nix/var/%";
-          "/nvn" = anywhere "/nix/var/nix/%";
-          "/nvnp" = anywhere "/nix/var/nix/profiles/%";
-          "/nvnps" = anywhere "/nix/var/nix/profiles/system/%";
-          "/r" = anywhere "/run/%";
-          "/rc" = anywhere "/run/current-system/%";
+        shellAbbrs =
+          # Expand abbreviations anywhere in the shell
+          #?? sudo ABBREVIATION
+          mapAttrs (name: value: {
+            expansion = value;
+            position = "anywhere";
+            setCursor = true;
+          }) {
+            "/e" = "/etc/%";
+            "/en" = "/etc/nixos/%";
+            "/h" = "~/%";
+            "/hd" = "~/.dev/%";
+            "/n" = "/nix/%";
+            "/nv" = "/nix/var/%";
+            "/nvn" = "/nix/var/nix/%";
+            "/nvnp" = "/nix/var/nix/profiles/%";
+            "/nvnps" = "/nix/var/nix/profiles/system/%";
+            "/r" = "/run/%";
+            "/rc" = "/run/current-system/%";
+          }
+          //
+          # Set all cursor positions to %
+          #?? % | EXPANSION
+          mapAttrs (name: value: {
+            expansion = value;
+            setCursor = true;
+          }) {
+            reboot = "sudo systemctl reboot";
+            restart = "sudo systemctl reboot";
+            poweroff = "sudo systemctl poweroff";
+            shutdown = "sudo systemctl poweroff";
 
-          reboot = "sudo systemctl reboot";
-          restart = "sudo systemctl reboot";
-          poweroff = "sudo systemctl poweroff";
-          shutdown = "sudo systemctl poweroff";
+            rsync = "rsync --info progress2";
 
-          rsync = "rsync --info progress2";
+            a = "adb";
+            as = "adb shell";
+            asa = "adb shell sh /sdcard/Android/data/com.llamalab.automate/cache/start.sh"; # Automate
 
-          a = "adb";
-          as = "adb shell";
-          asa = "adb shell sh /sdcard/Android/data/com.llamalab.automate/cache/start.sh"; # Automate
+            b = "sudo borgmatic --progress --stats";
+            bb = "sudo borgmatic borg";
+            bc = "sudo borgmatic create --progress --stats";
+            bct = "sudo borgmatic compact";
+            be = "sudo borgmatic extract --progress";
+            bi = "sudo borgmatic info";
+            bin = "sudo borgmatic init -e repokey-blake2";
+            bk = "sudo borgmatic key export";
+            bl = "sudo borgmatic list";
+            bm = "sudo borgmatic mount";
+            bp = "sudo borgmatic prune";
+            brl = "sudo borgmatic rlist";
+            br = "sudo borgmatic restore";
+            bt = "sudo borgmatic export-tar";
+            bu = "sudo borgmatic unmount";
 
-          b = "sudo borgmatic --progress --stats";
-          bb = "sudo borgmatic borg";
-          bc = "sudo borgmatic create --progress --stats";
-          bct = "sudo borgmatic compact";
-          be = "sudo borgmatic extract --progress";
-          bi = "sudo borgmatic info";
-          bin = "sudo borgmatic init -e repokey-blake2";
-          bk = "sudo borgmatic key export";
-          bl = "sudo borgmatic list";
-          bm = "sudo borgmatic mount";
-          bp = "sudo borgmatic prune";
-          brl = "sudo borgmatic rlist";
-          br = "sudo borgmatic restore";
-          bt = "sudo borgmatic export-tar";
-          bu = "sudo borgmatic unmount";
+            c = "clear";
+            e = "exit";
+            m = "mosh";
+            r = "reset";
 
-          c = "clear";
-          e = "exit";
-          m = "mosh";
-          r = "reset";
+            d = "docker";
+            dc = "docker compose";
+            dcd = "docker compose down";
+            dce = "docker compose exec";
+            dcl = "docker compose logs";
+            dcp = "docker compose pull";
+            dcu = "docker compose up";
+            dcuf = "docker compose up --force-recreate";
+            de = "docker exec";
+            dei = "docker exec --interactive";
+            deit = "docker exec --interactive --tty";
+            det = "docker exec --tty";
+            di = "docker images";
+            dk = "docker kill";
+            dn = "docker network";
+            dnl = "docker network ls";
+            dp = "docker pull";
+            dps = "docker ps";
+            dpsa = "docker ps --all --size";
+            dr = "docker rm";
+            ds = "docker system";
+            dsp = "docker system prune";
+            dspav = "docker system prune --all --volumes";
 
-          d = "docker";
-          dc = "docker compose";
-          dcd = "docker compose down";
-          dce = "docker compose exec";
-          dcl = "docker compose logs";
-          dcp = "docker compose pull";
-          dcu = "docker compose up";
-          dcuf = "docker compose up --force-recreate";
-          de = "docker exec";
-          dei = "docker exec --interactive";
-          deit = "docker exec --interactive --tty";
-          det = "docker exec --tty";
-          di = "docker images";
-          dk = "docker kill";
-          dn = "docker network";
-          dnl = "docker network ls";
-          dp = "docker pull";
-          dps = "docker ps";
-          dpsa = "docker ps --all --size";
-          dr = "docker rm";
-          ds = "docker system";
-          dsp = "docker system prune";
-          dspav = "docker system prune --all --volumes";
+            g = "git";
+            ga = "git add";
+            gb = "git branch";
+            gbi = "git bisect";
+            gbib = "git bisect bad";
+            gbig = "git bisect good";
+            gc = "git clone";
+            gd = "git diff";
+            gf = "git fetch";
+            gi = "git init";
+            gk = "git checkout";
+            gl = "git log";
+            gm = "git merge";
+            gp = "git pull";
+            gps = "git push";
+            gr = "git reset";
+            grh = "git reset --hard";
+            grb = "git rebase";
+            grm = "git rm";
+            grt = "git remote";
+            grv = "git revert";
+            gs = "git status";
+            gsh = "git show";
+            gst = "git stash";
+            gsw = "git switch";
+            gy = "git cherrypick";
 
-          g = "git";
-          ga = "git add";
-          gb = "git branch";
-          gbi = "git bisect";
-          gbib = "git bisect bad";
-          gbig = "git bisect good";
-          gc = "git clone";
-          gd = "git diff";
-          gf = "git fetch";
-          gi = "git init";
-          gk = "git checkout";
-          gl = "git log";
-          gm = "git merge";
-          gp = "git pull";
-          gps = "git push";
-          gr = "git reset";
-          grh = "git reset --hard";
-          grb = "git rebase";
-          grm = "git rm";
-          grt = "git remote";
-          grv = "git revert";
-          gs = "git status";
-          gsh = "git show";
-          gst = "git stash";
-          gsw = "git switch";
-          gy = "git cherrypick";
+            jc = "journalctl";
+            jcei = "journalctl --pager-end --identifier";
+            jcfi = "journalctl --follow --identifier";
+            jci = "journalctl --identifier";
+            jcs = "journalctl --system";
+            jcse = "journalctl --system --pager-end";
+            jcsei = "journalctl --user --pager-end --identifier";
+            jcseu = "journalctl --system --pager-end --unit";
+            jcsf = "journalctl --system --follow";
+            jcsfu = "journalctl --system --follow --unit";
+            jcsu = "journalctl --system --unit";
+            jcu = "journalctl --user";
+            jcue = "journalctl --user --pager-end";
+            jcuei = "journalctl --user --pager-end --identifier";
+            jcueu = "journalctl --user --pager-end --unit";
+            jcuf = "journalctl --user --follow";
+            jcufi = "journalctl --user --follow --identifier";
+            jcufu = "journalctl --user --follow --unit";
+            jcui = "journalctl --user --identifier";
+            jcuu = "journalctl --user --unit";
 
-          jc = "journalctl";
-          jcei = "journalctl --pager-end --identifier";
-          jcfi = "journalctl --follow --identifier";
-          jci = "journalctl --identifier";
-          jcs = "journalctl --system";
-          jcse = "journalctl --system --pager-end";
-          jcsei = "journalctl --user --pager-end --identifier";
-          jcseu = "journalctl --system --pager-end --unit";
-          jcsf = "journalctl --system --follow";
-          jcsfu = "journalctl --system --follow --unit";
-          jcsu = "journalctl --system --unit";
-          jcu = "journalctl --user";
-          jcue = "journalctl --user --pager-end";
-          jcuei = "journalctl --user --pager-end --identifier";
-          jcueu = "journalctl --user --pager-end --unit";
-          jcuf = "journalctl --user --follow";
-          jcufi = "journalctl --user --follow --identifier";
-          jcufu = "journalctl --user --follow --unit";
-          jcui = "journalctl --user --identifier";
-          jcuu = "journalctl --user --unit";
+            k = "kitten";
+            ks = "kitten ssh";
 
-          k = "kitten";
-          ks = "kitten ssh";
+            n = "nix";
+            nb = "nix build";
+            nf = "nix flake";
+            nfi = "nix flake info";
+            nfl = "nix flake lock";
+            nfu = "nix flake update";
+            nr = "nix run";
+            nrgl = "nix run github:nix-community/nixGL --impure -- %";
+            nrn = "nix run nixpkgs#%";
+            ns = "nix shell";
+            nsgl = "nix shell github:nix-community/nixGL --impure";
+            nsn = "nix shell nixpkgs#%";
+            nt = "nix store";
 
-          n = "nix";
-          nb = "nix build";
-          nf = "nix flake";
-          nfi = "nix flake info";
-          nfl = "nix flake lock";
-          nfu = "nix flake update";
-          ngl = cursor "nix run github:nix-community/nixGL --impure -- %";
-          nr = "nix run nixpkgs#";
-          ns = "nix shell nixpkgs#";
-          nt = "nix store";
+            no = "nixos";
+            nob = "nixos build";
+            nobb = "nixos build boot";
+            nobs = "nixos build switch";
+            nobt = "nixos build test";
+            nod = "nixos diff";
+            nog = "nixos generate";
+            nol = "nixos list";
+            nor = "nixos repl";
 
-          no = "nixos";
-          nob = "nixos build";
-          nobb = "nixos build boot";
-          nobs = "nixos build switch";
-          nobt = "nixos build test";
-          nod = "nixos diff";
-          nog = "nixos generate";
-          nol = "nixos list";
-          nor = "nixos repl";
+            sc = "systemctl";
+            scp = "sudo systemctl poweroff";
+            scr = "sudo systemctl reboot";
+            scs = "sudo systemctl --system";
+            scsd = "sudo systemctl --system disable";
+            scsdn = "sudo systemctl --system disable --now";
+            scse = "sudo systemctl --system reenable";
+            scsen = "sudo systemctl --system reenable --now";
+            scsh = "sudo systemctl --system show";
+            scsl = "sudo systemctl --system list-unit-files";
+            scsm = "sudo systemctl --system mask";
+            scsr = "sudo systemctl --system restart";
+            scsrr = "sudo systemctl --system reload-or-restart";
+            scss = "sudo systemctl --system status";
+            scst = "sudo systemctl --system stop";
+            scsu = "sudo systemctl --system unmask";
+            scu = "systemctl --user";
+            scud = "systemctl --user disable";
+            scudn = "systemctl --user disable --now";
+            scue = "systemctl --user reenable";
+            scuen = "systemctl --user reenable --now";
+            scuh = "systemctl --user show";
+            scul = "systemctl --user list-unit-files";
+            scum = "systemctl --user mask";
+            scur = "systemctl --user restart";
+            scurr = "systemctl --user reload-or-restart";
+            scus = "systemctl --user status";
+            scut = "systemctl --user stop";
+            scuu = "systemctl --user unmask";
 
-          sc = "systemctl";
-          scp = "sudo systemctl poweroff";
-          scr = "sudo systemctl reboot";
-          scs = "sudo systemctl --system";
-          scsd = "sudo systemctl --system disable";
-          scsdn = "sudo systemctl --system disable --now";
-          scse = "sudo systemctl --system reenable";
-          scsen = "sudo systemctl --system reenable --now";
-          scsh = "sudo systemctl --system show";
-          scsl = "sudo systemctl --system list-unit-files";
-          scsm = "sudo systemctl --system mask";
-          scsr = "sudo systemctl --system restart";
-          scsrr = "sudo systemctl --system reload-or-restart";
-          scss = "sudo systemctl --system status";
-          scst = "sudo systemctl --system stop";
-          scsu = "sudo systemctl --system unmask";
-          scu = "systemctl --user";
-          scud = "systemctl --user disable";
-          scudn = "systemctl --user disable --now";
-          scue = "systemctl --user reenable";
-          scuen = "systemctl --user reenable --now";
-          scuh = "systemctl --user show";
-          scul = "systemctl --user list-unit-files";
-          scum = "systemctl --user mask";
-          scur = "systemctl --user restart";
-          scurr = "systemctl --user reload-or-restart";
-          scus = "systemctl --user status";
-          scut = "systemctl --user stop";
-          scuu = "systemctl --user unmask";
+            s = "ssh";
+            si = "ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostkeyAlgorithms=+ssh-rsa -o Ciphers=aes256-cbc";
 
-          s = "ssh";
-          si = "ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostkeyAlgorithms=+ssh-rsa -o Ciphers=aes256-cbc";
+            t = "tailscale";
+            td = "sudo tailscale down";
+            te = "sudo tailscale exit-node";
+            ti = "tailscale ip --4";
+            tl = "sudo tailscale login";
+            tp = "tailscale ping";
+            ts = "tailscale status";
+            tss = "tailscale ssh";
+            tt = "sudo tailscale set";
+            tu = "sudo tailscale up";
+            tw = "sudo tailscale switch";
 
-          t = "tailscale";
-          td = "sudo tailscale down";
-          te = "sudo tailscale exit-node";
-          ti = "tailscale ip --4";
-          tl = "sudo tailscale login";
-          tp = "tailscale ping";
-          ts = "tailscale status";
-          tss = "tailscale ssh";
-          tt = "sudo tailscale set";
-          tu = "sudo tailscale up";
-          tw = "sudo tailscale switch";
+            txa = "tmux attach";
+            txd = "tmux detach";
+            txk = "tmux kill-session";
+            txl = "tmux list-sessions";
 
-          txa = "tmux attach";
-          txd = "tmux detach";
-          txk = "tmux kill-session";
-          txl = "tmux list-sessions";
+            w = "waydroid";
+            wa = "waydroid app";
+            waa = "waydroid app launch com.YoStarEN.Arknights"; # Arknights
+            wap = "waydroid app launch com.android.vending"; # Play Store
+            was = "waydroid app launch com.android.settings"; # Settings
+            wf = "waydroid show-full-ui";
+            wi = "sudo waydroid init --force --system_type GAPPS";
+            ws = "waydroid session";
+            wsh = "sudo waydroid shell";
+            wss = "waydroid session start &> /dev/null & disown";
+            wst = "waydroid session stop";
+            wu = "sudo waydroid upgrade";
 
-          w = "waydroid";
-          wa = "waydroid app";
-          waa = "waydroid app launch com.YoStarEN.Arknights"; # Arknights
-          wap = "waydroid app launch com.android.vending"; # Play Store
-          was = "waydroid app launch com.android.settings"; # Settings
-          wf = "waydroid show-full-ui";
-          wi = "sudo waydroid init --force --system_type GAPPS";
-          ws = "waydroid session";
-          wsh = "sudo waydroid shell";
-          wss = "waydroid session start &> /dev/null & disown";
-          wst = "waydroid session stop";
-          wu = "sudo waydroid upgrade";
-
-          zt = "sudo zerotier-cli";
-          ztip = "sudo zerotier-cli get $(sudo zerotier-cli -j listnetworks | jq -r .[-1].id) ip";
-        };
+            zt = "sudo zerotier-cli";
+            ztip = "sudo zerotier-cli get $(sudo zerotier-cli -j listnetworks | jq -r .[-1].id) ip";
+          };
 
         interactiveShellInit = ''
           # Disable greeting