{pkgs, config, ...}: { programs.zsh = let auth = import ../common/auth.nix; nixcfg = import ../common/nixcfg.nix; in { enable = true; autosuggestion.enable = true; syntaxHighlighting.enable = true; oh-my-zsh = { enable = true; theme = "agnoster"; plugins = ["git"]; }; shellAliases = { # NixOS aliases nixcfg = "${nixcfg.open}"; nixclean = "${auth.method} nix-store --gc; nix-collect-garbage -d; notify-send 'NixOS store clean finished.'"; nixpurge = "${auth.method} nix-collect-garbage --delete-old; notify-send 'NixOS generation removed.'"; nixoptimize = "${auth.method} nix store optimise; notify-send 'NixOS store optimization finished.'"; # Flake commands flakedate = "${auth.method} nix flake update /etc/nixos"; sysswitch = "${auth.method} nixos-rebuild switch --flake /etc/nixos"; homeswitch = "home-manager switch --flake /etc/nixos"; nixswitch = "sysswitch; homeswitch; notify-send 'NixOS switch done.'"; nixdate = "flakedate && sysswitch; homeswitch; notify-send 'NixOS update done.'"; # Shortcut aliases neo = "clear && fastfetch"; ip = "ip -c"; ls = "${pkgs.eza}/bin/eza -a --color=always --group-directories-first --icons"; nls = "/usr/bin/env ls"; cat = "${pkgs.bat}/bin/bat --paging never"; ncat = "/usr/bin/env cat"; copycat = "wl-copy <"; sunshinehost = "WAYLAND_DISPLAY=wayland-1 DISPLAY=:1 sunshine -0"; seneca = "ssh jhampton1@matrix.senecapolytechnic.ca"; # Curl tools myip = "curl ifconfig.co"; # Download from sources ytdl = "yt-dlp --embed-thumbnail --embed-metadata --output \"%(title)s.%(ext)s\""; ytmp4 = "ytdl --recode-video webm"; ytm3u = "yt-dlp -gS proto:m3u8"; opusdl = "ytdl --recode-video opus"; ytopus = "opusdl --format 251"; spotdl = "spotdl --m3u --format opus"; }; initExtra = '' ${pkgs.any-nix-shell}/bin/any-nix-shell zsh --info-right | source /dev/stdin; pfetch setopt HIST_IGNORE_SPACE setopt RM_STAR_WAIT ''; }; }