mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 04:19:19 -08:00
59 lines
1.6 KiB
Nix
59 lines
1.6 KiB
Nix
{ config, pkgs, lib, root, ... }: with lib; let
|
|
home = config.deploy.targets.home.tf;
|
|
in {
|
|
options = {
|
|
tailnet_uri = mkOption {
|
|
type = types.str;
|
|
};
|
|
tailnet = mkOption {
|
|
type = types.attrsOf (types.submodule ({ name, ... }: {
|
|
options = {
|
|
addresses = {
|
|
ipv4 = mkOption {
|
|
type = types.str;
|
|
};
|
|
ipv6 = mkOption {
|
|
type = types.str;
|
|
};
|
|
};
|
|
tags = mkOption {
|
|
type = types.listOf types.str;
|
|
};
|
|
};
|
|
}));
|
|
};
|
|
};
|
|
config = {
|
|
|
|
tailnet_uri = "inskip.me";
|
|
tailnet = let
|
|
raw = home.resources.tailnet_devices.importAttr "devices";
|
|
devices = mapListToAttrs (elet: nameValuePair (removeSuffix ".${config.tailnet_uri}" elet.name) {
|
|
tags = elet.tags;
|
|
addresses = let
|
|
addresses = elet.addresses;
|
|
ipv4 = head (filter (e: hasInfix "." e) addresses);
|
|
ipv6 = head (filter (e: hasInfix ":" e) addresses);
|
|
in {
|
|
inherit ipv4 ipv6;
|
|
};
|
|
}) raw;
|
|
in devices;
|
|
|
|
runners = {
|
|
lazy = {
|
|
file = ./default.nix;
|
|
args = [ "--show-trace" ];
|
|
};
|
|
};
|
|
|
|
kw.secrets.command =
|
|
let
|
|
bitw = pkgs.writeShellScriptBin "bitw" ''${pkgs.rbw-bitw}/bin/bitw -p gpg://${config.network.nodes.all.${builtins.getEnv "HOME_HOSTNAME"}.kw.secrets.repo.bitw.source} "$@"'';
|
|
in
|
|
"${bitw}/bin/bitw get";
|
|
|
|
deploy.targets.dummy.enable = false;
|
|
_module.args.pkgs = lib.mkDefault pkgs;
|
|
};
|
|
}
|