diff --git a/config.nix b/config.nix index bd1ac57..15551c2 100644 --- a/config.nix +++ b/config.nix @@ -2,6 +2,11 @@ let var = options.variable; + + my-lib = import ./lib/default.nix { inherit lib; }; + + setNames = lib.mapAttrs (k: v: v // { name = k; }); + in rec { provider = { @@ -13,6 +18,8 @@ in rec { resource = { + hcloud_ssh_key = setNames (lib.mapAttrs (_: v: { public_key = v; }) my-lib.ssh-keys); + }; # Set the variable value in *.tfvars file diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..68c03b1 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,5 @@ +{ lib, ... }: + +{ + ssh-keys = import ./ssh-keys.nix { inherit lib; }; +} diff --git a/lib/ssh-keys.nix b/lib/ssh-keys.nix new file mode 100644 index 0000000..c6402e7 --- /dev/null +++ b/lib/ssh-keys.nix @@ -0,0 +1,25 @@ +{ lib, ... }: + +let + + # "a/b.ext" -> "b" + fileAttrName = path: let + ext = lib.last (lib.splitString "." path); + in lib.removeSuffix ".${ext}" (builtins.baseNameOf path); + + # maps a file to a path + # "a/b" -> "c/d.ext" -> { name = "d"; value = "a/b/c/d.ext"; } + fileAttrInPath = path: name: { + name = fileAttrName name; + value = path + "/${name}"; + }; + + # get an object of files in a directory with a given suffix + # "a/b" -> { "foo" = "a/b/foo.ext"; "bar" = "a/b/bar.ext"; } + dirAttrs = suffix: path: lib.mapAttrs' + (name: _: fileAttrInPath path name) + (lib.filterAttrs + (name: type: lib.hasSuffix suffix name && type == "regular") + (builtins.readDir path)); + + in lib.mapAttrs (_: lib.readFile) (dirAttrs ".pub" ../ssh-keys) diff --git a/ssh-keys/arjan.pub b/ssh-keys/arjan.pub new file mode 100644 index 0000000..854ea33 --- /dev/null +++ b/ssh-keys/arjan.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHg8MUtkmTJ/klyDK3hqCHm8TTSOMqvtxuXaS/+EQRcTb9BaAajcpMDdpsPx9YHt04x4jsQiOdwV/gi0RRxdEf3lD9jjrGeTeb1gFjLeyttDu6zD0LrTa73Ly//ccN+TnFSnwSgJ+0eSzYJAQu3qIqTyKyBaWGMq1iNwlBQ42PnKSYvnz70qU25zCgVfgUohdeSawNYxYPdvKj4jA4NlVLcZScwk7cOTHZ0bBq2D2ksUsmNmPDKLI55xxKbgBT/7q4T2IKBZixKVA8B1meYDSZ/lUzDy+BlQU+EWjSiue62g/W4KnUBeea+0L91E3YLw0m8LPV/I8EvDnQWj24EyZtCneFxz3EuNyPudr61j0Ec95qFY//nH+HtTqxxa1GO02dtFstGWIvKHaMrU4vEYNpfkSDYHEhinAvT+2yJnj02TT4zEe/2S1u3ESh8y8Q+s2w0uiy0lYcslYrLtTLJhdp+7FTefd0P8v1xXlKTGRmxhsrWMg+VqZ78W3T2ncnNlKvvpOsTHaUNYu4nLCgPVdsc9ZcA7SnNXwfJf/M+h/9mi6/SuKQftwUdUbdTScCnftYrsF93/0bMcCVCZes1O/uCTDNJQEN1acNwie6kdXtAelwHip3d4xdgQgHOpxwvibZsQP5EqLJZOolD2rFzBkDoeo4vEjlFwYdZu4QtNAmaQ== arjan \ No newline at end of file diff --git a/ssh-keys/jelle.pub b/ssh-keys/jelle.pub new file mode 100644 index 0000000..66a94db --- /dev/null +++ b/ssh-keys/jelle.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDV2gW4NDLtz5uHd15rwnFXBtOC81aQP2FEaCKrO8xKcngE1stSxSurS459HEUmkR8SOjsIcX6Aq7+2GmoPit6sQOPU95dKvakAftxEmLYGZloeRCkaSC4B+qQhnZsCg4Qywgiq2XeEp6OW5sdDYCXfrITOyKFS90Iogvgtw4v2ZJsOwjP1eDqPQsC/s8/0tejxHElz9x7VVPCaaWJjl3Jqn+PyW9KbVhAqbKKxXPflFwlgMXkTlWyJwyim6j6I9WKzWzUHPlLTY/H/0sWkaHu6PRVK0xlDAmT+ptZPDxSSFmiJdPjv9rFghnaljdnwkoxj56kA71VrSp4ThAAs8TUR jelle@linux \ No newline at end of file diff --git a/ssh-keys/kiara.pub b/ssh-keys/kiara.pub new file mode 100644 index 0000000..32a4030 --- /dev/null +++ b/ssh-keys/kiara.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPGnq7xlBaGBtQckPoTG0RS39Egryb0IwVcOIikR/Lwh kiara \ No newline at end of file diff --git a/ssh-keys/leon.pub b/ssh-keys/leon.pub new file mode 100644 index 0000000..26002c0 --- /dev/null +++ b/ssh-keys/leon.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAydfA9Nd2KgfJeQ4SfUfZCvUOqr1+4wzTrCRoUbTLmnji/z1RfZILtNwpF+wKa4VJ5CDURn1bJCQsGUbsqBzlEU5RcX7q5WC5GTrZgeUnoquN0qbZVbwxS9oAwupccmHCcnefOnQ/DuOmjlN9Vog6R8THSNgXy0dbLlrN04QOf6OojEUE+/j86LLYyxmdQnHR74qN06droC7itxWFcRL5EK5v/tJxTTkbxMBrgKLHNyh8QqXTrlPRXNkAO9iC7ELdO8ozemySU+avpXh3PrcYfrqCHpjNfaKudVcgXA9AhQGnBvKx1hjSv4YUzWlpJqIPM9MsjoOb7y/WktXfxxyiNw== leon \ No newline at end of file diff --git a/ssh-keys/paul.pub b/ssh-keys/paul.pub new file mode 100644 index 0000000..c7f398a --- /dev/null +++ b/ssh-keys/paul.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDAzSGmR9SbBKmQEyyzx202O+VyBF5dfKwgRDSo9JWWS6bL+4QDIUh8v4b4Ab7k0czcF7DkAHUQAfBd4HUpLLlqOKdN97zAh4eFqpGOXRmVgn4rD/64FIhkimAASMknBU6oyG9NQWkac35qXZn2FesPDoS7r1URklnN/jDeUW+k5qbZeNG0ppMT826tIYk9nFkFWar77qmO/tCwpB/0oP4Il0UwWRciK9cXV3Zkpyi0Uxw6hZP+3ThZLxTmeqnvqu3XNUCFjVUk4KjZVeedrg6TPfe9G2y2AJfUapSsy8xxJsYqop58vk/MHbyUF8sUw8Q/FRcm+roEPCXKin7Wbs0mwS8nMCghNdQDjbO5uqv4Oeh4A1W7SOxANhxjQhvzCbNcQZ3cRqlr2EE3N8Ev4FbtrjDdh0OxntWw2B1q/xDgHdAaOb08a2GitB2fZjatMe5uPWem5xgj+fEUHZCi8OGw0u/vg80VUYUuSE4pE3ux/hRiO5UqVcnbLGfFH/1tc5UlhpLAN474Y63489V6E9waG6TTYgLpO5qtjjwkFUVrX/LP3YhEvkuyGNmMNX9exIq9QRepPXmCe6sMC3ejyIIanUaeCOdljmE+ubG/Skij9ma6rfH6ZCSa78Dptl6eA/JHI/8ifo9r8RO3Jx3Lwj83vyevoVfgufVuw05QDcFAeQ== paul \ No newline at end of file diff --git a/ssh-keys/tabe.pub b/ssh-keys/tabe.pub new file mode 100644 index 0000000..896f765 --- /dev/null +++ b/ssh-keys/tabe.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAsrDtszKdnHMgGM9Kx+XDDBRF07+zw65WNroMLIQqPy tabe \ No newline at end of file diff --git a/ssh-keys/virjanand.pub b/ssh-keys/virjanand.pub new file mode 100644 index 0000000..c5d1d6f --- /dev/null +++ b/ssh-keys/virjanand.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2IEz4UT3jx6b35EOnGdZyAId4wX833u2QC87NHWWQoKWVp5UWbJXWsdn0VtpaRohTENycnW/nSE5tdYftVOejEUKCVq828ot1RJeR/Oynlro2fxCFyBySXSLROjRM6v1rtr8vHMDwXmln2pDnNmjnmxWbRD6aWV46bkYJMNub2wEBCqVNAhMqjKzcPWZmFgJddE8tWdOyd/1r3e36aHD2VwgV6KPUo3xQfSsSiYwfcCOWoOnebw4MHxaWKARWeCSJD43ZpGKSm6s3cCMMQVxNC6PdNLrFr94mJ9Pu2vQG141tBfDBNUpbwnDNCaJdskja01VFi0Z2gGcXDCL2gP795WKiWX62ZHWvUEsNbHQaM/xNUNBf5LT0jEWgYxmWWmG6o52vO+c4V5QbT4Ozha9tIP08WSkoZYJEL1S6tY9166puZzO6+iqRTAh8EwP0PwqLuzRgRaX9EWNlhe66Uc1Rrd3nU4FRnfFve+AKc213Uxde0EdrCaaaW0+KgJtKzU0= virjanand@Lenovo \ No newline at end of file