Personal-use NixOS configuration
1{
2 hosts ? [ ],
3}:
4
5{
6 config,
7 lib,
8 flakeLib,
9 pkgs,
10 utils ? pkgs.utils,
11 ...
12}:
13
14let
15 socket = "/run/flood/flood.sock";
16in
17{
18 services.flood = {
19 enable = true;
20
21 extraArgs = [
22 "--rtsocket=${config.services.rtorrent.rpcSocket}"
23 ];
24 };
25
26 # Override service to support listening on sockets
27 systemd.services.flood.serviceConfig = {
28 ExecStart = lib.mkForce (
29 utils.escapeSystemdExecArgs (
30 [
31 (lib.getExe config.services.flood.package)
32 "--port"
33 socket
34 "--rundir=/var/lib/flood"
35 ]
36 ++ config.services.flood.extraArgs
37 )
38 );
39
40 RuntimeDirectory = "flood";
41 RuntimeDirectoryMode = "0750";
42 UMask = "0007";
43
44 Group = config.users.groups.flood-proxy.name;
45 };
46
47 users.groups.flood-proxy = { };
48
49 # Caddy reverse proxy configuration
50 users.users.caddy.extraGroups = [ config.users.groups.flood-proxy.name ];
51
52 services.caddy.virtualHosts = flakeLib.mkProxies hosts ''
53 reverse_proxy unix/${socket}
54 '';
55}