Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
106 lines
2.3 KiB
Nix
106 lines
2.3 KiB
Nix
{
|
|
inputs,
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
settingsFormat = pkgs.formats.yaml { };
|
|
headscaleConfig = settingsFormat.generate "headscale-settings.yaml" config.services.headscale.settings;
|
|
in
|
|
{
|
|
imports = [
|
|
./disk-config.nix
|
|
{
|
|
_module.args.disks = [ "/dev/sda" ];
|
|
}
|
|
|
|
inputs.headplane.nixosModules.headplane
|
|
|
|
../common/servers
|
|
];
|
|
|
|
time.timeZone = "Europe/Berlin";
|
|
|
|
networking.hostName = "hosting-01";
|
|
networking.nameservers = [ "8.8.8.8" ];
|
|
networking.firewall = {
|
|
enable = true;
|
|
allowedTCPPorts = [
|
|
80
|
|
443
|
|
];
|
|
};
|
|
|
|
nixpkgs.overlays = [ inputs.headplane.overlays.default ];
|
|
|
|
services.nginx = {
|
|
enable = true;
|
|
recommendedGzipSettings = true;
|
|
recommendedOptimisation = true;
|
|
recommendedProxySettings = true;
|
|
recommendedTlsSettings = true;
|
|
};
|
|
|
|
services.headscale = {
|
|
enable = true;
|
|
address = "0.0.0.0";
|
|
port = 8080;
|
|
settings = {
|
|
server_url = "https://headscale.escapeangle.com";
|
|
dns = {
|
|
base_domain = "tailnet.escapeangle.com";
|
|
};
|
|
};
|
|
};
|
|
|
|
services.nginx.virtualHosts."headscale.escapeangle.com" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://localhost:${toString config.services.headscale.port}";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
|
|
environment.etc."headscale/config.yaml".source = lib.mkForce (
|
|
settingsFormat.generate "headscale-config.yaml" config.services.headscale.settings
|
|
);
|
|
|
|
services.headplane = {
|
|
enable = true;
|
|
agent.enable = false;
|
|
|
|
settings = {
|
|
server = {
|
|
host = "127.0.0.1";
|
|
port = 8081;
|
|
cookie_secret = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; # replaced in env
|
|
cookie_secure = true;
|
|
};
|
|
|
|
headscale = {
|
|
url = "https://headscale.escapeangle.com";
|
|
config_path = "${headscaleConfig}";
|
|
config_strict = true;
|
|
};
|
|
|
|
integration.proc.enabled = true;
|
|
};
|
|
};
|
|
|
|
services.nginx.virtualHosts."headplane.escapeangle.com" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations."/" = {
|
|
proxyPass = "http://127.0.0.1:${toString config.services.headplane.settings.server.port}";
|
|
proxyWebsockets = true;
|
|
};
|
|
};
|
|
|
|
security.acme.defaults.email = "landervandenbulcke@gmail.com";
|
|
security.acme.acceptTerms = true;
|
|
|
|
system.stateVersion = "25.05";
|
|
}
|