tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
nixos/haste-server: add
Maciej Krüger
4 years ago
a1cbf8cf
442ced61
+87
2 changed files
expand all
collapse all
unified
split
nixos
modules
module-list.nix
services
editors
haste.nix
+1
nixos/modules/module-list.nix
···
401
401
./services/display-managers/greetd.nix
402
402
./services/editors/emacs.nix
403
403
./services/editors/infinoted.nix
404
404
+
./services/editors/haste.nix
404
405
./services/finance/odoo.nix
405
406
./services/games/asf.nix
406
407
./services/games/crossfire-server.nix
+86
nixos/modules/services/editors/haste.nix
···
1
1
+
{ config, lib, pkgs, ... }:
2
2
+
3
3
+
with lib;
4
4
+
5
5
+
let
6
6
+
pkg = pkgs.haste-server;
7
7
+
cfg = config.services.haste-server;
8
8
+
9
9
+
format = pkgs.formats.json {};
10
10
+
in
11
11
+
{
12
12
+
options.services.haste-server = {
13
13
+
enable = mkEnableOption "haste-server";
14
14
+
openFirewall = mkEnableOption "firewall passthrough for haste-server";
15
15
+
16
16
+
settings = mkOption {
17
17
+
description = ''
18
18
+
Configuration for haste-server.
19
19
+
For documentation see <link xlink:href="https://github.com/toptal/haste-server#settings">project readme</link>
20
20
+
'';
21
21
+
type = format.type;
22
22
+
};
23
23
+
};
24
24
+
25
25
+
config = mkIf (cfg.enable) {
26
26
+
networking.firewall.allowedTCPPorts = mkIf (cfg.openFirewall) [ cfg.settings.port ];
27
27
+
28
28
+
services.haste-server = {
29
29
+
settings = {
30
30
+
host = mkDefault "::";
31
31
+
port = mkDefault 7777;
32
32
+
33
33
+
keyLength = mkDefault 10;
34
34
+
maxLength = mkDefault 400000;
35
35
+
36
36
+
staticMaxAge = mkDefault 86400;
37
37
+
recompressStaticAssets = mkDefault false;
38
38
+
39
39
+
logging = mkDefault [
40
40
+
{
41
41
+
level = "verbose";
42
42
+
type = "Console";
43
43
+
colorize = true;
44
44
+
}
45
45
+
];
46
46
+
47
47
+
keyGenerator = mkDefault {
48
48
+
type = "phonetic";
49
49
+
};
50
50
+
51
51
+
rateLimits = {
52
52
+
categories = {
53
53
+
normal = {
54
54
+
totalRequests = mkDefault 500;
55
55
+
every = mkDefault 60000;
56
56
+
};
57
57
+
};
58
58
+
};
59
59
+
60
60
+
storage = mkDefault {
61
61
+
type = "file";
62
62
+
};
63
63
+
64
64
+
documents = {
65
65
+
about = mkDefault "${pkg}/share/haste-server/about.md";
66
66
+
};
67
67
+
};
68
68
+
};
69
69
+
70
70
+
systemd.services.haste-server = {
71
71
+
wantedBy = [ "multi-user.target" ];
72
72
+
requires = [ "network.target" ];
73
73
+
after = [ "network.target" ];
74
74
+
75
75
+
serviceConfig = {
76
76
+
User = "haste-server";
77
77
+
DynamicUser = true;
78
78
+
StateDirectory = "haste-server";
79
79
+
WorkingDirectory = "/var/lib/haste-server";
80
80
+
ExecStart = "${pkg}/bin/haste-server ${format.generate "config.json" cfg.settings}";
81
81
+
};
82
82
+
83
83
+
path = with pkgs; [ pkg coreutils ];
84
84
+
};
85
85
+
};
86
86
+
}