nixos/modules/services/mirism.nix

76 lines
2.5 KiB
Nix
Raw Normal View History

2023-11-16 13:58:59 +08:00
inputs:
{
options.nixos.services.mirism = let inherit (inputs.lib) mkOption types; in
{
enable = mkOption { type = types.bool; default = false; };
};
config =
let
inherit (inputs.config.nixos.services) mirism;
inherit (inputs.lib) mkIf;
inherit (builtins) map listToAttrs toString concatLists;
in mkIf mirism.enable
{
2023-12-09 20:01:50 +08:00
users =
{
2024-03-19 20:12:16 +08:00
users.mirism = { uid = inputs.config.nixos.user.uid.mirism; group = "mirism"; isSystemUser = true; };
groups.mirism.gid = inputs.config.nixos.user.gid.mirism;
2023-12-09 20:01:50 +08:00
};
2023-11-16 14:09:23 +08:00
systemd =
{
services = listToAttrs (map
(instance:
2023-11-16 13:58:59 +08:00
{
2023-11-16 14:09:23 +08:00
name = "mirism-${instance}";
value =
2023-11-16 13:58:59 +08:00
{
2023-11-16 14:09:23 +08:00
description = "mirism ${instance}";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig =
{
User = inputs.config.users.users.mirism.name;
Group = inputs.config.users.users.mirism.group;
ExecStart = "${inputs.pkgs.localPackages.mirism}/bin/${instance}";
2024-01-07 20:49:55 +08:00
RuntimeMaxSec = "1d";
2024-01-09 11:37:36 +08:00
Restart = "always";
2023-11-16 14:09:23 +08:00
};
2023-11-16 13:58:59 +08:00
};
2023-11-16 14:09:23 +08:00
})
[ "ng01" "beta" ]);
2023-12-09 20:01:50 +08:00
tmpfiles.rules = concatLists (map
2023-12-15 20:20:30 +08:00
(dir: [ "d /srv/${dir}mirism 0700 nginx nginx" "Z /srv/${dir}mirism - nginx nginx" ])
[ "" "entry." ]);
2023-11-16 14:09:23 +08:00
};
2023-11-16 13:58:59 +08:00
nixos.services =
{
nginx =
{
enable = true;
2023-11-16 15:51:47 +08:00
transparentProxy.map = { "ng01.mirism.one" = 7411; "beta.mirism.one" = 9114; };
2023-11-16 13:58:59 +08:00
https = listToAttrs (map
(instance:
{
name = "${instance}mirism.one";
2023-11-16 15:51:47 +08:00
value.location."/".static = { root = "/srv/${instance}mirism"; index = [ "index.html" ]; };
2023-11-16 13:58:59 +08:00
})
[ "entry." "" ]);
};
2024-03-23 00:43:44 +08:00
acme.cert = { "ng01.mirism.one".group = "mirism"; "beta.mirism.one".group = "mirism"; };
2023-11-16 13:58:59 +08:00
};
environment.etc = listToAttrs (concatLists (map
(instance:
[
{
name = "letsencrypt/live/${instance}.mirism.one/fullchain.pem";
value.source = "${inputs.config.security.acme.certs."${instance}.mirism.one".directory}/fullchain.pem";
}
{
name = "letsencrypt/live/${instance}.mirism.one/privkey.pem";
value.source = "${inputs.config.security.acme.certs."${instance}.mirism.one".directory}/key.pem";
}
])
[ "ng01" "beta" ]));
};
}