dotfiles-old/.local/installers/artix-install.sh

411 lines
10 KiB
Bash

#!/bin/sh
PKGS="pipewire
pipewire-alsa
pipewire-pulse
pipewire-jack
gst-plugin-pipewire
wireplumber
wireplumber-docs
alsa-utils
pacman-contrib
man-db
freetype2
gst-libav
xdg-utils
xdg-user-dirs
fuse
python-urwid
btrfs-progs
reiserfsprogs
chrony
ufw
wget
curl
zip
unzip
p7zip
dash
mesa
rsync
cronie
connman
fakeroot
socklog
python-pip
udevil
pavucontrol
connman-gtk
youtube-dl
transmission-cli
neovim
mpd
mpv
opendoas
zsh
clang
librewolf
shellcheck
noto-fonts
noto-fonts-emoji
noto-fonts-cjk
lxappearance
qt5ct
imagemagick
ffmpegthumbnailer
python-pywal
pulsemixer
pamixer
papirus-icon-theme
python-pdftotext
viu
bat
zathura
zathura-cb
zathura-djvu
zathura-pdf-mupdf
sway
swaybg
swayidle
swaylock
waybar
bemenu-wayland
mako
wl-clipboard
grim
slurp
xorg-xwayland
alacritty
gammastep
ufw-runit
cronie-runit
chrony-runit
connman-runit"
AUR_PKGS="lf
mutt-wizard
htim
jmtpfs
tremc-git
dashbinsh
pfetch
sysrq-enabler
wlr-randr
sfeed"
GIT_REPOS="
https://github.com/aarowill/base16-alacritty.git
https://github.com/rkubosz/base16-sway.git"
GIT_REPOS_DIR="$HOME/.local/src/"
#$1 -> repo name to enable
#$2 -> mirror list file name in /etc/pacman.d/ (default: mirrorlist)
#ex: enable_repo lib32
#ex: enable_repo community mirrorlist-arch
enable_repo() {
REPO="$1"
MIRRORLIST="mirrorlist"
[ "$2" ] && MIRRORLIST="$2"
if [ $# -gt 0 ] && [ -z "$(grep "$1" /etc/pacman.conf)" ]; then
sudo sh -c 'echo "[$REPO]" >> /etc/pacman.conf'
sudo sh -c 'echo "Include = /etc/pacman.d/$MIRRORLIST" >> /etc/pacman.conf'
sudo sh -c 'echo "" >> /etc/pacman.conf'
fi
}
enable_repos() {
#add arch linux repos
sudo pacman -S --noconfirm artix-archlinux-support lib32-artix-archlinux-support
sudo pacman-key --populate archlinux
sudo pacman -Sy
#enable lib32
enable_repo lib32
#enable arch community repo
enable_repo community mirrorlist-arch
#enable artix universe repo
if [ -z "$(grep "universe" /etc/pacman.conf)" ]; then
sudo sh -c 'echo "[universe]" >> /etc/pacman.conf'
sudo sh -c 'echo "Server = https://universe.artixlinux.org/\$arch" >> /etc/pacman.conf'
sudo sh -c 'echo "Server = https://mirror1.artixlinux.org/universe/\$arch" >> /etc/pacman.conf'
sudo sh -c 'echo "Server = https://mirror.pascalpuffke.de/artix-universe/\$arch" >> /etc/pacman.conf'
sudo sh -c 'echo "Server = https://artixlinux.qontinuum.space:4443/universe/os/" >> /etc/pacman.conf'
sudo sh -c 'echo "Server = https://mirror1.cl.netactuate.com/artix/universe/\$arch" >> /etc/pacman.conf'
sudo sh -c 'echo "" >> /etc/pacman.conf'
fi
sudo pacman -Sy
#install yay for aur support
mkdir -p ~/.local/src/
git clone https://aur.archlinux.org/yay.git ~/.local/src/yay/
cd ~/.local/src/yay || return
makepkg -si
}
install_git_repos() {
mkdir -p "$GIT_REPOS_DIR"
cd "$GIT_REPOS_DIR"
for REPO in $GIT_REPOS
do
git clone "$REPO"
done
cd -
}
runit_setup() {
VIRTMGR=""
WIRELESS=""
for arg in "$@"
do
[ "$arg" = "--virt-manager" ] && VIRTMGR="true"
[ "$arg" = "--wireless" ] && WIRELESS="true"
done
sudo ln -s /etc/runit/sv/ufw /run/runit/service/
sudo ln -s /etc/runit/sv/cronie /run/runit/service/
sudo ln -s /etc/runit/sv/chrony /run/runit/service/
sudo ln -s /etc/runit/sv/connmand /run/runit/service/
sudo ln -s /etc/runit/sv/socklog /run/runit/service/
if [ "$VIRTMGR" ]; then
sudo ln -s /etc/runit/sv/libvirtd /run/runit/service
sudo ln -s /etc/runit/sv/virtlockd /run/runit/service
sudo ln -s /etc/runit/sv/virtlogd /run/runit/service
fi
if [ "$WIRELESS" ]; then
sudo ln -s /etc/runit/sv/tlp /run/runit/service/
sudo ln -s /etc/runit/sv/bluetoothd /run/runit/service/
fi
}
gaming() {
if [ "$1" = "--nvidia" ]; then
NVIDIA_GPU="TRUE"
elif [ "$1" = "--amd" ]; then
AMD_GPU="TRUE"
elif [ "$1" = "--intel" ]; then
INTEL_GPU="TRUE"
else
help && exit
fi
CMD=" -S --noconfirm "
[ "$2" = "-R" ] && CMD=" -Rs "
[ -z "$(grep "^\[lib32" /etc/pacman.conf)" ] && [ -z "$NVIDIA_GPU" ] && [ -z "$AMD_GPU" ] && [ -z "$INTEL_GPU" ] && help && exit
[ "$NVIDIA_GPU" = "TRUE" ] && sudo pacman $CMD nvidia-utils lib32-nvidia-utils
[ "$AMD_GPU" = "TRUE" ] && sudo pacman $CMD vulkan-radeon lib32-vulkan-radeon
[ "$INTEL_GPU" = "TRUE" ] && sudo pacman $CMD vulkan-intel lib32-vulkan-intel
sudo pacman $CMD vulkan-mesa-layers lib32-vulkan-mesa-layers
sudo pacman $CMD wine-staging winetricks
sudo pacman $CMD giflib lib32-giflib libpng lib32-libpng libldap lib32-libldap gnutls lib32-gnutls mpg123 lib32-mpg123 openal lib32-openal v4l-utils lib32-v4l-utils libpulse lib32-libpulse alsa-plugins lib32-alsa-plugins alsa-lib lib32-alsa-lib libjpeg-turbo lib32-libjpeg-turbo libxcomposite lib32-libxcomposite libxinerama lib32-libxinerama ncurses lib32-ncurses opencl-icd-loader lib32-opencl-icd-loader libxslt lib32-libxslt libva lib32-libva gtk3 lib32-gtk3 gst-plugins-base-libs lib32-gst-plugins-base-libs vulkan-icd-loader lib32-vulkan-icd-loader cups samba dosbox
sudo pacman $CMD gamemode lib32-gamemode
sudo pacman $CMD lutris steam
}
virt_manager() {
echo "install virt-manager?(y/N)"
read -r input
if [ "$input" = "y" ] || [ "$input" = "Y" ]; then
sudo pacman -S --noconfirm sudo pacman -S libvirt qemu virt-manager lxsession
sudo pacman -S --noconfirm gst-plugins-good libvirt-runit
#TODO move this to runit_setup
sudo usermod -G libvirt -a "$USER"
fi
runit_setup --virt-manager
}
ungoogled_chromium() {
CMD=" --noconfirm -S "
[ "$1" = "-R" ] && CMD=" -Rs "
sudo pacman "$CMD" ffmpeg4.4
sudo pacman "$CMD" ungoogled-chromium
sudo pacman "$CMD" ublock-origin
yay "$CMD" aur/chromium-extension-web-store
yay "$CMD" aur/chromium-widevine
}
wireless() {
sudo pacman -S --noconfirm wpa_supplicant bluez bluez-utils tlp
sudo pacman -S --noconfirm wpa_supplicant-runit tlp-runit
runit_setup --wireless
}
configure() {
#setup home directories
mkdir ~/docs/
mkdir ~/dl/
mkdir ~/media/
mkdir -p ~/.local/share/gnupg/
mkdir -p ~/.config/mpd/playlists
mkdir -p ~/.local/share/desktop
#setup ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow http
sudo ufw allow https
#sudo ufw allow ssh
sudo ufw allow ntp
sudo ufw allow 67:68/tcp
sudo ufw allow 53
#allow torrent client traffic
sudo ufw allow 56881:56889/tcp
#rules to allow steam
sudo ufw allow 27000:27036/udp
sudo ufw allow 27036:27037/tcp
sudo ufw allow 4380/udp
sudo ufw enable
#install zsh shell
chsh -s /bin/zsh "$USER"
#setup .zprofile and zsh history file
cd ~ || return
ln -s ~/.profile ~/.zprofile
mkdir -p ~/.cache/zsh
touch ~/.cache/zsh/history
#replace sudo with doas
echo "installing doas, symlinking to sudo, and UNINSTALLING SUDO. sudo is uninstalled using doas so permissions should be setup right if you are able to uninstall. (y/N)"
read input
if [ "$input" = "y" ]; then
echo "permit persist $USER as root" >> ~/.cache/doas.conf
sudo cp ~/.cache/doas.conf /etc/doas.conf
rm ~/.cache/doas.conf
doas pacman -R sudo && doas ln -s /bin/doas /bin/sudo #TODO ARCH SPECIFIC
fi
#set limits for esync
sudo sh -c "echo '$USER hard nofile 524288' >> /etc/security/limits.conf"
#set limits for monero
sudo sh -c "echo '$USER hard memlock 2048' >> /etc/security/limits.conf"
sudo sh -c "echo '$USER hard memlock 2048' >> /etc/security/limits.conf"
sudo groupadd nogroup #needed to use slock
#fix issue with arduino ide and tiling wms
sudo sh -c 'echo "export _JAVA_AWT_WM_NONREPARENTING=1" >> /etc/profile.d/jre.sh'
#set console terminal font
sudo sh -c 'echo "FONT=Lat2-Terminus16" >> /etc/vconsole.conf'
#set grub theme
sudo sed -i 's/#GRUB_COLOR_NORMAL/GRUB_COLOR_NORMAL/g' /etc/default/grub
sudo sed -i 's/#GRUB_COLOR_HIGHLIGHT/GRUB_COLOR_HIGHLIGHT/g' /etc/default/grub
#download collapse OS
mkdir -p "$HOME"/.local/src/
cd "$HOME"/.local/src/
wget http://collapseos.org/files/collapseos-latest.tar.gz
cd -
#set wallpaper
ln -s ~/media/img/wallpapers/alena-aenami-eclipse-1k.jpg ~/.config/wall
#link Xresources for xwayland
ln -s ~/.config/Xresources ~/.Xdefaults
#set /tmp to tmpfs
if [ -z "$(grep "/tmp" /etc/fstab)" ]; then
sudo sh -c 'echo "tmpfs /tmp tmpfs rw,nodev,nosuid,size=2G 0 0" >> /etc/fstab'
fi
}
base() {
#enable repos (lib32, community, and universe) and install yay
enable_repos
#install all packages in $PKGS
echo "$PKGS" | pacman -S -
#installl all packages in $AUR_PKGS
echo "$AUR_PKGS" | yay -S -
#setup local git repos defined in $GIT_REPOS to $GIT_REPOS_DIR
install_git_repos
#runit configuration
runit_setup
#configure programs, directories, change shell, etc
configure
#install microcode for CPU
echo "enter CPU type to install microcode for (amd intel)"
read input
if [ "$input" = "amd" ]; then
sudo pacman -S amd-ucode
elif [ "$input" = "intel" ]; then
sudo pacman -S intel-ucode
fi
#rebuild kernel after install for microcode
sudo mkinitcpio -P #rebuild kernel
sudo grub-mkconfig -o /boot/grub/grub.cfg #update grub
echo "installation finished"
}
BASE=""
GAMING=""
WIRELESS=""
UNGOOGLED_CHROMIUM=""
VIRT_MANAGER=""
for arg in "$@"
do
[ "$arg" = "--base" ] && BASE="true"
[ "$arg" = "--gaming" ] && GAMING="true"
[ "$arg" = "--virt-manager" ] && VIRTMGR="true"
[ "$arg" = "--wireless" ] && WIRELESS="true"
[ "$arg" = "--ungoogled-chromium" ] && UNGOOGLED_CHROMIUM="true"
done
[ "$BASE" ] && base
[ "$GAMING" ] && gaming
[ "$WIRELESS" ] && wireless
[ "$UNGOOGLED_CHROMIUM" ] && ungoogled_chromium "$@"
[ "$VIRT_MANAGER" ] && virt_manager