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