Skip to content

Fedora

Installation

The installation is graphical. I followed the guide written at 1. Worth noting, during the graphical installation, in the storage editor, I added sandbox subvolume at /srv/sandbox.

Post Installation

sudo hostnamectl set-hostname computer
exit
sudo grub2-editenv - list
sudo grub2-editenv - unset menu_auto_hide
sudo grub2-editenv - list
sudo btrfs filesystem show /
lsblk -p /dev/vda
sudo btrfs subvolume list /
sudo dnf update
# Or, better, reboot using GUI?
sudo reboot
ls -lash ~
mv -v ~/.mozilla/ ~/.mozilla-old
btrfs subvolume create ~/.mozilla
cp -arv ~/.mozilla-old/. ~/.mozilla/
rm -rfv ~/.mozilla-old/
restorecon -vRF ~/$(ls -A)
sudo btrfs subvolume list /
sudo dnf install snapper libdnf5-plugin-actions btrfs-assistant inotify-tools git make
sudo bash -c "cat > /etc/dnf/libdnf5-plugins/actions.d/snapper.actions" <<'EOF'
# Get snapshot description
pre_transaction::::/usr/bin/sh -c echo\ "tmp.cmd=$(ps\ -o\ command\ --no-headers\ -p\ '${pid}')"

# Creates pre snapshot before the transaction and stores the snapshot number in the "tmp.snapper_pre_number"  variable.
pre_transaction::::/usr/bin/sh -c echo\ "tmp.snapper_pre_number=$(snapper\ create\ -t\ pre\ -c\ number\ -p\ -d\ '${tmp.cmd}')"

# If the variable "tmp.snapper_pre_number" exists, it creates post snapshot after the transaction and removes the variable "tmp.snapper_pre_number".
post_transaction::::/usr/bin/sh -c [\ -n\ "${tmp.snapper_pre_number}"\ ]\ &&\ snapper\ create\ -t\ post\ --pre-number\ "${tmp.snapper_pre_number}"\ -c\ number\ -d\ "${tmp.cmd}"\ ;\ echo\ tmp.snapper_pre_number\ ;\ echo\ tmp.cmd
EOF
sudo snapper -c root create-config /
sudo snapper -c home create-config /home
sudo snapper list-configs
sudo restorecon -RFv /.snapshots
sudo restorecon -RFv /home/.snapshots
ls -1dZ /.snapshots /home/.snapshots
sudo snapper -c root set-config ALLOW_USERS=$USER SYNC_ACL=yes
sudo snapper -c home set-config ALLOW_USERS=$USER SYNC_ACL=yes
sudo btrfs subvolume list /
echo 'PRUNENAMES = ".snapshots"' | sudo tee -a /etc/updatedb.conf
snapper ls                 # For root
snapper -c home ls         # For home
git clone https://github.com/Antynea/grub-btrfs /var/tmp/grub-btrfs
cd /var/tmp/grub-btrfs
sed -i.bkp \
-e '/^#GRUB_BTRFS_SNAPSHOT_KERNEL_PARAMETERS=/a \
GRUB_BTRFS_SNAPSHOT_KERNEL_PARAMETERS="rd.live.overlay.overlayfs=1"' \
-e '/^#GRUB_BTRFS_GRUB_DIRNAME=/a \
GRUB_BTRFS_GRUB_DIRNAME="/boot/grub2"' \
-e '/^#GRUB_BTRFS_MKCONFIG=/a \
GRUB_BTRFS_MKCONFIG=/usr/bin/grub2-mkconfig' \
-e '/^#GRUB_BTRFS_SCRIPT_CHECK=/a \
GRUB_BTRFS_SCRIPT_CHECK=grub2-script-check' \
config
sudo make install
sudo systemctl enable --now grub-btrfsd.service
cd ~
rm -rfv grub-btrfs

At this point, all the setup and configuration needed to enable snapshot and rollback support on the system is now complete. Snapper is ready to manage your system and home snapshots. GRUB will detect snapshots automatically, and you can restore them easily if something goes wrong. Your system is now snapshot ready. However, to enable automatic snapshotting follow further.

sudo snapper -c home set-config TIMELINE_CREATE=no
sudo systemctl enable --now snapper-timeline.timer
sudo systemctl enable --now snapper-cleanup.timer

Plug in HARDCODE and use dotfiles.

mkdir ~/.ssh
cp /run/media/user/HARDCODE/hardcode/project/dotfiles/.ssh/* ~/.ssh/
firefox -CreateProfile "profile_name"
cp /run/media/user/HARDCODE/hardcode/project/dotfiles/.local/share/applications/* ~/.local/share/applications/
# Install RPM Fusion Repos
sudo 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

# Perform System Upgrade
sudo dnf -y update

# Massive DNF5 Install (The "Clean" way)
# This swaps ffmpeg-free for ffmpeg automatically via --allowerasing
sudo dnf install -y --allowerasing @development-tools @multimedia @sound-and-video ffmpeg p7zip p7zip-plugins git git-lfs btop gnome-tweaks fastfetch
# Flathub is pre-configured as a part of the Third-Party Repositories. It shows as a button on first boot.
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

# Install Flatpak Apps
flatpak install -y flathub com.mattjakeman.ExtensionManager

# Logout or reboot.
  1. Setup the Neovim
  2. Setup the Virtualisation feature.
  3. Setup the Source feature.
  4. Setup the Sandbox feature.

Using this guide to setup backup system: 234.

Hostname is computer because this is a generic computer. By default, Fedora doesn't play nicely with timeshift because it doesn't name subvolumes the way timeshift expects (it expects @ and @home). Use btrfs-assistant instead of timeshift. Install gnome-tweaks because, by default, Fedora's GNOME doesn't enable minimise and maximise buttons in the title bar of windows. Tools like Refine and Tuner are unncessary.

Fedora seems much better than Ubuntu. The experience is more streamlined. It doesn't divert from upstream as much as Ubuntu. It provides more recent updates due its rolling updates approach that is different from Ubuntu that uses snapshots. The downside is the shorter support lifespan which is only a single year.

Virtualisation steps were inspired by 5. Steam steps by 6. NVIDIA drivers by 7.


  1. https://sysguides.com/install-fedora-42-with-snapshot-and-rollback-support 

  2. https://dev.to/alldaylinux/fedora-43-post-install-guide-10-essential-things-to-do-after-installing-2m15 

  3. https://sysguides.com/install-fedora-42-with-snapshot-and-rollback-support 

  4. https://github.com/mizifool/Fedora-43-post-installation-guide-for-Nvidia-users 

  5. https://docs.fedoraproject.org/en-US/quick-docs/virtualization-getting-started/ 

  6. https://docs.fedoraproject.org/en-US/gaming/proton/ 

  7. https://github.com/Comprehensive-Wall28/Nvidia-Fedora-Guide