kickstart/fedora-hyperreal.ks

267 lines
5.5 KiB
Plaintext

# 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