From 82ce04abf8621a1d92d096b2ad785ec4b826c6b0 Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Wed, 20 May 2026 13:59:32 -0400 Subject: [PATCH] Deploy Cups Collector --- flake.lock | 57 +++++++++++++++++++- flake.nix | 6 +++ modules/hosts/darwin/default.nix | 2 + modules/hosts/nixos/nixnuc/cup-collector.nix | 44 +++++++++++++++ modules/hosts/nixos/nixnuc/default.nix | 17 +++--- 5 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 modules/hosts/nixos/nixnuc/cup-collector.nix diff --git a/flake.lock b/flake.lock index b2b0ce5..d779bd1 100644 --- a/flake.lock +++ b/flake.lock @@ -69,6 +69,27 @@ "type": "github" } }, + "cup-collector": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1779331325, + "narHash": "sha256-5eBy6bkfBSn8KXtxEfNlmINaDCvjMhuwepvtjYplTJ0=", + "owner": "genebean", + "repo": "cup-collector", + "rev": "bd7fb3c666e22a89adca68c3afe0001d51b95b55", + "type": "github" + }, + "original": { + "owner": "genebean", + "repo": "cup-collector", + "type": "github" + } + }, "deadnix": { "inputs": { "nixpkgs": [ @@ -235,6 +256,24 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flox": { "inputs": { "crane": "crane", @@ -716,6 +755,7 @@ "root": { "inputs": { "compose2nix": "compose2nix", + "cup-collector": "cup-collector", "deadnix": "deadnix", "disko": "disko", "flox": "flox", @@ -871,6 +911,21 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "treefmt-nix": { "inputs": { "nixpkgs": "nixpkgs_2" @@ -891,7 +946,7 @@ }, "utils": { "inputs": { - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1731533236, diff --git a/flake.nix b/flake.nix index 898323d..15e65d4 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + cup-collector = { + url = "github:genebean/cup-collector"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # Linting and formatting deadnix = { url = "github:astro/deadnix"; @@ -173,6 +178,7 @@ nixnuc = localLib.mkNixosHost { hostname = "nixnuc"; additionalModules = [ + inputs.cup-collector.nixosModules.default inputs.private-flake.nixosModules.private.nixnuc inputs.simple-nixos-mailserver.nixosModule ]; diff --git a/modules/hosts/darwin/default.nix b/modules/hosts/darwin/default.nix index 77f01cf..cfe3a27 100644 --- a/modules/hosts/darwin/default.nix +++ b/modules/hosts/darwin/default.nix @@ -99,6 +99,7 @@ "BetterSnapTool" = 417375580; "Brother iPrint&Scan" = 1193539993; "Home Assistant" = 1099568401; + "LocalSend" = 1661733229; "MQTT Explorer" = 1455214828; }; }; @@ -109,6 +110,7 @@ settings = { bash-prompt-prefix = "(nix:$name)\040"; build-users-group = "nixbld"; + download-buffer-size = 524288000; experimental-features = [ "auto-allocate-uids" "flakes" diff --git a/modules/hosts/nixos/nixnuc/cup-collector.nix b/modules/hosts/nixos/nixnuc/cup-collector.nix new file mode 100644 index 0000000..24fdaa9 --- /dev/null +++ b/modules/hosts/nixos/nixnuc/cup-collector.nix @@ -0,0 +1,44 @@ +{ + inputs, + config, + pkgs, + ... +}: +let + home_domain = "home.technicalissues.us"; +in +{ + services = { + cupCollector = { + enable = true; + # dataDir = "/var/lib/cup-collector"; + domain = "cups.${home_domain}"; + envFile = config.sops.secrets.cup_collector_env.path; + households = [ + { + name = "Liverman Family"; + slug = "liverman_family"; + } + ]; + migrationsDir = inputs.cup-collector.packages.${pkgs.stdenv.hostPlatform.system}.migrations; + pbBindIp = "0.0.0.0"; + pbPort = 8091; # override default due to conflict + pocketidIssuerUrl = config.services.pocket-id.settings.APP_URL; + port = 3010; # override default due to conflict + }; + + restic.backups.daily = { + paths = [ + config.services.cupCollector.dataDir + ]; + }; + }; + + sops = { + defaultSopsFile = ./secrets.yaml; + secrets.cup_collector_env.restartUnits = [ + "cup-collector-pb-init.service" + "cup-collector.service" + ]; + }; +} diff --git a/modules/hosts/nixos/nixnuc/default.nix b/modules/hosts/nixos/nixnuc/default.nix index 70ca597..dc6b924 100644 --- a/modules/hosts/nixos/nixnuc/default.nix +++ b/modules/hosts/nixos/nixnuc/default.nix @@ -17,6 +17,7 @@ in ./containers/audiobookshelf.nix ./containers/mountain-mesh-bot-discord.nix ./containers/psitransfer.nix + ./cup-collector.nix ./monitoring-stack.nix ../../../shared/nixos/lets-encrypt.nix ../../../shared/nixos/restic.nix @@ -98,12 +99,14 @@ in 3002 # grafana 3005 # Firefly III 3006 # Firefly III Data Importer + 3010 # Cup Collector 3030 # Forgejo 3087 # Youtarr in docker compose 8001 # Tube Archivist 8384 # Syncthing gui 8888 # Atuin 8090 # Wallabag in docker compose + 8091 # PocketBase 8945 # Pinchflat 13378 # Audiobookshelf in oci-container ]; @@ -146,13 +149,6 @@ in # List services that you want to enable: services = { - pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - pulseaudio.enable = false; atuin = { enable = true; host = "127.0.0.1"; @@ -594,6 +590,12 @@ in selfhosted = true; # Only because this is not exsposed to the web user = "jellyfin"; }; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; pocket-id = { enable = true; settings = { @@ -617,6 +619,7 @@ in backupAll = true; startAt = "*-*-* 23:00:00"; }; + pulseaudio.enable = false; resolved.enable = true; restic.backups.daily = { paths = [