p510 — Media Server & Workstation¶
Last Updated: 2026-09-01
An Intel Xeon box that runs the media stack, a small k3s cluster and — since 2026-08-31 — a full Omarchy desktop on its own monitor.
| Profile | workstation |
host.class |
workstation (was headless-rdp until this host got a monitor) |
| GPU | NVIDIA RTX 3070 Ti @ 03:00.0 — proprietary driver, hardware transcoding |
| Session | Omarchy on Hyprland (default) or GNOME, via Omarchy's SDDM |
| Login | Autologin on — see below |
| Remote | Sunshine → Moonlight |
| NFS | exports /mnt/data to 192.168.1.* |
| Boot | standard, Omarchy Plymouth theme |
| Source | hosts/p510/ |
Never build or deploy p510 without asking first
This is the always-on media server for the house. Deploys are requested and approved explicitly, never taken as implied by a change that touches it.
Why this host is shaped the way it is¶
p510 pairs a power-efficient Xeon with an NVIDIA card specifically for Plex transcoding, and stays on around the clock for that reason.
It was headless for most of its life: GDM autologged into GNOME and
gnome-remote-desktop served that session over RDP. Then it got a monitor. The
three settings that had held Omarchy at arm's length were inverted and it now
follows the same template as p620 and razer — see
Desktop (Nixarchy).
GNOME stays installed and selectable at the greeter; it is simply no longer the session this host boots into.
Two deliberate divergences from p620 / razer¶
| p510 | p620 / razer | Why | |
|---|---|---|---|
programs.nixarchy.preinstalls |
false |
true |
Omarchy's desktop preinstalls are ~4 GiB more closure (cef-binary alone is 1.9 GiB) and would take / from 50.5 to 57.6 GiB, ~80% full |
| Autologin | on | off | Sunshine is a systemd user service that only exists inside a live graphical session. On a host that reboots unattended, the alternative is a greeter nobody is there to answer and no remote desktop until someone walks over to it |
Autologin is off on razer specifically because PRIME-sync Optimus hardware misbehaves with a greeter respawn; p510 is pure NVIDIA without PRIME, so that reason does not apply here.
What runs here¶
Media stack¶
- Plex media server with NVIDIA hardware transcoding.
- NZBGet, Sonarr, Radarr.
- recyclarr-sync — keeps *arr quality profiles in shape.
- FlareSolverr — Cloudflare-challenge proxy for indexers.
- Audiobook automation —
audiobookbay-automated, an import pipeline (audiobook-import), and theaudiobook-mcpserver. - MCP servers for Plex and the *arr suite (
plex-mcp,arr-suite-mcp), exposing media control to AI tooling.
Compute & virtualisation¶
- k3s MicroVMs — a master plus two agents, defined per-host under
hosts/p510/nixos/microvm/(these are host files, not a shared module). - Ollama server for local inference.
- Virtualisation and Syncthing enabled.
CI¶
A self-hosted GitHub Actions runner (hosts/p510/nixos/github-runner.nix,
registered as p510-nixarchy) for Nixarchy's heavy checks.
checks.install-iso builds a 5.6 GB image, boots it and installs a 15.3 GB
closure into a qcow2 — about an hour of wall clock and ~16 GB of build
directory. A GitHub-hosted runner has 14 GB of disk and no usable nested
virtualisation. p510 has 40 cores, 94 GB of RAM, /dev/kvm and 825 GB free on
/home.
The build directory is the easy thing to get wrong
TMPDIR is pointed at /home (WD10EZEX, 7200 rpm CMR), not
/mnt/img_pool. The pool has the most free space and is the worst possible
target: /dev/sdb1 is an ST1000LM035, a drive-managed SMR disk that
collapses to single-digit MB/s once its cache band fills — exactly the
sustained-write pattern a 16 GB VM install produces. Measured on the same
host, same day:
| sequential 512M | 4M writes, O_DSYNC |
|
|---|---|---|
/home |
125 MB/s | 59.4 MB/s |
/mnt/img_pool (SMR) |
— | ~9.5 MB/s |
A Nix build that runs out of room in TMPDIR does not fail cleanly: qemu
takes an I/O error mid-install and the test hangs until something times out,
which reads as flakiness rather than as a full disk.
The runner is replace = true and non-ephemeral, so it re-registers over a
stale entry of the same name instead of dying with
"A runner exists with the same name".
Access¶
- Sunshine → Moonlight for the graphical
session.
gnome-remote-desktopcan still serve GNOME over RDP, but it cannot serve Hyprland. - Tailscale mesh; local firewall delegated to Tailscale.
- NFS export of
/mnt/data(the media library) to the LAN.
Hardware notes¶
Under hosts/p510/nixos/: NVIDIA setup (nvidia.nix), boot/CPU/memory/power
tuning, the Plex configuration, recyclarr, the runner and the MicroVM
definitions. See the p510 manifest.
lspci is not installed here
Use nvidia-smi -L to enumerate GPUs. The host went from two cards to one
(RTX 3070 Ti) on 2026-08-24.
/mnt/media disk health
The /mnt/media drive has been reporting reallocated sectors for some time.
SMART reads PASSED regardless; do not treat that as reassurance. A
replacement has been ordered.
Tautulli / Plex API
Media-analytics integrations read from Plex/Tautulli on this host. If you rotate the Tautulli API key, update the p510 configuration and redeploy.
Known quirks¶
switchexits 4 here even on success.switch-to-configurationreloads the userdbus-brokerand then talks over the dead connection. It is cosmetic, and it also makesnixos-upgrade.service"fail" nightly. Verify the end state (/run/current-system,systemctl --failed), not the exit code.- An NVIDIA driver version bump cannot be applied with
switch. The new userspace meets the old in-memory module, threenvidia-*units fail and the whole activation rolls back. Usenh os bootand reboot;nhsnow detects this case and falls back automatically.
Deploy¶
Ask first — then, once approved: