632 lines
13 KiB
Markdown
632 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)
|
|
- [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.
|
|
|
|
<https://code.visualstudio.com/docs/setup/linux#_installing-rpm-package-manually>
|
|
|
|
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:
|
|
|
|
<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
|
|
```
|
|
|
|
```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
|
|
|
|
<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
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|