Skip to content

Instantly share code, notes, and snippets.

@planetis-m
Last active October 18, 2025 09:14
Show Gist options
  • Save planetis-m/10e8214975be7f3be6a67ca45ac7346d to your computer and use it in GitHub Desktop.
Save planetis-m/10e8214975be7f3be6a67ca45ac7346d to your computer and use it in GitHub Desktop.
New Fedora Workspace Installation Guide

New Fedora Workstation Installation Guide

Author: planetis-m

Download and Boot Fedora ISO

  1. Download the latest Fedora Workstation ISO from Fedora Downloads.
  2. Burn the ISO to a USB drive using Fedora Media Writer or Rufus.
  3. Boot from the USB drive and start the live installation.

Installation (Manual Partitioning)

Reference: Fedora 42 Manual Partition Guide

Partition scheme (GPT):

  • /boot/efi – 512M (EFI System Partition)
  • /boot – 1G (EXT4)
  • /var – 10G (XFS)
  • / (root) – 15G (XFS)
  • /home – Remaining space (XFS)

Install Chromium

sudo dnf update --refresh
sudo dnf install chromium

cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications/
nano ~/.local/share/applications/chromium-browser.desktop

In the opened file, find each Exec= line and append the following flags:

--password-store=gnome-libsecret --disable-pinch

Extensions:

Install GNOME Extensions

sudo dnf install gnome-extensions-app

Remove Unneeded Packages

Remove LibreOffice and other preinstalled apps you don’t use:

sudo dnf remove \
  libreoffice* \
  gnome-boxes \
  evince \
  evince-libs \
  btrfs-progs \
  hplip \
  hplip-common \
  ibus \
  mediawriter \
  qt5-qtbase \
  anaconda \
  anaconda-live \
  anaconda-install-env-deps \
  sos \
  virtualbox-guest-additions \
  gnome-tour \
  gnome-initial-setup \
  dracut-live \
  simple-scan \
  sane-backends \
  qemu-guest-agent \
  cups-client \
  gnome-disk-utility \
  gnome-abrt

Optional: Qt6 Look & Feel

Reference: Arch Wiki

sudo dnf install kvantum
kvantummanager

Select theme → KvLibadwaita

Install Utilities

# PDF and torrent clients
sudo dnf install papers fragments showtime --setopt=install_weak_deps=False

# Gaming support
sudo dnf copr enable jc141/DwarFS
sudo dnf install dwarfs

Ad Blocking (hosts file)

wget https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling/hosts -O hosts.txt
sudo mv -Z hosts.txt /etc/hosts

Development Setup

Toolbox and Container

Docs: containertoolbx.org

Containerfile (custom Fedora Toolbox with Nim + ESP-IDF + Qwen):

FROM registry.fedoraproject.org/fedora-toolbox:42

# Base tools and compilers
RUN dnf -y upgrade --refresh && \
    dnf -y --setopt=install_weak_deps=False install \
      git-credential-libsecret nano gdb gcc clang llvm git curl wget ca-certificates \
      alsa-lib-devel mesa-libGL-devel libxkbcommon-devel wayland-devel libatomic \
      flex bison gperf python3 python3-pip cmake ninja-build ccache \
      dfu-util unzip xz tar nodejs nodejs-full-i18n npm uv libasan libubsan libtsan valgrind valgrind-devel libusb1 && \
    dnf -y copr enable planetis/nim && \
    dnf -y install nim-devel && \
    dnf clean all

Build and create the toolbox:

podman system prune -a --force
podman build --pull --squash -t localhost/toolbox-nim:v5.5 .
toolbox create -c nim-dev -i localhost/toolbox-nim:v5.5
toolbox enter nim-dev

Syntax Highlighting (Nim)

# For Native GNOME Builder
mkdir -p ~/.local/share/gtksourceview-5/language-specs/
wget https://github.com/dom96/Aporia/raw/refs/heads/master/share/gtksourceview-2.0/language-specs/nim.lang -O nim.lang
mv nim.lang ~/.local/share/gtksourceview-5/language-specs/
# For Flatpak GNOME Builder
mkdir -p ~/.var/app/org.gnome.Builder/data/gtksourceview-5/language-specs/
ln -s ~/.local/share/gtksourceview-5/language-specs/nim.lang ~/.var/app/org.gnome.Builder/data/gtksourceview-5/language-specs/nim.lang

Git Setup

git config --global user.name "Antonis Geralis"
git config --global user.email [email protected]
git config --global init.defaultBranch master

sudo dnf install git-credential-libsecret
git config --global credential.helper libsecret

Generate token:

  • GitHub → Settings → Developer Settings → Fine-grained tokens
  • Repo access: All → Permissions: Contents (Read/Write), Workflows

Setup Coding Assistant (Qwen)

Config Files

~/.qwen/settings.json

{
  "selectedAuthType": "openai",
  "preferredEditor": "nano",
  "contextFileName": "AGENTS.md",
  "disableUpdateNag": true,
  "mcpServers": {
    "excel": { "command": "uvx", "args": ["excel-mcp-server", "stdio"] },
    "pdf-reader": { "command": "uvx", "args": ["mcp-pdf-reader", "stdio"] }
  }
}

~/.qwen/.env

OPENAI_API_KEY=<api_key>
OPENAI_BASE_URL=https://api.groq.com/openai/v1
OPENAI_MODEL=openai/gpt-oss-120b

Install Qwen Globally

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

npm install -g @qwen-code/qwen-code
qwen --version

Tutorials:

Projects and Dev Tools

cd ~/Projects

# c2nim
git clone --depth 1 https://github.com/nim-lang/c2nim
cd c2nim
nim c c2nim.nim
cp c2nim ~/.local/bin/

# atlas
git clone --depth 1 https://github.com/nim-lang/atlas
cd atlas
atlas init
atlas use sat
nim c atlas
cp atlas ~/.local/bin/

ESP-IDF SDK

cd ~/Projects
wget https://github.com/espressif/esp-idf/releases/download/v5.5/esp-idf-v5.5.zip
unzip esp-idf-v5.5.zip
cd ~/esp/esp-idf-v5.5
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh esp32s3

Update ~/.bashrc:

alias get_idf='. $HOME/Projects/esp/esp-idf-v5.5/export.sh'

Reload:

source ~/.bashrc

Access ESP32 inside container:

cat << EOF | sudo tee /etc/udev/rules.d/50-usb-serial.rules
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", OWNER="${USER}"
EOF

sudo udevadm control --reload-rules && sudo udevadm trigger

Container Management Commands

podman inspect --latest
toolbox list
podman stop <name>
toolbox rm <name>

VSCode

⚠️ Warning: Installing VS Code will override your Git credential helper configuration.

Reference: VS Code Linux Setup Guide

systemctl --user enable --now podman.socket

After installation, open VS Code and install the Dev Containers extension.

Settings

Make sure the following are configured:

  • podman-compose
  • podman
  • /var/run/podman/podman.sock

To attach to a running container:

Ctrl + Shift + P → Dev Containers: Attach to Running Container

Toolbox Integration (Flatpak Version)

For Toolbox support, use the Flatpak version of VS Code:

cd ~/.vscode
git clone https://github.com/owtaylor/toolbox-vscode.git
cd toolbox-vscode
ln -s "$PWD/code.sh" ~/.local/bin/code

Quality of Life Tweaks

Flatpak Maintenance

sudo flatpak uninstall --unused -y

RPM Fusion Non-Free

sudo dnf install \
  https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

sudo dnf group upgrade core

Fix Choppy Video Playback

sudo dnf install libavcodec-freeworld ffmpeg --allowerasing

Remove Old Kernels

rpm -q kernel-core
sudo dnf remove kernel*<version>*

Fix WiFi After Suspend (Realtek RTL8851BE)

Disable the d3cold power state for the WiFi controller:

lspci -nnk | grep -A 3 -i network  # 02:00.0 Network controller...
cat << EOF | sudo tee /etc/udev/rules.d/99-rtw89-d3cold.rules
SUBSYSTEM=="pci", KERNEL=="0000:02:00.0", ATTR{d3cold_allowed}="0"
EOF

sudo udevadm control --reload-rules && sudo udevadm trigger
cat /sys/bus/pci/devices/0000:02:00.0/d3cold_allowed  # Should output "0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment