All checks were successful
Reese's Arch Toolbox / build-and-push-arch-toolbox (push) Successful in 42m54s
679 lines
14 KiB
Markdown
679 lines
14 KiB
Markdown
# Fedora
|
|
|
|
- [Fedora](#fedora)
|
|
- [Framework 16 Fixes](#framework-16-fixes)
|
|
- [Wake from Sleep](#wake-from-sleep)
|
|
- [Wrong keys pressed in the browser](#wrong-keys-pressed-in-the-browser)
|
|
- [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)
|
|
- [Remmina](#remmina)
|
|
- [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)
|
|
|
|
## Framework 16 Fixes
|
|
|
|
### Wake from Sleep
|
|
|
|
The keyboard/mouse can be pressed through the lid while in a backpack. Disable them to
|
|
prevent wake from sleep.
|
|
|
|
`/etc/udev/rules.d/69-suspend.rules`
|
|
|
|
```conf
|
|
ACTION=="add", SUBSYSTEM=="acpi", DRIVERS=="button", ATTRS{hid}=="PNP0C0D", ATTR{power/wakeup}="disabled"
|
|
ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled"
|
|
ACTION=="add", SUBSYSTEM=="i2c", DRIVERS=="i2c_hid_acpi", ATTRS{name}=="PIXA3854:00", ATTR{power/wakeup}="disabled"
|
|
|
|
# https://askubuntu.com/questions/848698/wake-up-from-suspend-using-usb-device
|
|
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="32ac", ATTRS{idProduct}=="0012", RUN+="/bin/sh -c 'echo disabled > /sys$env{DEVPATH}/power/wakeup'"
|
|
```
|
|
|
|
Reload
|
|
|
|
```bash
|
|
sudo udevadm control --reload-rules && sudo udevadm trigger
|
|
```
|
|
|
|
### Wrong keys pressed in the browser
|
|
|
|
Sometimes keys will stop working when using search bars or do strange things like move the page around. This seems to be caused by some "alt" keypress combination. Pressing "alt" twice fixes it.
|
|
|
|
## 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'
|
|
```
|
|
|
|
Then use
|
|
|
|
```bash
|
|
qdbus org.kde.KWin /KWin queryWindowInfo
|
|
```
|
|
|
|
to get the StartupWMClass name.
|
|
|
|
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
|
|
```
|
|
|
|
### 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/
|
|
```
|
|
|
|
### Remmina
|
|
|
|
REMote desktop IN An app
|
|
|
|
```bash
|
|
flatpak install org.remmina.Remmina
|
|
```
|
|
|
|
## 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
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|