]>
Commit | Line | Data |
---|---|---|
ef118cb3 IB |
1 | { lib, config, pkgs, ... }: |
2 | let | |
3 | configFile = pkgs.writeText "config.yaml" '' | |
4 | listen: ":1965" | |
5 | hosts: | |
6 | immae.eu: | |
7 | cert: /var/lib/acme/immae/full.pem | |
8 | key: /var/lib/acme/immae/key.pem | |
9 | paths: | |
10 | - path: / | |
11 | root: ${./public} | |
12 | ''; | |
13 | in | |
14 | { | |
15 | options.myServices.gemini.enable = lib.mkEnableOption "enable Gemini capsule"; | |
16 | config = lib.mkIf config.myServices.gemini.enable { | |
120bcf4d IB |
17 | security.acme.certs.immae.postRun = '' |
18 | systemctl restart gemini.service | |
19 | ''; | |
20 | myServices.chatonsProperties.hostings.gemini = { | |
21 | file.datetime = "2022-08-27T18:00:00"; | |
22 | hosting = { | |
23 | name = "Hébergement Gemini"; | |
24 | description = "Hébergement de capsules Gemini"; | |
25 | type = "INSTANCE"; | |
26 | website = "gemini://immae.eu"; | |
27 | status.level = "OK"; | |
28 | status.description = "OK"; | |
29 | registration.load = "OPEN"; | |
30 | install.type = "PACKAGE"; | |
31 | }; | |
32 | software = { | |
33 | name = "twins"; | |
34 | website = "https://code.rocketnine.space/tslocum/twins"; | |
35 | license.url = "https://code.rocketnine.space/tslocum/twins/src/branch/master/LICENSE"; | |
36 | license.name = "MIT License"; | |
37 | version = pkgs.twins.version; | |
38 | source.url = "https://code.rocketnine.space/tslocum/twins"; | |
39 | }; | |
40 | }; | |
ef118cb3 IB |
41 | networking.firewall.allowedTCPPorts = [ 1965 ]; |
42 | systemd.services.gemini = { | |
43 | description = "Gemini capsule server"; | |
44 | wantedBy = [ "multi-user.target" ]; | |
45 | after = [ "network.target" ]; | |
46 | serviceConfig.ExecStart = "${pkgs.twins}/bin/twins -config ${configFile}"; | |
47 | serviceConfig.Type = "simple"; | |
48 | }; | |
49 | }; | |
50 | } |