1
1
Fork 1
mirror of https://github.com/oddlama/nix-config.git synced 2025-10-11 07:10:39 +02:00

feat(apps): add wireguard peer selection for use with qr code generation later

This commit is contained in:
oddlama 2023-04-11 17:50:19 +02:00
parent 62e7d4ec91
commit b250a6b1b3
No known key found for this signature in database
GPG key ID: 14EFE510775FE39A
3 changed files with 20 additions and 5 deletions

View file

@ -174,7 +174,7 @@ in {
in { in {
assertions = assertions =
concatMap (netCfg: let concatMap (netCfg: let
inherit netCfg wgName; inherit (netCfg) wgName;
externalPeers = concatMap (n: attrNames nodes.${n}.config.extra.wireguard.networks.${wgName}.externalPeers) netCfg.nodesWithThisNetwork; externalPeers = concatMap (n: attrNames nodes.${n}.config.extra.wireguard.networks.${wgName}.externalPeers) netCfg.nodesWithThisNetwork;
duplicatePeers = duplicates externalPeers; duplicatePeers = duplicates externalPeers;
usedAddresses = usedAddresses =

View file

@ -15,6 +15,7 @@
./format-secrets.nix ./format-secrets.nix
./generate-initrd-keys.nix ./generate-initrd-keys.nix
./generate-wireguard-keys.nix ./generate-wireguard-keys.nix
./show-wireguard-qr.nix
]; ];
in in
builtins.listToAttrs (map (appPath: nameValuePair (removeSuffix ".nix" (builtins.baseNameOf appPath)) (mkApp (import appPath args))) apps) builtins.listToAttrs (map (appPath: nameValuePair (removeSuffix ".nix" (builtins.baseNameOf appPath)) (mkApp (import appPath args))) apps)

View file

@ -3,10 +3,24 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (pkgs.lib) escapeShellArg; inherit
(pkgs.lib)
attrNames
concatMap
concatStringsSep
escapeShellArg
filter
unique
;
nodeNames = attrNames self.nodes;
nodesWithNet = net: filter (n: builtins.hasAttr net self.nodes.${n}.config.extra.wireguard.networks) nodeNames;
wireguardNetworks = unique (concatMap (n: attrNames self.nodes.${n}.config.extra.wireguard.networks) nodeNames);
externalPeersForNet = net: concatMap (n: attrNames self.nodes.${n}.config.extra.wireguard.networks.${net}.externalPeers) (nodesWithNet net);
externalPeers = concatMap (net: map (peer: {inherit net peer;}) (externalPeersForNet net)) wireguardNetworks;
in in
# TODO fzf selection of all external peers pls # TODO generate "classic" config and run qrencode
pkgs.writeShellScript "generate-wireguard-keys" '' pkgs.writeShellScript "show-wireguard-qr" ''
set -euo pipefail set -euo pipefail
echo TODO echo ${concatStringsSep " " (map (x: "${x.net}.${x.peer}") externalPeers)} | fzf
'' ''