blob: 432e15560ce4c845a88f5f60cf51ad8028c82528 (
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
|
{self, ...}: {
flake.nixosModules.tailscaleServer = {config, ...}: let
cfg = config.hostOptions.server;
in {
imports = [
self.nixosModules.hostOptions
];
services.tailscale = {
enable = true;
useRoutingFeatures = "server";
extraUpFlags = [
"--login-server=https://headscale.${cfg.domain}"
"--advertise-exit-node"
];
};
};
flake.nixosModules.headscale = {config, ...}: let
cfg = config.hostOptions.server;
in {
imports = [
self.nixosModules.hostOptions
];
services.headscale = {
enable = true;
port = 8085;
settings = {
server_url = "https://headscale.${cfg.domain}";
dns = {
magic_dns = false;
nameservers.global = ["1.1.1.1" "9.9.9.9"];
};
prefixes = {
v4 = "100.64.0.0/10";
v6 = "fd7a:115c:a1e0::/48";
};
};
};
services.nginx.virtualHosts."headscale.${cfg.domain}" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:8085";
proxyWebsockets = true;
extraConfig = ''
proxy_buffering off;
'';
};
};
};
}
|