Merge pull request #639 from genebean/cups

Deploy Cups Collector
This commit is contained in:
Gene Liverman 2026-05-22 22:11:44 -04:00 committed by GitHub
commit 4cd7d3c619
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 118 additions and 8 deletions

57
flake.lock generated
View file

@ -69,6 +69,27 @@
"type": "github" "type": "github"
} }
}, },
"cup-collector": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1779501140,
"narHash": "sha256-0azy6r62B0Q2HDhVNizduriej0l4QVjlgljKotqoexQ=",
"owner": "genebean",
"repo": "cup-collector",
"rev": "b68ca178621b126a1cbe40de59065983fcd9d388",
"type": "github"
},
"original": {
"owner": "genebean",
"repo": "cup-collector",
"type": "github"
}
},
"deadnix": { "deadnix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -235,6 +256,24 @@
"type": "github" "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": { "flox": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
@ -716,6 +755,7 @@
"root": { "root": {
"inputs": { "inputs": {
"compose2nix": "compose2nix", "compose2nix": "compose2nix",
"cup-collector": "cup-collector",
"deadnix": "deadnix", "deadnix": "deadnix",
"disko": "disko", "disko": "disko",
"flox": "flox", "flox": "flox",
@ -871,6 +911,21 @@
"type": "github" "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": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
@ -891,7 +946,7 @@
}, },
"utils": { "utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,

View file

@ -11,6 +11,11 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
cup-collector = {
url = "github:genebean/cup-collector";
inputs.nixpkgs.follows = "nixpkgs";
};
# Linting and formatting # Linting and formatting
deadnix = { deadnix = {
url = "github:astro/deadnix"; url = "github:astro/deadnix";
@ -173,6 +178,7 @@
nixnuc = localLib.mkNixosHost { nixnuc = localLib.mkNixosHost {
hostname = "nixnuc"; hostname = "nixnuc";
additionalModules = [ additionalModules = [
inputs.cup-collector.nixosModules.default
inputs.private-flake.nixosModules.private.nixnuc inputs.private-flake.nixosModules.private.nixnuc
inputs.simple-nixos-mailserver.nixosModule inputs.simple-nixos-mailserver.nixosModule
]; ];

View file

@ -99,6 +99,7 @@
"BetterSnapTool" = 417375580; "BetterSnapTool" = 417375580;
"Brother iPrint&Scan" = 1193539993; "Brother iPrint&Scan" = 1193539993;
"Home Assistant" = 1099568401; "Home Assistant" = 1099568401;
"LocalSend" = 1661733229;
"MQTT Explorer" = 1455214828; "MQTT Explorer" = 1455214828;
}; };
}; };
@ -109,6 +110,7 @@
settings = { settings = {
bash-prompt-prefix = "(nix:$name)\040"; bash-prompt-prefix = "(nix:$name)\040";
build-users-group = "nixbld"; build-users-group = "nixbld";
download-buffer-size = 524288000;
experimental-features = [ experimental-features = [
"auto-allocate-uids" "auto-allocate-uids"
"flakes" "flakes"

View file

@ -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"
];
};
}

View file

@ -17,6 +17,7 @@ in
./containers/audiobookshelf.nix ./containers/audiobookshelf.nix
./containers/mountain-mesh-bot-discord.nix ./containers/mountain-mesh-bot-discord.nix
./containers/psitransfer.nix ./containers/psitransfer.nix
./cup-collector.nix
./monitoring-stack.nix ./monitoring-stack.nix
../../../shared/nixos/lets-encrypt.nix ../../../shared/nixos/lets-encrypt.nix
../../../shared/nixos/restic.nix ../../../shared/nixos/restic.nix
@ -98,12 +99,14 @@ in
3002 # grafana 3002 # grafana
3005 # Firefly III 3005 # Firefly III
3006 # Firefly III Data Importer 3006 # Firefly III Data Importer
3010 # Cup Collector
3030 # Forgejo 3030 # Forgejo
3087 # Youtarr in docker compose 3087 # Youtarr in docker compose
8001 # Tube Archivist 8001 # Tube Archivist
8384 # Syncthing gui 8384 # Syncthing gui
8888 # Atuin 8888 # Atuin
8090 # Wallabag in docker compose 8090 # Wallabag in docker compose
8091 # PocketBase
8945 # Pinchflat 8945 # Pinchflat
13378 # Audiobookshelf in oci-container 13378 # Audiobookshelf in oci-container
]; ];
@ -146,13 +149,6 @@ in
# List services that you want to enable: # List services that you want to enable:
services = { services = {
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
pulseaudio.enable = false;
atuin = { atuin = {
enable = true; enable = true;
host = "127.0.0.1"; host = "127.0.0.1";
@ -594,6 +590,12 @@ in
selfhosted = true; # Only because this is not exsposed to the web selfhosted = true; # Only because this is not exsposed to the web
user = "jellyfin"; user = "jellyfin";
}; };
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
pocket-id = { pocket-id = {
enable = true; enable = true;
settings = { settings = {
@ -617,6 +619,7 @@ in
backupAll = true; backupAll = true;
startAt = "*-*-* 23:00:00"; startAt = "*-*-* 23:00:00";
}; };
pulseaudio.enable = false;
resolved.enable = true; resolved.enable = true;
restic.backups.daily = { restic.backups.daily = {
paths = [ paths = [