diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 3faf77fdd05f..bfbf5aa4ccaf 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -18668,6 +18668,12 @@ fingerprint = "F844 80B2 0CA9 D6CC C7F5 2479 A776 D2AD 099E 8BC0"; }]; }; + wexder = { + email = "wexder19@gmail.com"; + github = "wexder"; + githubId = 24979302; + name = "Vladimír Zahradník"; + }; wheelsandmetal = { email = "jakob@schmutz.co.uk"; github = "wheelsandmetal"; diff --git a/nixos/doc/manual/release-notes/rl-2311.section.md b/nixos/doc/manual/release-notes/rl-2311.section.md index 3d9ff866242e..d1bbb5c389a7 100644 --- a/nixos/doc/manual/release-notes/rl-2311.section.md +++ b/nixos/doc/manual/release-notes/rl-2311.section.md @@ -91,6 +91,8 @@ - [ZITADEL](https://zitadel.com), a turnkey identity and access management platform. Available as [services.zitadel](#opt-services.zitadel.enable). +- [netclient](https://github.com/gravitl/netclient), an automated WireGuard® Management Client. Available as [services.netclient](#opt-services.netclient.enable). + ## Backward Incompatibilities {#sec-release-23.11-incompatibilities} - `network-online.target` has been fixed to no longer time out for systems with `networking.useDHCP = true` and `networking.useNetworkd = true`. diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 811b82f28ce1..e94c5d906a6b 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -985,6 +985,7 @@ ./services/networking/ndppd.nix ./services/networking/nebula.nix ./services/networking/netbird.nix + ./services/networking/netclient.nix ./services/networking/networkd-dispatcher.nix ./services/networking/networkmanager.nix ./services/networking/nextdns.nix diff --git a/nixos/modules/services/networking/netclient.nix b/nixos/modules/services/networking/netclient.nix new file mode 100644 index 000000000000..124735fd716a --- /dev/null +++ b/nixos/modules/services/networking/netclient.nix @@ -0,0 +1,27 @@ +{ config, pkgs, lib, ... }: +let + cfg = config.services.netclient; +in +{ + meta.maintainers = with lib.maintainers; [ wexder ]; + + options.services.netclient = { + enable = lib.mkEnableOption (lib.mdDoc "Netclient Daemon"); + package = lib.mkPackageOptionMD pkgs "netclient" { }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + systemd.services.netclient = { + wantedBy = [ "multi-user.target" ]; + after = [ "network-online.target" ]; + description = "Netclient Daemon"; + serviceConfig = { + Type = "simple"; + ExecStart = "${lib.getExe cfg.package} daemon"; + Restart = "on-failure"; + RestartSec = "15s"; + }; + }; + }; +} diff --git a/pkgs/by-name/ne/netclient/package.nix b/pkgs/by-name/ne/netclient/package.nix new file mode 100644 index 000000000000..33d72747be66 --- /dev/null +++ b/pkgs/by-name/ne/netclient/package.nix @@ -0,0 +1,34 @@ +{ buildGoModule +, fetchFromGitHub +, lib +, libX11 +, stdenv +, darwin +}: + +buildGoModule rec { + pname = "netclient"; + version = "0.21.0"; + + src = fetchFromGitHub { + owner = "gravitl"; + repo = "netclient"; + rev = "v${version}"; + hash = "sha256-68/BmVoAFaIg4vgjzhedSBqm6H9VDu3M7JemfPEcpjQ="; + }; + + vendorHash = "sha256-CsW4tW6+INw93A7uXtHeVnxRrE5unHXhm2SOmQkJwYA="; + + buildInputs = lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Cocoa + ++ lib.optional stdenv.isLinux libX11; + + hardeningEnabled = [ "pie" ]; + + meta = with lib; { + description = "Automated WireGuard® Management Client"; + homepage = "https://netmaker.io"; + changelog = "https://github.com/gravitl/netclient/releases/tag/v${version}"; + license = licenses.asl20; + maintainers = with maintainers; [ wexder ]; + }; +}