馃敡 Where my dotfiles lives in harmony and peace, most of the time
1#!/usr/bin/env bash
2set -euo pipefail
3
4DOTFILES=$(dirname "$(dirname "$(realpath "$0")")")
5
6packages=(
7 bind
8 blueman
9 bluez
10 cloudflare-warp-bin
11 tailscale
12 docker
13 docker-buildx
14 fwupd
15 gnome-keyring
16 less
17 mkinitcpio-firmware
18 network-manager-applet
19 networkmanager
20 pacman-contrib
21 power-profiles-daemon
22 rocm-smi-lib
23 sox
24 ufw
25 util-linux
26 xdg-user-dirs
27 google-cloud-cli
28 google-cloud-cli-bq
29)
30
31# Install system packages
32paru -S --needed --noconfirm "${packages[@]}"
33
34sudo rm -f /etc/sysctl.d/99-swappiness.conf
35sudo cp "${DOTFILES}/system/99-swappiness.conf" /etc/sysctl.d/99-swappiness.conf
36
37tmpfs_entry='tmpfs /tmp tmpfs defaults,noatime,mode=1777,size=2G 0 0'
38if ! grep -Eq '^\s*tmpfs\s+/tmp\s+tmpfs\b' /etc/fstab; then
39 echo "$tmpfs_entry" | sudo tee -a /etc/fstab >/dev/null
40fi
41
42# Network Manager
43if ! systemctl is-enabled --quiet NetworkManager.service; then
44 sudo systemctl enable --now NetworkManager.service
45fi
46
47# Firewall
48if ! systemctl is-enabled --quiet ufw; then
49 sudo systemctl enable --now ufw
50 sudo ufw enable
51fi
52
53# SSD Trim
54if ! systemctl is-enabled --quiet fstrim.timer; then
55 sudo systemctl enable --now fstrim.timer
56fi
57
58# Out-of-memory daemon
59if ! systemctl is-enabled --quiet systemd-oomd.service; then
60 sudo systemctl enable --now systemd-oomd.service
61fi
62
63# Gnome Keyring
64if ! systemctl --user is-enabled --quiet gnome-keyring-daemon.socket; then
65 systemctl --user enable --now gnome-keyring-daemon.socket
66fi
67
68# Docker
69if ! systemctl is-enabled --quiet docker.service; then
70 sudo systemctl enable --now docker
71
72 # Add user to docker group
73 if ! groups "$USER" | grep -q "\bdocker\b"; then
74 sudo usermod -aG docker "$USER"
75 fi
76fi
77
78# Tailscale
79if ! systemctl is-enabled --quiet tailscaled; then
80 sudo systemctl enable --now tailscaled
81fi
82if ! tailscale status &>/dev/null; then
83 tailscale up
84fi
85
86# Enable WARP
87if ! systemctl is-enabled --quiet warp-svc; then
88 sudo systemctl enable --now warp-svc
89fi
90
91# Register WARP if not already registered
92if ! warp-cli registration show &>/dev/null; then
93 warp-cli registration new # Needs manual intervention, check help and see if it can be forced
94fi
95
96# Connect WARP if not already connected
97if ! warp-cli status | grep -q "Status update: Connected"; then
98 warp-cli connect
99fi