add regular fedora notes

This commit is contained in:
2025-01-05 18:08:18 -05:00
parent 50f9dc6522
commit 463e8a7861

View File

@@ -0,0 +1,632 @@
# 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
<https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions>
#### 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:
<https://github.com/nextcloud-releases/talk-desktop/releases>
```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
<https://github.com/flightlessmango/MangoHud?tab=readme-ov-file#flatpak>
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:
<https://www.freecad.org/downloads.php>
### 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
}
}
]
}
```