Files
homelab/infrastructure/graduated/fedora/fedora.md
ducoterra 51124e42e4
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 42m54s
add qmk and fedora wake from sleep error fixes
2025-01-11 17:57:37 -05:00

14 KiB

Fedora

Framework 16 Fixes

Wake from Sleep

The keyboard/mouse can be pressed through the lid while in a backpack. Disable them to prevent wake from sleep.

/etc/udev/rules.d/69-suspend.rules

ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled"
ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled"

# https://askubuntu.com/questions/848698/wake-up-from-suspend-using-usb-device
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", RUN+="/bin/sh -c 'echo disabled > /sys$env{DEVPATH}/power/wakeup'"

Reload

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

Wrong keys pressed in the browser

Sometimes keys will stop working when using search bars or do strange things like move the page around. This seems to be caused by some "alt" keypress combination. Pressing "alt" twice fixes it.

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:

# 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:

# 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

# 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:

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:

flatpak install it.mijorus.gearlever

VSCode

Write code.

DNF

https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions

Flatpak

flatpak install com.visualstudio.code

Add to settings.json so the host shell is spawned

{
    "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:

[
    ...
    { "key": "alt+left",         "command": "workbench.action.navigateBack" },
    { "key": "alt+right",        "command": "workbench.action.navigateForward" },
    ...
]

Bitwarden

Password manager.

flatpak install com.bitwarden.desktop

MPV

Video player (like VLC but can frame-by-frame in reverse).

flatpak install io.mpv.Mpv

Nextcloud Desktop

Sync your files.

flatpak install com.nextcloud.desktopclient.nextcloud
# Autostart
ln -s ~/.local/share/applications/com.nextcloud.talk.desktop ~/.config/autostart/

Nextcloud Talk

Talk to your friends.

Download nextcloud talk from:

https://github.com/nextcloud-releases/talk-desktop/releases

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 for now so wayland screen share works.

flatpak run io.github.ungoogled_software.ungoogled_chromium \
  --app='https://discord.com/channels/@me'

Then use

qdbus org.kde.KWin /KWin queryWindowInfo

to get the StartupWMClass name.

Copy this into ~/.local/share/applications/Discord.desktop

[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

Proton Mail

Talk to your business partners?

flatpak install me.proton.Mail

Gimp

Photoshop for Linux.

flatpak install org.gimp.GIMP

Minecraft

Mine. Craft.

flatpak install com.mojang.Minecraft

Moonlight

Mine. Craft. But somewhere else.

flatpak install com.moonlight_stream.Moonlight

Steam

Play games.

flatpak install com.valvesoftware.Steam

MangoHud

https://github.com/flightlessmango/MangoHud?tab=readme-ov-file#flatpak

Pretty Numbers for your Games.

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

### 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.

flatpak install org.raspberrypi.rpi-imager

Fedora Media Writer

Flash your stick.

flatpak install org.fedoraproject.MediaWriter

Pods

Remember Docker Desktop? Pods is the new Docker Desktop.

flatpak install com.github.marhkb.Pods

systemctl --user enable --now podman.socket

Bambu Studio

Benchy benchy benchy benchy

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.)

{
    "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 to install:

https://www.freecad.org/downloads.php

Eyedropper

Pick a color, any color (from your screen).

flatpak install com.github.finefindus.eyedropper

Mingle

Create custom emojis.

flatpak install io.github.halfmexican.Mingle

Obsidian

Show your friends your massive graph

flatpak install md.obsidian.Obsidian

Dev Toolbox

Format JSON, base64 encode, and color blindness simulator.

flatpak install me.iepure.devtoolbox

Junction

Choose how to open links you click on

flatpak install re.sonny.Junction

Kdenlive

Edit videos without Adobe

flatpak install org.kde.kdenlive

The Powder Toy

I love sandboxes.

flatpak install uk.co.powdertoy.tpt

Pika

Backup with Borg.

flatpak install org.gnome.World.PikaBackup

Filezilla

Really easy ftp, ftps, sftp, etc. file transfer.

flatpak install org.filezillaproject.Filezilla

Transmission

Expand your "ISO" collection.

flatpak install com.transmissionbt.Transmission

Frog

Extract text, scan QR codes, from images.

flatpak install com.github.tenderowl.frog

CPU-X

CPU-Z but X this time

flatpak install io.github.thetumultuousunicornofdarkness.cpu-x

Ungoogled Chromium

Chrom

flatpak install io.github.ungoogled_software.ungoogled_chromium

Signal

Chat when Nextcloud Talk is down

flatpak install org.signal.Signal
# Autostart
ln -s ~/.local/share/applications/org.signal.Signal.desktop ~/.config/autostart/

Remmina

REMote desktop IN An app

flatpak install org.remmina.Remmina

Toolbox

# 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

# 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

# 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

# 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

# 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):

# 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

{
    // 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
            }
        }
    ]
}