inputs: { options.nixos.services.httpapi = let inherit (inputs.lib) mkOption types; in { enable = mkOption { type = types.bool; default = false; }; hostname = mkOption { type = types.nonEmptyStr; default = "api.chn.moe"; }; }; config = let inherit (inputs.config.nixos.services) httpapi; inherit (inputs.lib) mkIf; inherit (builtins) toString map; in mkIf httpapi.enable { nixos.services = { phpfpm.instances.httpapi = {}; nginx.https.${httpapi.hostname}.location = { "/files".static.root = "/srv/api"; "/led".static = { root = "/srv/api"; detectAuth.users = [ "led" ]; }; "/notify.php".php = { root = builtins.dirOf inputs.config.sops.templates."httpapi/notify.php".path; fastcgiPass = inputs.config.nixos.services.phpfpm.instances.httpapi.fastcgi; }; }; }; sops = { templates."httpapi/notify.php" = { owner = inputs.config.users.users.httpapi.name; group = inputs.config.users.users.httpapi.group; content = let placeholder = inputs.config.sops.placeholder; request = "https://api.telegram.org/${placeholder."httpapi/token"}/sendMessage?chat_id=861886506&text="; in ''''; }; secrets."httpapi/token" = {}; }; systemd.tmpfiles.rules = let perm = "/srv/api 0700 nginx nginx"; in [ "d ${perm}" "Z ${perm}" ]; }; }