You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.1 KiB
Nix
36 lines
1.1 KiB
Nix
1 year ago
|
{ config, lib, ... }@inputs:
|
||
|
with lib;
|
||
|
with import ./lib.nix;
|
||
|
{
|
||
|
options = {
|
||
|
wirenix = {
|
||
|
enable = mkOption {
|
||
|
default = true;
|
||
|
type = with lib.types; bool;
|
||
|
description = ''
|
||
|
Wirenix
|
||
|
'';
|
||
|
};
|
||
|
secretsDir = mkOption {
|
||
|
type = types.path;
|
||
|
description = mdDoc ''
|
||
|
where you want the wireguard secrets stored.
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
config =
|
||
|
let
|
||
|
configurers = defaultConfigurers // config.modules.wirenix.additionalConfigurers;
|
||
|
parsers = defaultParsers // config.modules.wirenix.additionalParsers;
|
||
|
acl = config.modules.wirenix.aclConfig;
|
||
|
parser = parsers."${acl.version}" inputs;
|
||
|
configurer = configurers."${config.modules.wirenix.configurer}" inputs;
|
||
|
nixosConfigForPeer = peerName: builtins.head (builtins.attrValues (
|
||
|
lib.attrsets.filterAttrs (
|
||
|
name: value: (lib.attrsets.attrByPath ["config" "modules" "wirenix" "peerName"] null value) == peerName
|
||
|
) nixosConfigurations));
|
||
|
in
|
||
|
lib.mkIf (config.modules.wirenix.enable)
|
||
|
configurer (parser acl) config.modules.wirenix.peerName;
|
||
|
}
|