Files
homelab/infrastructure/graduated/fedora/fedora-kinoite.md
ducoterra 880a82f7d8
All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 16m29s
comments for arch containerfile, also add uv and ruff
2024-12-23 22:39:17 -06:00

602 lines
13 KiB
Markdown

# 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)
- [VSCode](#vscode)
- [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)
- [Raspberry Pi Imager](#raspberry-pi-imager)
- [Fedora Media Writer](#fedora-media-writer)
- [Pods](#pods)
- [Bambu Studio](#bambu-studio)
- [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)
- [AdwSteamGtk](#adwsteamgtk)
- [Frog](#frog)
- [CPU-X](#cpu-x)
- [Ungoogled Chromium](#ungoogled-chromium)
- [Signal](#signal)
- [Toolbox](#toolbox)
- [Reese's Arch Toolbox](#reeses-arch-toolbox)
- [Pipx/Poetry](#pipxpoetry)
- [Using Reese's Arch Toolbox](#using-reeses-arch-toolbox)
- [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
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.
### VSCode
Write code.
```bash
flatpak install com.visualstudio.code
# Fix wayland scaling issues
cp /var/lib/flatpak/exports/share/applications/com.visualstudio.code ~/.local/share/applications
# Add `--socket=wayland` and `--ozone-platform=wayland` to the correct locations in the "Exec" field
sed \
-ri 's/(Exec=.* run )(.*)(com.visualstudio.code)/\1--socket=wayland \2\3 --ozone-platform=wayland/g' \
~/.local/share/applications/com.visualstudio.code
# Validate desktop database and reload
desktop-file-validate ~/.local/share/applications/com.nextcloud.talk.desktop
update-desktop-database
```
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
# Fix wayland scaling issues
cp /var/lib/flatpak/exports/share/applications/com.bitwarden.desktop.desktop ~/.local/share/applications
# Add `--socket=wayland` and `--ozone-platform=wayland` to the correct locations in the "Exec" field
sed \
-ri 's/(Exec=.* run )(.*)(com.bitwarden.desktop)/\1--socket=wayland \2\3 --ozone-platform=wayland/g' \
~/.local/share/applications/com.bitwarden.desktop.desktop
# Validate desktop database and reload
desktop-file-validate ~/.local/share/applications/com.bitwarden.desktop.desktop
update-desktop-database
```
### 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
# Fix wayland scaling issues
cp /var/lib/flatpak/exports/share/applications/com.visualstudio.code ~/.local/share/applications
# Add `--socket=wayland` and `--ozone-platform=wayland` to the correct locations in the "Exec" field
sed \
-ri 's/(Exec=.* run )(.*)(com.visualstudio.code)/\1--socket=wayland \2\3 --ozone-platform=wayland/g' \
~/.local/share/applications/com.visualstudio.code
# Validate desktop database and reload
desktop-file-validate ~/.local/share/applications/com.nextcloud.talk.desktop
update-desktop-database
```
```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.
```bash
flatpak install com.discordapp.Discord
```
### Proton Mail
Talk to your business partners?
```bash
flatpak install me.proton.Mail
# Fix wayland scaling issues
cp /var/lib/flatpak/exports/share/applications/me.proton.Mail.desktop ~/.local/share/applications
# Add `--socket=wayland` and `--ozone-platform=wayland` to the correct locations in the "Exec" field
sed \
-ri 's/(Exec=.* run )(.*)(me.proton.Mail)/\1--socket=wayland \2\3 --ozone-platform=wayland/g' \
~/.local/share/applications/me.proton.Mail.desktop
# Validate desktop database and reload
desktop-file-validate ~/.local/share/applications/me.proton.Mail.desktop
update-desktop-database
```
```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
```
### 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
```
### 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"
},
...
}
```
### 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
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
Bittorent Client.
```bash
flatpak install com.transmissionbt.Transmission
```
### AdwSteamGtk
Make Steam look like a KDE App... you know you want to.
```bash
flatpak install io.github.Foldex.AdwSteamGtk
```
### 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
# Fix wayland scaling issues
cp /var/lib/flatpak/exports/share/applications/io.github.ungoogled_software.ungoogled_chromium.desktop ~/.local/share/applications
# Add `--socket=wayland` and `--ozone-platform=wayland` to the correct locations in the "Exec" field
sed \
-ri 's/(Exec=.* run )(.*)(io.github.ungoogled_software.ungoogled_chromium)/\1--socket=wayland \2\3 --ozone-platform=wayland/g' \
~/.local/share/applications/io.github.ungoogled_software.ungoogled_chromium.desktop
# Validate and reload desktop database
desktop-file-validate ~/.local/share/applications/io.github.ungoogled_software.ungoogled_chromium.desktop
update-desktop-database
```
### Signal
Chat when Nextcloud Talk is down
```bash
flatpak install org.signal.Signal
# Fix wayland scaling issues
cp /var/lib/flatpak/exports/share/applications/org.signal.Signal.desktop ~/.local/share/applications
# Add `--socket=wayland` and `--ozone-platform=wayland` to the correct locations in the "Exec" field
sed \
-ri 's/(Exec=.* run )(.*)(org.signal.Signal)/\1--socket=wayland \2\3 --ozone-platform=wayland/g' \
~/.local/share/applications/org.signal.Signal.desktop
# Validate and reload desktop database
desktop-file-validate ~/.local/share/applications/org.signal.Signal.desktop
update-desktop-database
```
```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
- ollama (add `export OLLAMA_HOST=my.ollama.host` to your `.zshrc` to use a remote host)
- podman (connected automatically to the host machine via the unix socket)
- tmux
- ffmpeg
- wine
- podman
- unzip
- bat
- btop
- jq
- yq
- imagemagick
#### Pipx/Poetry
<https://python-poetry.org/docs/>
```bash
# pipx is already installed but the pathing won't work for installed apps
pipx ensurepath # then source ~/.zshrc or ~/.bashrc
pipx install poetry
# Now this should work.
poetry new test-project
```
### Using Reese's Arch Toolbox
```bash
toolbox create -i gitea.reeseapps.com/services/arch-toolbox:latest
SHELL=/bin/zsh toolbox enter arch-toolbox-latest
```
### Updating Reese's Arch Toolbox
```bash
# Stop the current arch toolbox
podman container stop arch-toolbox-latest
# Remove the old container
podman container rm arch-toolbox-latest
# Pull the new 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
}
}
]
}
```