From e0e34248fc1a254d8d2a6c291c28c33cafb543d3 Mon Sep 17 00:00:00 2001 From: Eric Renfro Date: Wed, 6 Nov 2024 13:07:01 -0500 Subject: [PATCH] Initial commit --- README.md | 4 + user_commands_kde.bash | 816 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 820 insertions(+) create mode 100644 README.md create mode 100644 user_commands_kde.bash diff --git a/README.md b/README.md new file mode 100644 index 0000000..2f1caea --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# EndeavourOS Installation Customization + +This script is intended for the use of customizing the EndeavourOS installation process and automate many installation steps performed during and after my own common installations of it. Useful for quick recoveries of from-scratch installations to have a fully functional system in the least amount of time. + diff --git a/user_commands_kde.bash b/user_commands_kde.bash new file mode 100644 index 0000000..97a6570 --- /dev/null +++ b/user_commands_kde.bash @@ -0,0 +1,816 @@ +#!/bin/bash + +######################################################################################### +### Configuration Variables for Configuration and Files ################################# +######################################################################################### + +## Chaotic AUR Packages +declare -ra chaotic_pkgs=( + "pacseek" + "flatseal" "insync" + "input-leap" "libportal-gtk3" "libportal-gtk4" "libportal-qt5" "libportal-qt6" + "ttf-symbola" "ttf-ms-fonts" + "sublime-text-4" "vscodium-bin" + "softmaker-office-2024-bin" + "protonup-qt" "gamehub" "linux-steam-integration" "bottles" "heroic-games-launcher-bin" + "firefox-extension-bitwarden" +) + +## Conditional Packages by Hostname +declare -ra loki_pkgs=( + "iio-sensor-proxy" +) + +declare -ra test_pkgs=( + "ascii" +) + +## Hypervisor Packages +declare -ra hypervisor_pkgs=( + "acpi" + "spice-vdagent" + "qemu-guest-agent" + "xf86-video-qxl" +) + +## Standard Packages to install +declare -ra install_pkgs=( + "flatpak" "paru" + "htop" "btop" "ncdu" "lsd" "duf" "bat" "bat-extras" "tmux" "direnv" "starship" "pwgen" "yadm" + "zsh" "fish" + "lrzsz" "zssh" + "vim" "neovim" "neovim-qt" "lazygit" "tree-sitter-bash" "tree-sitter-cli" "luarocks" "lua51" + "wl-clipboard" + "yakuake" "ksshaskpass" + "thunderbird" "vivaldi" "vivaldi-ffmpeg-codecs" + "ttf-roboto-mono-nerd" "ttf-hack-nerd" "ttf-ubuntu-nerd" "ttf-ubuntu-mono-nerd" + "ttf-terminus-nerd" "ttf-sourcecodepro-nerd" "ttf-nerd-fonts-symbols" + "noto-fonts" "noto-fonts-emoji" "noto-fonts-extra" "ttf-noto-nerd" + "gnome-themes-extra" "gtk-engines" "gtk-engine-murrine" "adw-gtk-theme" "gtk-chtheme" + "plymouth" "plymouth-kcm" "breeze-plymouth" + "steam" "steam-native-runtime" "lutris" "vkd3d" + "wine" "wine-gecko" "wine-mono" "winetricks" + "lib32-sdl12-compat" + "bitwarden" "bitwarden-cli" "nextcloud-client" + "devtools" "pacman-contrib" + "crun" "podman" "distrobox" + "go" "php" "composer" "npm" "rubygems" "python-pip" "python-pipx" "python-pynvim" "rust" + "bash-language-server" "shellcheck" +) + +## Kernel Parameters +declare -rA kernel_cmdline=( + ["midgaard"]="amd_pstate=active amdgpu.ppfeaturemask=0xffffffff" + ["all"]="mitigations=off" +) + +## 1strun Script: /usr/local/sbin/1strun.sh +IFS='' read -r -d '' script_1strun <<"EOF" +#!/bin/bash + +#umount /.snapshots && rmdir /.snapshots +#snapper --no-dbus create-config --template default / +#if [[ -d "/.snapshots" ]]; then +# echo "USER_COMMANDS: found .snapshots, removing" +# btrfs sub delete /.snapshots +#fi +#mkdir /.snapshots && mount /.snapshots +systemctl disable 1strun.service +rm -f /usr/local/sbin/1strun.sh /etc/systemd/system/1strun.service +systemctl daemon-reload +EOF + +## 1strun Service: /etc/systemd/system/1strun.service +IFS='' read -r -d '' service_1strun <<"EOF" +[Unit] +Description=1st Run Script + +[Service] +ExecStart=/usr/local/sbin/1strun.sh + +[Install] +WantedBy=multi-user.target +EOF + +## sddm config: /etc/sddm.conf.d/10-wayland.conf +IFS='' read -r -d '' config_sddm_wayland <<"EOF" +[General] +DisplayServer=wayland +GreeterEnvironment=QT_WAYLAND_SHELL_INTEGRATION=layer-shell + +[Wayland] +CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts --locale1 --inputmethod maliit-keyboard +EOF + +## /etc/dracut.conf.d/plymouth.conf +IFS='' read -r -d '' config_dracut_plymouth <<"EOF" +add_dracutmodules+=" plymouth " +EOF + +## /etc/dracut.conf.d/bluetooth.conf +IFS='' read -r -d '' config_dracut_bluetooth <<"EOF" +add_dracutmodules+=" bluetooth " +EOF + +## /etc/dracut.conf.d/hibernate.conf +IFS='' read -r -d '' config_dracut_hibernate <<"EOF" +add_dracutmodules+=" resume " +EOF + +## /etc/systemd/system/display-manager.service.d/plymouth.conf +IFS='' read -r -d '' config_plymouth_sddm <<"EOF" +[Unit] +Conflicts=plymouth-quit.service +After=plymouth-quit.service rc-local.service plymouth-start.service systemd-user-sessions.service +OnFailure=plymouth-quit.service + +[Service] +ExecStartPost=-/usr/bin/sleep 30 +ExecStartPost=-/usr/bin/plymouth quit --retain-splash +EOF + +## /etc/udev/hwdb.d/10-keyboard.hwdb +IFS='' read -r -d '' config_midgaard_keyboard <<"EOF" +evdev:input:b0003v05AFp8277* # was tested on Kensington Slim Type USB (with old ABI) + KEYBOARD_KEY_38=leftmeta + KEYBOARD_KEY_db=leftalt + +evdev:atkbd:dmi:* # built-in keyboard: match all AT keyboards for now + KEYBOARD_KEY_38=leftmeta + KEYBOARD_KEY_db=leftalt +EOF + +## /etc/udev/hwdb.d/71-mouse.hwdb +IFS='' read -r -d '' config_midgaard_mouse <<"EOF" +mouse:usb:v046dpc547:name:Logitech USB Receiver: + MOUSE_DPI=1000@1000 +EOF + +## /etc/udev/hwdb.d/99-G915TKL.hwdb +IFS='' read -r -d '' config_midgaard_g915tkl <<"EOF" +# This file goes in /etc/udev/hwdb.d/ +# Afterwards, run: systemd-hwdb update + +# cat /sys/class/input/event4/device/modalias +# input:b0003v046DpC343e0111-e0,1,4,11,14,k74,75,77,7A,7B,7C,7D,7E,7F,B7,B8,B9,BA,BB,BC,BD,BE,BF,C0,C1,C2,ram4,l0,1,2,3,4,sfw +# +evdev:input:b0003v046DpC343* + KEYBOARD_KEY_700e2=leftmeta + KEYBOARD_KEY_700e3=leftalt + #KEYBOARD_KEY_38=leftmeta + #KEYBOARD_KEY_db=leftalt + +evdev:input:b0003v046DpC547* + KEYBOARD_KEY_700e2=leftmeta + KEYBOARD_KEY_700e3=leftalt + #KEYBOARD_KEY_38=leftmeta + #KEYBOARD_KEY_db=leftalt +EOF + +## /etc/udev/hwdb.d/10-lenovokeyboard.hwdb +IFS='' read -r -d '' config_loki_keyboard <<"EOF" +# Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab83 +# +#evdev:input:b0011v0001p0001* +# KEYBOARD_KEY_70038=125 +# KEYBOARD_KEY_70075=56 +# +# This file goes in /etc/udev/hwdb.d/ +# Afterwards, run: systemd-hwdb update + +evdev:atkbd:dmi:bvnLENOVO:* + KEYBOARD_KEY_38=leftmeta + KEYBOARD_KEY_db=leftalt +EOF + +## /var/lib/sddm/.config/kwinoutputconfig.json +IFS='' read -r -d '' config_loki_sddmoutput <<"EOF" +[ + { + "data": [ + { + "autoRotation": "InTabletMode", + "brightness": 1, + "colorProfileSource": "sRGB", + "connectorName": "eDP-1", + "edidHash": "3e5ee1a686128c7d1f475a01fe8cf600", + "edidIdentifier": "CMN 5122 0 52 2018 0", + "highDynamicRange": false, + "iccProfilePath": "", + "mode": { + "height": 1080, + "refreshRate": 60008, + "width": 1920 + }, + "overscan": 0, + "rgbRange": "Automatic", + "scale": 1.25, + "sdrBrightness": 200, + "sdrGamutWideness": 0, + "transform": "Normal", + "vrrPolicy": "Automatic", + "wideColorGamut": false + }, + { + "autoRotation": "InTabletMode", + "brightness": 1, + "colorProfileSource": "sRGB", + "connectorName": "DP-2", + "edidHash": "d5860185c4e0676def22dacc95ceda77", + "edidIdentifier": "VSC 56878 16843009 25 2019 0", + "highDynamicRange": false, + "iccProfilePath": "", + "mode": { + "height": 1080, + "refreshRate": 60000, + "width": 1920 + }, + "overscan": 0, + "rgbRange": "Automatic", + "scale": 1, + "sdrBrightness": 200, + "sdrGamutWideness": 0, + "transform": "Normal", + "vrrPolicy": "Automatic", + "wideColorGamut": false + } + ], + "name": "outputs" + }, + { + "data": [ + { + "lidClosed": false, + "outputs": [ + { + "enabled": true, + "outputIndex": 0, + "position": { + "x": 221, + "y": 1080 + }, + "priority": 0 + }, + { + "enabled": true, + "outputIndex": 1, + "position": { + "x": 0, + "y": 0 + }, + "priority": 1 + } + ] + } + ], + "name": "setups" + } +] +EOF + +## /var/lib/sddm/.config/kwinoutputconfig.json +IFS='' read -r -d '' config_samba <<"EOF" +[global] + workgroup = HOME + dns proxy = no + log file = /var/log/samba/%m.log + max log size = 1000 + client min protocol = SMB2 + server min protocol = SMB2 + server role = standalone server + passdb backend = tdbsam + obey pam restrictions = yes + unix password sync = yes + passwd program = /usr/bin/passwd %u + passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* + pam password change = yes + map to guest = Bad Password + usershare allow guests = yes + name resolve order = lmhosts bcast host wins + security = user + guest account = nobody + usershare path = /var/lib/samba/usershares + usershare max shares = 100 + usershare owner only = yes + force create mode = 0070 + force directory mode = 0070 + +[homes] + comment = Home Directories + browseable = no + read only = yes + create mask = 0700 + directory mask = 0700 + valid users = %S + +[printers] + comment = All Printers + browseable = no + path = /var/spool/samba + printable = yes + guest ok = no + read only = yes + create mask = 0700 + +[print$] + comment = Printer Drivers + path = /var/lib/samba/printers + browseable = yes + read only = yes + guest ok = no +EOF + +## /etc/systemd/zram-generator.conf +IFS='' read -r -d '' config_midgaard_zram <<"EOF" +# This config file enables a /dev/zram0 device with the default settings: +# — size — 4GB +# — compression — most likely lzo-rle +# +# To disable, uninstall zram-generator-defaults or create empty +# /etc/systemd/zram-generator.conf file. +[zram0] +zram-size = 4096 +EOF + +## /etc/systemd/zram-generator.conf +IFS='' read -r -d '' config_loki_zram <<"EOF" +# This config file enables a /dev/zram0 device with the default settings: +# — size — 2GB +# — compression — most likely lzo-rle +# +# To disable, uninstall zram-generator-defaults or create empty +# /etc/systemd/zram-generator.conf file. +[zram0] +zram-size = 2048 +EOF + +## /etc/systemd/system/hibernate-preparation.service +IFS='' read -r -d '' service_hibernate_preparation <<"EOF" +[Unit] +Description=Enable swap file and disable zram before hibernate +Before=systemd-hibernate.service + +[Service] +User=root +Type=oneshot +ExecStart=/bin/bash -c "/usr/sbin/swapon /swap/hibernate.swp && /usr/sbin/swapoff /dev/zram0" + +[Install] +WantedBy=systemd-hibernate.service +EOF + +## /etc/systemd/system/hibernate-resume.service +IFS='' read -r -d '' service_hibernate_resume <<"EOF" +[Unit] +Description=Disable swap after resuming from hibernation +After=hibernate.target + +[Service] +User=root +Type=oneshot +ExecStart=/usr/sbin/swapoff /swap/hibernate.swp + +[Install] +WantedBy=hibernate.target +EOF + +## /etc/systemd/system/systemd-logind.service.d/override.conf +IFS='' read -r -d '' override_logind <<"EOF" +[Service] +Environment=SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1 +EOF + +## /etc/systemd/system/systemd-hibernate.service.d/override.conf +IFS='' read -r -d '' override_hibernate <<"EOF" +[Service] +Environment=SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1 +EOF + + +######################################################################################### +### PREP Installation ################################################################### +######################################################################################### + +_IsoConfig() { + local -r install_mode="$1" + if [[ "$install_mode" = "online" ]]; then + touch /tmp/installmode-online + fi + + sed -i /etc/calamares/modules/partition.conf -E \ + -e 's|^defaultFileSystemType:.*|defaultFileSystemType: "btrfs"|' \ + -e 's|^(availableFileSystemTypes:.*)"ext4","btrfs"|\1"btrfs","ext4"|' \ + -e 's|^luksGeneration:.*|luksGeneration: luks2|' + sed -i /etc/calamares/modules/partition.conf -E \ + -e '/^efi:$/,/^$/ { r /dev/stdin' -e';d};' <> /etc/calamares/modules/packagechooser.conf + #sed -i \ + # -e 's/defaultFileSystemType:.*/defaultFileSystemType: "btrfs"/g' \ + # -e 's/filesystem: "unknown"/filesystem: "btrfs"/g' \ + # /etc/calamares/modules/partition.conf + #sed -i -e 's/filesystem: "unknown"/filesystem: "btrfs"/g' + #sed -i -e '/^btrfsSubvolumes:$/,/^$/ { r /dev/stdin' -e';d};' /etc/calamares/modules/mount.conf </dev/null + return $? +} + +_getPackages() { + local pkg + local pkgs + local -ra checks=("$@") + + for pkg in "${checks[@]}"; do + if _checkPkg "$pkg"; then + pkgs+=" $pkg" + fi + done + trim "$pkgs" +} + +_PostInstallCommands() { + local -r username="$1" + local packages + local hostname + local rootUUID + local resumeOffset + + hostname=$(< /etc/hostname) + + pacman -Sy + + #echo "USER_COMMANDS: Installing desired packages" + #pacman -S --noconfirm --needed flatpak htop btop ncdu pwgen paru zsh fish tmux yadm\ + # vim neovim neovim-qt thunderbird \ + # ttf-roboto-mono-nerd ttf-hack-nerd ttf-ubuntu-nerd ttf-ubuntu-mono-nerd ttf-terminus-nerd \ + # ttf-sourcecodepro-nerd ttf-nerd-fonts-symbols noto-fonts noto-fonts-emoji noto-fonts-extra \ + # ttf-noto-nerd \ + # steam steam-native-runtime lutris vkd3d wine wine-gecko wine-mono winetricks lib32-sdl12-compat \ + # bitwarden bitwarden-cli nextcloud-client yakuake \ + # devtools + + #vscode-css-languageserver vscode-html-language-server vscode-json-language-server vscode-markdown-language-server + + ### 3rd-Party Repository Configuration ############################################## + echo "USER_COMMANDS: Installing Chaotic-AUR and AURTO Repositories" + pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com + pacman-key --lsign-key 3056513887B78AEB + pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst' + #echo -e "\n[aur]\nSigLevel = PackageOptional DatabaseOptional\nServer = file:///var/lib/repo/aur" >> /etc/pacman.conf + #echo -e "\n[aurto]\nSigLevel = Never\nServer = http://abs.home.ld/" >> /etc/pacman.conf + + ### Host-Specific Packager Configuration: midgaard ################################## + if [[ "$hostname" == "midgaard" ]]; then + mkdir -p /var/lib/repo/aur + chown "${username}": /var/lib/repo/aur + sed -i /etc/pacman.conf \ + -e "/#CacheDir/a CacheDir = /var/lib/repo/aur" \ + -e '$a\\n[aur]\nSigLevel = PackageOptional DatabaseOptional\nServer = file:///var/lib/repo/aur' + sed -i /etc/paru.conf \ + -e 's|#LocalRepo|LocalRepo|' \ + -e 's|#Chroot|Chroot|' + + sudo -u "$username" paru -Ld + ### Host-Specific Packager Configuration: loki ###################################### + else + sed -i /etc/pacman.conf \ + -e '$a\\n[aur]\nSigLevel = PackageOptional DatabaseOptional\nServer = http://midgaard.home.ld/aur' + fi + + echo -e "\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist" >> /etc/pacman.conf + + pacman -Sy + + ### Chaotic-AUR Packages ############################################################ + echo "USER_COMMANDS: Installing Chaotic-AUR Packages" + packages="$(_getPackages "${chaotic_pkgs[@]}")" + if [[ -n "$packages" ]]; then + pacman -S --noconfirm --needed "$packages" + fi + + ### AurTO Packages ################################################################## + # autro dependent packages: + #pacman -S --noconfirm --needed tmuxinator sublime-merge + + ### Custom Host Packages ############################################################ + echo "USER_COMMANDS: Installing Packages for $hostname" + packages="" + case "$hostname" in + loki) packages="$(_getPackages "${loki_pkgs[@]}")";; + mideavour) packages="$(_getPackages "${test_pkgs[@]}")";; + esac + if [[ -n "$packages" ]]; then + pacman -S --noconfirm --needed "$packages" + fi + + ### Hypervisor Tuning ############################################################### + if dmesg | grep "Hypervisor detected"; then + packages="" + if dmesg | grep "Hypervisor detected: KVM"; then + echo "USER_COMMANDS: Installing virtual machine guest tools for KVM" + #pacman -S --noconfirm --needed spice-vdagent qemu-guest-agent xf86-video-qxl + packages="$(_getPackages "${hypervisor_pkgs[@]}")" + fi + if [[ -n "$packages" ]]; then + pacman -S --noconfirm --needed "$packages" + fi + fi + + ### Grub Tuning ##################################################################### + echo "USER_COMMANDS: Adding Grub Boot Parameters" + sed -i /etc/default/grub -E \ + -e "s|(GRUB_CMDLINE_LINUX_DEFAULT=)'(.*)'|\1'quiet splash \2 ${kernel_cmdline["$hostname"]} ${kernel_cmdline["all"]}'|" + if [[ -f "/boot/grub/grub.cfg" ]]; then + grub-mkconfig -o /boot/grub/grub.cfg + fi + + ### Fstab Fixes ##################################################################### + echo "USER_COMMANDS: Moving /boot/efi mount after /boot" + sed -i /etc/fstab \ + -e "/^UUID=.*efi /{h;d;};/^UUID.*boot .*/G" + + ### BtrFS Snapshots ################################################################# + echo "USER_COMMANDS: Installing snapper support" + #umount /.snapshots && rmdir /.snapshots + mkdir -p /boot/grub + #pacman -S --noconfirm --needed snapper-support btrfsmaintenance btrfs-assistant btrbk snapper-rollback + pacman -S --noconfirm --needed snapper grub-btrfs snap-pac + + echo "USER_COMMANDS: Creating snapper config" + umount /.snapshots && rmdir /.snapshots + snapper --no-dbus create-config --template default / + if [[ -d "/.snapshots" ]]; then + echo "USER_COMMANDS: found .snapshots, removing" + btrfs sub delete /.snapshots + fi + mkdir /.snapshots && mount /.snapshots + + echo "USER_COMMANDS: Tuning snapper config" + snapper --no-dbus -c root set-config \ + ALLOW_USERS="$username" \ + SYNC_ACL="yes" \ + NUMBER_MIN_AGE="3600" \ + NUMBER_LIMIT="20" \ + TIMELINE_CREATE="no" \ + TIMELINE_MIN_AGE="3600" \ + TIMELINE_LIMIT_HOURLY="0" \ + TIMELINE_LIMIT_DAILY="7" \ + TIMELINE_LIMIT_WEEKLY="2" \ + TIMELINE_LIMIT_MONTHLY="1" \ + TIMELINE_LIMIT_YEARLY="0" \ + EMPTY_PRE_POST_MIN_AGE="1800" + + #if [[ -d "/.snapshots" ]]; then + # echo "USER_COMMANDS: found .snapshots, removing" + # btrfs sub delete /.snapshots + #fi + #mkdir /.snapshots && mount /.snapshots + + ### Enabling Flathub for Flatpak #################################################### + echo "USER_COMMANDS: Adding Flathub to Flatpak" + flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo + + ### Configuring SDDM and Plymouth ################################################### + echo "USER_COMMANDS: Setting up sddm for Wayland" + if [[ -d "/etc/sddm.conf.d" ]]; then + cat <<< "$config_sddm_wayland" > /etc/sddm.conf.d/10-wayland.conf + fi + + mkdir -p /etc/dracut.conf.d /etc/systemd/display-manager.service.d + cat <<< "$config_dracut_plymouth" > /etc/dracut.conf.d/plymouth.conf + #cat <<< "$config_plymouth_sddm" > /etc/systemd/system/display-manager.service.d/plymouth.conf + + if [[ -d "/swap" ]]; then + chattr +C /swap + fi + + ### Host-Specific Customizations: midgaard ########################################## + if [[ "$hostname" == "midgaard" ]]; then + echo "USER_COMMANDS: Applying customizations to $hostname" + cat <<< "$config_midgaard_keyboard" > /etc/udev/hwdb.d/10-keyboard.hwdb + cat <<< "$config_midgaard_mouse" > /etc/udev/hwdb.d/71-mouse.hwdb + cat <<< "$config_midgaard_g915tkl" > /etc/udev/hwdb.d/99-G915TKL.hwdb + systemd-hwdb update + + cat <<< "$config_midgaard_zram" > /etc/systemd/zram-generator.conf + + ### Host-Specific Customizations: loki ############################################## + elif [[ "$hostname" == "loki" ]]; then + echo "USER_COMMANDS: Applying customizations to $hostname" + cat <<< "$config_loki_keyboard" > /etc/udev/hwdb.d/10-lenovokeyboard.hwdb + systemd-hwdb update + + cat <<< "$config_dracut_bluetooth" > /etc/dracut.conf.d/bluetooth.conf + cat <<< "$config_loki_zram" > /etc/systemd/zram-generator.conf + + if [[ -d "/swap" ]]; then + echo "USER_COMMANDS: Enabling swap file for $hostname" + btrfs filesystem mkswapfile --size 10g --uuid clear /swap/hibernate.swp + fi + + if [[ -f "/usr/share/maliit/keyboard2/devices/default.json" ]]; then + echo "USER_COMMANDS: Applying Maliit Configuration for loki" + sed -i /usr/share/maliit/keyboard2/devices/default.json -E \ + -e 's|("keyboardHeightPortrait":) 0\.[0-9]*([,]?.*)|\1 0.15\2|' \ + -e 's|("keyboardHeightLandscape":) 0\.[0-9]*([,]?.*)|\1 0.25\2|' + sed -i /usr/share/maliit/keyboard2/devices/tablet.json -E \ + -e 's|("keyboardHeightPortrait":) 0\.[0-9]*([,]?.*)|\1 0.15\2|' \ + -e 's|("keyboardHeightLandscape":) 0\.[0-9]*([,]?.*)|\1 0.25\2|' + fi + + if [[ -d "/var/lib/sddm" ]]; then + echo "USER_COMMANDS: Applying SDDM Screen Configuration for loki" + if [[ ! -d "/var/lib/sddm/.config" ]]; then + mkdir -p "/var/lib/sddm/.config" + chown sddm:sddm "/var/lib/sddm/.config" + fi + cat <<< "$config_loki_sddmoutput" > /var/lib/sddm/.config/kwinoutputconfig.json + chown sddm:sddm /var/lib/sddm/.config/kwinoutputconfig.json + fi + elif [[ "$hostname" == "mideavour" ]]; then + echo "USER_COMMANDS: Applying customizations to $hostname" + + if [[ -d "/swap" ]]; then + echo "USER_COMMANDS: Enabling swap file for $hostname" + btrfs filesystem mkswapfile --size 4g --uuid clear /swap/hibernate.swp + fi + fi + + if [[ -f "/swap/hibernate.swp" ]]; then + echo "USER_COMMANDS: Enabling Hibernation Support" + rootUUID=$(findmnt -no UUID -T /swap/hibernate.swp) + resumeOffset=$(btrfs inspect-internal map-swapfile -r /swap/hibernate.swp) + + cat <<< "$config_dracut_hibernate" > /etc/dracut.conf.d/hibernate.conf + + sed -i /etc/default/grub -E \ + -e "s|(GRUB_CMDLINE_LINUX_DEFAULT=)'(.*) (mitigations=.*')|\1'\2 resume=UUID=$rootUUID resume_offset=$resumeOffset \3|" + if [[ -f "/boot/grub/grub.cfg" ]]; then + grub-mkconfig -o /boot/grub/grub.cfg + fi + + cat <<< "$service_hibernate_preparation" > /etc/systemd/system/hibernate-preparation.service + cat <<< "$service_hibernate_resume" > /etc/systemd/system/hibernate-resume.service + + mkdir -p /etc/systemd/system/systemd-logind.service.d \ + /etc/systemd/system/systemd-hibernate.service.d + cat <<< "$override_logind" > /etc/systemd/system/systemd-logind.service.d/override.conf + cat <<< "$override_hibernate" > /etc/systemd/system/systemd-hibernate.service.d/override.conf + + systemctl enable hibernate-preparation.service hibernate-resume.service + fi + + ### Enable Samba Usershares ######################################################### + echo "USER_COMMANDS: Configuring Samba with usershares" + mkdir -p /var/lib/samba/usershares + groupadd -r sambashare + chown root:sambashare /var/lib/samba/usershares + chmod 1770 /var/lib/samba/usershares + gpasswd sambashare -a "$username" + cat <<< "$config_samba" > /etc/samba/smb.conf + + ### BtrFS Snapshots ################################################################# + echo "USER_COMMANDS: Setting up snapper-create startup unit" + if [[ ! -d "/usr/local/sbin" ]]; then + echo "USER_COMMANDS: Creating /usr/local/sbin" + mkdir -p /usr/local/sbin + fi + + ### EOS-YAD Configs ################################################################# + echo "USER_COMMANDS: Configuring EOS YAD Settings" + sed -i /etc/eos-script-lib-yad.conf \ + -e 's/^# EOS_YAD_TERMINAL="terminator"$/EOS_YAD_TERMINAL="konsole"/' \ + -e 's/^EOS_AUR_HELPER="yay"$/EOS_AUR_HELPER="paru"/' + + ### Services Enable ################################################################# + echo "USER_COMMANDS: Enabling services (sshd)" + systemctl daemon-reload + systemctl enable sshd.service + + ### 1st Run Script (Deprecated) ##################################################### + #echo "USER_COMMANDS: Generating 1strun Script and Service (1strun)" + #cat <<< "$script_1strun" > /usr/local/sbin/1strun.sh + #chmod a+x /usr/local/sbin/1strun.sh + #cat <<< "$service_1strun" > /etc/systemd/system/1strun.service + # + #echo "USER_COMMANDS: Enabling services (1strun)" + #systemctl enable 1strun.service +} + + +######################################################################################### +### SETUP Links and Package List ######################################################## +######################################################################################### + +_SetupScript() { + local pkg + local first_pkg=true + + echo "Deploying Installation Hooks" + pushd "$HOME" &>/dev/null || exit 1 + rm -f user-commands-before.bash + ln -s user_commands.bash user-commands-before.bash + for pkg in "${install_pkgs[@]}"; do + if $first_pkg; then + echo "$pkg" > "$HOME"/user_pkglist.txt + first_pkg=false + else + echo "$pkg" >> "$HOME"/user_pkglist.txt + fi + done + popd &>/dev/null || exit 1 +} + +######################################################################################### + +case "$1" in + --iso-conf* | community) ;; # no more supported here + setup) _SetupScript ;; + online | offline) _IsoConfig $2 ;; + *) _PostInstallCommands "$1" ;; +esac