# Set manually set -gx OS "fedora" # Choose OS # set -gx HELPERS "snap flatpak" # Specify helper package managers, if any set -gx LANG_HELPERS "cargo" # List of language package managers # Auto-detect OS if not manually set if not set -q OS if test -f /etc/os-release set -l distro (grep "^ID=" /etc/os-release | cut -d= -f2 | tr -d '"') set -gx OS $distro else if test (uname) = "FreeBSD" set -gx OS "freebsd" else if test (uname) = "OpenBSD" set -gx OS "openbsd" else if test (uname) = "NetBSD" set -gx OS "netbsd" else if test (uname) = "DragonFly" set -gx OS "dragonfly" else if test (uname) = "Redox" set -gx OS "redox" end end # Base OS package manager switch $OS case debian ubuntu linuxmint pop elementary neon zorin kali mx antix alias inst="sudo apt-get install -y" set updt "sudo apt-get update && sudo apt-get upgrade -y" case arch manjaro endeavour arcolinux garuda parabola artix alias inst="sudo pacman -S" set updt "sudo pacman -Syuu --noconfirm" case fedora rhel centos rocky almalinux oracle alias inst="sudo dnf install -y" set updt "sudo dnf upgrade -y" case opensuse tumbleweed leap suse sles alias inst="sudo zypper install -y" set updt "sudo zypper refresh && sudo zypper update -y" case void alias inst="sudo xbps-install -Sy" set updt "sudo xbps-install -Su" case alpine alias inst="sudo apk add" set updt "sudo apk update && sudo apk upgrade" case gentoo funtoo alias inst="sudo emerge -av" set updt "sudo emerge --sync && sudo emerge -avuDN @world" case slackware alias inst="sudo slackpkg install" set updt "sudo slackpkg update && sudo slackpkg upgrade-all" case nixos alias inst="nix-env -iA" set updt "sudo nix-channel --update && sudo nixos-rebuild switch" case guix alias inst="guix install" set updt "guix pull && guix upgrade" # BSD Family case freebsd dragonfly alias inst="sudo pkg install -y" set updt "sudo pkg update && sudo pkg upgrade -y" case openbsd alias inst="doas pkg_add" set updt "doas pkg_add -u" case netbsd alias inst="sudo pkgin install" set updt "sudo pkgin update && sudo pkgin upgrade" # Redox OS case redox alias inst="pkg install" set updt "pkg upgrade" # Unknown fallback case '*' alias inst="echo 'Unknown OS: please set aliases manually'" set updt "echo 'Unknown OS: no update command'" end # Helpers (extra package managers) # Multiple helpers allowed: e.g. set -gx HELPERS "snap flatpak yay" if set -q HELPERS for helper in $HELPERS switch $helper # Universal case snap set updt "$updt && sudo snap refresh" case flatpak set updt "$updt && flatpak update -y" case appimage set updt "$updt && echo 'Update AppImages manually or with appimageupdatetool'" case brew set updt "$updt && brew update && brew upgrade" # Arch AUR Helpers case yay set updt "$updt && yay -Syu --noconfirm" case paru set updt "$updt && paru -Syu --noconfirm" case trizen set updt "$updt && trizen -Syu --noconfirm" case pacaur set updt "$updt && pacaur -Syu --noconfirm" # Fedora / RHEL Helpers case rpm-ostree set updt "$updt && sudo rpm-ostree upgrade" case copr set updt "$updt && echo 'COPR repos update automatically with dnf upgrade'" # openSUSE Helpers case oneclick set updt "$updt && echo 'Use YaST or zypper for OneClick updates'" case osc set updt "$updt && osc up" # Slackware Helpers case slackpkg+ set updt "$updt && slackpkg update gpg && slackpkg update && slackpkg upgrade-all" # Portable/Other case pkgsrc set updt "$updt && sudo pkgin update && sudo pkgin upgrade" case spack set updt "$updt && spack update && spack upgrade" end end end # Language / toolchain managers # Multiple allowed: e.g. set -gx LANG_HELPERS "cargo npm pip gem" if set -q LANG_HELPERS for lang in $LANG_HELPERS switch $lang # Rust case cargo set updt "$updt && rustup update" # Node.js case npm set updt "$updt && npm update -g && npm install -g npm" case yarn set updt "$updt && yarn global upgrade" case pnpm set updt "$updt && pnpm add -g npm && pnpm update -g" # Python case pip set updt "$updt && pip install --upgrade pip setuptools wheel && pip list --outdated --format=freeze | cut -d'=' -f1 | xargs -n1 pip install -U" case pipx set updt "$updt && pipx upgrade-all" # Ruby case gem set updt "$updt && gem update --system && gem update" case bundler set updt "$updt && bundle update" # Go case go set updt "$updt && go install all" # PHP case composer set updt "$updt && composer self-update && composer global update" # Java case sdkman set updt "$updt && sdk update && sdk upgrade" # Haskell case cabal set updt "$updt && cabal update && cabal install --lib --upgrade-dependencies" case stack set updt "$updt && stack upgrade && stack update" # Elixir / Erlang case mix set updt "$updt && mix local.hex --force && mix local.rebar --force && mix deps.update --all" case rebar set updt "$updt && rebar3 update" # Perl case cpan set updt "$updt && cpan -u" case cpanm set updt "$updt && cpan-outdated -p | xargs cpanm" # .NET case dotnet set updt "$updt && dotnet tool update --global --all" # Julia case julia set updt "$updt && julia -e 'using Pkg; Pkg.update()'" # R case cran set updt "$updt && R -q -e 'update.packages(ask=FALSE, repos=\"https://cloud.r-project.org\")'" # Lua case luarocks set updt "$updt && luarocks install --server=https://luarocks.org/dev" # Scala case coursier set updt "$updt && cs update" # Dart / Flutter case dart set updt "$updt && dart pub upgrade" case flutter set updt "$updt && flutter upgrade" # OCaml case opam set updt "$updt && opam update && opam upgrade -y" # Common Lisp case quicklisp set updt "$updt && sbcl --eval '(ql:update-all-dists)' --quit" # Nim case nimble set updt "$updt && nimble refresh && nimble update" # Crystal case shards set updt "$updt && shards update" end end end # Final alias alias updt="$updt" alias systemctl="sudo systemctl"