36 lines
959 B
Nix
36 lines
959 B
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
cfg = config.hive.wg.client;
|
|
peers = import ./peers.nix {inherit lib;};
|
|
in {
|
|
options.hive.wg.client = {
|
|
enable = lib.mkEnableOption "Enable WireGuard client";
|
|
autoConnect = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = "Automatically connect to the WireGuard server with systemd";
|
|
};
|
|
peer = lib.mkOption {
|
|
type = lib.types.singleLineStr;
|
|
example = "comfy-station";
|
|
description = "The name of the peer defined in peers.nix to incarnate";
|
|
};
|
|
privateKeyFile = lib.mkOption {
|
|
type = lib.types.path;
|
|
description = "Path to the private key file for the WireGuard client";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
networking.wg-quick.interfaces.wg0 = {
|
|
address = peers.clientAddress cfg.peer;
|
|
inherit (cfg) privateKeyFile;
|
|
autostart = cfg.autoConnect;
|
|
peers = peers.forClient cfg.peer;
|
|
};
|
|
};
|
|
}
|