# Fedora - [Fedora](#fedora) - [Podman](#podman) - [Autostarting services with quadlets](#autostarting-services-with-quadlets) - [Network](#network) - [VLAN Setup with nmcli](#vlan-setup-with-nmcli) - [Apps](#apps) - [Gear Lever](#gear-lever) - [VSCode](#vscode) - [DNF](#dnf) - [Flatpak](#flatpak) - [Bitwarden](#bitwarden) - [MPV](#mpv) - [Nextcloud Desktop](#nextcloud-desktop) - [Nextcloud Talk](#nextcloud-talk) - [Discord](#discord) - [Proton Mail](#proton-mail) - [Gimp](#gimp) - [Minecraft](#minecraft) - [Moonlight](#moonlight) - [Steam](#steam) - [MangoHud](#mangohud) - [Raspberry Pi Imager](#raspberry-pi-imager) - [Fedora Media Writer](#fedora-media-writer) - [Pods](#pods) - [Bambu Studio](#bambu-studio) - [Freecad](#freecad) - [Eyedropper](#eyedropper) - [Mingle](#mingle) - [Obsidian](#obsidian) - [Dev Toolbox](#dev-toolbox) - [Junction](#junction) - [Kdenlive](#kdenlive) - [The Powder Toy](#the-powder-toy) - [Pika](#pika) - [Filezilla](#filezilla) - [Transmission](#transmission) - [Frog](#frog) - [CPU-X](#cpu-x) - [Ungoogled Chromium](#ungoogled-chromium) - [Signal](#signal) - [Toolbox](#toolbox) - [Reese's Arch Toolbox](#reeses-arch-toolbox) - [Using Reese's Arch Toolbox](#using-reeses-arch-toolbox) - [CPU Image](#cpu-image) - [AMD GPU Image](#amd-gpu-image) - [Updating Reese's Arch Toolbox](#updating-reeses-arch-toolbox) - [Building Reese's Arch Toolbox](#building-reeses-arch-toolbox) ## Podman Since you'll be using podman for most container-based services, you'll want to set the the podman auth file to somewhere persistent, otherwise it'll get deleted every time you reboot. Add this to your `.bashrc`: ```bash # Podman auth file export REGISTRY_AUTH_FILE=$HOME/.podman-auth.json ``` Source that and then run `podman login` to create the file. ### Autostarting services with quadlets If you want to run something as your user at boot (like a systemd process, think ollama) you can create a user quadlets like so: ```bash # Generate the .container file podman run --rm ghcr.io/containers/podlet --install --description "Local AI" \ podman run \ -d \ -v ollama:/root/.ollama \ -p 11434:11434 \ --name ollama \ --restart always \ docker.io/ollama/ollama > ~/.config/containers/systemd/ollama.container # Verify the service (Note the filename:service, this is required! You will get "Failed to prepare filename" without it) systemd-analyze verify ~/.config/containers/systemd/ollama.container:ollama.service # Start the service systemctl --user daemon-reload systemctl --user start ollama ``` ## Network ### VLAN Setup with nmcli ```bash # VLAN 2 nmcli conn export NMCLI_DEVICE=enp195s0f4u1u3 nmcli connection add type VLAN con-name $NMCLI_DEVICE.2 dev $NMCLI_DEVICE id 2 ``` ## Apps Flatpak installs are from Flathub unless otherwise noted. Add flathub with: ```bash flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo # Remove the fedora flathub flatpak remote-delete fedora ``` When prompted, prefer flathub. ### Gear Lever I would recommend you install Gear Lever to manage App Images: ```bash flatpak install it.mijorus.gearlever ``` ### VSCode Write code. #### DNF #### Flatpak ```bash flatpak install com.visualstudio.code ``` Add to settings.json so the host shell is spawned ```json { "terminal.integrated.defaultProfile.linux": "bash", "terminal.integrated.profiles.linux": { "bash": { "path": "/app/bin/host-spawn", "args": ["bash"], "icon": "terminal-bash", "overrideName": true } } } ``` Add these keyboard shortcuts to allow forward and back with alt: ```json [ ... { "key": "alt+left", "command": "workbench.action.navigateBack" }, { "key": "alt+right", "command": "workbench.action.navigateForward" }, ... ] ``` ### Bitwarden Password manager. ```bash flatpak install com.bitwarden.desktop ``` ### MPV Video player (like VLC but can frame-by-frame in reverse). ```bash flatpak install io.mpv.Mpv ``` ### Nextcloud Desktop Sync your files. ```bash flatpak install com.nextcloud.desktopclient.nextcloud ``` ```bash # Autostart ln -s ~/.local/share/applications/com.nextcloud.talk.desktop ~/.config/autostart/ ``` ### Nextcloud Talk Talk to your friends. Download nextcloud talk from: ```bash flatpak install ./Nextcloud.Talk-linux-x64.flatpak # autostart ln -s /var/lib/flatpak/exports/share/applications/com.nextcloud.talk.desktop ~/.config/autostart/ ``` ### Discord Talk to your enemies. Run discord in [ungoogled chromium](#ungoogled-chromium) for now so wayland screen share works. ```bash flatpak run io.github.ungoogled_software.ungoogled_chromium \ --app='https://discord.com/channels/@me' ``` Copy this into `~/.local/share/applications/Discord.desktop` ```conf [Desktop Entry] # Created by desktopfilecreator.com Type=Application Version=1.0 Name=Ungoogled Chromium Comment=Run discord in chromium Exec=flatpak run io.github.ungoogled_software.ungoogled_chromium --app='https://discord.com/channels/@me' Terminal=false Icon=discord StartupWMClass=Io.github.ungoogled_software.ungoogled_chromium ``` Or copy this into ### Proton Mail Talk to your business partners? ```bash flatpak install me.proton.Mail ``` ### Gimp Photoshop for Linux. ```bash flatpak install org.gimp.GIMP ``` ### Minecraft Mine. Craft. ```bash flatpak install com.mojang.Minecraft ``` ### Moonlight Mine. Craft. But somewhere else. ```bash flatpak install com.moonlight_stream.Moonlight ``` ### Steam Play games. ```bash flatpak install com.valvesoftware.Steam ``` ### MangoHud Pretty Numbers for your Games. ```bash flatpak install org.freedesktop.Platform.VulkanLayer.MangoHud flatpak override --user --env=MANGOHUD=1 com.valvesoftware.Steam # Allow flatpak apps to read Mangohud config flatpak override --user --filesystem=xdg-config/MangoHud:ro ``` Edit `~/.config/MangoHud/MangoHud.conf` ```conf ### pre defined presets # -1 = default # 0 = no display # 1 = fps only # 2 = horizontal view # 3 = extended # 4 = high detailed information preset=2 ### Enable most of the toggleable parameters (currently excludes `histogram`) # full ``` ### Raspberry Pi Imager Flash your pi. ```bash flatpak install org.raspberrypi.rpi-imager ``` ### Fedora Media Writer Flash your stick. ```bash flatpak install org.fedoraproject.MediaWriter ``` ### Pods Remember Docker Desktop? Pods is the new Docker Desktop. ```bash flatpak install com.github.marhkb.Pods systemctl --user enable --now podman.socket ``` ### Bambu Studio Benchy benchy benchy benchy ```bash flatpak install com.bambulab.BambuStudio ``` The config is located at `~/.var/app/com.bambulab.BambuStudio/config/BambuStudio/BambuStudio.conf` At the very top of the config you can add a pin for a printer permanently with: (Do this with Bambu Studio closed, it'll overwrite if it's open.) ```json { "user_access_code": { "printer serial number": "access code here" }, ... } ``` ### Freecad Benchy benchy benchy oh no, I can't do that, this is hard. Download the AppImage and use [Gear Lever](#apps) to install: ### Eyedropper Pick a color, any color (from your screen). ```bash flatpak install com.github.finefindus.eyedropper ``` ### Mingle Create custom emojis. ```bash flatpak install io.github.halfmexican.Mingle ``` ### Obsidian Show your friends your massive graph ```bash flatpak install md.obsidian.Obsidian ``` ### Dev Toolbox Format JSON, base64 encode, and color blindness simulator. ```bash flatpak install me.iepure.devtoolbox ``` ### Junction Choose how to open links you click on ```bash flatpak install re.sonny.Junction ``` ### Kdenlive Edit videos without Adobe ```bash flatpak install org.kde.kdenlive ``` ### The Powder Toy I love sandboxes. ```bash flatpak install uk.co.powdertoy.tpt ``` ### Pika Backup with Borg. ```bash flatpak install org.gnome.World.PikaBackup ``` ### Filezilla Really easy ftp, ftps, sftp, etc. file transfer. ```bash flatpak install org.filezillaproject.Filezilla ``` ### Transmission Expand your "ISO" collection. ```bash flatpak install com.transmissionbt.Transmission ``` ### Frog Extract text, scan QR codes, from images. ```bash flatpak install com.github.tenderowl.frog ``` ### CPU-X CPU-Z but X this time ```bash flatpak install io.github.thetumultuousunicornofdarkness.cpu-x ``` ### Ungoogled Chromium Chrom ```bash flatpak install io.github.ungoogled_software.ungoogled_chromium ``` ### Signal Chat when Nextcloud Talk is down ```bash flatpak install org.signal.Signal ``` ```bash # Autostart ln -s ~/.local/share/applications/org.signal.Signal.desktop ~/.config/autostart/ ``` ## Toolbox ```bash # Create and use an Arch Toolbox toolbox create --distro arch toolbox enter arch-toolbox-latest ``` I'd recommend adding this alias to your `.bashrc` to make things easier ```bash # Toolbox quick enter alias tbox='SHELL=zsh toolbox enter arch-toolbox-latest' ``` ### Reese's Arch Toolbox I have a custom arch image based on the default arch-toolbox image. It offers: - zsh with many completions installed/enabled - vim - nslookup - iperf3 - kubectl - helm - nethogs - python, pip, and pipx - ansible - aws cli - podman (connected automatically to the host machine via the unix socket) - tmux - ffmpeg - wine - podman - unzip - bat - btop - jq - yq - imagemagick ### Using Reese's Arch Toolbox Copy the relevant aliases below into your `.bashrc`. Run `ntbox` the first time to create a new toolbox. Run `tbox` anytime you want to enter the toolbox. Run `rtbox` to delete the toolbox. Run `utbox` to update the toolbox image. You'll need to run `rtbox && ntbox` after to spin up the toolbox with the new image. #### CPU Image Add the following to your `.bashrc` ```bash # Reese's Toolbox Commands export TBOX_REPO='gitea.reeseapps.com/services' export TBOX_IMAGE='arch-toolbox' export TBOX_TAG='latest' export TBOX_NAME="$TBOX_IMAGE-$TBOX_TAG" # Creates a new toolbox alias ntbox="toolbox create -i $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG" # Enters the toolbox when you want to use it, you'll be running this all the time alias tbox="SHELL=/bin/zsh toolbox enter $TBOX_NAME" # Removes the toolbox alias rtbox="podman container stop $TBOX_NAME && podman container rm $TBOX_NAME" # Updates the toolbox alias utbox="podman pull $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG" ``` #### AMD GPU Image Add the following to your `.bashrc` ```bash # Reese's Toolbox Commands export TBOX_REPO='gitea.reeseapps.com/services' export TBOX_IMAGE='arch-toolbox-amdgpu' export TBOX_TAG='latest' export TBOX_NAME="$TBOX_IMAGE-$TBOX_TAG" # Creates a new toolbox alias ntbox="toolbox create -i $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG" # Enters the toolbox when you want to use it, you'll be running this all the time alias tbox="SHELL=/bin/zsh toolbox enter $TBOX_NAME" # Removes the toolbox alias rtbox="podman container stop $TBOX_NAME && podman container rm $TBOX_NAME" # Updates the toolbox alias utbox="podman pull $TBOX_REPO/$TBOX_IMAGE:$TBOX_TAG" ``` ### Updating Reese's Arch Toolbox ```bash # Stop the current arch toolbox untbox # Pull the newest image podman pull gitea.reeseapps.com/services/arch-toolbox:latest # Start with the new image toolbox create -i gitea.reeseapps.com/services/arch-toolbox:latest ``` ### Building Reese's Arch Toolbox You can build and run the image wit this (See `Containerfile` in this directory): ```bash # Build latest image podman build \ --no-cache \ -t gitea.reeseapps.com/services/arch-toolbox:latest \ -f ./infrastructure/graduated/fedora/Containerfile # Test with podman podman run -it --rm gitea.reeseapps.com/services/arch-toolbox:latest # Stop the current arch toolbox podman container stop arch-toolbox-latest # Remove the old container podman container rm arch-toolbox-latest # Start with the new image toolbox create -i gitea.reeseapps.com/services/arch-toolbox:latest SHELL=/bin/zsh toolbox enter ``` In vscode you can set this as your default build task for homelab and trigger it with `ctrl shift B` .vscode/tasks.json ```json { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "Build arch-toolbox", "type": "shell", "command": "./infrastructure/graduated/fedora/arch-build.sh", "problemMatcher": [], "group": { "kind": "build", "isDefault": true } } ] } ```