# fedora-hyperreal.ks # # Description: # - hyperreal's customized FedoraRemix Xfce kickstart # # Maintainer # - Jeffrey Serio # Installation Methods and Sources url --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch # Storage and Partitioning zerombr network --bootproto=dhcp --device=link --activate --hostname=moonshadow ignoredisk --only-use=nvme0n1 clearpart --drives=nvme0n1 --all autopart --type=btrfs --encrypted --noswap bootloader --timeout=5 # Network Configuration firewall --enabled --service=mdns # Console and Environment graphical keyboard --vckeymap=us --xlayouts='us' lang en_US.UTF-8 services --enabled=sshd,NetworkManager,chronyd,bluetooth timezone America/Chicago xconfig --startxonboot # Installation Environment graphical # After the installation firstboot --reconfig %packages # fedora-disk-base kernel kernel-modules kernel-modules-extra -kernel-lpae dracut-config-generic -dracut-config-rescue aajohan-comfortaa-fonts glibc-all-langpacks # fedora-xfce-common fedora-release-xfce @^xfce-desktop-environment @xfce-apps @xfce-extra-plugins @xfce-media @xfce-office wget system-config-printer -autofs -acpid -gimp-help -desktop-backgrounds-basic -aspell-* -xfce4-sensors-plugin -xfce4-eyes-plugin xfce4-cpugraph-plugin xfce4-docklike-plugin xfce4-genmon-plugin xfce4-clipman-plugin xfce4-weather-plugin # Fedora repo packages ImageMagick ShellCheck autossh bat btrbk cmake dnf-utils emacs exa fd-find flatpak fzf golang golang-x-tools-gopls golang-x-tools-guru googler google-rubik-fonts gstreamer1-plugin-openh264 gstreamer1-libav gstreamer1-plugins-bad-free gstreamer1-plugins-bad-free-extras gstreamer1-plugins-bad-freeworld gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-good-extras gstreamer1-plugins-good-gtk gstreamer1-plugins-good-qt gstreamer1-plugins-good-qt6 httpie hugo inxi just lagrange libtool marked mediawriter mpv neofetch nmap nodejs nodejs-npm openssl-devel papirus-icon-theme pass podman-compose prettyping python3-devel python3-pip ripgrep rofi rofimoji shfmt snapper trash-cli vlc w3m wireguard-tools wireshark youtube-dl zsh '@c-development' '@development-tools' '@container-management' %end %post --log=/root/hyperreal-ks-post.log # Configure DNF plugins printf "fastestmirror=True\ndeltarpm=True\nmax_parallel_downloads=10\n" | tee -a /etc/dnf/dnf.conf # Configure sudo for user echo "jas ALL=(ALL) NOPASSWD: ALL" | tee /etc/sudoers.d/jas # Add COPR repos dnf copr enable -y atim/starship dnf copr enable -y varlad/zellij dnf copr enable -y hyperreal/better_fonts # Install COPR packages dnf install -y starship zellij fontconfig-enhanced-defaults fontconfig-font-replacements # Add Charm repo cat < /etc/yum.repos.d/charm.repo [charm] name=Charm baseurl=https://repo.charm.sh/yum/ enabled=1 gpgcheck=1 gpgkey=https://repo.charm.sh/yum/gpg.key EOF # Install Charm packages dnf install -y charm glow gum skate wishlist # Setup rpmfusion repos dnf install -y \ https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \ https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm sys_vendor=$(cat /sys/devices/virtual/dmi/id/sys_vendor) # Install System76 hardware and firmware packages and enable services if [ "$sys_vendor" = "System76" ]; then dnf copr enable -y szydell/system76 dnf install -y system76-acpi-dkms system76-dkms system76-driver system76-firmware system76-io-dkms system76-power firmware-manager systemctl enable system76-firmware-daemon.service com.system76.PowerDaemon.service fi # Set vim as the default editor dnf install -y --allowerasing vim-default-editor # Install ffmpeg-libs and megasync dnf install -y --allowerasing ffmpeg-libs megasync # Configure btrbk cat < /etc/btrbk/btrbk.conf transaction_log /var/log/btrbk.log snapshot_preserve_min latest target_preserve 24h 7d 1m 1y target_preserve_min 7d ssh_user btrbk ssh_identity /etc/btrbk/ssh/id_ed25519 backend btrfs-progs-sudo snapshot_dir /btrbk_snapshots target ssh://10.0.0.158/srv/storage/$(hostname) subvolume / subvolume /home snapshot_create ondemand EOF touch /var/log/btrbk.log mkdir /btrbk_snapshots # Setup btrbk systemd services cat < /etc/systemd/system/btrbk.service [Unit] Description=Daily btrbk backup creation [Service] Type=simple ExecStart=/usr/bin/btrbk -q -c /etc/btrbk/btrbk.conf run EOF cat < /etc/systemd/system/btrbk.timer [Unit] Description=Daily btrbk backup creation [Timer] OnCalendar=*-*-* 00:15:00 Persistent=true [Install] WantedBy=timers.target EOF # Install Mullvad VPN curl -sSL https://mullvad.net/en/download/app/rpm/latest -o /tmp/mullvad.rpm dnf install -y /tmp/mullvad.rpm # Configure xdg-user-dirs cat < /etc/xdg/user-dirs.defaults # Default settings for user directories # # The values are relative pathnames from the home directory and # will be translated on a per-path-element basis into the users locale DESKTOP=desktop DOWNLOAD=downloads TEMPLATES= PUBLICSHARE=sync DOCUMENTS=sync/documents MUSIC= PICTURES=sync/pictures VIDEOS= EOF # Setup snapper services systemctl enable snapper-cleanup.timer systemctl enable snapper-timeline.timer # Copy home directory to new system # Requires home directory contents to be on same disk as kickstart under # /staging-$(hostname) mount /dev/disk/by-label/KS /mnt rsync -aAX /mnt/staging-"$(hostname)"/ /home/jas chown -R jas:jas /home/jas umount /mnt # Restore SELinux contexts for /home restorecon -R /home # Set user shell to zsh usermod -s /usr/bin/zsh jas %end