mirror of
https://github.com/JonasunderscoreJones/i3-system-setup.git
synced 2025-10-22 19:19:19 +02:00
219 lines
6.6 KiB
Bash
Executable file
219 lines
6.6 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# get start time
|
|
start_time=$(date +%s)
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "This script must be run as root"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Welcome to the system setup script for Arch Linux"
|
|
echo "This script will install all the necessary packages for you to use Arch Linux"
|
|
echo "This script will also configure your system to use the latest and greatest version of software"
|
|
echo "The above messages were generated using copilot. Proud of ya!"
|
|
|
|
# get non-root user
|
|
execdir=$(pwd)
|
|
declare -a array=($(echo $execdir | tr "/" " "))
|
|
user=$array[2]
|
|
|
|
# update the system packages
|
|
echo "\nUpdating system packages...\n"
|
|
yay -Syyu --noconfirm
|
|
|
|
# remove packages that cause conflicts
|
|
yay -Rns --noconfirm pipewire-pulse
|
|
yay -Rns --noconfirm bluez-utils
|
|
|
|
# install emojis necessary for z4h
|
|
echo "\nInstalling emojis...\n"
|
|
yay -S --noconfirm --needed noto-fonts-emoji
|
|
|
|
# install blueman, bluez
|
|
echo "\nInstalling Bluetooth dependencies...\n"
|
|
yay -S --noconfirm --needed blueman bluez bluez-utils-compat
|
|
|
|
# start bluetooth
|
|
echo "\nStarting Bluetooth...\n"
|
|
/etc/init.d/bluetooth start
|
|
systemctl start bluetooth
|
|
|
|
# install ly display manager
|
|
echo "\nInstalling Ly display manager...\n"
|
|
yay -S --noconfirm --needed ly
|
|
|
|
# enable and start ly display manager
|
|
echo "\nEnabling and starting Ly display manager...\n"
|
|
systemctl disable lightdm.service
|
|
systemctl enable ly.service
|
|
|
|
# install all pacman packages
|
|
echo "\nInstalling misc pacman packages...\n"
|
|
yay -S --noconfirm --needed neofetch steam discord deja-dup btop pulseaudio-alsa pulseaudio-bluetooth gparted krita syncthing tmux dolphin gnome-keyring cpupower-gui arduino nbtexplorer obs-studio gpick audacity kdenlive libreoffice thunderbird signal-desktop speedtest-cli wine tmux flameshot alacritty lutris unrar kdiskmark kdeconnect bitwarden
|
|
|
|
# install all AUR packages
|
|
echo "\nInstalling misc AUR packages...\n"
|
|
su -c yay -S --noconfirm --needed aseprite browsh-bin protonvpn protonvpn-cli protonvpn-gui python-proton-client qjoypad realvnc-vnc-viewer spotify stacer visual-studio-code-bin github-desktop-bin polymc atlauncher whatsapp-for-linux librepcb rpi-imager jetbrains-toolbox unityhub protonvpn ungoogled-chromium icon-library librepcb diylc skypeforlinux-stable-bin $user
|
|
|
|
|
|
|
|
########## OpenAsar ##########
|
|
|
|
# download latest OpenAsar
|
|
echo "\nDownloading latest OpenAsar...\n"
|
|
curl -s https://api.github.com/repos/GooseMod/OpenAsar/releases/latest \
|
|
| grep "browser_download_url.*asar" \
|
|
| cut -d : -f 2,3 \
|
|
| tr -d \" \
|
|
| wget -qi -
|
|
|
|
# install latest OpenAsar
|
|
echo "\nInstalling latest OpenAsar...\n"
|
|
mv app.asar /opt/discord/resources/app.asar
|
|
|
|
########## spotifyd - spotify-tui ##########
|
|
yay -s --noconfirm --needed spotifyd spotify-tui
|
|
mkdir ~/-config/spotifyd
|
|
cat > ~/.config/spotifyd/spotifyd.conf << ENDOFFILE
|
|
[global]
|
|
# Your Spotify account name.
|
|
username = "[username]"
|
|
|
|
# Your Spotify account password.
|
|
password = "[password]"
|
|
# backend
|
|
backend = "pulseaudio"
|
|
volume_controller = "alsa"
|
|
|
|
# The device name can't have spaces. The device type has only cosmetic changes.
|
|
device_name = "hp-g3-j-sptd"
|
|
device_type = "computer"
|
|
|
|
bitrate = 320
|
|
|
|
# create the directory. I chose not to keep a cache, but you might.
|
|
cache_path = "/home/jonas_jones/.cache/spotifyd"
|
|
no_audio_cache = true
|
|
|
|
# Disabling normalisation works better for me
|
|
# And for some reason, on my machine "0" corresponds to 38%
|
|
initial_volume = "0"
|
|
volume_normalisation = false
|
|
normalisation_pregain = -10
|
|
|
|
zeroconf_port = 4444
|
|
ENDOFFILE
|
|
|
|
cat ~/.config/systemd/user/spotifyd.service << ENDOFFILE
|
|
[Unit]
|
|
Description=A spotify playing daemon
|
|
Documentation=https://github.com/Spotifyd/spotifyd
|
|
Wants=sound.target
|
|
After=sound.target
|
|
Wants=network-online.target
|
|
After=network-online.target
|
|
|
|
[Service]
|
|
ExecStart=/usr/bin/spotifyd --no-daemon
|
|
Restart=always
|
|
RestartSec=12
|
|
|
|
[Install]
|
|
WantedBy=default.target
|
|
ENDOFFILE
|
|
|
|
systemctl start --user spotifyd.service
|
|
systemctl restart --user spotifyd.service
|
|
|
|
|
|
########## no-beep.service ##########
|
|
echo "\nAdding no-beep.service...\n"
|
|
cat > /etc/systemd/system/no-beep.service << ENDOFFILE
|
|
[Unit]
|
|
Description=Disables PC Speaker for beep
|
|
|
|
[Service]
|
|
Type=simple
|
|
ExecStart=rmmod pcspkr
|
|
KillMode=process
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
ENDOFFILE
|
|
|
|
systemctl enable no-beep.service
|
|
systemctl start no-beep.service
|
|
|
|
# install sdkman
|
|
echo "\nInstalling sdkman...\n"
|
|
curl -s "https://get.sdkman.io" | bash
|
|
tmux new -d 'sdk install java 17.0.4-oracle'
|
|
|
|
# install virtualbox
|
|
echo "\nInstalling virtualbox...\n"
|
|
yay -S --noconfirm --needed virtualbox
|
|
touch /etc/modules-load.d/virtualbox.conf
|
|
cat /etc/modules-load.d/virtualbox.conf << ENDOFFILE
|
|
vboxdrv
|
|
ENDOFFILE
|
|
usermod -aG vboxusers $USER
|
|
echo "Reboot to complete installation of VirtualBox"
|
|
|
|
# install sublime text 3
|
|
curl -O https://download.sublimetext.com/sublimehq-pub.gpg && sudo pacman-key --add sublimehq-pub.gpg && sudo pacman-key --lsign-key 8A8F901A && rm sublimehq-pub.gpg
|
|
echo -e "\n[sublime-text]\nServer = https://download.sublimetext.com/arch/stable/x86_64" | sudo tee -a /etc/pacman.conf
|
|
pacman -Syu --noconfirm sublime-text
|
|
|
|
# install intel drivers
|
|
echo "\nInstalling intel drivers...\n"
|
|
yay -S --noconfirm --needed mesa lib32-mesa xf86-video-intel vulkan-intel intel-hybrid-codec-driver linux-firmware intel-media-driver
|
|
|
|
# install streamdeck-ui
|
|
yay -S --noconfirm python-pip hidapi libxcb
|
|
touch /etc/udev/rules.d/70-streamdeck.rules
|
|
cat /etc/udev/rules.d/70-streamdeck.rules << ENDOFFILE
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", TAG+="uaccess"
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", TAG+="uaccess"
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", TAG+="uaccess"
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", TAG+="uaccess"
|
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", TAG+="uaccess"
|
|
ENDOFFILE
|
|
udevadm trigger
|
|
sudo -u $user pip3 install streamdeck-ui --user
|
|
|
|
# fetch saved config files from repository
|
|
echo "fetching config file from repository..."
|
|
|
|
|
|
|
|
|
|
# install lci - lolcode interpreter
|
|
git clone https://github.com/justinmeza/lci.git /tmp/lci
|
|
cd /tmp/lci
|
|
cmake .
|
|
make
|
|
make install
|
|
ctest
|
|
|
|
|
|
# get end time
|
|
end_time=$(date +%s)
|
|
|
|
echo "script finished in $((end_time - start_time)) seconds"
|
|
|
|
neofetch
|
|
echo "System setup complete!"
|
|
echo "Reboot recommended!"
|
|
echo "\nPress ENTER to start the last manual setup for the installed packages"
|
|
read -n 1 k <&1
|
|
|
|
# install z4h
|
|
echo "\nInstalling z4h...\n"
|
|
if command -v curl >/dev/null 2>&1; then
|
|
su -c sh -c "$(curl -fsSL https://raw.githubusercontent.com/romkatv/zsh4humans/v5/install)" $user
|
|
else
|
|
su -c sh -c "$(wget -O- https://raw.githubusercontent.com/romkatv/zsh4humans/v5/install)" $user
|
|
fi
|
|
# setup spotify-tui
|
|
spt
|