# Fedora Kinoite

- [Fedora Kinoite](#fedora-kinoite)
  - [Podman](#podman)
  - [Libvirt, Qemu, KVM](#libvirt-qemu-kvm)
  - [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)
    - [Mission Center](#mission-center)
    - [Obsidian](#obsidian)
    - [Dev Toolbox](#dev-toolbox)
    - [Junction](#junction)
    - [Kdenlive](#kdenlive)
    - [The Powder Toy](#the-powder-toy)
    - [Pika](#pika)
  - [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.

## Libvirt, Qemu, KVM

```bash
rpm-ostree install virt-manager
systemctl enable --now libvirtd
```

## Apps

Flatpak installs are from Flathub unless otherwise noted.

### VSCode

Write code.

```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
        }
    }
}
```

### 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
```

### 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
```

### Discord

Talk to your enemies.

```bash
flatpak install com.discordapp.Discord
```

### 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
```

### 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
```

### Mission Center

Literally Windows task manager but for linux and it's awesome

```bash
flatpak install io.missioncenter.MissionCenter
```

### 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
```

## 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
            }
        }
    ]
}
```
