Fedora 37 post installation steps

Things I did after installing Fedora 37 on my workstation, or sort of ...

I use Fedora on my workstation to make my home and lab computers consistent with each other. This is a collection post installation steps which I had followed. If you plan to use Fedora sometime in the future and are looking for a guide, you can use this one as a reference.

Please keep in mind that the steps mentioned here work on the current release version, which is 37. Fedora has a 6 months release cycle so it's kinda difficult to write a guide for every new release. However, I've been following these steps since Fedora 33 with very minor changes so these shouldn't differ much in the future releases.

Update system

First thing to do after installing every linux distro, update your system.

sudo dnf update

Add Windows to grub for dual boot (For dual booting)

Fedora uses grub2 and it works differently than on ubuntu or other distros. You can't just run grub update and call it a day.

Run os-prober to check for other os entries.

sudo os-prober

Update grub entries

sudo grub2-mkconfig -o /etc/grub2.cfg
sudo grub2-mkconfig -o /etc/grub2-efi.cfg

Edit grub timeout

Edit /etc/default/grub and change GRUB_TIMEOUT to the desired value. The default is 5 (5 seconds). (Edit with sudo)

Mask systemd-oomd

I'll never be able to justify the existence of such an aggressive OOM strategy in an operating system. While it may have been added with with good intention (to keep your system from running out of memory for OS critical tasks), it's a nuisance in half. I'd recommend keeping it masked if you don't want your resource heavy programs to be terminated randomly.

sudo systemctl mask system-oomd

Additional software repos

rpm-fusion

There are two repos to enable. The one with free software and the other with proprietary software. If you happen to have an Nvidia GPU or some hardware part that needs proprietary driver, you'll need the second one. Why not the free Nvidia driver? Because it's bad. Real bad. Apple Maps bad. Period.

sudo dnf install 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

Setting up CUDA for Nvidia GPUs

sudo dnf install xorg-x11-drv-nvidia

Once installed, reboot and check with nvidia-smi.

Note that this does not come with cudnn or nvcc. To have those, refer to this guide on rpmfusion.

Flathub

A lot of applications are packaged as Flatpaks in Fedora. Especially if you switch to something like Fedora Silverblue or Kinoite, everything is a Flatpak. It's enabled by default in Fedora, only that you've to add Flathub as a source of Flatpak apps. (Flathub gives you access to Discord, Signal, Telegram etc.)

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

flatpak update

Make dnf faster

Unlike apt or zypper or pacman, dnf doesn't look for the fastest mirror to download packages from by deafult. You've to explicitly tell it to do so.

Add the following lines to your /etc/dnf/dnf.conf file. (Edit with sudo)

fastestmirror=True
# change this number to 5 or 10 if you don't have a very fast   
# internet connection
max_parallel_downloads=20 
defaultyes=True

Improved fonts

Fedora maintainers have a strict policy of shipping only free and open source material with the distro. For this, you may miss out on some proprietary fonts used in many websites. Luckily you can enable them with this fedora community package package or copr package.

sudo dnf install mscore-fonts-all -y

Command Line Utilities

Which ones to install? Well that's upto you. I personally prefer btop for monitoring the system and nvidia-smi to check the GPU usage over time.

sudo dnf install -y btop

To run nvidia-smi in a loop:

# refereshes every 1 second
watch -n 1.0 nvidia-smi

Or you can use nvtop

sudo dnf install -y nvtop

Default Shell

The default shell on most linux distros is bash and Fedora is no exception here. I personally prefer zsh with oh-my-zsh and spaceship-prompt. Some people like the fish shell. It's completely upto you actually. Pick the one that better suits your workflow.

Enable night light

If you've never used this thing yet on other operating systems you should now. You'll appreciate it in the long run. On Gnome : go to Settings > Displays > Night Light and set it up. On KDE, you can search for Night Light and it'll show you the appropriate setting.

Display Scaling

Fedora for somewhat reason doesn't support fractional scaling for Gnome. If you have a high resolution display, your best bet is to change the font scaling from the Tweaks app from above. Go Tweaks > Fonts > Scaling Factor and pick an appropriate value. The default is 1.00. Depending on your screen resolution, choose the one that you find most comfortable.

font-scaling.png

On KDE, you can do that from Settings > Hardware > Display Configuration > Global Scale.

Writing Bangla

Install OpenBanglaKeyboard - openbangla.github.io Don't forget to install the fonts from omicronlab.com/bangla-fonts.html !

To install fonts, you can either use Font Manager in Gnome or the System Font Settings on KDE.

Extras (advanced)

You better know what you're doing before you run anything in this section! :P

Enable SSH

sudo dnf install -y openssh-server

sudo systemctl start sshd.service

sudo systemctl enable sshd.service

SSH Security

If you're planning to expose your system to be connected from external networks via SSH, you may want to harden the security of your system. You can follow this guide from CTT.

Containers

Fedora being the upstream for RHEL, prefers that you use Podman instead of Docker. However you can install both and get your work done.

sudo dnf install -y podman

Instructions on installing docker can be found here.

NodeJS

If you need it!

sudo dnf install nodejs
node -v # shows version when installed

sudo dnf install yarnpkg
yarn -v # shows version when installed

developer.fedoraproject.org/tech/languages/..

Dropdown Terminals

Install guake(Gnome) or yakuake(KDE). The keyboard binding to enable it is F12. (Make sure you launch it first after installing.)

sudo dnf install guake
sudo dnf install yakuake

I usually run btop on yakuake, so that even if I close the Terminal app, it keeps running and I can check it anytime with a F12 press.

Acknowledgements

You can check these links for further tweak and post install instructions