Service utility functions
Service utility functions for the atelier infrastructure.
These functions operate on NixOS configurations to extract service metadata for dashboards, monitoring, and documentation.
services.isMkService
Check whether an atelier service config value has the standard
mkService shape (has enable, domain, port, _description).
Arguments
cfg— an attribute set fromconfig.atelier.services.<name>
Type
AttrSet -> Bool
Example
isMkService config.atelier.services.cachet
=> true
services.mkServiceEntry
Convert a single mkService config into a manifest entry.
Arguments
name— the service name (attribute key)cfg— the service config attrset
Type
String -> AttrSet -> AttrSet
Example
mkServiceEntry "cachet" config.atelier.services.cachet
=> { name = "cachet"; domain = "cachet.dunkirk.sh"; ... }
services.mkManifest
Build a services manifest from an evaluated NixOS config.
Discovers all enabled mkService-based services plus emojibot instances. Returns a sorted list of service entries suitable for JSON serialisation.
Arguments
config— the fully evaluated NixOS configuration
Type
AttrSet -> [ AttrSet ]
Example
mkManifest config
=> [ { name = "cachet"; domain = "cachet.dunkirk.sh"; ... } ... ]
services.mkMachinesManifest
Build a manifest of all machines and their services.
Takes one or more attrsets of system configurations (NixOS, Darwin,
or home-manager) and returns an attrset keyed by machine name.
Only machines with atelier.machine.enable = true are included.
Arguments
configSets— list of attrsets of system configurations
Type
[ AttrSet ] -> AttrSet
Example
mkMachinesManifest [ self.nixosConfigurations self.darwinConfigurations ]
=> { terebithia = { hostname = "terebithia"; services = [ ... ]; }; }