#!/usr/bin/env fish function log -a message echo \n"--- $message ---"\n end set -l distro set -l uname (uname) if test $uname = Darwin set distro mac else if test -f /etc/os-release set distro (grep '^ID=' /etc/os-release | string replace 'ID=' '' | string trim -c '"') else echo 'Your OS is unsupported. Supported: Arch, Debian, Fedora, Mac (Brew)' return 1 end set -l base_pkgs \ fish \ git \ neovim \ tmux \ rsync \ curl \ less \ fzf \ mosh \ lsd \ ripgrep \ bat \ tree-sitter-cli \ nodejs \ zoxide \ git-delta \ stow set -l mac_pkgs \ $base_pkgs \ fd \ yazi set -l arch_pkgs \ $base_pkgs \ fd \ yazi \ ttf-nerd-fonts-symbols \ ttf-nerd-fonts-symbols-common \ ttf-nerd-fonts-symbols-mono set -l debian_pkgs \ $base_pkgs \ fd-find \ extrepo set -l fedora_pkgs \ $base_pkgs \ fd-find switch $distro case mac log 'Installing packages with Homebrew' brew install $mac_pkgs case arch log 'Installing yay' sudo pacman --sync --refresh --sysupgrade --noconfirm and sudo pacman --sync --needed --noconfirm base-devel go bat or return test -d yay or git clone https://aur.archlinux.org/yay.git and cd yay and bat PKGBUILD and read -P 'Continue? (y/N): ' -l ready and test "$ready" = y; or test "$ready" = Y and makepkg --syncdeps --install --noconfirm and cd .. or return log 'Installing packages with yay' yay --sync --noconfirm $arch_pkgs case debian log 'Installing packages with APT' sudo apt-get --quiet --yes update and sudo apt-get --quiet --yes upgrade and sudo apt-get --quiet --yes install $debian_pkgs case fedora log 'Installing packages with DNF' sudo dnf upgrade --assumeyes and sudo dnf --assumeyes install $fedora_pkgs case '*' echo 'Your OS is unsupported. Supported: Arch, Debian, Fedora, Mac (Brew)' return 1 end