# Fedora Kinoite - [Fedora Kinoite](#fedora-kinoite) - [Podman](#podman) - [Autostarting services with quadlets](#autostarting-services-with-quadlets) - [Libvirt, Qemu, KVM](#libvirt-qemu-kvm) - [Network](#network) - [VLAN Setup with nmcli](#vlan-setup-with-nmcli) - [Apps](#apps) - [Gear Lever](#gear-lever) - [VSCode](#vscode) - [rpm-ostree](#rpm-ostree) - [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 ``` ## Libvirt, Qemu, KVM ```bash rpm-ostree install virt-manager libvirt systemctl enable --now libvirtd ``` ## 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 ``` 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. #### rpm-ostree This layers vscode on the system and lets you download the latest release without waiting for flathub to update the flatpak. Offers some advantages over flatpak, like not needing to use flatseal/other to manage host permissions, but the flatpak install works just fine. 1. Download the rpm 2. sudo rpm-ostree install ./vscode-something-something.rpm 3. Reboot #### 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. ```bash flatpak install com.discordapp.Discord ``` ### Proton Mail Talk to your business partners? ```bash flatpak install me.proton.Mail ``` ```bash # Autostart ln -s ~/.local/share/applications/me.proton.Mail.desktop ~/.config/autostart/ ``` ### 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 flatpak install flathub org.freedesktop.Platform.GL.default//22.08-extra ``` ### 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 } } ] } ```