From 4bccb6e6a80568bf373760da34b3da15894a8e61 Mon Sep 17 00:00:00 2001 From: DannyDannyDanny Date: Mon, 6 Apr 2026 11:55:06 +0200 Subject: [PATCH] =?UTF-8?q?fix(sunken-ship):=20add=20audioconvert=20to=20u?= =?UTF-8?q?xplay=20pipeline=20=E2=80=94=20fixes=20ALAC=20format=20error=20?= =?UTF-8?q?=F0=9F=8E=B5=20feat(home):=20add=20uhk-agent=20for=20UHK=20keyb?= =?UTF-8?q?oard=20configuration=20=F0=9F=8E=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nixos/home/danny/home.nix | 1 + nixos/hosts/sunken-ship.nix | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/nixos/home/danny/home.nix b/nixos/home/danny/home.nix index 6e52073..a24ee87 100644 --- a/nixos/home/danny/home.nix +++ b/nixos/home/danny/home.nix @@ -217,6 +217,7 @@ discord mapscii mpv + uhk-agent # UHK keyboard configuration GUI + CLI ]); # First HM version for this user config; bump only if you understand the migration notes. diff --git a/nixos/hosts/sunken-ship.nix b/nixos/hosts/sunken-ship.nix index f51700e..b9e1fa6 100644 --- a/nixos/hosts/sunken-ship.nix +++ b/nixos/hosts/sunken-ship.nix @@ -73,12 +73,24 @@ in publish = { enable = true; userServices = true; }; }; - # Open firewall for AirPlay (mDNS + UxPlay default ports). + # Open firewall for AirPlay (mDNS + UxPlay default ports) + Navidrome. networking.firewall = { - allowedTCPPorts = [ 7000 7001 7100 ]; + allowedTCPPorts = [ 7000 7001 7100 4533 ]; allowedUDPPorts = [ 5353 6000 6001 7011 ]; }; + # Navidrome — self-hosted music streaming server (Subsonic API). + # Music library: /home/danny/music + # Web UI + Substreamer client on port 4533. + services.navidrome = { + enable = true; + settings = { + Address = "0.0.0.0"; + Port = 4533; + MusicFolder = "/home/danny/music"; + }; + }; + # UxPlay AirPlay receiver — audio-only, outputs directly to Scarlett Solo via ALSA. # Runs as a system service (no PipeWire needed on a headless server). systemd.services.uxplay = { @@ -87,7 +99,7 @@ in wants = [ "network-online.target" "avahi-daemon.service" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { - ExecStart = ''${pkgs.uxplay}/bin/uxplay -n sunken-ship -p -vs 0 -as "alsasink device=plughw:USB,0 buffer-time=200000"''; + ExecStart = ''${pkgs.uxplay}/bin/uxplay -n sunken-ship -p -vs 0 -as "audioconvert ! audioresample ! alsasink device=plughw:USB,0 buffer-time=200000"''; Restart = "on-failure"; RestartSec = 5; User = "danny";