diff --git a/install.sh b/install.sh index 1daba6b..0430940 100755 --- a/install.sh +++ b/install.sh @@ -4,8 +4,59 @@ set -euo pipefail GREEN='\033[1;32m' NC='\033[0m' +apt_packages=( + atop + autossh + bat + borgbackup + borgmatic + build-essential + calibre + cmake + curl + duf + emacs + eza + firewalld + fzf + git + git-core + golang + hdparm + htop + hugo + jc + jq + lsd + lynx + neovim + nmap + nodejs + npm + papirus-icon-theme + parallel + pipx + poetry + prometheus-node-exporter + python3-dev + python3-pip + ripgrep + rsync + rsyslog + shfmt + shellcheck + tcpdump + tealdeer + trash-cli + w3m + wget + wireshark + wl-clipboard + xfce4-terminal + zsh +) -packages=( +dnf_packages=( age atop autossh @@ -39,6 +90,7 @@ packages=( lagrange ldns libtool + lsd lsof lynx neochat @@ -62,7 +114,6 @@ packages=( tealdeer tokodon trash-cli - uv vlc w3m wireshark @@ -89,12 +140,14 @@ pipx_packages=( "bpython" "isort" "pyright" + "uv" ) services_enable=( atop.service atopacct.service atop-rotate.timer + firewalld.service prometheus-node-exporter.service rsyslog.service sshd.service @@ -109,8 +162,6 @@ services_disable=( cups.service cups-browsed.service NetworkManager.service - sddm.service - wpa_supplicant.service ) function action_label() { @@ -118,9 +169,35 @@ function action_label() { echo -e "${GREEN}--> ${1}...${NC}" } +install_makedeb_prebuilt_packages() { + wget -qO - 'https://proget.makedeb.org/debian-feeds/prebuilt-mpr.pub' | gpg --dearmor | sudo tee /usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg 1>/dev/null + echo "deb [arch=all,$(dpkg --print-architecture) signed-by=/usr/share/keyrings/prebuilt-mpr-archive-keyring.gpg] https://proget.makedeb.org prebuilt-mpr $(lsb_release -cs)" | sudo tee /etc/apt/sources.list.d/prebuilt-mpr.list + sudo apt update + sudo apt dist-upgrade -y + sudo apt install just +} + +# interactive +install_starship() { + curl -sS https://starship.rs/install.sh | sh +} + function install_packages() { action_label "INSTALLING PACKAGES" - sudo dnf install -y "${packages[@]}" + if test -f /etc/debian_version; then + sudo apt install -y "${apt_packages[@]}" + install_makedeb_prebuilt_packages + install_starship + fi + + if test -f /etc/redhat-release; then + sudo dnf install -y "${dnf_packages[@]}" + install_devel_groups + enable_copr_repos + install_copr_packages + install_rpmfusion_repos + install_rpmfusion_packages + fi } function install_devel_groups() { @@ -151,14 +228,24 @@ function install_rpmfusion_packages() { function install_charm_packages() { action_label "INSTALLING CHARM PACKAGES" - echo '[charm] -name=Charm -baseurl=https://repo.charm.sh/yum/ -enabled=1 -gpgcheck=1 -gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo - sudo rpm --import https://repo.charm.sh/yum/gpg.key - sudo dnf install -y gum charm + + if test -f /etc/debian_version; then + ARCH=$(dpkg --print-architecture) + curl -s https://api.github.com/repos/charmbracelet/gum/releases/latest | grep "browser_download_url.*deb" | grep "$ARCH" | cut -d : -f 2,3 | tr -d '"' | wget -qi - + sudo dpkg -i gum*.deb + sudo apt -f install + fi + + if test -f /etc/redhat-release; then + echo '[charm] + name=Charm + baseurl=https://repo.charm.sh/yum/ + enabled=1 + gpgcheck=1 + gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo + sudo rpm --import https://repo.charm.sh/yum/gpg.key + sudo dnf install -y gum charm + fi } function install_tailscale() { @@ -231,6 +318,17 @@ function enable_services() { function disable_ipv6() { action_label "DISABLING IPV6" + if test -f /etc/debian_version; then + if ! grep "net.ipv6.conf.all.disable_ipv6" /etc/sysctl.conf; then + echo "net.ipv6.conf.all.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf + echo "net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf + echo "net.ipv6.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf + sudo sysctl -p + else + echo "IPv6 already disabled." + fi + fi + if ! sudo grep "ipv6.disable=1" /boot/grub2/grub.cfg; then sudo grubby --args=ipv6.disable=1 --update-kernel=ALL sudo grub2-mkconfig -o /boot/grub2/grub.cfg @@ -241,17 +339,20 @@ function disable_ipv6() { function setup_fstab() { action_label "SETTING UP /etc/fstab" - sudo mkdir -p /mnt/borgbackup /mnt/quick-backup - if ! grep "ecf44876-2e4e-46ad-9f12-fc516c8ace2d" /etc/fstab; then - echo "UUID=ecf44876-2e4e-46ad-9f12-fc516c8ace2d /mnt/borgbackup btrfs defaults,subvol=@borgbackup,compress=zstd:1,x-systemd.device-timeout=20 0 0" | sudo tee -a /etc/fstab - echo "UUID=ecf44876-2e4e-46ad-9f12-fc516c8ace2d /mnt/quick-backup btrfs defaults,subvol=@quick-backup,compress=zstd:1,x-systemd.device-timeout=20 0 0" | sudo tee -a /etc/fstab - else - echo "/etc/fstab already configured." + + if test -f /etc/redhat-release; then + sudo mkdir -p /mnt/borgbackup /mnt/quick-backup + if ! grep "ecf44876-2e4e-46ad-9f12-fc516c8ace2d" /etc/fstab; then + echo "UUID=ecf44876-2e4e-46ad-9f12-fc516c8ace2d /mnt/borgbackup btrfs defaults,subvol=@borgbackup,compress=zstd:1,x-systemd.device-timeout=20 0 0" | sudo tee -a /etc/fstab + echo "UUID=ecf44876-2e4e-46ad-9f12-fc516c8ace2d /mnt/quick-backup btrfs defaults,subvol=@quick-backup,compress=zstd:1,x-systemd.device-timeout=20 0 0" | sudo tee -a /etc/fstab + else + echo "/etc/fstab already configured." + fi + sudo systemctl daemon-reload + sudo restorecon -Rv /mnt/borgbackup + sudo restorecon -Rv /mnt/quick-backup + sudo mount -av fi - sudo systemctl daemon-reload - sudo restorecon -Rv /mnt/borgbackup - sudo restorecon -Rv /mnt/quick-backup - sudo mount -av } # Depends: @@ -259,8 +360,10 @@ function setup_fstab() { # - setup_fstab function setup_borgmatic_config() { action_label "SETTING UP BORGMATIC CONFIG" - sudo mkdir -p /etc/borgmatic - sudo cp -v /mnt/quick-backup/borgmatic-config.yaml /etc/borgmatic/config.yaml + if test -f /etc/redhat-release; then + sudo mkdir -p /etc/borgmatic + sudo cp -v /mnt/quick-backup/borgmatic-config.yaml /etc/borgmatic/config.yaml + fi } # Depends: @@ -268,13 +371,19 @@ function setup_borgmatic_config() { # - setup_fstab function copy_quick_backup() { action_label "COPYING QUICK BACKUP" - rsync -aAXPz /mnt/quick-backup/jas/ /home/jas + if test -f /etc/redhat-release; then + rsync -aAXPz /mnt/quick-backup/jas/ /home/jas + fi } # Depends: copy_quick_backup function build_bat_cache() { action_label "BUILDING BAT CACHE" - bat cache --build + if test -f /etc/debian_version; then + batcat cache --build + elif test -f /etc/redhat-release; then + bat cache --build + fi } # Depends: install_packages @@ -295,7 +404,11 @@ function setup_firewalld() { else echo "firewalld tailnet zone already configured" fi - sudo firewall-cmd --permanent --zone=FedoraWorkstation --remove-service={dhcpv6-client,samba-client} + if test -f /etc/debian_version; then + sudo firewall-cmd --permanent --zone=public --remove-service={dhcpv6-client,samba-client} + elif test -f /etc/redhat-release; then + sudo firewall-cmd --permanent --zone=FedoraWorkstation --remove-service={dhcpv6-client,samba-client} + fi sudo firewall-cmd --reload } @@ -305,36 +418,28 @@ function install_rclone() { command -v rclone } -# Depends: install_rclone copy_quick_backup -function enable_sync_to_remotes() { - action_label "ENABLING sync_to_remotes.timer" - systemctl --user enable --now sync_to_remotes.timer -} - install_packages -install_devel_groups -enable_copr_repos -install_copr_packages -install_rpmfusion_repos -install_rpmfusion_packages install_charm_packages install_tailscale -enable_flathub -install_flatpaks + +if test -f /etc/redhat-release; then + enable_flathub + install_flatpaks + setup_networkd_conf + setup_fstab + setup_borgmatic_config + copy_quick_backup +fi + install_pipx_packages -setup_networkd_conf setup_resolv_conf setup_rsyslog_conf disable_services enable_services disable_ipv6 -setup_fstab -setup_borgmatic_config -copy_quick_backup build_bat_cache update_tealdeer_cache setup_firewalld install_rclone -enable_sync_to_remotes action_label "DONE SETTING UP ALL THE THINGS ^_^"