nix-config/modules/netbird-client.nix
Renovate Bot 626ab7adfc Update netbird (#10)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [netbirdio/dashboard](https://github.com/netbirdio/dashboard) | minor | `v2.39.0` → `v2.90.3` |
| netbirdio/netbird | minor | `v0.73.2-rootless` → `v0.74.1-rootless` |
| netbirdio/netbird-server | minor | `0.73.2` → `0.74.1` |
| netbirdio/reverse-proxy | minor | `0.73.2` → `0.74.1` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/12) for more information.

---

### Release Notes

<details>
<summary>netbirdio/dashboard (netbirdio/dashboard)</summary>

### [`v2.90.3`](https://github.com/netbirdio/dashboard/releases/tag/v2.90.3)

[Compare Source](https://github.com/netbirdio/dashboard/compare/v2.90.2...v2.90.3)

#### What's Changed

- Show reason for peer login expiration events by [@&#8203;bcmmbaga](https://github.com/bcmmbaga) in [#&#8203;694](https://github.com/netbirdio/dashboard/pull/694)
- Reload nginx after patching CSP header by [@&#8203;pappz](https://github.com/pappz) in [#&#8203;687](https://github.com/netbirdio/dashboard/pull/687)
- Fix peer table page reset when switching kind by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;696](https://github.com/netbirdio/dashboard/pull/696)
- Feature/add provider session by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;695](https://github.com/netbirdio/dashboard/pull/695)
- Add Metrics settings tab with metrics push toggle by [@&#8203;pappz](https://github.com/pappz) in [#&#8203;613](https://github.com/netbirdio/dashboard/pull/613)
- Feature/add skip tls verification by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;697](https://github.com/netbirdio/dashboard/pull/697)

**Full Changelog**: <https://github.com/netbirdio/dashboard/compare/v2.90.2...v2.90.3>

### [`v2.90.2`](https://github.com/netbirdio/dashboard/releases/tag/v2.90.2)

[Compare Source](https://github.com/netbirdio/dashboard/compare/v2.90.1...v2.90.2)

#### What's Changed

- Add Claude provider selector and Bedrock by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;691](https://github.com/netbirdio/dashboard/pull/691)
- Prevent gated useFetchApi hooks from overwriting shared cache entries by [@&#8203;bcmmbaga](https://github.com/bcmmbaga) in [#&#8203;692](https://github.com/netbirdio/dashboard/pull/692)

**Full Changelog**: <https://github.com/netbirdio/dashboard/compare/v2.90.1...v2.90.2>

### [`v2.90.1`](https://github.com/netbirdio/dashboard/releases/tag/v2.90.1)

[Compare Source](https://github.com/netbirdio/dashboard/compare/v2.90.0...v2.90.1)

#### What's Changed

- The empty-state peer card now renders AddPeerDropdown by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;686](https://github.com/netbirdio/dashboard/pull/686)
- Support Vertex keyfile upload and agent config by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;688](https://github.com/netbirdio/dashboard/pull/688)
- Prefill Vertex endpoint by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;689](https://github.com/netbirdio/dashboard/pull/689)

**Full Changelog**: <https://github.com/netbirdio/dashboard/compare/v2.90.0...v2.90.1>

### [`v2.90.0`](https://github.com/netbirdio/dashboard/releases/tag/v2.90.0)

[Compare Source](https://github.com/netbirdio/dashboard/compare/v2.80.0...v2.90.0)

#### What's Changed

- Fix CSP blocking OIDC token endpoint by [@&#8203;maxbrc](https://github.com/maxbrc) in [#&#8203;680](https://github.com/netbirdio/dashboard/pull/680)
- Agent Network by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;684](https://github.com/netbirdio/dashboard/pull/684)

#### New Contributors

- [@&#8203;maxbrc](https://github.com/maxbrc) made their first contribution in [#&#8203;680](https://github.com/netbirdio/dashboard/pull/680)

**Full Changelog**: <https://github.com/netbirdio/dashboard/compare/v2.80.0...v2.90.0>

### [`v2.80.0`](https://github.com/netbirdio/dashboard/releases/tag/v2.80.0)

[Compare Source](https://github.com/netbirdio/dashboard/compare/v2.39.0...v2.80.0)

#### What's Changed

- Add Logout URL to the Identity Provider dialog by [@&#8203;TechHutTV](https://github.com/TechHutTV) in [#&#8203;657](https://github.com/netbirdio/dashboard/pull/657)
- Edit banner to IPv6 kh link by [@&#8203;TechHutTV](https://github.com/TechHutTV) in [#&#8203;662](https://github.com/netbirdio/dashboard/pull/662)
- Insert link to remote jobs documentation by [@&#8203;semp26](https://github.com/semp26) in [#&#8203;664](https://github.com/netbirdio/dashboard/pull/664)
- DNS Zones & Setup modal improvements by [@&#8203;braginini](https://github.com/braginini) in [#&#8203;669](https://github.com/netbirdio/dashboard/pull/669)
- Update banner by [@&#8203;heisbrot](https://github.com/heisbrot) in [#&#8203;672](https://github.com/netbirdio/dashboard/pull/672)
- Update announcements.json by [@&#8203;mlsmaycon](https://github.com/mlsmaycon) in [#&#8203;673](https://github.com/netbirdio/dashboard/pull/673)
- Merge NetBird cloud edition into the dashboard by [@&#8203;mlsmaycon](https://github.com/mlsmaycon) in [#&#8203;674](https://github.com/netbirdio/dashboard/pull/674)
- Restrict cloud/licensed-only API calls in open-source mode by [@&#8203;mlsmaycon](https://github.com/mlsmaycon) in [#&#8203;675](https://github.com/netbirdio/dashboard/pull/675)
- Preserve inactivity expiration on partial peer updates by [@&#8203;bcmmbaga](https://github.com/bcmmbaga) in [#&#8203;676](https://github.com/netbirdio/dashboard/pull/676)

#### New Contributors

- [@&#8203;TechHutTV](https://github.com/TechHutTV) made their first contribution in [#&#8203;657](https://github.com/netbirdio/dashboard/pull/657)
- [@&#8203;semp26](https://github.com/semp26) made their first contribution in [#&#8203;664](https://github.com/netbirdio/dashboard/pull/664)

**Full Changelog**: <https://github.com/netbirdio/dashboard/compare/v2.39.0...v2.80.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjE1MC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: #10
Co-authored-by: Renovate Bot <renovate@jfreudenberger.de>
Co-committed-by: Renovate Bot <renovate@jfreudenberger.de>
2026-07-02 19:40:00 +02:00

102 lines
2.8 KiB
Nix

{
pkgs,
utils,
config,
lib,
...
}:
let
cfg = config.services.netbird-client;
clientConfiguration = lib.types.submodule {
options = {
setupKey = lib.mkOption {
description = "Setup Key for this client";
type = lib.types.nullOr lib.types.str;
default = null;
};
};
};
in {
options.services.netbird-client = {
enable = lib.mkEnableOption "Netbird client, with possiblities for host connection and for docker based connection.";
managementUrl = lib.mkOption {
description = "Management URL of netbird server.";
type = lib.types.str;
};
host = lib.mkOption {
description = "Configuration for host connection";
type = clientConfiguration;
};
docker = lib.mkOption {
description = "Configuration for docker connection";
type = clientConfiguration;
};
dockerSubnet = lib.mkOption {
description = "Second part of ipv4 subnet";
type = lib.types.str;
default = "20";
};
};
config = lib.mkIf cfg.enable {
services.netbird = lib.mkIf (cfg.host.setupKey != null) {
useRoutingFeatures = "both";
clients.wt0 = {
hardened = false;
login = {
enable = true;
setupKeyFile = (pkgs.writeText "setupKey" cfg.host.setupKey).outPath;
};
port = 51820;
environment = {
NB_MANAGEMENT_URL = cfg.managementUrl;
};
};
};
services.resolved.enable = lib.mkIf (cfg.host.setupKey != null) true;
virtualisation.oci-containers.containers = lib.mkIf (cfg.docker.setupKey != null) {
netbird = {
image = "netbirdio/netbird:v0.74.1-rootless@sha256:672e9199fcccfc24520bd0bea09fcd358395906949c1b3b270336612357c9338";
autoStart = true;
hostname = "${config.networking.hostName}-docker";
networks = [
"webproxy"
];
environment = {
NB_MANAGEMENT_URL = cfg.managementUrl;
PEER_NAME = "${config.networking.hostName}-docker";
NB_SETUP_KEY = cfg.docker.setupKey;
};
extraOptions = [
''--mount=type=volume,source=netbird_client_data,target=/var/lib/netbird,volume-driver=local''
];
};
};
systemd.services."docker-netbird" = lib.mkIf (cfg.docker.setupKey != null) {
after = [
"docker-network-webproxy.service"
];
requires = [
"docker-network-webproxy.service"
];
};
systemd.services."docker-network-webproxy" = lib.mkIf (cfg.docker.setupKey != null) {
path = [ pkgs.docker_29 ];
serviceConfig = {
Type = "oneshot";
};
script = ''
docker network inspect webproxy || docker network create webproxy --ipv4 --ipv6 --subnet=172.${cfg.dockerSubnet}.0.0/16 --gateway=172.${cfg.dockerSubnet}.0.1
'';
};
};
}