nixos/headscale: add option to retrieve generated config file (#465448)

This commit is contained in:
Sandro
2026-01-20 13:10:13 +00:00
committed by GitHub
@@ -19,8 +19,6 @@ let
};
settingsFormat = pkgs.formats.yaml { };
configFile = settingsFormat.generate "headscale.yaml" cfg.settings;
cliConfigFile = settingsFormat.generate "headscale.yaml" cliConfig;
assertRemovedOption = option: message: {
assertion = !lib.hasAttrByPath option cfg;
@@ -35,6 +33,16 @@ in
package = lib.mkPackageOption pkgs "headscale" { };
configFile = lib.mkOption {
type = lib.types.path;
readOnly = true;
default = settingsFormat.generate "headscale.yaml" cfg.settings;
defaultText = lib.literalExpression ''(pkgs.formats.yaml { }).generate "headscale.yaml" config.services.headscale.settings'';
description = ''
Path to the configuration file of headscale.
'';
};
user = lib.mkOption {
default = "headscale";
type = lib.types.str;
@@ -621,7 +629,7 @@ in
environment = {
# Headscale CLI needs a minimal config to be able to locate the unix socket
# to talk to the server instance.
etc."headscale/config.yaml".source = cliConfigFile;
etc."headscale/config.yaml".source = settingsFormat.generate "headscale.yaml" cliConfig;
systemPackages = [ cfg.package ];
};
@@ -646,7 +654,7 @@ in
export HEADSCALE_DATABASE_POSTGRES_PASS="$(head -n1 ${lib.escapeShellArg cfg.settings.database.postgres.password_file})"
''}
exec ${lib.getExe cfg.package} serve --config ${configFile}
exec ${lib.getExe cfg.package} serve --config ${cfg.configFile}
'';
serviceConfig =