All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 16m29s
602 lines
13 KiB
Markdown
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
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|