The proverbial initial commit

This commit is contained in:
Jeffrey Serio 2023-08-26 22:32:51 -05:00
commit b888e50784
2 changed files with 288 additions and 0 deletions

22
README.org Normal file
View File

@ -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]]

266
fedora-hyperreal.ks Normal file
View File

@ -0,0 +1,266 @@
# fedora-hyperreal.ks
#
# Description:
# - hyperreal's customized FedoraRemix Xfce kickstart
#
# Maintainer
# - Jeffrey Serio <hyperreal@fedoraproject.org>
# 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 <<EOF > /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 <<EOF > /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 <<EOF > /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 <<EOF > /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 <<EOF > /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