mirror of
https://git.myvelabs.com/lab/archlinux.git
synced 2026-01-11 10:29:22 -06:00
First commit
This commit is contained in:
commit
36ad41a2fc
18 changed files with 10005 additions and 0 deletions
297
functions/startup
Executable file
297
functions/startup
Executable file
|
|
@ -0,0 +1,297 @@
|
|||
#!/usr/bin/env bash
|
||||
# AUR package list
|
||||
aur_list=(
|
||||
# nomachine
|
||||
# realvnc-vnc-viewer
|
||||
# jdownloader2
|
||||
# ledger-live-bin
|
||||
# czkawka-gui-bin
|
||||
)
|
||||
|
||||
# Optional packages list
|
||||
optional=(
|
||||
firefox firefox-decentraleyes firefox-ublock-origin
|
||||
ark okular shotwell mpv ffmpegthumbs
|
||||
veracrypt keepassxc
|
||||
# nextcloud-client
|
||||
# ntfs-3g exfatprogs
|
||||
# libreoffice-fresh
|
||||
# remmina libvncserver
|
||||
# torbrowser-launcher
|
||||
# thunderbird
|
||||
# filezilla
|
||||
# chromium
|
||||
# vlc
|
||||
# gnome-disk-utility
|
||||
# xdg-user-dirs
|
||||
# noto-fonts-cjk
|
||||
# noto-fonts-emoji
|
||||
)
|
||||
|
||||
function INSTALL
|
||||
{
|
||||
sudo pacman --sync ${@} --ask 4
|
||||
echo
|
||||
}
|
||||
|
||||
# VirtualBox
|
||||
until [[ ${install_virtualbox} = [yYnN] ]]
|
||||
do
|
||||
read -n 1 -p $'\n\e[1mWould you like to install Virtualbox? (y/n): \e[0m' install_virtualbox
|
||||
[[ ${install_virtualbox} = [yYnN] ]] || echo -e -n '\n\n\e[1;31mNot a valid answer, type "y" or "n"\e[0m'
|
||||
done
|
||||
echo
|
||||
# QEMU
|
||||
until [[ ${install_qemu} = [yYnN] ]]
|
||||
do
|
||||
read -n 1 -p $'\n\e[1mWould you like to install QEMU? (y/n): \e[0m' install_qemu
|
||||
[[ ${install_qemu} = [yYnN] ]] || echo -e -n '\n\n\e[1;31mNot a valid answer, type "y" or "n"\e[0m'
|
||||
done
|
||||
|
||||
echo
|
||||
echo
|
||||
|
||||
# Package groups installation
|
||||
INSTALL ${optional[@]}
|
||||
|
||||
# Remmina
|
||||
if [[ ${optional[@]} =~ "remmina" ]] && [ -d ~/.config/sway/config.d/ ]
|
||||
then
|
||||
# Remmina passthrough
|
||||
cat > ~/.config/sway/config.d/zz-remmina <<- 'remmina'
|
||||
# VNC passthrough
|
||||
mode remmina {
|
||||
bindsym Mod4+Shift+p mode default
|
||||
}
|
||||
bindsym Mod4+Shift+p mode remmina
|
||||
remmina
|
||||
fi
|
||||
|
||||
# Tor
|
||||
if [[ ${optional[@]} =~ "torbrowser-launcher" ]]
|
||||
then
|
||||
torbrowser-launcher
|
||||
fi
|
||||
|
||||
# Bluetooth
|
||||
if pacman -Q | grep -q bluez-utils
|
||||
then
|
||||
INSTALL bluedevil
|
||||
sudo systemctl --quiet enable --now bluetooth.service
|
||||
fi
|
||||
|
||||
# AUR packages
|
||||
if [ ${#aur_list[@]} -gt 0 ]
|
||||
then
|
||||
if ! pacman -Q | grep -q -w git
|
||||
then
|
||||
INSTALL git
|
||||
fi
|
||||
echo -e '#!/usr/bin/env bash' > ~/.local/functions/aur-packages
|
||||
for aur_package in ${aur_list[@]}
|
||||
do
|
||||
cd
|
||||
git clone https://aur.archlinux.org/${aur_package}.git
|
||||
if echo ${aur_package} | grep -q nomachine
|
||||
then
|
||||
sed -i 's/_autoservice=n/_autoservice=y/' nomachine/PKGBUILD
|
||||
sed -i 's/_autofirewall=n/_autofirewall=y/' nomachine/PKGBUILD
|
||||
fi
|
||||
cd ${aur_package}/
|
||||
makepkg -csi
|
||||
echo
|
||||
cd ..
|
||||
rm -r ${aur_package}/ -f
|
||||
cat >> ~/.local/functions/aur-packages <<- aur
|
||||
function aur-${aur_package}
|
||||
{
|
||||
cd ~/
|
||||
git clone https://aur.archlinux.org/${aur_package}.git
|
||||
cd ${aur_package}/
|
||||
makepkg -csi
|
||||
echo
|
||||
cd ~/
|
||||
rm -r ${aur_package}/ -f
|
||||
}
|
||||
|
||||
aur
|
||||
done
|
||||
fi
|
||||
|
||||
# Optional AUR extras
|
||||
# freefilesync
|
||||
# pdfsam
|
||||
# fslint pygtk
|
||||
|
||||
# Printers
|
||||
# yay -S --ask 4 print-manager cups system-config-printer skanlite && echo && sudo systemctl --quiet enable --now org.cups.cupsd && sudo gpasswd -a ${USER} sys >/dev/null
|
||||
# Webcam
|
||||
# sudo gpasswd -a ${USER} video >/dev/null
|
||||
|
||||
# i3
|
||||
if [ -f ~/.config/i3/config ]
|
||||
then
|
||||
cat >> ~/.config/i3/config <<- 'config'
|
||||
|
||||
# gaps inner 8
|
||||
# gaps outer 4
|
||||
# for_window [class="^.*"] border pixel 2
|
||||
config
|
||||
|
||||
cat > ~/.local/functions/i3-config <<- 'config'
|
||||
#!/usr/bin/env bash
|
||||
# i3 config
|
||||
function i3-config
|
||||
{
|
||||
vim ~/.config/i3/config
|
||||
}
|
||||
config
|
||||
|
||||
if [ -f /usr/share/xsessions/plasma-i3.desktop ]
|
||||
then
|
||||
tee -a ~/.config/i3/config >/dev/null <<- 'integration'
|
||||
|
||||
# >>> Plasma Integration <<<
|
||||
# Try to kill the wallpaper set by Plasma (it takes up the entire workspace and hides everything)
|
||||
exec --no-startup-id wmctrl -c Plasma
|
||||
for_window [title="Desktop — Plasma"] kill; floating enable; border none
|
||||
no_focus [class=”plasmashell”]
|
||||
|
||||
# Avoid tiling popups, dropdown windows from plasma
|
||||
for_window [class="plasmashell"] floating enable
|
||||
for_window [class="Plasma"] floating enable
|
||||
for_window [class="krunner"] floating enable
|
||||
for_window [class="Kmix"] floating enable
|
||||
for_window [class="Klipper"] floating enable
|
||||
for_window [class="Plasmoidviewer"] floating enable
|
||||
|
||||
# >>> Window Rules <<<
|
||||
# >>> Avoid tiling for non-Plasma stuff <<<
|
||||
for_window [window_role="pop-up"] floating enable
|
||||
for_window [window_role="bubble"] floating enable
|
||||
for_window [window_role="task_dialog"] floating enable
|
||||
for_window [window_role="Preferences"] floating enable
|
||||
for_window [window_role="About"] floating enable
|
||||
for_window [window_type="dialog"] floating enable
|
||||
for_window [window_type="menu"] floating enable
|
||||
integration
|
||||
|
||||
install /dev/stdin ~/.local/bin/rotate-wallpapers <<- feh
|
||||
#!/usr/bin/env bash
|
||||
sleep 1
|
||||
while true
|
||||
do
|
||||
feh --bg-max --randomize /home/${USER}/Pictures
|
||||
sleep 15
|
||||
done
|
||||
feh
|
||||
else
|
||||
if ls -l /dev/disk/* | grep -q 'VBOX'
|
||||
then
|
||||
echo 'exec VBoxClient-all' >> ~/.config/i3/config
|
||||
elif ls -l /dev/disk/* | grep -q 'virtio\|QEMU'
|
||||
then
|
||||
echo 'exec spice-vdagent' >> ~/.config/i3/config
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Sway nextcloud
|
||||
if [[ ${optional[@]} =~ "nextcloud-client" ]] && [ -f ~/.config/sway/config.d/zz-sway ]
|
||||
then
|
||||
cat > ~/.config/sway/config.d/zz-nextcloud <<- 'nextcloud'
|
||||
# Nextcloud
|
||||
exec nextcloud
|
||||
for_window [title="Nextcloud Settings"] floating enable
|
||||
nextcloud
|
||||
fi
|
||||
|
||||
# Virtualbox
|
||||
if [[ ${install_virtualbox} = [yY] ]]
|
||||
then
|
||||
echo 'Installing Virtualbox'
|
||||
|
||||
if uname -r | grep -q 'lts\|hardened\|zen'
|
||||
then
|
||||
host_modules='virtualbox-host-dkms'
|
||||
else
|
||||
host_modules='virtualbox-host-modules-arch'
|
||||
fi
|
||||
|
||||
INSTALL virtualbox ${host_modules} virtualbox-guest-iso
|
||||
echo
|
||||
|
||||
sudo gpasswd -a ${USER} vboxusers >/dev/null
|
||||
echo
|
||||
|
||||
if findmnt '/' | grep -q -w 'btrfs'
|
||||
then
|
||||
mkdir ~/VirtualBox\ VMs/
|
||||
chattr +C ~/VirtualBox\ VMs/
|
||||
fi
|
||||
fi
|
||||
|
||||
# QEMU
|
||||
if [[ ${install_qemu} = [yY] ]]
|
||||
then
|
||||
echo 'Installing QEMU'
|
||||
INSTALL qemu-desktop virt-manager edk2-ovmf \
|
||||
dnsmasq dmidecode vde2 bridge-utils
|
||||
echo
|
||||
|
||||
# Make host system a pacman cache server
|
||||
sudo tee /etc/systemd/system/local-cacheserver.service >/dev/null <<- 'CACHESERVER'
|
||||
[Unit]
|
||||
Description=Python HTTP server for Pacman Cache Server
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/python3 -m http.server --directory /var/cache/pacman/pkg/ 9090
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
CACHESERVER
|
||||
|
||||
# Host iptables rules as a pacman cache server
|
||||
sudo iptables -I INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 9090 -j ACCEPT -m comment --comment "Pacman cache server"
|
||||
sudo sed -i '/## Simple Firewall/i\
|
||||
# Pacman cache server\
|
||||
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 9090 -j ACCEPT -m comment --comment "Pacman cache server"\n' \
|
||||
/etc/iptables/userinput.rules
|
||||
sed "/OUTPUT ACCEPT/r /etc/iptables/userinput.rules" /etc/iptables/simple_firewall.rules | sudo tee /etc/iptables/iptables.rules >/dev/null
|
||||
|
||||
# QEMU pacman cache service
|
||||
sudo tee /etc/systemd/system/local-update-virtpkg-cache.service >/dev/null <<- 'service'
|
||||
[Unit]
|
||||
Description=Refresh package cache twice daily
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/bash -c "/usr/bin/pacman -Syw -d --ask 4 $(curl --fail -s -L https://git.myvelabs.com/lab/archlinux/raw/branch/master/pkg/qemu)"
|
||||
service
|
||||
|
||||
# QEMU pacman cache timer
|
||||
sudo tee /etc/systemd/system/local-update-virtpkg-cache.timer >/dev/null <<- 'timer'
|
||||
[Unit]
|
||||
Description=Refresh pacman package cache
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 00/12:00:00
|
||||
RandomizedDelaySec=12h
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
timer
|
||||
|
||||
# Enable services
|
||||
sudo systemctl --quiet enable --now libvirtd.service
|
||||
sudo systemctl --quiet enable local-cacheserver.service local-update-virtpkg-cache.timer
|
||||
sudo virsh -q net-start default
|
||||
sudo virsh -q net-autostart default
|
||||
sudo gpasswd -a ${USER} libvirt >/dev/null
|
||||
echo
|
||||
fi
|
||||
|
||||
rm -f ${0}
|
||||
echo -e '\e[1;32mSupplementary installer completed, reboot one last time\e[0m\n'
|
||||
Loading…
Add table
Add a link
Reference in a new issue