diff --git a/arch-setup/install.sh b/arch-setup/install.sh index bdf41fad..e5245f26 100755 --- a/arch-setup/install.sh +++ b/arch-setup/install.sh @@ -1,14 +1,14 @@ #!/bin/bash -# TODO make this work -# NOTE ignore errors from missing "||". Try getting the line below to work -#set -euo pipefail +set -euo pipefail -# get current directory -setupdir=$(pwd) +# get script directory +scriptloc="$BASH_SOURCE" +setupdir=$(dirname "$scriptloc") +#setupdir=$(pwd) -#change to home (does not show in terminal) -cd "$HOME" +#change to home directory +#cd "$HOME" # check if multilib repo is enabled if ! pacman -Sl multilib &> /dev/null; then @@ -17,35 +17,28 @@ if ! pacman -Sl multilib &> /dev/null; then fi # fix install problems +echo Updating repos and packages sudo pacman -Syu +echo Installing pip sudo pacman -S --needed python-pip - -#in_xfce=0 -#in_i3gaps=0 +echo Select packages to install cmd=(dialog --separate-output --checklist "Select Desktop environment/Window manager:" 22 76 16) -options=(0 "[DE] xfce4" off # any option can be set to default to "on" - 100 "[WM] i3-gaps" off) +options=(100 "[WM] i3-gaps" off + 101 "[WM] sway" off) choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) clear for choice in $choices do case $choice in - 0) - #in_xfce=1 - echo "xfce4" >> "$setupdir/selectedpkgs.txt" - ;; 100) - #in_i3gaps=1 echo "i3-gaps" >> "$setupdir/selectedpkgs.txt" ;; + 101) + printf '%s\n' 'sway' 'swaylock' 'swayidle' >> "$setupdir/selectedpkgs.txt" esac done -#in_firefox=0 -#in_chromium=0 -#in_tor=0 - cmd=(dialog --separate-output --checklist "Select browsers:" 22 76 16) options=(0 "Firefox" on # any option can be set to default to "on" 10 "Chromium" off @@ -56,40 +49,17 @@ for choice in $choices do case $choice in 0) - #in_firefox=1 echo "firefox" >> "$setupdir/selectedpkgs.txt" ;; 10) - #in_chromium=1 echo "chromium" >> "$setupdir/selectedpkgs.txt" ;; 20) - #in_tor=1 echo "torbrowser-launcher" >> "$setupdir/selectedpkgs.txt" ;; esac done -#in_virtmanager=0 -#in_vmware15=0 -#in_steam=0 -#in_lutris=0 -#in_blender=0 -#in_krita=0 -#in_youtubedl=0 -#in_discord=0 -#in_handbrake=0 -#in_gimp=0 -#in_audacity=0 -#in_mangohud=0 -#in_easystrokes=0 -#in_liferea=0 -#in_fractal=0 -#in_bettergram=0 -#in_waifu2x=0 -#in_telegram=0 -#in_element=0 - cmd=(dialog --separate-output --checklist "Select other programs:" 22 76 16) options=(0 "VirtManager" off # any option can be set to default to "on" 1 "VMWare Workstation" off @@ -99,15 +69,14 @@ options=(0 "VirtManager" off # any option can be set to default to "on" 13 "Cemu" off 20 "Krita" off 21 "Gimp" off - #30 "Youtube-dl" off - 31 "YT-dlp" on + 31 "YT-dlp" off 32 "Megatools" off 40 "Handbrake" off 41 "Audacity" off - 50 "Easystroke" on - 60 "Discord" on - 61 "Element" on - 62 "Telegram" on + 50 "Easystroke" off + 60 "Discord" off + 61 "Element" off + 62 "Telegram" off 70 "TestSSL" off) choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) clear @@ -115,19 +84,15 @@ for choice in $choices do case $choice in 0) - #in_virtmanager=1 printf '%s\n' 'qemu' 'virt-manager' 'ebtables' 'dnsmasq' >> "$setupdir/selectedpkgs.txt" ;; 1) - #in_vmware15=1 echo "vmware-workstation" >> "$setupdir/aurselectedpkgs.txt" ;; 10) - #in_steam=1 printf '%s\n' 'steam' 'steam-native-runtime' >> "$setupdir/selectedpkgs.txt" ;; 11) - #in_lutris=1 echo "lutris" >> "$setupdir/selectedpkgs.txt" ;; 12) @@ -137,17 +102,11 @@ do echo "cemu" >> "$setupdir/aurselectedpkgs.txt" ;; 20) - #in_krita=1 echo "krita" >> "$setupdir/selectedpkgs.txt" ;; 21) - #in_gimp=1 echo "gimp" >> "$setupdir/selectedpkgs.txt" ;; - 30) - #in_youtubedl=1 - echo "youtube-dl" >> "$setupdir/selectedpkgs.txt" - ;; 31) printf '%s\n' 'yt-dlp' 'yt-dlp-drop-in' >> "$setupdir/aurselectedpkgs.txt" ;; @@ -155,30 +114,22 @@ do echo "megatools-bin" >> "$setupdir/aurselectedpkgs.txt" ;; 40) - #in_handbrake=1 echo "handbrake" >> "$setupdir/selectedpkgs.txt" ;; 41) - # TODO - #in_audacity=1 - #echo "audacity" >> "$setupdir/selectedpkgs.txt" - echo "The situation with audacity is unknown right now. Check for FOSS no-telemetry forks" + echo "audacity" >> "$setupdir/selectedpkgs.txt" ;; 50) - #in_easystrokes=1 echo "easystroke" >> "$setupdir/aurselectedpkgs.txt" ;; 60) - #in_discord=1 - #echo "discord" >> "$setupdir/selectedpkgs.txt" - echo "discord_arch_electron" >> "$setupdir/aurselectedpkgs.txt" + echo "discord" >> "$setupdir/selectedpkgs.txt" + #echo "discord_arch_electron" >> "$setupdir/aurselectedpkgs.txt" ;; 61) - #in_element=1 echo "element-desktop" >> "$setupdir/selectedpkgs.txt" ;; 62) - #in_telegram=1 echo "telegram-desktop" >> "$setupdir/selectedpkgs.txt" ;; 70) @@ -190,7 +141,8 @@ done in_acpufreq=0 cmd=(dialog --separate-output --checklist "Performance and Battery life" 22 76 16) -options=(0 "auto-cpufreq" off) +options=(0 "auto-cpufreq" off + 1 "corectrl" off) choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) clear for choice in $choices @@ -202,14 +154,12 @@ do # TODO Handle rest of installation ;; 1) - #in_corectrl=1 echo "corectrl" >> "$setupdir/aurselectedpkgs.txt" ;; esac done in_doomemacs=0 -#in_vscodium=0 in_podman=0 cmd=(dialog --separate-output --checklist "Devtools" 22 76 16) @@ -229,7 +179,6 @@ do # TODO handle rest of installation ;; 1) - #in_vscodium=1 echo "vscodium-bin" >> "$setupdir/aurselectedpkgs.txt" ;; 10) @@ -238,9 +187,6 @@ do esac done -#in_teams=0 -#in_slack=0 - cmd=(dialog --separate-output --checklist "School and work communication" 22 76 16) options=(0 "Teams" off 1 "Slack" off @@ -251,11 +197,9 @@ for choice in $choices do case $choice in 0) - #in_teams=1 echo "teams" >> "$setupdir/aurselectedpkgs.txt" ;; 1) - #in_slack=1 #echo "slack-desktop" >> "$setupdir/aurselectedpkgs.txt" echo "slack-electron" >> "$setupdir/aurselectedpkgs.txt" ;; @@ -265,8 +209,6 @@ do esac done -#in_pkgstats=0 - cmd=(dialog --separate-output --checklist "Report installed packages?" 22 76 16) options=(0 "pkgstats" off) choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) @@ -275,12 +217,12 @@ for choice in $choices do case $choice in 0) - #in_pkgstats=1 echo "pkgstats" >> "$setupdir/selectedpkgs.txt" ;; esac done +: ' # Packages installed on different systems in_arco_pc=0 in_arco_hp=0 @@ -301,48 +243,37 @@ do ;; esac done +' #uninstalling unused packages echo Uninstalling unused packages -sudo pacman -Rns - < "$setupdir/packages/uninstall.txt" +# || true to pass set -e (error when encountering packages not installed) +sudo pacman -Rns - < "$setupdir/packages/uninstall.txt" &>/dev/null || true echo Uninstalled unused packages -# find all repos -sudo pacman -Sy - -#update stuff -echo Updating packages -sudo pacman -Syu -echo Updated packages - #pacman programs echo Installing default pacman programs sudo pacman -S --needed - < "$setupdir/packages/officialpkgs.txt" echo Installed official programs # pip -echo Installing python programs -pip install --user autotrash -echo Installed python programs - -# setup autotrash -"$HOME/.local/bin/autotrash" -d 5 --install -systemctl --user start autotrash -systemctl --user enable autotrash.timer +#echo Installing python programs +# AUR package exists +#pip install --user autotrash +#echo Installed python programs +: ' # REVIEW Patched neofetch version to remove Color codes git clone https://github.com/RealStickman/neofetch cd neofetch sudo make install cd .. rm -rf neofetch +' -# install paru-bin with yay, or download paru from github -if [[ $(pacman -Q | grep yay) ]] && [[ ! $(pacman -Q | grep paru) ]]; then - echo "Installing paru" - yay -S paru-bin -elif [[ ! $(pacman -Q | grep yay) ]] && [[ ! $(pacman -Q | grep paru) ]]; then - echo "Installing paru from git" +# install paru-bin if not already present +if [[ ! $(pacman -Q | grep paru-bin) ]]; then + echo "Installing paru-bin" git clone https://aur.archlinux.org/paru-bin.git cd paru-bin makepkg -si @@ -382,245 +313,6 @@ sudo pacman -S --needed - < "$setupdir/selectedpkgs.txt" echo Installing from AUR paru -S --needed - < "$setupdir/aurselectedpkgs.txt" -: ' -if [ $in_vmware15 -eq 1 ]; then - echo "Installing VMWare Workstation 15" - paru -S --needed vmware-workstation15 -else - echo "Skipping VMWare Workstation 15" -fi -' - -#DEs & WMs -: ' -if [ $in_xfce -eq 1 ]; then - echo "Installing xfce" - sudo pacman -S --needed xfce4 -else - echo "Skipping xfce" -fi -' - -: ' -if [ $in_i3gaps -eq 1 ]; then - echo "Installing i3-gaps" - sudo pacman -S --needed i3-gaps -else - echo "Skipping i3-gaps" -fi -' - -: ' -#browsers -if [ $in_firefox -eq 1 ]; then - echo "Installing Firefox" - sudo pacman -S --needed firefox -else - echo "Skipping Firefox" -fi -' - -: ' -if [ $in_chromium -eq 1 ]; then - echo "Installing Chromium" - sudo pacman -S --needed chromium -else - echo "Skipping Chromium" -fi -' - -: ' -if [ $in_netsurf -eq 1 ]; then - echo "Installing Netsurf" - sudo pacman -S --needed netsurf -else - echo "Skipping Netsurf" -fi -' - -: ' -if [ $in_icecat -eq 1 ]; then - echo "Installing Icecat" - paru -S --needed icecat-bin -else - echo "Skipping Icecat" -fi -' - -: ' -if [ $in_tor -eq 1 ]; then - echo "Installing Tor" - sudo pacman -S --needed torbrowser-launcher -else - echo "Skipping Tor" -fi -' - -#other programs -: ' -if [ $in_virtmanager -eq 1 ]; then - echo "Installing VirtManager" - sudo pacman -S --needed qemu virt-manager -else - echo "Skipping VirtManager" -fi -' - -: ' -if [ $in_steam -eq 1 ]; then - echo "Installing Steam" - sudo pacman -S --needed steam steam-native-runtime -else - echo "Skipping Steam" -fi -' - -: ' -if [ $in_lutris -eq 1 ]; then - echo "Installing Lutris" - sudo pacman -S --needed lutris -else - echo "Skipping Lutris" -fi -' - -: ' -if [ $in_blender -eq 1 ]; then - echo "Installing Blender" - sudo pacman -S --needed blender -else - echo "Skipping Blender" -fi -' - -: ' -if [ $in_krita -eq 1 ]; then - echo "Installing Krita" - sudo pacman -S --needed krita -else - echo "Skipping Krita" -fi -' - -: ' -if [ $in_youtubedl -eq 1 ]; then - echo "Installing Youtube-dl" - sudo pacman -S --needed youtube-dl -else - echo "Skipping Youtube-dl" -fi -' - -: ' -if [ $in_discord -eq 1 ]; then - echo "Installing Discord" - #sudo pacman -S --needed discord - paru -S discord_arch_electron -else - echo "Skipping Discord" -fi -' - -: ' -if [ $in_handbrake -eq 1 ]; then - echo "Installing Handbrake" - sudo pacman -S --needed handbrake -else - echo "Skipping Handbrake" -fi -' - -: ' -if [ $in_gimp -eq 1 ]; then - echo "Installing Gimp" - sudo pacman -S --needed gimp -else - echo "Skipping Gimp" -fi -' - -: ' -if [ $in_audacity -eq 1 ]; then - echo "Installing Audacity" - sudo pacman -S --needed audacity -else - echo "Skipping Audacity" -fi -' - -: ' -if [ $in_mangohud -eq 1 ]; then - echo "Installing MangoHud" - git clone --recurse-submodules https://github.com/flightlessmango/MangoHud.git - ./MangoHud/build.sh install -else - echo "Skipping MangoHud" -fi -' - -: ' -if [ $in_easystrokes -eq 1 ]; then - echo "Installing Easystrokes" - paru -S --needed easystroke -else - echo "Skipping Easystrokes" -fi -' - -: ' -if [ $in_liferea -eq 1 ]; then - echo "Installing Liferea" - paru -S --needed liferea -else - echo "Skipping Liferea" -fi -' - -: ' -if [ $in_fractal -eq 1 ]; then - echo "Installing Fractal" - sudo pacman -S --needed fractal -else - echo "Skipping Fractal" -fi -' - -: ' -if [ $in_bettergram -eq 1 ]; then - echo "Installing Bettergram" - paru -S --needed bettergram -else - echo "Skipping Bettergram" -fi -' - -: ' -if [ $in_waifu2x -eq 1 ]; then - echo "Installing Waifu2x" - paru -S --needed waifu2x-ncnn-vulkan -else - echo "Skipping Waifu2x" -fi -' - -: ' -if [ $in_telegram -eq 1 ]; then - echo "Installing Telegram" - sudo pacman -S --needed telegram-desktop -else - echo "Skipping Telegram" -fi -' - -: ' -if [ $in_element -eq 1 ]; then - echo "Installing Element" - sudo pacman -S --needed element-desktop -else - echo "Skipping Element" -fi -' - #performance and battery life if [ $in_acpufreq -eq 1 ]; then echo "Installing auto-cpufreq" @@ -628,8 +320,6 @@ if [ $in_acpufreq -eq 1 ]; then sudo auto-cpufreq --install sudo systemctl start auto-cpufreq sudo systemctl enable auto-cpufreq -else - echo "Skipping auto-cpufreq" fi #devtools @@ -641,19 +331,8 @@ if [ $in_doomemacs -eq 1 ]; then git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d ~/.emacs.d/bin/doom install export PATH="$PATH":$HOME/.emacs.d/bin -else - echo "Skipping doom-emacs" fi -: ' -if [ $in_vscodium -eq 1 ]; then - echo "Installing vscodium" - paru -S --needed vscodium-bin -else - echo "Skipping vscodium" -fi -' - if [ $in_podman -eq 1 ]; then echo "Installing podman" sudo pacman -S --needed podman podman-dnsname fuse-overlayfs @@ -661,40 +340,8 @@ if [ $in_podman -eq 1 ]; then sudo usermod --add-subuids 100000-165536 --add-subgids 100000-165536 "$USER" sudo groupadd -f podman sudo usermod -aG podman "$USER" -else - echo "Skipping podman" fi -: ' -#other social stuff -if [ $in_teams -eq 1 ]; then - echo "Installing teams" - paru -S --needed teams -else - echo "Skipping teams" -fi -' - -: ' -if [ $in_slack -eq 1 ]; then - echo "Installing slack" - #paru -S --needed slack-desktop - paru -s --needed slack-electron -else - echo "Skipping slack" -fi -' - -: ' -#stats -if [ $in_pkgstats -eq 1 ]; then - echo "Installing pkgstats" - sudo pacman -S --needed pkgstats -else - echo "Skipping pkgstats" -fi -' - # other system configs # arco pc if [ $in_arco_pc -eq 1 ]; then @@ -711,22 +358,24 @@ fi ############################## ##### Configuration ##### ############################## +echo Configuring packages #change shell chsh -s /usr/bin/fish "$USER" #enable vnstat -sudo systemctl enable vnstat -sudo systemctl start vnstat +sudo systemctl enable --now vnstat + +# setup autotrash +autotrash -d 5 --install +systemctl --user start autotrash +systemctl --user enable autotrash.timer # enable lockscreen for systemd -sudo systemctl enable betterlockscreen@$USER +#sudo systemctl enable betterlockscreen@$USER # enable firewall echo "Enabling Firewall" -#sudo ufw enable -#sudo systemctl enable ufw -#sudo systemctl start ufw sudo systemctl enable --now firewalld sudo firewall-cmd --zone=public --permanent --remove-service=ssh @@ -735,35 +384,39 @@ sudo systemctl enable lightdm # regenerate locale # Fixes rofi not launching -sudo locale-gen +#sudo locale-gen # update fonts cache fc-cache -f # download grub theme -git clone https://github.com/xenlism/Grub-themes.git -cd "Grub-themes/xenlism-grub-arch-1080p/" -sudo bash install.sh +#git clone https://github.com/xenlism/Grub-themes.git +#cd "Grub-themes/xenlism-grub-arch-1080p/" +#sudo bash install.sh # go back -cd ../../ +#cd ../../ #Changes to home folder automatically now, no need to be extra careful anymore. +# TODO make config script independent of download location +cd "$HOME" git clone https://gitlab.com/RealStickman-arch/config echo Finished downloading config -# Download git repos -bash ~/config/scripts/sc-git-pull + #cleanup -rm -rf ~/setup +rm -rf "$setupdir" echo Removed setup files #downloading config echo Setting config bash ~/config/install.sh +# Download git repos +bash ~/config/scripts/sc-git-pull + if [[ $(pacman -Q pkgstats 2>/dev/null > /dev/null) ]]; then - pkgstats + sudo systemctl enable --now pkgstats.timer fi echo Finished everything diff --git a/arch-setup/packages/audiopkgs-old.txt b/arch-setup/packages/audiopkgs-old.txt deleted file mode 100644 index 78c616b0..00000000 --- a/arch-setup/packages/audiopkgs-old.txt +++ /dev/null @@ -1,10 +0,0 @@ -alsa-card-profiles -alsa-utils -lib32-libpulse -libcanberra-pulse -libpulse -pavucontrol -pulseaudio -pulseaudio-alsa -pulseaudio-bluetooth -pulseeffects-legacy diff --git a/arch-setup/packages/aurpkgs.txt b/arch-setup/packages/aurpkgs.txt index 71870d16..5e7bb065 100644 --- a/arch-setup/packages/aurpkgs.txt +++ b/arch-setup/packages/aurpkgs.txt @@ -1,5 +1,4 @@ autotrash -betterlockscreen bitwarden btrfsmaintenance downgrade diff --git a/arch-setup/packages/officialpkgs.txt b/arch-setup/packages/officialpkgs.txt index 7b4a3658..7df66865 100644 --- a/arch-setup/packages/officialpkgs.txt +++ b/arch-setup/packages/officialpkgs.txt @@ -1,6 +1,5 @@ acpilight age -arandr bandwhich base-devel brotli @@ -90,7 +89,6 @@ python-pip qt5-imageformats reflector restic -rofi rsync seahorse smartmontools @@ -111,6 +109,7 @@ vnstat webkit2gtk wget wireguard-tools +wofi xdg-user-dirs xf86-input-elographics xf86-input-evdev @@ -121,6 +120,5 @@ xf86-video-ati xf86-video-fbdev xf86-video-intel xf86-video-nouveau -xfce4-power-manager xfsprogs xorg-xrdb