mirror of
https://codeberg.org/hyperreal/dotfiles
synced 2024-11-25 03:43:43 +01:00
Compare commits
10 Commits
76ceb8fc8c
...
8addafd4b9
Author | SHA1 | Date | |
---|---|---|---|
8addafd4b9 | |||
509f695257 | |||
9ab53493a9 | |||
9feef98397 | |||
04afc6e08f | |||
9fbae11900 | |||
adced97c43 | |||
fb4cc4abfa | |||
5826686d70 | |||
1619d80735 |
240
install.sh
240
install.sh
@ -4,8 +4,61 @@ set -euo pipefail
|
||||
|
||||
GREEN='\033[1;32m'
|
||||
NC='\033[0m'
|
||||
apt_packages=(
|
||||
atop
|
||||
autossh
|
||||
bat
|
||||
borgbackup
|
||||
borgmatic
|
||||
build-essential
|
||||
calibre
|
||||
cmake
|
||||
curl
|
||||
direnv
|
||||
duf
|
||||
emacs
|
||||
firewalld
|
||||
fzf
|
||||
git
|
||||
git-core
|
||||
golang
|
||||
hdparm
|
||||
htop
|
||||
hugo
|
||||
jc
|
||||
jq
|
||||
lsd
|
||||
lynx
|
||||
neovim
|
||||
nmap
|
||||
nodejs
|
||||
npm
|
||||
papirus-icon-theme
|
||||
parallel
|
||||
pipx
|
||||
prometheus-node-exporter
|
||||
python3-dev
|
||||
python3-pip
|
||||
python3-poetry
|
||||
ripgrep
|
||||
rsync
|
||||
rsyslog
|
||||
shfmt
|
||||
shellcheck
|
||||
tcpdump
|
||||
tealdeer
|
||||
trash-cli
|
||||
unzip
|
||||
w3m
|
||||
wget
|
||||
wireshark
|
||||
wl-clipboard
|
||||
xfce4-terminal
|
||||
zip
|
||||
zsh
|
||||
)
|
||||
|
||||
packages=(
|
||||
dnf_packages=(
|
||||
age
|
||||
atop
|
||||
autossh
|
||||
@ -39,6 +92,7 @@ packages=(
|
||||
lagrange
|
||||
ldns
|
||||
libtool
|
||||
lsd
|
||||
lsof
|
||||
lynx
|
||||
neochat
|
||||
@ -62,7 +116,6 @@ packages=(
|
||||
tealdeer
|
||||
tokodon
|
||||
trash-cli
|
||||
uv
|
||||
vlc
|
||||
w3m
|
||||
wireshark
|
||||
@ -89,15 +142,16 @@ 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
|
||||
systemd-networkd
|
||||
tailscaled.service
|
||||
)
|
||||
@ -109,8 +163,6 @@ services_disable=(
|
||||
cups.service
|
||||
cups-browsed.service
|
||||
NetworkManager.service
|
||||
sddm.service
|
||||
wpa_supplicant.service
|
||||
)
|
||||
|
||||
function action_label() {
|
||||
@ -118,9 +170,38 @@ 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() {
|
||||
if ! test -f "$(command -v starship)"; then
|
||||
curl -sS https://starship.rs/install.sh | sh
|
||||
fi
|
||||
}
|
||||
|
||||
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
|
||||
install_zellij
|
||||
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() {
|
||||
@ -149,16 +230,42 @@ function install_rpmfusion_packages() {
|
||||
sudo dnf install -y --allowerasing ffmpeg-libs
|
||||
}
|
||||
|
||||
install_zellij() {
|
||||
if test -f /etc/debian_version; then
|
||||
curl -s https://api.github.com/repos/zellij-org/zellij/releases/latest | grep "browser_download_url" | grep "zellij-$(uname -m)-unknown-linux-musl.tar.gz" | cut -d : -f 2,3 | tr -d '"' | wget -qi -
|
||||
curl -s https://api.github.com/repos/zellij-org/zellij/releases/latest | grep "browser_download_url" | grep "zellij-$(uname -m)-unknown-linux-musl.sha256sum" | cut -d : -f 2,3 | tr -d '"' | wget -qi -
|
||||
tar xvf "zellij-$(uname -m)-unknown-linux-musl.tar.gz"
|
||||
if [ $(sha256sum -c "zellij-$(uname -m)-unknown-linux-musl.sha256sum" | head -n 1 | awk '{print $2}') = "OK" ]; then
|
||||
sudo mv zellij /usr/local/bin
|
||||
fi
|
||||
rm -v zellij*
|
||||
fi
|
||||
}
|
||||
|
||||
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
|
||||
curl -s https://api.github.com/repos/charmbracelet/gum/releases/latest | grep "browser_download_url.*deb" | grep "$(dpkg --print-architecture)" | cut -d : -f 2,3 | tr -d '"' | wget -qi -
|
||||
curl -s https://api.github.com/repos/charmbracelet/gum/releases/latest | grep "browser_download_url" | grep "checksums.txt" | head -n 1 | cut -d : -f 2,3 | tr -d '"' | wget -qi -
|
||||
if [ $(grep "$(dpkg --print-architecture).deb" checksums.txt | sha256sum -c | head -n 1 | awk '{print $2}') = "OK" ]; then
|
||||
sudo dpkg -i gum*.deb
|
||||
sudo apt -f install
|
||||
fi
|
||||
rm -v gum*
|
||||
rm -v checksums.txt
|
||||
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() {
|
||||
@ -218,7 +325,11 @@ function setup_rsyslog_conf() {
|
||||
# After: setup_networkd_conf
|
||||
function disable_services() {
|
||||
action_label "DISABLING SYSTEMD SERVICES"
|
||||
for service in "${services_disable[@]}"; do sudo systemctl disable --now "$service"; done
|
||||
for service in "${services_disable[@]}"; do
|
||||
if sudo systemctl is-active "$service"; then
|
||||
sudo systemctl disable --now "$service"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# After:
|
||||
@ -227,31 +338,50 @@ function disable_services() {
|
||||
function enable_services() {
|
||||
action_label "ENABLING SYSTEMD SERVICES"
|
||||
for service in "${services_enable[@]}"; do sudo systemctl enable --now "$service"; done
|
||||
if test -f /etc/debian_version; then
|
||||
sudo systemctl enable --now ssh.service
|
||||
elif test -f /etc/redhat-release; then
|
||||
sudo systemctl enable --now sshd.service
|
||||
fi
|
||||
}
|
||||
|
||||
function disable_ipv6() {
|
||||
action_label "DISABLING IPV6"
|
||||
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
|
||||
else
|
||||
echo "IPv6 already disabled."
|
||||
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.conf.lo.disable_ipv6 = 1" | sudo tee -a /etc/sysctl.conf
|
||||
sudo sysctl -p
|
||||
else
|
||||
echo "IPv6 already disabled."
|
||||
fi
|
||||
elif test -f /etc/redhat-release; then
|
||||
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
|
||||
else
|
||||
echo "IPv6 already disabled."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
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 +389,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 +400,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 +433,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 +447,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 ^_^"
|
||||
|
Loading…
Reference in New Issue
Block a user