Author: planetis-m
- Download the latest Fedora Workstation ISO from Fedora Downloads.
- Burn the ISO to a USB drive using Fedora Media Writer or Rufus.
- Boot from the USB drive and start the live installation.
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)
sudo dnf update --refresh
sudo dnf install chromium
cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications/
nano ~/.local/share/applications/chromium-browser.desktopIn the opened file, find each Exec= line and append the following flags:
--password-store=gnome-libsecret --disable-pinch
Extensions:
sudo dnf install gnome-extensions-appRemove 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-abrtReference: Arch Wiki
sudo dnf install kvantum
kvantummanagerSelect theme → KvLibadwaita
# 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 dwarfswget https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling/hosts -O hosts.txt
sudo mv -Z hosts.txt /etc/hostsDocs: 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 allBuild 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# 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.langgit 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 libsecretGenerate token:
- GitHub → Settings → Developer Settings → Fine-grained tokens
- Repo access: All → Permissions: Contents (Read/Write), Workflows
~/.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-120bmkdir ~/.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 --versionTutorials:
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/mkdir -p ~/Projects/esp && cd ~/Projects/esp
wget https://github.com/espressif/esp-idf/releases/download/v5.5.1/esp-idf-v5.5.1.zip
unzip esp-idf-v5.5.1.zip
cd esp-idf-v5.5.1
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh esp32s3Update ~/.bashrc:
alias get_idf='. $HOME/Projects/esp/esp-idf-v5.5/export.sh'Reload:
source ~/.bashrcRun toolbox create --verbose, extract the podman create command, and add --group-add keep-groups to preserve dialout group access for ESP32 serial devices.
podman --log-level error create \
--cgroupns host \
--dns none \
--env TOOLBOX_PATH=/usr/bin/toolbox \
--env XDG_RUNTIME_DIR=/run/user/1000 \
--hostname toolbx \
--ipc host \
--label com.github.containers.toolbox=true \
--mount type=devpts,destination=/dev/pts \
--name nim-dev \
--network host \
--no-hosts \
--pid host \
--privileged \
--security-opt label=disable \
--ulimit host \
--userns keep-id \
--group-add keep-groups \
--user root:root \
--volume /:/run/host:rslave \
--volume /dev:/dev:rslave \
--volume /run/dbus/system_bus_socket:/run/dbus/system_bus_socket \
--volume /home/${USER}:/home/${USER}:rslave \
--volume /usr/bin/toolbox:/usr/bin/toolbox:ro \
--volume /run/user/1000:/run/user/1000 \
--volume /run/avahi-daemon/socket:/run/avahi-daemon/socket \
--volume /run/.heim_org.h5l.kcm-socket:/run/.heim_org.h5l.kcm-socket \
--volume /media:/media:rslave \
--volume /mnt:/mnt:rslave \
--volume /run/pcscd/pcscd.comm:/run/pcscd/pcscd.comm \
--volume /run/media:/run/media:rslave \
--volume /etc/profile.d/toolbox.sh:/etc/profile.d/toolbox.sh:ro \
localhost/toolbox-nim:v5.5 \
toolbox --log-level debug init-container \
--gid 1000 \
--home /home/${USER} \
--shell /bin/bash \
--uid 1000 \
--user ${USER}podman inspect --latest
toolbox list
podman stop <name>
toolbox rm <name>Warning: Installing VS Code will override your Git credential helper configuration.
Reference: VS Code Linux Setup Guide
systemctl --user enable --now podman.socketAfter installation, open VS Code and install the Dev Containers extension.
Make sure the following are configured:
podman-composepodman/var/run/podman/podman.sock
To attach to a running container:
Ctrl + Shift + P → Dev Containers: Attach to Running Container
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/codesudo flatpak uninstall --unused -ysudo dnf install \
https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
sudo dnf group upgrade coresudo dnf install libavcodec-freeworld ffmpeg --allowerasingrpm -q kernel-core
sudo dnf remove kernel*<version>*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"