computer, laptop, tech, blue computer, blue laptop, blue tech, computer, laptop, tech, tech, tech, tech, tech

Setting Up the Perfect Fedora Development Environment in 2026

My Mac development environment and Ubuntu development environment guides are two of the most-read posts on this blog, so it’s only fair that Fedora gets the same treatment. Fedora Workstation is a brilliant developer desktop: recent kernels, recent toolchains, GNOME without heavy customisation, and SELinux switched on from the start. This is how I’d build a Fedora development environment from a clean install today.

At the time of writing Fedora 44 is the current release and Fedora 45 is due later in October 2026. Everything below works on either, and Fedora’s in-place upgrades are reliable enough that you shouldn’t fear the six-month release cycle.

Update first, then add the essentials

Fedora uses dnf (DNF5 on current releases). Start by bringing the system fully up to date, then pull in the core tools and the C toolchain that native Node and Python modules expect.

sudo dnf upgrade --refresh
sudo dnf install git gh zsh curl wget htop make gcc gcc-c++

Enable RPM Fusion only if you need codecs or the NVIDIA driver; you don’t need it for development. For desktop apps not in the repos, Flathub is the cleanest route, and GNOME Software can enable it for you.

Git and GitHub

Configure Git once, create an SSH key and log in with the GitHub CLI. gh auth login will offer to upload the key for you.

git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main

ssh-keygen -t ed25519 -C "you@example.com"
gh auth login

Shell: zsh, kept simple

Fedora ships bash by default. I switch to zsh, but I’ve moved away from heavy frameworks; a few plugins and a fast prompt are enough. Change your login shell with chsh, then log out and back in.

chsh -s $(which zsh)
sudo dnf install zsh-autosuggestions zsh-syntax-highlighting

Source those plugins from ~/.zshrc. If you want the same shell config on every machine, read the last post in this series on how to manage your dotfiles with chezmoi.

Languages and runtimes with mise

Fedora’s packaged Node and Python are fine for system tools, but projects usually pin their own versions. I use mise, a single tool that replaces nvm, pyenv and friends and reads per-project mise.toml files.

curl -fsSL https://mise.run | sh
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
exec zsh

mise use --global node@24
mise use --global python@3

For Python packaging I use uv for virtual environments and dependencies. For PHP, Fedora’s repos are current enough for most work: sudo dnf install php-cli composer gets you a working CLI and Composer.

Containers: Podman first, Docker if you need it

This is the biggest difference from the Mac and Ubuntu guides. Fedora Workstation leans on Podman, which runs rootless containers without a daemon, and Toolbx, which gives you disposable, mutable Fedora containers for experiments. Check what’s installed with rpm -q podman toolbox. Most docker commands work with podman unchanged, and podman compose handles most Compose files.

sudo dnf install podman podman-compose toolbox
podman run --rm -it docker.io/library/alpine sh
toolbox create && toolbox enter

If your team’s tooling assumes real Docker (Laravel Sail, some devcontainer setups, CI scripts that talk to the Docker socket), install Docker Engine from Docker’s own repository rather than fighting it:

sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

Log out and back in for the group change to apply. Be aware that membership of the docker group is effectively root access, which is one reason Fedora prefers Podman.

Editor: VS Code from Microsoft’s repo

Microsoft publishes an RPM repository, so VS Code updates along with the rest of the system:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\nautorefresh=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/vscode.repo > /dev/null
sudo dnf install code

Avoid the Flatpak build of VS Code for development work. Its sandbox makes it awkward to reach your toolchains, terminals and container runtimes.

AI coding tools

Claude Code is my daily driver for AI-assisted development, and its native installer works well on Fedora. Don’t run it with sudo; it installs into your home directory and keeps itself updated.

curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude doctor

GitHub Copilot and similar extensions install straight from the VS Code marketplace as usual.

SELinux: don’t switch it off

The one Fedora-specific gotcha is SELinux. If a container can’t read a bind-mounted folder, add the :Z (private) or :z (shared) suffix to the volume so Podman or Docker relabels it, for example -v ./src:/app:Z. Disabling SELinux to make an error go away is the wrong fix.

Wrapping up

That’s a complete, modern Fedora development environment: dnf for the system, mise for language versions, Podman for containers, and VS Code plus Claude Code on top. If you prefer rolling releases, see the Arch Linux version of this guide; if you’re on Windows, the WSL2 deep-dive gets you most of the way there.


Leave a Reply