commit b888e50784de6dab8eba0d76a8a9ae95445d93bd Author: Jeffrey Serio <23226432+hyperreal64@users.noreply.github.com> Date: Sat Aug 26 22:32:51 2023 -0500 The proverbial initial commit diff --git a/README.org b/README.org new file mode 100644 index 0000000..ebc141d --- /dev/null +++ b/README.org @@ -0,0 +1,22 @@ +#+title: hyperreal's Fedora Kickstart + +This is the kickstart file I use when (re)installing Fedora. I have two USB sticks plugged into the machine. + +- USB 0: ext4 filesystem with the label "KS"; contains only the kickstart file located at /hyperreal.ks +- USB 1: [[https://alt.fedoraproject.org/][Fedora netinstall image]] + +I boot into the Fedora netinstall image, edit the GRUB menu by pressing ~e~, and append the following to the kernel line after ~quiet~: + +#+begin_src +inst.ks=hd:LABEL=KS:/hyperreal.ks +#+end_src + +If everything is correct, the installation proceeds. The Anaconda menu shows up and prompts me to enter the encryption passphrase. I also have to connect to the Internet from the Anaconda menu. + +The kickstart file in this repository is not in any way part of or endorsed by the Fedora Project. It sets up repositories containing non-free software packages and proprietary firmware. It's not intended to be used as-is by anyone besides me. + +For more information on Fedora kickstarts, see the links below: + +- [[https://docs.fedoraproject.org/en-US/fedora/f36/install-guide/advanced/Kickstart_Installations/][Automating the Installation with Kickstart]] +- [[https://pagure.io/fedora-kickstarts]] +- [[https://docs.fedoraproject.org/en-US/fedora/f36/install-guide/appendixes/Kickstart_Syntax_Reference/#appe-kickstart-syntax-reference][Kickstart Syntax Reference]] diff --git a/fedora-hyperreal.ks b/fedora-hyperreal.ks new file mode 100644 index 0000000..f670b73 --- /dev/null +++ b/fedora-hyperreal.ks @@ -0,0 +1,266 @@ +# 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