add regular fedora notes
This commit is contained in:
632
infrastructure/graduated/fedora/fedora.md
Normal file
632
infrastructure/graduated/fedora/fedora.md
Normal 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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user