From f8f21238cc6746572481cc3aa88b3a5cf37bd689 Mon Sep 17 00:00:00 2001 From: verita84 Date: Thu, 1 Dec 2022 16:20:53 +0000 Subject: [PATCH] Update 'arch.sh' --- arch.sh | 97 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 69 insertions(+), 28 deletions(-) diff --git a/arch.sh b/arch.sh index 98beb0b..0970056 100644 --- a/arch.sh +++ b/arch.sh @@ -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