190 lines
5.0 KiB
Bash
Executable File
190 lines
5.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
DIR="$(dirname $(realpath "$0"))"
|
|
cd "$DIR"
|
|
|
|
if [[ ! -f /etc/os-release ]]; then
|
|
echo "Could not determine distribution; exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
. /etc/os-release
|
|
distro=${NAME,,}
|
|
|
|
if [[ $distro == "arch linux" ]]; then
|
|
pacman=(
|
|
# services
|
|
"networkmanager" "networkmanager-openvpn"
|
|
"bluez" "bluez-libs"
|
|
"pipewire" "pipewire-alsa" "pipewire-pulse" "pipewire-audio" "pipewire-jack" "wireplumber" "alsa-utils"
|
|
"cups"
|
|
|
|
# Hyprland core
|
|
"hyprland" "hypridle" "hyprpaper" "hyprlock"
|
|
"hyprpolkitagent" "hyprutils" "hyprland-qtutils"
|
|
"xdg-desktop-portal-hyprland" "xdg-desktop-portal-gtk"
|
|
# Hyprland extra
|
|
"qt6ct" "gnome-keyring"
|
|
"waybar" "mako" "wofi" "wl-clipboard" "copyq" "grim" "slurp"
|
|
"adwaita-icon-theme" "adwaita-cursors" "dolphin"
|
|
"network-manager-applet" "blueman"
|
|
"playerctl" "pavucontrol"
|
|
"upower"
|
|
|
|
# terminal
|
|
"kitty" "fish" "ranger" "htop" "tmux" "psmisc" "terminus-font"
|
|
|
|
# misc
|
|
"wget" "curl" "git" "entr" "zip" "base-devel"
|
|
"ninja" "make" "cmake"
|
|
"neofetch" "fastfetch" "fortune-mod" "cowsay"
|
|
"freerdp"
|
|
|
|
# languages
|
|
"python" "php" "go" "clang"
|
|
|
|
# editors
|
|
"nano" "vim" "helix"
|
|
|
|
# network drives
|
|
"rclone" "cifs-utils"
|
|
|
|
# container
|
|
"podman" "podman-compose" "podman-docker" "distrobox"
|
|
|
|
# VMs
|
|
"virtualbox" "virtualbox-host-modules-arch" "linux-headers"
|
|
|
|
# fonts
|
|
"adwaita-fonts"
|
|
"ttf-jetbrains-mono" "ttf-jetbrains-mono-nerd"
|
|
"noto-fonts" "noto-fonts-emoji" "noto-fonts-cjk"
|
|
|
|
# flatpak
|
|
"flatpak" "libportal"
|
|
|
|
# apps
|
|
"keepassxc" "remmina"
|
|
)
|
|
|
|
aur=(
|
|
"light"
|
|
"snapd"
|
|
"brave-bin"
|
|
)
|
|
|
|
systemd=(
|
|
"NetworkManager"
|
|
"cups"
|
|
"snapd"
|
|
"snapd.apparmor"
|
|
"bluetooth"
|
|
)
|
|
|
|
systemd_user=(
|
|
"ssh-agent"
|
|
"rclonesync.service"
|
|
"rclonesync.timer"
|
|
)
|
|
|
|
snap_classic=(
|
|
"code"
|
|
"flutter"
|
|
"android-studio"
|
|
)
|
|
|
|
flatpak=(
|
|
"org.signal.Signal"
|
|
"com.spotify.Client"
|
|
"net.ankiweb.Anki"
|
|
"org.gimp.GIMP"
|
|
"org.inkscape.Inkscape"
|
|
"org.onlyoffice.desktopeditors"
|
|
"com.github.xournalpp.xournalpp"
|
|
"com.github.flxzt.rnote"
|
|
"net.nokyan.Resources"
|
|
"org.gnome.Loupe"
|
|
"com.github.rafostar.Clapper"
|
|
"org.gnome.Evince"
|
|
)
|
|
|
|
# Update system
|
|
sudo pacman -Syu --noconfirm
|
|
|
|
# Install pacman packages
|
|
sudo pacman --noconfirm --needed -S "${pacman[@]}"
|
|
|
|
# Fix helix command
|
|
sudo ln -s "$(which helix)" /usr/local/bin/hx
|
|
|
|
# Install yet another yogurt (AUR helper)
|
|
if ! command -v yay &> /dev/null; then
|
|
git clone https://aur.archlinux.org/yay.git /tmp/yay
|
|
cd /tmp/yay && makepkg -si --noconfirm
|
|
yay -Sy --noconfirm
|
|
cd "$DIR"
|
|
fi
|
|
|
|
# Instal AUR packages
|
|
yay --noconfirm --needed -S "${aur[@]}"
|
|
|
|
# Install snaps
|
|
sudo systemctl start snapd.socket
|
|
if [[ ! -e /snap ]]; then sudo ln -s /var/lib/snapd/snap /snap; fi
|
|
while ! sudo snap refresh; do sleep 1; done
|
|
for prog in ${snap_classic[@]}; do
|
|
sudo snap install $prog --classic
|
|
done
|
|
|
|
# Install flatpaks
|
|
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
flatpak install -y "${flatpak[@]}"
|
|
|
|
# Set default shell
|
|
sudo chsh -s /usr/bin/fish $USER
|
|
|
|
# Add yourself to the corresponding groups
|
|
sudo usermod -aG video $USER
|
|
sudo usermod -aG kvm $USER
|
|
|
|
# Configure default applications
|
|
xdg-mime default org.gnome.Loupe.desktop image/png
|
|
xdg-mime default org.gnome.Loupe.desktop image/jpeg
|
|
xdg-mime default org.gnome.Loupe.desktop image/gif
|
|
xdg-mime default org.gnome.Loupe.desktop image/webp
|
|
xdg-mime default com.github.rafostar.Clapper.desktop video/mp4
|
|
xdg-mime default com.github.rafostar.Clapper.desktop video/x-matroska
|
|
xdg-mime default com.github.rafostar.Clapper.desktop video/x-msvideo
|
|
xdg-mime default com.github.rafostar.Clapper.desktop video/quicktime
|
|
xdg-mime default com.github.rafostar.Clapper.desktop video/webm
|
|
xdg-mime default com.github.rafostar.Clapper.desktop video/mpeg
|
|
xdg-mime default org.gnome.Evince.desktop application/pdf
|
|
|
|
# Install dotfiles
|
|
echo "[INFO]: installing dotfiles now"
|
|
"$DIR/install"
|
|
echo "[INFO]: finished installing dotfiles"
|
|
|
|
# Enable global systemd services
|
|
for item in ${systemd[@]}; do
|
|
sudo systemctl enable $item &> /dev/null
|
|
done
|
|
|
|
# Enable user systemd services
|
|
for item in ${systemd_user[@]}; do
|
|
sudo systemctl enable --user $item &> /dev/null
|
|
done
|
|
|
|
if [[ ! -e "$HOME/.config/rclone/rclone.conf" ]]; then
|
|
echo "[WARN]: ~/.config/rclone/rclone.conf missing"
|
|
fi
|
|
else
|
|
echo "Unknown distribution '$distro'; exiting..."
|
|
exit 1
|
|
fi
|
|
|
|
# YAY!
|
|
echo "-"
|
|
echo "-"
|
|
echo "Done!"
|