summary refs log tree commit diff
path: root/host/Spacebar-nginx/containers/spacebar-server/services/spacebar-server.nix
blob: 9a6cdd6a9bbb99fe8994ca478e402ce6a475f962 (plain) (blame)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
{ config, pkgs, lib, spacebar-server, ... }:
let
  services = [
    { name = "api"; description = "Spacebar Server API"; }
    { name = "gateway"; description = "Spacebar Server Gateway"; }
    { name = "cdn"; description = "Spacebar Server CDN"; }
  ];
in
{
  services.rabbitmq.enable = true;

  #systemd.tmpfiles.rules = [  "d /var/lib/spacebar-server 0750 spacebar spacebar" ];
  #users.users.spacebar = {
  #  isSystemUser = true;
  #  group = "spacebar";
  #  home = "/var/lib/spacebar-server";
  #  createHome = true;
  #  shell = "/bin/false";
  #};

  #users.groups.spacebar = {
  #  #isSystemGroup = true;
  #};

  #systemd.services = {
  #  "spacebar-server-api" = {
  #    description = "Spacebar Server API";
  #    wantedBy = [ "multi-user.target" ];
  #    requires = [ "resolvconf.target" "postgresql.service" "rabbitmq.service" ];
  #    serviceConfig = {
  #      ExecStart = "${spacebar-server.packages.${pkgs.system}.default}/bin/start-api";
  #        
  #      WorkingDirectory = "/var/lib/spacebar-server";
  #      StateDirectory = "spacebar";
  #      StateDirectoryMode = "0700";
  #      ProtectSystem = "strict";
  #      ProtectHome = true;
  #      PrivateTmp = true;
  #      NoNewPrivileges = true;
  #      PrivateDevices = true;
  #      Restart = "on-failure";
  #      Environment = [
  #        "DATABASE=postgres://spacebar:spacebar@127.0.0.1/spacebar"
  #        "LOG_REQUESTS='-'"
  #        #"DB_LOGGING='true'"
  #      ];
  #  };
  #  };
  #  "spacebar-server-gateway" = {
  #    wantedBy = [ "multi-user.target" ];
  #    requires = [ "resolvconf.target" "postgresql.service" "rabbitmq.service" "spacebar-server-api.service" ];
  #    serviceConfig = {
  #      ExecStart = ''
  #        ${spacebar-server.packages.${pkgs.system}.default}/bin/start-gateway
  #        '';
  #      #Restart = "never";
  #      User = "spacebar";
  #      WorkingDirectory = "/var/lib/spacebar-server";
  #      Environment = [
  #        "DATABASE=postgres://spacebar:spacebar@127.0.0.1/spacebar"
  #        "LOG_REQUESTS='-'"
  #        #"DB_LOGGING='true'"
  #      ];
  #    };
  #  };
  #  "spacebar-server-cdn" = {
  #    wantedBy = [ "multi-user.target" ];
  #    requires = [ "resolvconf.target" "postgresql.service" "rabbitmq.service" "spacebar-server-api.service" ];
  #    serviceConfig = {
  #      ExecStart = ''
  #        ${spacebar-server.packages.${pkgs.system}.default}/bin/start-cdn
  #        '';
  #      #Restart = "never";
  #      User = "spacebar";
  #      WorkingDirectory = "/var/lib/spacebar-server";
  #      Environment = [
  #        "DATABASE=postgres://spacebar:spacebar@127.0.0.1/spacebar"
  #        "LOG_REQUESTS='-'"
  #        #"DB_LOGGING='true'"
  #      ];
  #    };
  #  };
  #};

  # use some kind of foreach loop to generate the services, with proper casing for descriptions
  # and service names

  systemd.services = lib.attrsets.genAttrs 
    (map (service: "spacebar-server-${service.name}") services) 
    (serviceName: {
      description = serviceName;
      wantedBy = [ "multi-user.target" ];
      requires = [ "postgresql.service" "rabbitmq.service" ] 
        ++ (if serviceName != "spacebar-server-api" then [ "spacebar-server-api.service" ] else []);
      serviceConfig = {
        ExecStart = "${spacebar-server.packages.${pkgs.system}.default}/bin/start-${builtins.substring 16 30 serviceName}";
        WorkingDirectory = "/var/lib/spacebar-server";
        StateDirectory = "spacebar";
        StateDirectoryMode = "0700";
        ProtectSystem = "strict";
        ProtectHome = true;
        PrivateTmp = true;
        NoNewPrivileges = true;
        PrivateDevices = true;
        Restart = "on-failure";
        Environment = [
          "DATABASE=postgres://spacebar:spacebar@127.0.0.1/spacebar"
          "LOG_REQUESTS='-'"
          #"DB_LOGGING='true'"
        ];
      };
    });

  system.stateVersion = "22.11"; # DO NOT EDIT!
}