diff --git a/modules/default.nix b/modules/default.nix
index 0901faea87561a333f5a3ac7a111040df1d066ad..58cfb4e5d022275403b90bc0a4a1002644b5f22d 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1,4 +1,6 @@
{
home-manager = {
programs = {
aerc = ./home-manager/programs/aerc.nix;
diff --git a/modules/services/gmnisrv.nix b/modules/services/gmnisrv.nix
new file mode 100644
index 0000000000000000000000000000000000000000..8e80e490c854468c0eec28e8fad259090237c6bc
--- /dev/null
+++ b/modules/services/gmnisrv.nix
@@ -0,0 +1,95 @@
+{ config, lib, pkgs, ... }:
+with lib;
+let
+in {
type = types.package;
default = pkgs.gmnisrv;
defaultText = "pkgs.gmnisrv";
description = "Which gmnisrv package to use.";
type = types.listOf types.str;
default = [ ];
example = [ "example.com" ];
description = "List of hostnames to respond to requests for.";
type = types.port;
default = 1965;
description = "TCP port for gmnisrv to bind to.";
type = types.str;
default = "gmnisrv";
description = "User under which gmnisrv is ran.";
type = types.str;
default = "gmnisrv";
description = "Group under which gmnisrv is ran.";
type = types.path;
default = "/var/lib/gemini";
description = "The gmnisrv home directory containing certificates.";
type = types.str;
default = "/srv/gemini";
description = "Base directory for Gemini content.";
description = "Simple gemini server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
preStart = ''
mkdir -p "${cfg.stateDir}/certs"
'';
serviceConfig = let
configFile = pkgs.writeFile "gmnisrv.ini" ''
listen=0.0.0.0:${cfg.port}
[:tls]
store=${cfg.stateDir}/certs
'' + lib.concatMapStringsSep "\n" (hostname: ''
[${hostname}]
root=${cfg.docBase}/${hostname}
'') cfg.hostNames;
in {
User = cfg.user;
Group = cfg.group;
LogsDirectory = "gmnisrv";
ExecStart = "${cfg.package}/bin/gmnisrv -C ${configFile}";
Restart = "always";
};
gmnisrv = {
group = cfg.group;
home = cfg.stateDir;
createHome = true;
uid = config.ids.uids.gmnisrv;
};
gmnisrv.gid = config.ids.gids.gmnisrv;
+}
application/octet-stream
This content has been proxied by September (3851b).