{ lib , config , pkgs , ... }: let cfg = config.services.gmnisrv; in { meta.maintainers = [ lib.maintainers.bsima ]; options.services.gmnisrv = { enable = lib.mkEnableOption "Enable the gmnisrv service"; settings = lib.mkOption { # type = cfgFormat.type; description = '' Configuration for gmnisrv. See gmnisrv.ini(5) for supported settings. ''; default = { "listen" = lib.mkDefault "0.0.0.0:1965 [::]:1965"; ":tls" = { "store" = lib.mkDefault "${cfg.dataDir}/certs"; }; }; }; dataDir = lib.mkOption { type = lib.types.str; default = "/var/lib/gemini"; description = "Where gmnisrv should store certs and other data."; }; }; config = lib.mkIf cfg.enable { systemd.services.gmnisrv = { description = "gmnisrv service"; wantedBy = [ "multi-user.target" ]; after = [ "network-online.target" ]; script = "${pkgs.gmnisrv}/bin/gmnisrv -C ${lib.generators.toINI {} cfg.settings}"; }; }; }