Update 'arch.sh'

This commit is contained in:
verita84 2022-12-01 16:20:53 +00:00
parent 02ed228897
commit f8f21238cc

97
arch.sh
View File

@ -7,10 +7,10 @@ TARGET='/mnt'
######################################
clear
echo
HARD_DISK="/dev/nvme0n1"
EFI="${HARD_DISK}p1"
BTRFS="${HARD_DISK}p2"
ROOT_NAME='arch-gnome'
HARD_DISK=$(lsblk | cut -d ' ' -f1 | grep -vi zram | head -2 | tail -1)
EFI="/dev/$(lsblk | grep $HARD_DISK | head -2 | tail -1 | cut -c 7-20 | cut -d ' ' -f1)"
BTRFS="/dev/$(lsblk | grep $HARD_DISK | head -3 | tail -1 | cut -c 7-20 | cut -d ' ' -f1)"
ROOT_NAME='arch'
USB_BACKUP='/dev/disk/by-uuid/770db62e-1893-42ce-be37-c70fa6578fba'
######################################
USER="verita84"
@ -28,11 +28,15 @@ FLATPAKS+=( net.brinkervii.grapejuice )
#Packages
SHARED_DESKTOP_APPS=" gnome firefox evolution handbrake libreoffice-fresh mpv gimp element-desktop telegram-desktop sysstat keepassxc python-axolotl python-qrcode yt-dlp "
PACKAGES=" flatpak tor bluez bluez-utils blueman pulseaudio-bluetooth avahi pulseaudio pulseaudio-bluetooth cups acpi acpid cpupower syncthing docker docker-compose samba nfs-utils avahi cronie pulseaudio acpilight aardvark-dns sof-firmware ghostscript arch-install-scripts zsh grml-zsh-config btrfs-progs unzip nfs-utils bash-completion openssh python-pynacl parted dosfstools wget curl cifs-utils ntp mkinitcpio vim-airline rsync screen base linux-lts linux-firmware udev git networkmanager nss-mdns efibootmgr wireless_tools wpa_supplicant autoconf automake binutils fakeroot file findutils flex gawk gcc gettext grep groff gzip libtool m4 make patch pkgconf sed sudo texinfo which networkmanager-openvpn gobject-introspection ntp screen docbook-xsl alsa-utils"
PACKAGES=" nextcloud-client redis aardvark-dns cockpit cockpit-machines cockpit-podman flatpak tor bluez bluez-utils powertop blueman pulseaudio-bluetooth avahi pulseaudio pulseaudio-bluetooth cups acpi packagekit cockpit-packagekit cockpit-pcp cockpit-storaged acpid cpupower podman podman-compose samba nfs-utils avahi cronie pulseaudio acpilight aardvark-dns sof-firmware ghostscript arch-install-scripts zsh grml-zsh-config btrfs-progs unzip nfs-utils bash-completion openssh python-pynacl parted dosfstools wget curl cifs-utils ntp mkinitcpio vim-airline rsync screen base linux-lts linux-firmware udev git networkmanager nss-mdns efibootmgr wireless_tools wpa_supplicant autoconf automake binutils fakeroot file findutils flex gawk gcc gettext grep groff gzip libtool m4 make patch pkgconf sed sudo texinfo which networkmanager-openvpn gobject-introspection ntp screen docbook-xsl alsa-utils"
VIRTUALIZATION=" gnu-netcat virt-manager libvirt iptables-nft dnsmasq dmidecode edk2-ovmf qemu-base jack "
PACKAGES=$PACKAGES$SHARED_DESKTOP_APPS$VIRTUALIZATION
SERVICES+=( cronie syncthing@$USER zram bluetooth cpupower gdm acpid avahi-daemon cups NetworkManager ntpd libvirtd sshd );
SERVICES+=( cronie zram bluetooth cpupower podman powertop podman-hack gdm acpid avahi-daemon cups NetworkManager ntpd libvirtd sshd );
auto_login(){
sed -i "/#WaylandEnable=false/a AutomaticLoginEnable=True" $TARGET/etc/gdm/custom.conf
sed -i "/True/a AutomaticLogin=$USER" $TARGET/etc/gdm/custom.conf
}
clean-old-usb-snapshots(){
echo;echo "[Cleaning up old USB snapshots.....]";echo
@ -68,27 +72,29 @@ copy-efi-to-usb(){
cp -rf /boot/* $TARGET/efi-$1/
}
homeBackup() {
echo;echo "[Copying USER data....]";echo
rsync -av --delete /home/ /mnt/home/
}
usb-backup() {
umount $TARGET
echo;echo "[Mounting $USB_BACKUP]";echo
mount $USB_BACKUP $TARGET
homeBackup
clean-old-snapshots "$1"
clean-old-usb-snapshots "$1"
create-usb-snapshots "$1"
send-snapshots "$1"
clean-old-snapshots "$1"
copy-efi-to-usb "$1"
cp -f arch.sh $TARGET/$1
cp -f /usr/bin/arch.sh $TARGET/$1
ls $TARGET/
umount $TARGET
}
instlal-wine(){
pacman -S lib32-alsa-plugins lib32-libpulse lib32-openal wine-gecko wine-mono
}
usb-restore() {
partitions
rsync -av ../$ROOT_NAME-$1/ $TARGET/ --delete
@ -121,6 +127,7 @@ install() {
installSoftware
locale
accounts
auto_login
zram
custom_service_files
services
@ -131,15 +138,29 @@ install() {
unmount
}
pacman-snapshot-hook(){
echo "[Trigger]" > /usr/share/libalpm/hooks/04-snapshot.hook
echo "Operation = Upgrade" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "Operation = Install" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "Operation = Remove" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "Type = Package" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "Target = *" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "[Action]" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "Description = Creating Snapshot" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "When = PreTransaction" >> /usr/share/libalpm/hooks/04-snapshot.hook
echo "Exec = /usr/bin/arch.sh snapshot" >> /usr/share/libalpm/hooks/04-snapshot.hook
}
snapshots() {
echo
echo "Creating Snapshots....."
echo
btrfs sub snapshot / /.snapshots/root-$(date +%Y-%m-%d)
echo "Title $(date +%Y-%m-%d)" >/boot/loader/entries/root-$(date +%Y-%m-%d).conf
echo 'linux /vmlinuz-linux-lts' >>/boot/loader/entries/root-$(date +%Y-%m-%d).conf
echo 'initrd /initramfs-linux-lts.img' >>/boot/loader/entries/root-$(date +%Y-%m-%d).conf
echo "options cryptdevice=UUID=$(blkid | grep ${BTRFS} | cut -d '"' -f2):root root=\"LABEL=arch\" rootflags=subvol=@.snapshots/"root-$(date +%Y-%m-%d) "rw" >>/boot/loader/entries/root-$(date +%Y-%m-%d).conf
DATE=$(echo $(date +%Y-%m-%d-%H-%M-%S))
btrfs sub snapshot / /.snapshots/root-${DATE}
echo "Title ${DATE}" >/boot/loader/entries/root-${DATE}.conf
echo 'linux /vmlinuz-linux-lts' >>/boot/loader/entries/root-${DATE}.conf
echo 'initrd /initramfs-linux-lts.img' >>/boot/loader/entries/root-${DATE}.conf
echo "options mitigations=off cryptdevice=UUID=$(blkid | grep ${BTRFS} | cut -d '"' -f2):root root=\"LABEL=arch\" rootflags=subvol=@.snapshots/"root-${DATE} "rw" >>/boot/loader/entries/root-${DATE}.conf
}
remove-snapshots() {
@ -168,22 +189,23 @@ bootloader() {
echo 'title Arch Linux' >/boot/loader/entries/arch.conf
echo 'linux /vmlinuz-linux-lts' >>/boot/loader/entries/arch.conf
echo 'initrd /initramfs-linux-lts.img' >>/boot/loader/entries/arch.conf
echo "options cryptdevice=UUID=$(blkid | grep ${BTRFS} | cut -d '"' -f2):root root=\"LABEL=arch\" rootflags=subvol=@$ROOT_NAME rw" >>/boot/loader/entries/arch.conf
echo "options mitigations=off cryptdevice=UUID=$(blkid | grep ${BTRFS} | cut -d '"' -f2):root root=\"LABEL=arch\" rootflags=subvol=@$ROOT_NAME rw" >>/boot/loader/entries/arch.conf
}
function setup_script() {
cp -f arch.sh $TARGET/
cp -f arch.sh $TARGET/usr/bin/
echo 'bash /arch.sh bootloader' >>$TARGET/setup.sh
echo 'bash /arch.sh aur' >>$TARGET/setup.sh
echo 'bash /arch.sh flatpaks' >>$TARGET/setup.sh
echo 'bash /arch.sh btrfs-tweaks' >>$TARGET/setup.sh
echo 'bash /usr/bin/arch.sh bootloader' >>$TARGET/setup.sh
echo 'bash /usr/bin/arch.sh aur' >>$TARGET/setup.sh
echo 'bash /usr/bin/arch.sh flatpaks' >>$TARGET/setup.sh
echo 'bash /usr/bin/arch.sh btrfs-tweaks' >>$TARGET/setup.sh
echo 'bash /usr/bin/arch.sh pacman-snapshot-hook' >>$TARGET/setup.sh
chmod +x $TARGET/usr/bin/arch.sh
chmod +x $TARGET/setup.sh
arch-chroot $TARGET /setup.sh
sed -i '/#NoUpgrade/a IgnorePkg = linux-lts' $TARGET/etc/pacman.conf
rm -f $TARGET/setup.sh
rm -f $TARGET/arch.sh
}
function cpuPower() {
@ -215,7 +237,7 @@ mounts() {
mount $EFI $TARGET/boot
#CONFIGURE DATA DIRS (HOME AND FLATPAK)
mkdir $TARGET/home
mount -o subvol=@home /dev/mapper/root $TARGET/home
#mount -o subvol=@home /dev/mapper/root $TARGET/home
mkdir -p $TARGET/var/lib/flatpak
mount -o subvol=@flatpak /dev/mapper/root $TARGET/var/lib/flatpak
}
@ -275,7 +297,7 @@ fstab() {
accounts() {
echo
echo "Set Password for $USER"
echo "useradd -m -s /bin/bash $USER" >>$TARGET/setup.sh
echo "useradd -m -s /bash $USER" >>$TARGET/setup.sh
echo "echo \"$USER:$USER_PASSWORD\"| chpasswd " >>$TARGET/setup.sh
echo "gpasswd -a $USER wheel" >>$TARGET/setup.sh
echo "gpasswd -a $USER network" >>$TARGET/setup.sh
@ -309,6 +331,26 @@ DISABLE_COW=("/var/lib/docker" "/var/lib/containers" "/var/lib/postgresql" "/
custom_service_files() {
echo "systemctl set-default graphical.target" >>$TARGET/setup.sh
echo "[Unit]" >$TARGET/etc/systemd/system/powertop.service
echo "Description=Powertop tunings" >>$TARGET/etc/systemd/system/powertop.service
echo "[Service]" >>$TARGET/etc/systemd/system/powertop.service
echo "Type=oneshot" >>$TARGET/etc/systemd/system/powertop.service
echo "ExecStart=/usr/bin/powertop --auto-tune" >>$TARGET/etc/systemd/system/powertop.service
echo "[Install]" >>$TARGET/etc/systemd/system/powertop.service
echo "WantedBy=multi-user.target" >>$TARGET/etc/systemd/system/powertop.service
echo "[Unit]" >$TARGET/etc/systemd/system/podman-hack.service
echo "Description=Podman Hack" >>$TARGET/etc/systemd/system/podman-hack.service
echo "[Service]" >>$TARGET/etc/systemd/system/podman-hack.service
echo "Type=oneshot" >>$TARGET/etc/systemd/system/podman-hack.service
echo "ExecStartPre=/usr/bin/sysctl -w kernel.unprivileged_userns_clone=1" >>$TARGET/etc/systemd/system/podman-hack.service
echo "ExecStartPre=/usr/bin/touch /etc/subuid /etc/subgid" >>$TARGET/etc/systemd/system/podman-hack.service
echo "ExecStartPre=/usr/bin/usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER" >>$TARGET/etc/systemd/system/podman-hack.service
echo "ExecStartPre=/usr/bin/chmod 4755 /usr/bin/newgidmap" >>$TARGET/etc/systemd/system/podman-hack.service
echo "ExecStart=/usr/bin/chmod 4755 /usr/bin/newuidmap" >>$TARGET/etc/systemd/system/podman-hack.service
echo "[Install]" >>$TARGET/etc/systemd/system/podman-hack.service
echo "WantedBy=multi-user.target" >>$TARGET/etc/systemd/system/podman-hack.service
echo "[Unit]" >$TARGET/etc/systemd/system/zram.service
echo "Description=Swap with zram" >>$TARGET/etc/systemd/system/zram.service
@ -389,12 +431,13 @@ show-help() {
echo "./arch.sh snapshot"
echo "./arch.sh reomve-snapshot"
echo "./arch.sh btrfs-tweaks"
echo "./arch.sh install-wine"
echo
}
if [ "$1" = "install" ]; then
install "$2"
elif [ "$1" = "pacman-snapshot-hook" ]; then
pacman-snapshot-hook
elif [ "$1" = "upgrade-system" ]; then
upgrade-system
elif [ "$1" = "chroot" ]; then
@ -405,8 +448,6 @@ elif [ "$1" = "aur" ]; then
aur "$2"
elif [ "$1" = "wifi" ]; then
wifi
elif [ "$1" = "install-wine" ]; then
install-wine
elif [ "$1" = "flatpaks" ]; then
flatpaks
elif [ "$1" = "bootloader" ]; then