mirror of
https://codeberg.org/muon/home.git
synced 2025-12-06 16:17:46 +00:00
62 lines
1.5 KiB
Nix
62 lines
1.5 KiB
Nix
{ pkgs, lib, config, ... }:
|
|
let
|
|
base = "muon.host";
|
|
domain = "head.${base}";
|
|
in {
|
|
options.mods.server.headscale = {
|
|
enable = lib.mkEnableOption {
|
|
default = false;
|
|
description = "enables headscale server";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.mods.server.headscale.enable {
|
|
services = {
|
|
headscale = {
|
|
enable = true;
|
|
port = 8085;
|
|
address = "127.0.0.1";
|
|
settings = {
|
|
dns_config = {
|
|
override_local_dns = true;
|
|
base_domain = "${base}";
|
|
magic_dns = true;
|
|
domains = [ "${domain}" ];
|
|
nameservers = [
|
|
"9.9.9.9"
|
|
];
|
|
};
|
|
server_url = "https://${domain}";
|
|
metrics_listen_addr = "127.0.0.1:8095";
|
|
logtail.enabled = false;
|
|
log.level = "warn";
|
|
ip_prefixes = [
|
|
"100.64.0.0/10"
|
|
];
|
|
};
|
|
};
|
|
|
|
nginx.enable = true;
|
|
nginx.virtualHosts.${domain} = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
locations = {
|
|
"/" = {
|
|
proxyPass = "http://localhost:${toString config.services.headscale.port}";
|
|
proxyWebsockets = true;
|
|
};
|
|
"/metrics" = {
|
|
proxyPass = "http://${config.services.headscale.settings.metrics_listen_addr}/metrics";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
security.acme = {
|
|
acceptTerms = true;
|
|
defaults.email = "acme@muon.host";
|
|
};
|
|
|
|
environment.systemPackages = [ config.services.headscale.package ];
|
|
};
|
|
}
|