# NixOS module options All options must be under `services.headplane`. For example: `settings.headscale.config_path` becomes `services.headplane.settings.headscale.config_path`. ## debug _Description:_ Enable debug logging _Type:_ boolean _Default:_ `false` ## enable _Description:_ Whether to enable headplane. _Type:_ boolean _Default:_ `false` _Example:_ `true` ## package _Description:_ The headplane package to use. _Type:_ package _Default:_ `pkgs.headplane` ## settings _Description:_ Headplane configuration options. Generates a YAML config file. See: https://github.com/tale/headplane/blob/main/config.example.yaml _Type:_ submodule _Default:_ `{ }` ## settings.headscale _Description:_ Headscale specific settings for Headplane integration. _Type:_ submodule _Default:_ `{ }` ## settings.headscale.api_key_path _Description:_ Path to a file containing the Headscale API key. Required for OIDC authentication and the Headplane agent. _Type:_ null or absolute path _Default:_ `null` _Example:_ `"config.sops.secrets.headscale_api_key.path"` ## settings.headscale.config_path _Description:_ Path to the Headscale configuration file. This is optional, but HIGHLY recommended for the best experience. If this is read only, Headplane will show your configuration settings in the Web UI, but they cannot be changed. _Type:_ null or absolute path _Default:_ `null` _Example:_ `"/etc/headscale/config.yaml"` ## settings.headscale.config_strict _Description:_ Headplane internally validates the Headscale configuration to ensure that it changes the configuration in a safe way. If you want to disable this validation, set this to false. _Type:_ boolean _Default:_ `true` ## settings.headscale.dns_records_path _Description:_ If you are using `dns.extra_records_path` in your Headscale configuration, you need to set this to the path for Headplane to be able to read the DNS records. Ensure that the file is both readable and writable by the Headplane process. When using this, Headplane will no longer need to automatically restart Headscale for DNS record changes. _Type:_ null or absolute path _Default:_ `null` _Example:_ `"/var/lib/headplane/extra_records.json"` ## settings.headscale.public_url _Description:_ Public URL if differrent. This affects certain parts of the web UI. _Type:_ null or string _Default:_ `null` _Example:_ `"https://headscale.example.com"` ## settings.headscale.tls_cert_path _Description:_ Path to a file containing the TLS certificate. _Type:_ null or absolute path _Default:_ `null` _Example:_ `"config.sops.secrets.tls_cert.path"` ## settings.headscale.url _Description:_ The URL to your Headscale instance. All API requests are routed through this URL. THIS IS NOT the gRPC endpoint, but the HTTP endpoint. IMPORTANT: If you are using TLS this MUST be set to `https://`. _Type:_ string _Default:_ `"http://127.0.0.1:8080"` _Example:_ `"https://headscale.example.com"` ## settings.integration _Description:_ Integration configurations for Headplane to interact with Headscale. _Type:_ submodule _Default:_ `{ }` ## settings.integration.agent _Description:_ Agent configuration for the Headplane agent. _Type:_ submodule _Default:_ `{ }` ## settings.integration.agent.cache_ttl _Description:_ How long to cache agent information (in milliseconds). If you want data to update faster, reduce the TTL, but this will increase the frequency of requests to Headscale. _Type:_ signed integer _Default:_ `180000` ## settings.integration.agent.enabled _Description:_ The Headplane agent periodically syncs node information (version, OS, etc.) from your Tailnet. It auto-generates ephemeral pre-auth keys using headscale.api_key, so no manual key configuration is needed. Requires Headscale 0.28 or newer. _Type:_ boolean _Default:_ `false` ## settings.integration.agent.executable_path _Description:_ Path to the Headplane agent binary. The default is correct if using the NixOS module package. _Type:_ absolute path _Default:_ `"/usr/libexec/headplane/agent"` ## settings.integration.agent.host_name _Description:_ Optionally change the name of the agent in the Tailnet _Type:_ string _Default:_ `"headplane-agent"` ## settings.integration.agent.package _Description:_ The headplane-agent package to use. _Type:_ package _Default:_ `pkgs.headplane-agent` ## settings.integration.agent.work_dir _Description:_ Do not change this unless you are running a custom deployment. The work_dir represents where the agent will store its data to be able to automatically reauthenticate with your Tailnet. It needs to be writable by the user running the Headplane process. _Type:_ absolute path _Default:_ `"/var/lib/headplane/agent"` ## settings.integration.proc _Description:_ Native process integration settings. _Type:_ submodule _Default:_ `{ }` ## settings.integration.proc.enabled _Description:_ Enable "Native" integration that works when Headscale and Headplane are running outside of a container. There is no additional configuration, but you need to ensure that the Headplane process can terminate the Headscale process. _Type:_ boolean _Default:_ `true` ## settings.oidc _Description:_ OIDC Configuration for authentication. _Type:_ submodule _Default:_ `{ }` ## settings.oidc.client_id _Description:_ The client ID for the OIDC client. _Type:_ string _Default:_ `""` _Example:_ `"your-client-id"` ## settings.oidc.client_secret_path _Description:_ Path to a file containing the OIDC client secret. _Type:_ null or absolute path _Default:_ `null` _Example:_ `"config.sops.secrets.oidc_client_secret.path"` ## settings.oidc.disable_api_key_login _Description:_ Whether to disable API key login. _Type:_ boolean _Default:_ `false` ## settings.oidc.headscale_api_key_path _Description:_ DEPRECATED: Use `headscale.api_key_path` instead. Path to a file containing the Headscale API key. _Type:_ null or absolute path _Default:_ `null` _Example:_ `"config.sops.secrets.headscale_api_key.path"` ## settings.oidc.issuer _Description:_ URL to OpenID issuer. _Type:_ string _Default:_ `""` _Example:_ `"https://provider.example.com/issuer-url"` ## settings.oidc.redirect_uri _Description:_ This should point to your publicly accessible URL for your Headplane instance with /admin/oidc/callback. _Type:_ string _Default:_ `""` _Example:_ `"https://headscale.example.com/admin/oidc/callback"` ## settings.oidc.token_endpoint_auth_method _Description:_ The token endpoint authentication method. _Type:_ one of "client_secret_post", "client_secret_basic", "client_secret_jwt" _Default:_ `"client_secret_post"` ## settings.server _Description:_ Server configuration for Headplane web application. _Type:_ submodule _Default:_ `{ }` ## settings.server.cookie_secret_path _Description:_ Path to a file containing the cookie secret. The secret must be exactly 32 characters long. _Type:_ null or absolute path _Default:_ `null` _Example:_ `"config.sops.secrets.headplane_cookie.path"` ## settings.server.cookie_secure _Description:_ Should the cookies only work over HTTPS? Set to false if running via HTTP without a proxy. Recommended to be true in production. _Type:_ boolean _Default:_ `true` ## settings.server.data_path _Description:_ The path to persist Headplane specific data. All data going forward is stored in this directory, including the internal database and any cache related files. Data formats prior to 0.6.1 will automatically be migrated. _Type:_ absolute path _Default:_ `"/var/lib/headplane"` _Example:_ `"/var/lib/headplane"` ## settings.server.host _Description:_ The host address to bind to. _Type:_ string _Default:_ `"127.0.0.1"` _Example:_ `"0.0.0.0"` ## settings.server.port _Description:_ The port to listen on. _Type:_ 16 bit unsigned integer; between 0 and 65535 (both inclusive) _Default:_ `3000`