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!
}
|