aboutsummaryrefslogtreecommitdiff
path: root/modules/server/gemini/default.nix
blob: d59f65f0875e273af676e6fffa27a9ecc6299726 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{ config, pkgs, lib, ... }:
{
  services.agate = {
    enable = true;

    hostnames = [ "aethrvmn.gr" ];
    addresses = [ "0.0.0.0:1965" ];
    language = "en";
    contentDir = "/srv/gemini";
  };

  networking.firewall.allowedTCPPorts = [ 1965 ];
  
  users = {
    groups.agate = { };
    users = {
      agate = {
        isSystemUser = true;
        description = "gemini user";
        group = "agate";
        home = "/srv/gemini";
        createHome = true;
        shell = "${pkgs.git}/bin/git-shell";
      };
    };
  };

  systemd = {
    # set service
    services."gemini" = {
      description = "Update Gemini site from repo";

      script = ''
        if [ -d /srv/gemini/.git ]; then
          ${pkgs.git}/bin/git -C /srv/gemini pull
        else
          ${pkgs.git}/bin/git clone https://apo.theke.ml/aethrvmn/gemini.git /srv/gemini 
        fi
      '';

      serviceConfig = {
        Type = "oneshot";
        User = "agate";
      };
    };

    timers."gemini" = {
      description = "Hourly Gemini-site update";
      wantedBy = [ "timers.target" ];

      timerConfig = {
        OnCalendar = "hourly";
        Persistent = true;
      };  
    };
  };
}
Directive (EU) 2019/790, Article 4(3); all rights regarding Text and Data Mining (TDM) are reserved.