1# utility functions
2
3## `_utils.mkVhost`
4`attrset -> attrset`
5make a virtual host with sensible defaults
6
7pass in a set to override the defaults.
8
9### Example
10```nix
11services.nginx.virtualHosts."balls.example" = _utils.mkVhost {};
12```
13
14## `_utils.mkSimpleProxy`
15`attrset -> attrset`
16
17make a simple reverse proxy
18
19takes a set:
20```nix
21{
22 port,
23 protocol ? "http",
24 location ? "/",
25 websockets ? false,
26 extraConfig ? {}
27}
28```
29
30It is recommended to override/add attributes with `extraConfig` to
31preserve defaults.
32
33Items in `extraConfig` are merged verbatim to the base attrset with defaults.
34They are overridden based on their order.
35
36## `_utils.genSecrets`
37`namespace[str] -> files[list[str]] -> value[attrset] -> attrset`
38a
39generate an attrset to be passed into sops.secrets.
40
41### Example
42```nix
43{ _utils, ... }:
44let
45 secrets = [
46 "secure_secret"
47 # this is a directory structure, so secrets will be stored as a file in /run/secrets/service/test/secret.
48 "service/test/secret"
49 ];
50in {
51 sops.secrets = _utils.genSecrets "" secrets {}; # it's recommended to use a namespace, but having none is still fine.
52 # -> sops.secrets."secure_secret" = {};
53 # sops.secrets."service/test/secret" = {};
54 sops.secrets = _utils.genSecrets "balls" ["balls_secret"] {owner = "balls"};
55 # -> sops.secrets."balls/balls_secret" = {owner = "balls";};
56}
57```
58
59See https://github.com/soopyc/nix-on-koumakan/blob/b7983776143c15c91df69ef34ba4264a22047ec6/systems/koumakan/services/fedivese/akkoma.nix#L8-L34 for a more extensive example