Decided on Kodi + JellyCon with NFS direct path for media playback, Sway/Hyprland for display server with workspace-based browser switching, and noted HDR status for future reference. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
245 lines
10 KiB
Markdown
245 lines
10 KiB
Markdown
# Media PC Replacement
|
|
|
|
## Overview
|
|
|
|
Replace the aging Linux+Kodi media PC connected to the TV with a modern, compact solution. Primary use cases are Jellyfin/Kodi playback and watching Twitch/YouTube. The current machine (`media`, 10.69.31.50) is on VLAN 31.
|
|
|
|
## Current State
|
|
|
|
### Hardware
|
|
- **CPU**: Intel Core i7-4770K @ 3.50GHz (Haswell, 4C/8T, 2013)
|
|
- **GPU**: Nvidia GeForce GT 710 (Kepler, GK208B)
|
|
- **OS**: Ubuntu 22.04.5 LTS (Jammy)
|
|
- **Software**: Kodi
|
|
- **Network**: `media.home.2rjus.net` at `10.69.31.50` (VLAN 31)
|
|
|
|
### Control & Display
|
|
- **Input**: Wireless keyboard (works well, useful for browser)
|
|
- **TV**: 1080p (no 4K/HDR currently, but may upgrade TV later)
|
|
- **Audio**: Surround system connected via HDMI ARC from TV (PC → HDMI → TV → ARC → surround)
|
|
|
|
### Notes on Current Hardware
|
|
- The i7-4770K is massively overpowered for media playback — it's a full desktop CPU from 2013
|
|
- The GT 710 is a low-end passive GPU; supports NVDEC for H.264/H.265 hardware decode but limited to 4K@30Hz over HDMI 1.4
|
|
- Ubuntu 22.04 is approaching EOL (April 2027) and is not managed by this repo
|
|
- The whole system is likely in a full-size or mid-tower case — not ideal for a TV setup
|
|
|
|
### Integration
|
|
- **Media source**: Jellyfin on `jelly01` (10.69.13.14) serves media from NAS via NFS
|
|
- **DNS**: A record in `services/ns/external-hosts.nix`
|
|
- **Not managed**: Not a NixOS host in this repo, no monitoring/auto-updates
|
|
|
|
## Options
|
|
|
|
### Option 1: Dedicated Streaming Device (Apple TV / Nvidia Shield)
|
|
|
|
| Aspect | Apple TV 4K | Nvidia Shield Pro |
|
|
|--------|-------------|-------------------|
|
|
| **Price** | ~$130-180 | ~$200 |
|
|
| **Jellyfin** | Swiftfin app (good) | Jellyfin Android TV (good) |
|
|
| **Kodi** | Not available (tvOS) | Full Kodi support |
|
|
| **Twitch** | Native app | Native app |
|
|
| **YouTube** | Native app | Native app |
|
|
| **HDR/DV** | Dolby Vision + HDR10 | Dolby Vision + HDR10 |
|
|
| **4K** | Yes | Yes |
|
|
| **Form factor** | Tiny, silent | Small, silent |
|
|
| **Remote** | Excellent Siri remote | Decent, supports CEC |
|
|
| **Homelab integration** | None | Minimal (Plex/Kodi only) |
|
|
|
|
**Pros:**
|
|
- Zero maintenance - appliance experience
|
|
- Excellent app ecosystem (native Twitch, YouTube, streaming services)
|
|
- Silent, tiny form factor
|
|
- Great remote control / CEC support
|
|
- Hardware-accelerated codec support out of the box
|
|
|
|
**Cons:**
|
|
- No NixOS management, monitoring, or auto-updates
|
|
- Can't run arbitrary software
|
|
- Jellyfin clients are decent but not as mature as Kodi
|
|
- Vendor lock-in (Apple ecosystem / Google ecosystem)
|
|
- No SSH access for troubleshooting
|
|
|
|
### Option 2: NixOS Mini PC (Kodi Appliance)
|
|
|
|
A small form factor PC (Intel NUC, Beelink, MinisForum, etc.) running NixOS with Kodi as the desktop environment.
|
|
|
|
**NixOS has built-in support:**
|
|
- `services.xserver.desktopManager.kodi.enable` - boots directly into Kodi
|
|
- `kodi-gbm` package - Kodi with direct DRM/KMS rendering (no X11/Wayland needed)
|
|
- `kodiPackages.jellycon` - Jellyfin integration for Kodi
|
|
- `kodiPackages.sendtokodi` - plays streams via yt-dlp (Twitch, YouTube)
|
|
- `kodiPackages.inputstream-adaptive` - adaptive streaming support
|
|
|
|
**Example NixOS config sketch:**
|
|
```nix
|
|
{ pkgs, ... }:
|
|
{
|
|
services.xserver.desktopManager.kodi = {
|
|
enable = true;
|
|
package = pkgs.kodi.withPackages (p: [
|
|
p.jellycon
|
|
p.sendtokodi
|
|
p.inputstream-adaptive
|
|
]);
|
|
};
|
|
|
|
# Auto-login to Kodi session
|
|
services.displayManager.autoLogin = {
|
|
enable = true;
|
|
user = "kodi";
|
|
};
|
|
}
|
|
```
|
|
|
|
**Pros:**
|
|
- Full NixOS management (monitoring, auto-updates, vault, promtail)
|
|
- Kodi is a proven TV interface with excellent remote/CEC support
|
|
- JellyCon integrates Jellyfin library directly into Kodi
|
|
- Twitch/YouTube via sendtokodi + yt-dlp or Kodi browser addons
|
|
- Can run arbitrary services (e.g., Home Assistant dashboard)
|
|
- Declarative, reproducible config in this repo
|
|
|
|
**Cons:**
|
|
- More maintenance than an appliance
|
|
- NixOS + Kodi on bare metal needs GPU driver setup (Intel iGPU is usually fine)
|
|
- Kodi YouTube/Twitch addons are less polished than native apps
|
|
- Need to buy hardware (~$150-400 for a decent mini PC)
|
|
- Power consumption higher than a streaming device
|
|
|
|
### Option 3: NixOS Mini PC (Wayland Desktop)
|
|
|
|
A mini PC running NixOS with a lightweight Wayland compositor, launching Kodi for media and a browser for Twitch/YouTube.
|
|
|
|
**Pros:**
|
|
- Best of both worlds: Kodi for media, Firefox/Chromium for Twitch/YouTube
|
|
- Full NixOS management
|
|
- Can switch between Kodi and browser easily
|
|
- Native web experience for streaming sites
|
|
|
|
**Cons:**
|
|
- More complex setup (compositor + Kodi + browser)
|
|
- Harder to get a good "10-foot UI" experience
|
|
- Keyboard/mouse may be needed alongside remote
|
|
- Significantly more maintenance
|
|
|
|
## Comparison
|
|
|
|
| Criteria | Dedicated Device | NixOS Kodi | NixOS Desktop |
|
|
|----------|-----------------|------------|---------------|
|
|
| **Maintenance** | None | Low | Medium |
|
|
| **Media experience** | Excellent | Excellent | Good |
|
|
| **Twitch/YouTube** | Excellent (native apps) | Good (addons/yt-dlp) | Excellent (browser) |
|
|
| **Homelab integration** | None | Full | Full |
|
|
| **Form factor** | Tiny | Small | Small |
|
|
| **Cost** | $130-200 | $150-400 | $150-400 |
|
|
| **Silent operation** | Yes | Likely (fanless options) | Likely |
|
|
| **CEC remote** | Yes | Yes (Kodi) | Partial |
|
|
|
|
## Decision: NixOS Mini PC with Kodi (Option 2)
|
|
|
|
**Rationale:**
|
|
- Already comfortable with Kodi + wireless keyboard workflow
|
|
- Browser access for Twitch/YouTube is important — Kodi can launch a browser when needed
|
|
- Homelab integration comes for free (monitoring, auto-updates, vault)
|
|
- Natural fit alongside the other 16 NixOS hosts in this repo
|
|
- Dedicated devices lose the browser/keyboard workflow
|
|
|
|
### Display Server: Sway/Hyprland
|
|
|
|
Options evaluated:
|
|
|
|
| Approach | Pros | Cons |
|
|
|----------|------|------|
|
|
| Cage (kiosk) | Simplest, single-app | No browser without TTY switching |
|
|
| kodi-gbm (no compositor) | Best HDR support | No browser at all, ALSA-only audio |
|
|
| **Sway/Hyprland** | **Workspace switching, VA-API in browser** | **Slightly more config** |
|
|
| Full DE (GNOME/KDE) | Everything works | Overkill, heavy |
|
|
|
|
**Decision: Sway or Hyprland** (Hyprland preferred — same as desktop)
|
|
|
|
- Kodi fullscreen on workspace 1, Firefox on workspace 2
|
|
- Switch via keybinding on wireless keyboard
|
|
- Auto-start both on login via greetd
|
|
- Minimal config — no bar, no decorations, just workspaces
|
|
- VA-API hardware decode works in Firefox on Wayland (important for YouTube/Twitch)
|
|
- Can revisit kodi-gbm later if HDR becomes a priority (just a config change)
|
|
|
|
### Twitch/YouTube
|
|
|
|
Firefox on workspace 2, switched to via keyboard. Kodi addons (sendtokodi, YouTube plugin) available as secondary options but a real browser is the primary approach.
|
|
|
|
### Media Playback: Kodi + JellyCon + NFS Direct Path
|
|
|
|
Three options were evaluated for media playback:
|
|
|
|
| Approach | Transcoding | Library management | Watch state sync |
|
|
|----------|-------------|-------------------|-----------------|
|
|
| Jellyfin only (browser) | Yes — browsers lack codec support for DTS, PGS subs, etc. | Jellyfin | Jellyfin |
|
|
| Kodi + NFS only | No — Kodi plays everything natively | Kodi local DB | None |
|
|
| **Kodi + JellyCon + NFS** | **No — Kodi's native player, direct path via NFS** | **Jellyfin** | **Jellyfin** |
|
|
|
|
**Decision: Kodi + JellyCon with NFS direct path**
|
|
|
|
- JellyCon presents the Jellyfin library inside Kodi's UI (browse, search, metadata, artwork)
|
|
- Playback uses Kodi's native player — direct play, no transcoding, full codec support including surround passthrough
|
|
- JellyCon's "direct path" mode maps Jellyfin paths to local NFS mounts, so playback goes straight over NFS without streaming through Jellyfin's HTTP layer
|
|
- Watch state, resume position, etc. sync back to Jellyfin — accessible from other devices too
|
|
- NFS mount follows the same pattern as jelly01 (`nas.home.2rjus.net:/mnt/hdd-pool/media`)
|
|
|
|
### Audio Passthrough
|
|
|
|
Kodi on NixOS supports HDMI audio passthrough for surround formats (AC3, DTS, etc.). The ARC chain (PC → HDMI → TV → ARC → surround) works transparently — Kodi just needs to be configured for passthrough rather than decoding audio locally.
|
|
|
|
## Hardware
|
|
|
|
### Leading Candidate: GMKtec G3
|
|
|
|
- **CPU**: Intel N100 (Alder Lake-N, 4C/4T)
|
|
- **RAM**: 16GB
|
|
- **Storage**: 512GB NVMe
|
|
- **Price**: ~NOK 2800 (~$250 USD)
|
|
- **Source**: AliExpress
|
|
|
|
The N100 supports hardware decode for all relevant 4K codecs:
|
|
|
|
| Codec | Support | Used by |
|
|
|-------|---------|---------|
|
|
| H.264/AVC | Yes (Quick Sync) | Older media |
|
|
| H.265/HEVC 10-bit | Yes (Quick Sync) | Most 4K media, HDR |
|
|
| VP9 | Yes (Quick Sync) | YouTube 4K |
|
|
| AV1 | Yes (Quick Sync) | YouTube, Twitch, newer encodes |
|
|
|
|
16GB RAM is comfortable for Kodi + browser + NixOS system services (node-exporter, promtail, etc.) with plenty of headroom.
|
|
|
|
### Key Requirements
|
|
- HDMI 2.0+ for 4K future-proofing (current TV is 1080p)
|
|
- Hardware video decode via VA-API / Intel Quick Sync
|
|
- HDR support (for future TV upgrade)
|
|
- Fanless or near-silent operation
|
|
|
|
## Implementation Steps
|
|
|
|
1. **Choose and order hardware**
|
|
2. **Create host configuration** (`hosts/media1/`)
|
|
- Kodi desktop manager with Jellyfin + streaming addons
|
|
- Intel/AMD iGPU driver and VA-API hardware decode
|
|
- HDMI audio passthrough for surround
|
|
- NFS mount for media (same pattern as jelly01)
|
|
- Browser package (Firefox/Chromium) for Twitch/YouTube fallback
|
|
- Standard system modules (monitoring, promtail, vault, auto-upgrade)
|
|
3. **Install NixOS** on the mini PC
|
|
4. **Configure Kodi** (Jellyfin server, addons, audio passthrough)
|
|
5. **Update DNS** - point `media.home.2rjus.net` to new IP (or keep on VLAN 31)
|
|
6. **Retire old media PC**
|
|
|
|
## Open Questions
|
|
|
|
- [x] What are the current media PC specs? — i7-4770K, GT 710, Ubuntu 22.04. Overkill CPU, weak GPU, large form factor. Not worth reusing if goal is compact/silent.
|
|
- [x] VLAN? — Keep on VLAN 31 for now, same as current media PC. Can revisit later.
|
|
- [x] Is CEC needed? — No, not using it currently. Can add later if desired.
|
|
- [x] Is 4K HDR output needed? — TV is 1080p now, but want 4K/HDR capability for future TV upgrade
|
|
- [x] Audio setup? — Surround system via HDMI ARC from TV. Media PC outputs HDMI to TV, TV passes audio to surround via ARC. Kodi/any player just needs HDMI audio output with surround passthrough.
|
|
- [x] Are there streaming service apps needed? — No. Only Twitch/YouTube, which work fine in any browser.
|
|
- [x] Budget? — ~NOK 2800 for GMKtec G3 (N100, 16GB, 512GB NVMe)
|