1{ config, lib, ... }:
2let
3 cfg = config.services.pinchflat;
4 age = config.age.secrets;
5 d = lib.py.data.services.pinchflat;
6in
7{
8 services.pinchflat = {
9 enable = true;
10 port = d.port;
11 secretsFile = age.pinchflat-secrets.path;
12 mediaDir = "/var/media/youtube";
13 extraConfig = {
14 YT_DLP_WORKER_CONCURRENCY = 2;
15 };
16 };
17 systemd.services.pinchflat = lib.mkIf cfg.enable {
18 serviceConfig = {
19 DynamicUser = lib.mkForce false;
20 User = lib.mkForce "pinchflat";
21 Group = lib.mkForce "pinchflat";
22 };
23 };
24 users.users.pinchflat = lib.mkIf cfg.enable {
25 isSystemUser = true;
26 group = "pinchflat";
27 };
28 users.groups.pinchflat = lib.mkIf cfg.enable { };
29 age.secrets = lib.mkIf cfg.enable {
30 pinchflat-secrets = {
31 owner = "pinchflat";
32 group = "pinchflat";
33 file = ./secrets/pinchflat-secrets.age;
34 };
35 };
36 # BGUtil Docker Container for yt-dlp
37 virtualisation.oci-containers.containers.ytdlp-bgutil-provider = lib.mkIf cfg.enable {
38 image = "brainicism/bgutil-ytdlp-pot-provider";
39 ports = [
40 "4416:4416"
41 ];
42 };
43}