diff --git a/README.md b/README.md index ea7dca45..35a1e0c2 100644 --- a/README.md +++ b/README.md @@ -79,20 +79,6 @@ two scripts that can be run for deployment via ssh. target? If so, use `nix copy` to transfer where `/run/current-system` points to to your build machine. -## Remote deployment from non-NixOS - -A shell script that copies the current working tree, and runs -`nixos-rebuild switch` on the target: - -```shell -./deploy-flake.sh hydra.hq.c3d2.de -``` - -It cannot not lookup hostnames in `host-registry.nix`. To avoid -deploying the wrong container on the unrelated DNS records, the script -always uses the hostname that is already configured on the target -system. - ## Checking for updates ```shell diff --git a/flake.lock b/flake.lock index 7ae8969a..b53e1feb 100644 --- a/flake.lock +++ b/flake.lock @@ -835,11 +835,11 @@ ] }, "locked": { - "lastModified": 1671477548, - "narHash": "sha256-ltR+TFw1oThBz8QSjk6ucCC7t/qWbzoy8jHm570KtBg=", + "lastModified": 1671504518, + "narHash": "sha256-me6+d61Z0ze22kS7A/xLGuUzDA1VqM9/Dm/jBjl7z+w=", "ref": "refs/heads/master", - "rev": "0e1ccff6abb02b3fa8f12aef8f36850e85a270d1", - "revCount": 1696, + "rev": "465e824add3c204c24b01742b5487a424430c105", + "revCount": 1699, "type": "git", "url": "https://gitea.c3d2.de/zentralwerk/network.git" }, diff --git a/flake.nix b/flake.nix index fda40f3d..f98486c7 100644 --- a/flake.nix +++ b/flake.nix @@ -209,14 +209,10 @@ ) result (builtins.attrNames hosts6."${ctx}") ) {} (builtins.attrNames hosts6) ); - zwHostRegistry = { - hosts = - builtins.foldl' (result: net: - lib.recursiveUpdate result (extractZwHosts zentralwerk.lib.config.site.net."${net}") - ) {} [ "core" "cluster" "c3d2" "serv" "flpk" "pub" ]; - }; - extraHostRegistry.hosts = import ./host-registry.nix; - hostRegistry = lib.recursiveUpdate zwHostRegistry extraHostRegistry; + hostRegistry.hosts = + builtins.foldl' (result: net: + lib.recursiveUpdate result (extractZwHosts zentralwerk.lib.config.site.net."${net}") + ) {} [ "core" "cluster" "c3d2" "serv" "flpk" "pub" ]; # Our custom NixOS builder nixosSystem' = @@ -757,8 +753,7 @@ ./modules/monitoring.nix ./modules/stats.nix ]; - c3d2.hosts = hostRegistry.hosts; - c3d2.users = import ./users.nix; + c3d2.sshKeys = (import ./ssh-public-keys.nix).users; c3d2.nncp.neigh = import ./modules/nncp-relays.nix; }; cluster = ./modules/cluster; diff --git a/host-registry.nix b/host-registry.nix deleted file mode 100644 index df9c42f9..00000000 --- a/host-registry.nix +++ /dev/null @@ -1,80 +0,0 @@ -# Registry of C3D2 machines. - -{ - dacbert = { - serial = "3c271952"; - ip4 = "172.22.99.203"; - }; - - riscbert.ip4 = "riscbert.c3d2.zentralwerk.org"; - - dn42 = { - ip4 = "172.22.99.253"; - }; - - freifunk = { - ip4 = "172.20.72.40"; - publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMFbxHGfBMBjjior1FNRub56O62K++HVnqUH67BeKD7d"; - }; - - gitea.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO8Q7kGF3Hh6HvmlSIgZOjgoIZRpyxKvMBTcPWHlecuh"; - - glotzbert = { - ether = "ec:a8:6b:fe:b4:cb"; - publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAnEWn/8CKIiCtehh6Ha3XUQqjODj0ygyo3aGAsFWgfG"; - wol = true; - ip4 = "glotzbert.hq.c3d2.de"; - }; - - grafana = { - ip6 = "2a00:8180:2c00:282:4042:fbff:fe4b:2de8"; - publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPFB9fo01jzr2upEBEXiR7sSmeQoq9ll5Cf5/hjq5e4Y"; - }; - - mucbot = { - ip4 = "172.20.73.27"; - ip6 = "2a00:8180:2c00:282:28db:dff:fe6b:e89a"; - }; - - matemat = { - ip4 = "172.20.73.21"; - ip6 = "2a00:8180:2c00:282:f82b:1bff:fedc:8572"; - publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBa07c4NnU1TGX1SMNea9e1d4nMtc0OS4gJLmTA3g/fe"; - }; - - mpd-index = { }; - - nfs = { }; - - nncp = { - ip6 = "2a00:8180:2c00:223:dcec:9aff:fe6f:3f63"; - publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMQhxaeElmxO1UgaI/+qr+g13OFeY9qtJVxznNN+xs/e"; - }; - - public-access-proxy = { - ip4 = "172.20.73.45"; - ip6 = "2a00:8180:2c00:282:1024:5fff:febd:9be7"; - }; - - pulsebert = { - ether = "dc:a6:32:31:b6:32"; - publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFQCsDss9Gq3/eTKqpgEwXK+nhnuARS4/kHqF2+laGnp"; - ip4 = "172.22.99.208"; - }; - - samba = { }; - - scrape = { - ip4 = "172.20.73.32"; - ip6 = "2a00:8180:2c00:282:e073:50ff:fef5:eb6e"; - publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEGxPgg6nswoij1fBzDPDu6h4+d458XL2+dBxAx9KVOh"; - }; - - schalter.ip4 = "schalter.hq.c3d2.de"; - - # Hack - rpi-netboot.ip4 = "127.0.0.1"; - - server9.ip6 = "server9.cluster.zentralwerk.org"; - server10.ip6 = "server10.cluster.zentralwerk.org"; -} diff --git a/hosts/leon/default.nix b/hosts/leon/default.nix index 147c93a9..ec0dfb9d 100644 --- a/hosts/leon/default.nix +++ b/hosts/leon/default.nix @@ -52,7 +52,7 @@ # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ - wget vim python3Full python310Packages.pip python310Packages.flask nmap htop wireguard-tools docker-compose + wget vim python3Full python310Packages.pip python310Packages.flask nmap htop wireguard-tools docker-compose ]; virtualisation.docker.enable = true; @@ -61,8 +61,8 @@ isNormalUser = true; extraGroups = [ "wheel" "docker" ]; createHome = true; - openssh.authorizedKeys.keys = with import ../../users.nix; - leon.sshKeys; + openssh.authorizedKeys.keys = with (import ../../ssh-public-keys.nix).users; + leon; }; networking.nameservers = ["172.20.73.8" "9.9.9.9"]; networking.firewall = { diff --git a/hosts/leoncloud/default.nix b/hosts/leoncloud/default.nix index 41e3f26c..afd631e9 100644 --- a/hosts/leoncloud/default.nix +++ b/hosts/leoncloud/default.nix @@ -39,8 +39,8 @@ isNormalUser = true; extraGroups = [ "wheel" "docker" ]; createHome = true; - openssh.authorizedKeys.keys = with import ../../users.nix; - leon.sshKeys; + openssh.authorizedKeys.keys = with (import ../../ssh-public-keys.nix).users; + leon; }; diff --git a/hosts/nfsroot/nfs.nix b/hosts/nfsroot/nfs.nix index b5467f1b..806a05c1 100644 --- a/hosts/nfsroot/nfs.nix +++ b/hosts/nfsroot/nfs.nix @@ -1,4 +1,4 @@ -{ hostRegistry, lib, ... }: +{ lib, zentralwerk, ... }: { # share /nix/store via NFS read-only services.nfs.server = { @@ -30,7 +30,7 @@ /var/lib/nfsroot/dacbert ${ lib.concatMapStringsSep " " (subnet: "${subnet}(${opts "rw" 2})" - ) [ "${hostRegistry.hosts.dacbert.ip4}/32" ] + ) [ "${zentralwerk.lib.config.site.net-combined.hosts4.dacbert}/32" ] } /var/lib/nfsroot/riscbert ${ lib.concatMapStringsSep " " (subnet: diff --git a/hosts/nfsroot/tftp.nix b/hosts/nfsroot/tftp.nix index c70003d7..c6f9e5d6 100644 --- a/hosts/nfsroot/tftp.nix +++ b/hosts/nfsroot/tftp.nix @@ -1,46 +1,35 @@ { tftproots, hostRegistry, lib, pkgs, ... }: -let - netbootxyzVersion = "2.0.60"; - netbootxyz_efi = pkgs.fetchurl { - url = "https://github.com/netbootxyz/netboot.xyz/releases/download/${netbootxyzVersion}/netboot.xyz.efi"; - sha256 = "1k9i81iw6lhs1h8qy8yapasqcl31yxl2jxn52ls5anvm477650qk"; - }; - netbootxyz_kpxe = pkgs.fetchurl { - url = "https://github.com/netbootxyz/netboot.xyz/releases/download/${netbootxyzVersion}/netboot.xyz.kpxe"; - sha256 = "1jr8qwkkj3ccvhdw98fakj07md0nkswy2mlg1rdhcnqzhas7qbj3"; - }; - tftpRoot = pkgs.runCommand "tftproot" {} '' - mkdir $out - # PXE for PC - ln -s ${netbootxyz_efi} $out/netboot.xyz.efi - ln -s ${netbootxyz_kpxe} $out/netboot.xyz.kpxe - - # generic boot files for pis - cp -sr ${tftproots.rpi-netboot-tftproot}/* $out/ - - # dacbert - ln -s /var/lib/nfsroot/dacbert/boot $out/${hostRegistry.hosts.dacbert.serial} - - # boot files for specific pis by serial number subdirectories - ${lib.concatMapStrings (host: '' - if ! [ -L $out/${hostRegistry.hosts.${host}.serial} ]; then - ln -s ${tftproots."${host}-tftproot"} $out/${hostRegistry.hosts.${host}.serial} - fi - '') ( - builtins.attrNames ( - lib.filterAttrs (_: { serial ? null, ... }: serial != null) - hostRegistry.hosts - ) - )} - ''; -in { networking.firewall.enable = false; # raspberrypi boot services.atftpd = { enable = true; - root = tftpRoot; + root = + let + netbootxyzVersion = "2.0.65"; + netbootxyz_efi = pkgs.fetchurl { + url = "https://github.com/netbootxyz/netboot.xyz/releases/download/${netbootxyzVersion}/netboot.xyz.efi"; + sha256 = "1k9i82iw6lhs1h8qy8yapasqcl31yxl2jxn52ls5anvm477650qk"; + }; + netbootxyz_kpxe = pkgs.fetchurl { + url = "https://github.com/netbootxyz/netboot.xyz/releases/download/${netbootxyzVersion}/netboot.xyz.kpxe"; + sha256 = "1jr8qwkkj4ccvhdw98fakj07md0nkswy2mlg1rdhcnqzhas7qbj3"; + }; + in + pkgs.runCommand "tftproot" { } '' + mkdir $out + + # PXE for PC + ln -s ${netbootxyz_efi} $out/netboot.xyz.efi + ln -s ${netbootxyz_kpxe} $out/netboot.xyz.kpxe + + # generic boot files for pis + cp -sr ${tftproots.rpi-netboot-tftproot}/* $out/ + + # dacbert + ln -s /var/lib/nfsroot/dacbert/boot $out/3c271952 + ''; }; } diff --git a/modules/c3d2.nix b/modules/c3d2.nix index 0523ccd3..5bce529e 100644 --- a/modules/c3d2.nix +++ b/modules/c3d2.nix @@ -81,41 +81,6 @@ in }; }; - hosts = - mkOption { - type = types.attrsOf (types.submodule { - options = { - ether = mkOption { - type = with types; nullOr str; - default = null; - }; - ip4 = mkOption { - type = with types; nullOr str; - default = null; - }; - ip6 = mkOption { - type = with types; nullOr str; - default = null; - }; - publicKey = mkOption { - type = with types; nullOr str; - default = null; - }; - wol = mkOption { - type = types.bool; - default = false; - }; - serial = mkOption { - type = with types; nullOr str; - default = null; - description = '' - Hardware serial number to help identification when netbooting. - ''; - }; - }; - }); - }; - nncp = { neigh = mkOption { type = with types; attrsOf neighMod; @@ -139,23 +104,15 @@ in }; }; - users = mkOption { - type = types.attrsOf (types.submodule { - options.sshKeys = mkOption { - type = with types; listOf str; - default = [ ]; - }; - }); + sshKeys = mkOption { + type = with types; attrsOf (listOf str); + default = [ ]; }; }; config = let - adminKeys = with builtins; lib.lists.flatten ( - map - (getAttr "sshKeys") - (attrValues cfg.users) - ); + adminKeys = with builtins; lib.lists.flatten (attrValues cfg.sshKeys); mkIfIsInHq = x: lib.mkIf cfg.isInHq (lib.mkDefault x); in { @@ -248,50 +205,6 @@ in assertion = cfg.isInHq -> (config.users.users.root.password == null); message = "Root passwords not allowed in HQ"; } - { - assertion = cfg.isInHq -> builtins.hasAttr config.networking.hostName cfg.hosts; - message = "${config.networking.hostName} is not registered in ${toString ../host-registry.nix}"; - } - ( - # Check for host registry address collisions - let - getAddrHosts = key: - builtins.foldl' - (result: host: - if cfg.hosts.${host}.${key} != null - then - let - addr = cfg.hosts."${host}"."${key}"; - in - if result ? "${addr}" - then result // { - "${addr}" = result."${addr}" ++ [ host ]; - } - else result // { - "${addr}" = [ host ]; - } - else result - ) - { } - (builtins.attrNames cfg.hosts); - dupHosts = - builtins.concatMap - (hosts: - if builtins.length hosts == 1 - then [ ] - else hosts - ) - ( - builtins.attrValues ( - getAddrHosts "ip4" // getAddrHosts "ip6" - ) - ); - in - { - assertion = dupHosts == [ ]; - message = "Hosts have duplicate addresses: ${lib.concatStringsSep " " dupHosts}"; - } - ) ]; boot.cleanTmpDir = true; @@ -406,35 +319,28 @@ in programs = { fzf.keybindings = true; - ssh.knownHosts = with builtins; + ssh.knownHosts = let - intersectKeys = intersectAttrs { - publicKey = null; - publicKeyFile = null; - }; + hosts = (import ../ssh-public-keys.nix).hosts; list = map - (name: - let - host = getAttr name cfg.hosts; - sshAttrs = intersectKeys host; - in - if sshAttrs == { } then - null - else { - inherit name; - value = - let ip6 = if host.ip6 != null then host.ip6 else toHqPrivateAddress name; - in - { - publicKey = null; - publicKeyFile = null; - hostNames = [ ip6 "${name}.hq.c3d2.de" name ]; - } // sshAttrs; + (name: { + inherit name; + value = + let + ip6 = if zentralwerk.lib.config.site.net-combined.hosts6 ? name then + zentralwerk.lib.config.site.net.hosts6.${name} + else + toHqPrivateAddress name; + in + { + publicKey = lib.head (lib.getAttr name hosts); + hostNames = [ ip6 "${name}.hq.c3d2.de" name ]; + }; }) - (builtins.attrNames cfg.hosts); - keyedHosts = filter (x: x.value.publicKey != null || x.value.publicKeyFile != null) list; + (builtins.attrNames hosts); + keyedHosts = lib.filter (x: x.value.publicKey != null || x.value.publicKeyFile != null) list; in - listToAttrs keyedHosts; + lib.listToAttrs keyedHosts; vim.defaultEditor = true; }; diff --git a/modules/cluster/default.nix b/modules/cluster/default.nix index f18b7101..229e5f2b 100644 --- a/modules/cluster/default.nix +++ b/modules/cluster/default.nix @@ -55,9 +55,9 @@ in { }; users.leon = { uid = 1002; - sshKeys = with import ../../users.nix; - leon.sshKeys ++ - astro.sshKeys; + sshKeys = with (import ../../ssh-public-keys.nix).users; + leon ++ + astro; }; deploy.customizationModule = ./deployment.nix; diff --git a/packages.nix b/packages.nix index e6601039..80ebf7f4 100644 --- a/packages.nix +++ b/packages.nix @@ -91,19 +91,6 @@ lib.attrsets.mapAttrs ''; } // - - builtins.foldl' - (result: host: result // { - # TODO: check if the ethernet address is reachable and if not, - # execute wol on a machine in HQ. - "${host}-wake" = pkgs.writeScriptBin "${host}-wake" '' - #!${pkgs.runtimeShell} - exec ${pkgs.wol}/bin/wol ${hostRegistry.hosts."${host}".ether} - ''; - }) - { } - (builtins.attrNames (lib.filterAttrs (_: { wol ? false, ... }: wol) hostRegistry.hosts)) // - builtins.foldl' (result: name: let diff --git a/ssh-public-keys.nix b/ssh-public-keys.nix new file mode 100644 index 00000000..8fcb6299 --- /dev/null +++ b/ssh-public-keys.nix @@ -0,0 +1,83 @@ +{ + # Please use ed25519 keys! + + users = { + antrares = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDC6Io8mHskJhkUh+vaSo95pi1E/gAoesQ0v+s+7DCTgjpOkB+W6vdJ8U6rblFxrETaWFAIVfkg+I/ZYvNWqCAxu1iWXaZ3IEK2ZiP5Vg0HevAP0ratfIHw50V8wfsyA8/lLVGdpX76xqexdY3G1SYZUcedq6AqWx6FpyoKGVOL2+jlJhmxCoEYfOJe6HbTi02UtAw1qavaD2acvuLksHOiwRAq1+ijPo/OmU3LmaErheceiPC97Wn4H/a98HdnWXJ3AXZCpPzp784/gUxOd/fvKRQPv0Lza9dytmpkAVc9efLMAQZm60w9InpIY0VxJRu2iFDc6msMF/iJp1UXSJfk4hTxUvXL8rPXc4GYKDSQlWO4UXoKd2gZEmCdcsIN/re6VR1lJWcm4eKxI9zJAQRZDrYHZP3ALBJrBY+7pJUHGSB+jCdZ73zkvkiNWUHZ9Wwp4RvdFoCR9qT+AoDU2SMiBMn8/hNMZRUs6RKjUzzn2vhCbZh19QIDxivaFg3DOKq7CCI3XNR3M781MFdmeTXKBLnv2YEVXy5XDIMvucQaZIUoD14fSF2wnncuP9h0gs2H1zG7nQfMagGpE+ro56FO3rBQqfRzz/U528yuq8uf/6TD9u3jTu7ngZ0YpDvAwAh8yG3b2KGFbrcYc3N1zEQOz7IqKixmIt/f3VOOjQ3Yww== antrares@c3d2.de" + ]; + astro = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGJJTSJdpDh82486uPiMhhyhnci4tScp5uUe7156MBC8 astro" + ]; + emery = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqAXBEROEfldkHdUbF3TinBhfeX5l4DQ/5MAOhLh09avqCqcHY2FanZN+qmWpD695UZ71Cl+XF6Bj0KO7Rt4SAemvkEDPMBoidkt+ZjLsdnb8GVvbDhu/62JnqW9meYTN5GcjfmKMPDtKFbgSx9PPcjsDaO6LI/GWeyTz+EYQqwTdc7TKffjLXp6bREYLf0oKIBTvW9/oPCBI7ywYmyBaadFKrYSnujJbMejH91L+JN2fJoxjjhsGcRR78ottbjz4q6JxYjt9CG5oa7Lm60xdZkiiA3c4dMuHU9+EWGshjBKL1Fb9BafeAKhHobcs7UG8IVlqHRJC5VAGQlmus/fNagAArz9PnGW4MAOgg+yLjQJLLKqePBMsAsMHZ9XT+sqPyJfcai5dWynGXFP1B63C/oosVMkeZAlBIwDz/CmufpKBCJZXCfFoC3PotWsH/JT3ir/RSdtVHQ169CEgm+AUd7gjBuRwn6j2eBHcYkn0nCbQ93KLPlnYCLXzjByGved8= emery@fuji" + ]; + j03 = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDW+YfsFtRz1h/0ubcKU+LyGfxH505yUkbWa5VtRFNWF2fjTAYGj6o5M4dt+fv1h370HXvvOBtt8sIlWQgMsD10+9mvjdXWhTcpnYPx4yWuyEERE1/1BhItrog6XJKAedbCDpQQ+POoewouiHWVAUfFByPj5RXuE8zKUeIEkGev/QKrKTLnTcS8zFs/yrokf1qYYR571B3U8IPDjpV/Y1GieG3MSNaefIMCwAAup1gPkUA0XZ4A1L7NdEiUEHlceKVu9eYiWUM+wDRunBXnLHubeGyP8KmBA7PNKgml3WWRNTZjqNQk4u9Bl+Qea5eCkD8KI257EqgXYXy0QBWNyF8X j03@l302" + ]; + laalsaas = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEhcrBEpbCOM4KTVqjvuEOAcKOPScQ7U4TsNJzzrQW/k laalsaas" + ]; + marenz = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDixJ6x0QnSk/ebIJ9zlsRM5olZbqrxDaIt0QQmZOuAbbz441SVW+/0/7ks80GMIMxzUy5YpNvrkY+6q/dZVvNybZLm/csdoFB2soOI/F1NUOppM+r2f33db/5ae3iaun/xBOW/D5lQTbm6IfrYjN9z3gW6tTYFPauZyctizZz5P1egwtCrAnMti8aBE3G+lGXVIVbjsjYruqgSN86WM0YM9HH9XB8Kd/TDCI/j9prXFkoj9EuzOQtIDNRA4Asmi08ZmoVKqadbuZAXoYEngPe2nigiiBoV/5fyyWIJSliWPZ8YDXk8X6pRJaOgZyc6mmot0/BLJo+DkhoUDA7wp3wr cardno:000609614306" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6edpEvI6/0IBBolm3fX67U7UhA42hBVXPcN2hrTe9DiaRTMC1EnsgHSLYAuV1Ltu9gkDxHZ4aTpa69La7C7I0WPAhzXWAE1BNl2/93CETAcZoum2IYl9CZNGFG5D2Uxd8lnyZH9WtgN5WYLaKm/xFSVclYwbnYtTjI2T9mYmrrDf4bwvvjg6p6KBQUgaotwC+qyADGTJjfSiIsYU8cJhA4XROudmiKa6LAlw0VrkgQoITRYoWvmrdHMgzeCJa5UvKGxyGRqGcPB7wVFQpv2uxJVtCjb5Uhk8ZHzbc/rANBXwCgMr9tmyKDsO9imtcucQXZT7O06mkD5OYCVSdtVsx cardno:000610670724" + ]; + nek0 = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILpLQaRn6wzdyU5f1MZKYgL3A9t0H/ELyZHEMK0e2I+k nek0@madness" + ]; + oxa = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCou/7YU2kbeWbZv/F3kjWJLyLeZ5SGGMNr03rWjqZcliJCqEZGO4gz7jdizg/h+j7YWTV3Gn+03LY+tlfhuI7Okxe1YLphuPb4qb38QUprpdg9QTdREGUUpKeaXUOXASoC5EHAkx5GYcQ9uZAx70ZHdggwNvQOVcOfbSIv+MPTaEq4MTwf/Y5MhFvCUrQecTvaoukAPS3PEOWptz5hDDH7jjiJmDwHeICMhHK9YvesFjIsc/iQHScCDWBg+WbQAeLYSbJkmnzFz/7jbdF34Wmz/7FlUiOqqzkZ5Ykr78ae4NgbSz09QjkZ/W0wVIH+UAVHn3OQ+7aRukkve9w48lEb1XJvMo3Y1sGRY6AUOHw0B4xa9ZgXQiuAH4ExjaDSArNkUWjQrKkUvyl30j7t6HRA2Y+W5BzodYKO/JBGqaGneTvlXV2e7lFP2kmnf17dnkJmwTi2p0CQJrpsnifuj5gNDA/qZkXPK5DOPe+asW2Vc2panSbXosZG9Gk20JeahZ54gVn2UvRVk41GhQdCAuVWeuXF9+rtSyjtx2NSrQLIyi/59n6STL/hS1135wrEifP+xTCoI+8yxTB8BSd5JSQ9GeUGkevZp9asmwKOA/WkTzsESECbCrbgOstTCSsKPfQITLu45zIrLHn9cLjrwby06mNhp2B28GlAmvcDBC95NQ== mail@oxapentane.com" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP6xE2ey0C8XXfvniiiHiqXsCC277jKI9RXEA+s2LQLUI5zl7v350i3Oa8H3NCcPj39lfMreqE6ncxcOhqYyzahPrrMkOqgbPAoRvq8H3ophLK+56O3xdHoKwLBwRD1yoGACjqG4UTiTrmnN2ateENgYcnTEY1e4vDw1qMj1drUXCsZ/6mkBBmHJiFfCaR4yCMt1r4gGi/dAC7ifnBP3oSyV/lJEwPxYYkGlbOBIvX/7Ar98pJS6xYPB3jHs9gwyNNON63d0fNYrwBojXPPCnGGaRZNOkBTzex3zZYp12ThINQ2xl8tRp9D8qpZ7vrLjhTD6AXkOBRzmDj+NsCeEaeTuWajqUM93iKncYUI+JxR1t7q8gA2pBMFzLesMXnx7R+5Kw7QDtSJM7a4GMIfsocPwf64BH6rzxEz68rXFE3P+J77PPM9CuaYw90JXHo3z220zYw2nMQ/1qjATVZw/hiVrLmQMVfmFJIufnGjTBs2sy3IoNyzvYm/oDeNNg1cdSV9gyyRKZhK08fxjXN5GSf9vZkfZa9tHtqaZ99HI40GQBHUVx1K2/NQJY8TVTSA+v16SFnJK8BIbmp/WFCuvDcMkgLIbqiYtDASe7P2mKIib86uOENT+P820egeLiTQ06kFw/gfUa8t69d5qEcjiQZ+lxCeYIs/E9KrEXHvRUWew== cardno:16 811 339" + ]; + poelzi = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuQbziwBjiSZqzE2b4iOqz1HxjinqHbGjAv1XHLOq+AFfNwMc4wiyQ/u2LpuRG2HlwK9pBeIY/gZSUP3YJZ1RumnrEOxY2Tgmzko0W9ME+hvK1OHZcXI69QA/ctxEVgOUMvTtS8XssFLAbQfkXJYeTL/5yr/Qrs3MDDfa+1UGY7LQlyzh6c4pQ+pBgWJALyzztc0orqgSVUJ2u8naQ210Jv3dQnpE+bwfeG9IuWjQqBXWHwlqxwRDxnnDBVcUj4z24XsMmHHWd/zizD+4C0Qx/rBiFhYBDXP+320U5gpgFzRl3t1HQXiPCb/LAgp2CLpZ8Eh4u9tgIhp6Z6l9r0B+vQ== poelzi@poelzi.org" + ]; + polygon = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGEKrCGXyHqD0jdTYVHnnScL9mhDU2PR9VyH7fu528J jan@nixbrett" + ]; + revol-xut = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC6NLB8EHnUgl2GO2uaojdf3p3YpsHH6px6CZleif8klhLN+ro5KeFK2OXC2SO3Vo4qgF/NySdsoInV9JEsssELZ2ttVbeKxI6f76V5dZgGI7qoSf4E0TXIgpS9n9K2AEmRKr65uC2jgkSJuo/T1mF+4/Nzyo706FT/GGVoiBktgq9umbYX0vIQkTMFAcw921NwFCWFQcMYRruaH01tLu6HIAdJ9FVG8MAt84hCr4D4PobD6b029bHXTzcixsguRtl+q4fQAl3WK3HAxT+txN91CDoP2eENo3gbmdTBprD2RcB/hz5iI6IaY3p1+8fTX2ehvI3loRA8Qjr/xzkzMUlpA/8NLKbJD4YxNGgFbauEmEnlC8Evq2vMrxdDr2SjnBAUwzZ63Nq+pUoBNYG/c+h+eO/s7bjnJVe0m2/2ZqPj1jWQp4hGoNzzU1cQmy6TdEWJcg2c8ints5068HN3o0gQKkp1EseNrdB8SuG+me/c/uIOX8dPASgo3Yjv9IGLhhx8GOGQxHEQN9QFC4QyZt/rrAyGmlX342PBNYmmStgVWHiYCcMVUWGlsG0XvG6bvGgmMeHNVsDf6WdMQuLj9luvxJzrd4FlKX6O0X/sIaqMVSkhIbD2+vvKNqrii7JdUTntUPs89L5h9DoDqQWkL13Plg1iQt4/VYeKTbUhYYz1lw== revo-xut@plank" + ]; + sandro = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFidD6Snqgd8J7avxHvdDd81rdi0zNZWSilBe3eaTIlv sandro@magnesium" + ]; + tboston = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIINkmizml/XsSRzp3mNIumb3ZEPQoZhi/TtDU7rOUiKA tboston" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2bxUZkDM++SVg/lR6JI/ANUWVPPgGp7fmcD0mL7AI5u+VtdwUlVpPl4GjPnpBPFD2W3+WAg9DQpiA3+j/MuwaP7JjUwfI9hfVP/4QjdfgVgEyAuCWstHftk2bZvzKa+D5d7r5kOpDmWnxwuffOUqR7vmZscIJfRxSD/gOnIDMKUF8RAF94p4SuTX+1uoTbzmlIFVFZjoR1hqPL+PjA/Rmwncy8/2QKn3fagM5oTeLuk7ebFqL9mEBQolE9NJSTZJsN1IflRI9jxQYNN/jebaxDDF/bT+p8v0WxXGLmogzzyxviqOvrJVCjugyplLRh1AQ4XPh8yBqCeY9fN+LuKmz tboston" + ]; + windsleep = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD6vi3Y/e5wxJzsehFyM+N16f1QAmepMwIOSL3gO9w7CZ1jUF2Cky6y/40TcNWMDyvgxbcEfobG/Foa8DXQgKcc9LZS8jjGmzTVRCKxON5hQsYXRmxzawe8Fg2bkYxpWeoknW0wgDc/3XJA17IP2ONfVtX3YVQyhf5WPDHrXojnBadXMBUtvK5p7T+L9Z3/cGB80K5BoQCC4ZRn6gkOMjpFOKYXJfIzmLI5WPvTe7B/uuEfZ8IT8nzZsi2VBwru01s+iEXs7th/rAp2Q74pWTW8Q8jhNL1E15Yct9K7yV1p6D7YPF/BCKtXKP6VzU2ULmTp6nlCkeDJvZgLP6UpzLJJ basti@windnix" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3iUaE0wXfRfG48bLs3pCSRi3TqH8a9yuh0JfycRv/Wai+hwJ/VopqxvN+L+NVFSEGWeTAvQRDzJZhgVgP29zrWALGnuvGCSi6jeuzhm57R2ebZcnXkS3fYiowfV34BJSmYkzM3mIg8ujxIp6R/7LqCx+7IKZfLqjeWAMFzVvZcF2aIs2OP59EWJYJN8fKSXpoMk6elnDwvxHD6zzNMhLu+n/7vKJccUoqJaEaPMd/AWyBi2aFn3C1btkFQ5fT8bO9Ob9t5eh97cyny9MAvlxPIHOR/xbJ80WMgVeqst/rb8atafe4UJVf643lzmzlbyxErBGAaeTY3p9Yc93QdvVP basti@basti-ThinkPad-T530" + ]; + leon = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJPZoT83l0ogbJpviBs4VmO+NdF4NPtYAnyf8RRSoXsv leon@leon" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIANupx+diz5N8sGZOc7ZXopyPh9HaML8M7Qh70aVVIaJ leon@leons-Air" + ]; + }; + + hosts = { + freifunk = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMFbxHGfBMBjjior1FNRub56O62K++HVnqUH67BeKD7d" + ]; + gitea = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO8Q7kGF3Hh6HvmlSIgZOjgoIZRpyxKvMBTcPWHlecuh" + ]; + glotzbert = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAnEWn/8CKIiCtehh6Ha3XUQqjODj0ygyo3aGAsFWgfG" + ]; + grafana = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPFB9fo01jzr2upEBEXiR7sSmeQoq9ll5Cf5/hjq5e4Y" + ]; + matemat = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBa07c4NnU1TGX1SMNea9e1d4nMtc0OS4gJLmTA3g/fe" + ]; + nncp = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMQhxaeElmxO1UgaI/+qr+g13OFeY9qtJVxznNN+xs/e" + ]; + pulsebert = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFQCsDss9Gq3/eTKqpgEwXK+nhnuARS4/kHqF2+laGnp" + ]; + scrape = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEGxPgg6nswoij1fBzDPDu6h4+d458XL2+dBxAx9KVOh" + ]; + }; +} diff --git a/users.nix b/users.nix deleted file mode 100644 index 0fc46e4c..00000000 --- a/users.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - # Please use ed25519 keys! - antrares.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDC6Io8mHskJhkUh+vaSo95pi1E/gAoesQ0v+s+7DCTgjpOkB+W6vdJ8U6rblFxrETaWFAIVfkg+I/ZYvNWqCAxu1iWXaZ3IEK2ZiP5Vg0HevAP0ratfIHw50V8wfsyA8/lLVGdpX76xqexdY3G1SYZUcedq6AqWx6FpyoKGVOL2+jlJhmxCoEYfOJe6HbTi02UtAw1qavaD2acvuLksHOiwRAq1+ijPo/OmU3LmaErheceiPC97Wn4H/a98HdnWXJ3AXZCpPzp784/gUxOd/fvKRQPv0Lza9dytmpkAVc9efLMAQZm60w9InpIY0VxJRu2iFDc6msMF/iJp1UXSJfk4hTxUvXL8rPXc4GYKDSQlWO4UXoKd2gZEmCdcsIN/re6VR1lJWcm4eKxI9zJAQRZDrYHZP3ALBJrBY+7pJUHGSB+jCdZ73zkvkiNWUHZ9Wwp4RvdFoCR9qT+AoDU2SMiBMn8/hNMZRUs6RKjUzzn2vhCbZh19QIDxivaFg3DOKq7CCI3XNR3M781MFdmeTXKBLnv2YEVXy5XDIMvucQaZIUoD14fSF2wnncuP9h0gs2H1zG7nQfMagGpE+ro56FO3rBQqfRzz/U528yuq8uf/6TD9u3jTu7ngZ0YpDvAwAh8yG3b2KGFbrcYc3N1zEQOz7IqKixmIt/f3VOOjQ3Yww== antrares@c3d2.de" - ]; - - astro.sshKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGJJTSJdpDh82486uPiMhhyhnci4tScp5uUe7156MBC8 astro" - ]; - - emery.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqAXBEROEfldkHdUbF3TinBhfeX5l4DQ/5MAOhLh09avqCqcHY2FanZN+qmWpD695UZ71Cl+XF6Bj0KO7Rt4SAemvkEDPMBoidkt+ZjLsdnb8GVvbDhu/62JnqW9meYTN5GcjfmKMPDtKFbgSx9PPcjsDaO6LI/GWeyTz+EYQqwTdc7TKffjLXp6bREYLf0oKIBTvW9/oPCBI7ywYmyBaadFKrYSnujJbMejH91L+JN2fJoxjjhsGcRR78ottbjz4q6JxYjt9CG5oa7Lm60xdZkiiA3c4dMuHU9+EWGshjBKL1Fb9BafeAKhHobcs7UG8IVlqHRJC5VAGQlmus/fNagAArz9PnGW4MAOgg+yLjQJLLKqePBMsAsMHZ9XT+sqPyJfcai5dWynGXFP1B63C/oosVMkeZAlBIwDz/CmufpKBCJZXCfFoC3PotWsH/JT3ir/RSdtVHQ169CEgm+AUd7gjBuRwn6j2eBHcYkn0nCbQ93KLPlnYCLXzjByGved8= emery@fuji" - ]; - - j03.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDW+YfsFtRz1h/0ubcKU+LyGfxH505yUkbWa5VtRFNWF2fjTAYGj6o5M4dt+fv1h370HXvvOBtt8sIlWQgMsD10+9mvjdXWhTcpnYPx4yWuyEERE1/1BhItrog6XJKAedbCDpQQ+POoewouiHWVAUfFByPj5RXuE8zKUeIEkGev/QKrKTLnTcS8zFs/yrokf1qYYR571B3U8IPDjpV/Y1GieG3MSNaefIMCwAAup1gPkUA0XZ4A1L7NdEiUEHlceKVu9eYiWUM+wDRunBXnLHubeGyP8KmBA7PNKgml3WWRNTZjqNQk4u9Bl+Qea5eCkD8KI257EqgXYXy0QBWNyF8X j03@l302" - ]; - - laalsaas.sshKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEhcrBEpbCOM4KTVqjvuEOAcKOPScQ7U4TsNJzzrQW/k laalsaas" - ]; - - marenz.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDixJ6x0QnSk/ebIJ9zlsRM5olZbqrxDaIt0QQmZOuAbbz441SVW+/0/7ks80GMIMxzUy5YpNvrkY+6q/dZVvNybZLm/csdoFB2soOI/F1NUOppM+r2f33db/5ae3iaun/xBOW/D5lQTbm6IfrYjN9z3gW6tTYFPauZyctizZz5P1egwtCrAnMti8aBE3G+lGXVIVbjsjYruqgSN86WM0YM9HH9XB8Kd/TDCI/j9prXFkoj9EuzOQtIDNRA4Asmi08ZmoVKqadbuZAXoYEngPe2nigiiBoV/5fyyWIJSliWPZ8YDXk8X6pRJaOgZyc6mmot0/BLJo+DkhoUDA7wp3wr cardno:000609614306" - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6edpEvI6/0IBBolm3fX67U7UhA42hBVXPcN2hrTe9DiaRTMC1EnsgHSLYAuV1Ltu9gkDxHZ4aTpa69La7C7I0WPAhzXWAE1BNl2/93CETAcZoum2IYl9CZNGFG5D2Uxd8lnyZH9WtgN5WYLaKm/xFSVclYwbnYtTjI2T9mYmrrDf4bwvvjg6p6KBQUgaotwC+qyADGTJjfSiIsYU8cJhA4XROudmiKa6LAlw0VrkgQoITRYoWvmrdHMgzeCJa5UvKGxyGRqGcPB7wVFQpv2uxJVtCjb5Uhk8ZHzbc/rANBXwCgMr9tmyKDsO9imtcucQXZT7O06mkD5OYCVSdtVsx cardno:000610670724" - ]; - - nek0.sshKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILpLQaRn6wzdyU5f1MZKYgL3A9t0H/ELyZHEMK0e2I+k nek0@madness" - ]; - - oxa.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCou/7YU2kbeWbZv/F3kjWJLyLeZ5SGGMNr03rWjqZcliJCqEZGO4gz7jdizg/h+j7YWTV3Gn+03LY+tlfhuI7Okxe1YLphuPb4qb38QUprpdg9QTdREGUUpKeaXUOXASoC5EHAkx5GYcQ9uZAx70ZHdggwNvQOVcOfbSIv+MPTaEq4MTwf/Y5MhFvCUrQecTvaoukAPS3PEOWptz5hDDH7jjiJmDwHeICMhHK9YvesFjIsc/iQHScCDWBg+WbQAeLYSbJkmnzFz/7jbdF34Wmz/7FlUiOqqzkZ5Ykr78ae4NgbSz09QjkZ/W0wVIH+UAVHn3OQ+7aRukkve9w48lEb1XJvMo3Y1sGRY6AUOHw0B4xa9ZgXQiuAH4ExjaDSArNkUWjQrKkUvyl30j7t6HRA2Y+W5BzodYKO/JBGqaGneTvlXV2e7lFP2kmnf17dnkJmwTi2p0CQJrpsnifuj5gNDA/qZkXPK5DOPe+asW2Vc2panSbXosZG9Gk20JeahZ54gVn2UvRVk41GhQdCAuVWeuXF9+rtSyjtx2NSrQLIyi/59n6STL/hS1135wrEifP+xTCoI+8yxTB8BSd5JSQ9GeUGkevZp9asmwKOA/WkTzsESECbCrbgOstTCSsKPfQITLu45zIrLHn9cLjrwby06mNhp2B28GlAmvcDBC95NQ== mail@oxapentane.com" - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP6xE2ey0C8XXfvniiiHiqXsCC277jKI9RXEA+s2LQLUI5zl7v350i3Oa8H3NCcPj39lfMreqE6ncxcOhqYyzahPrrMkOqgbPAoRvq8H3ophLK+56O3xdHoKwLBwRD1yoGACjqG4UTiTrmnN2ateENgYcnTEY1e4vDw1qMj1drUXCsZ/6mkBBmHJiFfCaR4yCMt1r4gGi/dAC7ifnBP3oSyV/lJEwPxYYkGlbOBIvX/7Ar98pJS6xYPB3jHs9gwyNNON63d0fNYrwBojXPPCnGGaRZNOkBTzex3zZYp12ThINQ2xl8tRp9D8qpZ7vrLjhTD6AXkOBRzmDj+NsCeEaeTuWajqUM93iKncYUI+JxR1t7q8gA2pBMFzLesMXnx7R+5Kw7QDtSJM7a4GMIfsocPwf64BH6rzxEz68rXFE3P+J77PPM9CuaYw90JXHo3z220zYw2nMQ/1qjATVZw/hiVrLmQMVfmFJIufnGjTBs2sy3IoNyzvYm/oDeNNg1cdSV9gyyRKZhK08fxjXN5GSf9vZkfZa9tHtqaZ99HI40GQBHUVx1K2/NQJY8TVTSA+v16SFnJK8BIbmp/WFCuvDcMkgLIbqiYtDASe7P2mKIib86uOENT+P820egeLiTQ06kFw/gfUa8t69d5qEcjiQZ+lxCeYIs/E9KrEXHvRUWew== cardno:16 811 339" - ]; - - poelzi.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuQbziwBjiSZqzE2b4iOqz1HxjinqHbGjAv1XHLOq+AFfNwMc4wiyQ/u2LpuRG2HlwK9pBeIY/gZSUP3YJZ1RumnrEOxY2Tgmzko0W9ME+hvK1OHZcXI69QA/ctxEVgOUMvTtS8XssFLAbQfkXJYeTL/5yr/Qrs3MDDfa+1UGY7LQlyzh6c4pQ+pBgWJALyzztc0orqgSVUJ2u8naQ210Jv3dQnpE+bwfeG9IuWjQqBXWHwlqxwRDxnnDBVcUj4z24XsMmHHWd/zizD+4C0Qx/rBiFhYBDXP+320U5gpgFzRl3t1HQXiPCb/LAgp2CLpZ8Eh4u9tgIhp6Z6l9r0B+vQ== poelzi@poelzi.org" - ]; - - polygon.sshKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGEKrCGXyHqD0jdTYVHnnScL9mhDU2PR9VyH7fu528J jan@nixbrett" - ]; - - revol-xut.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC6NLB8EHnUgl2GO2uaojdf3p3YpsHH6px6CZleif8klhLN+ro5KeFK2OXC2SO3Vo4qgF/NySdsoInV9JEsssELZ2ttVbeKxI6f76V5dZgGI7qoSf4E0TXIgpS9n9K2AEmRKr65uC2jgkSJuo/T1mF+4/Nzyo706FT/GGVoiBktgq9umbYX0vIQkTMFAcw921NwFCWFQcMYRruaH01tLu6HIAdJ9FVG8MAt84hCr4D4PobD6b029bHXTzcixsguRtl+q4fQAl3WK3HAxT+txN91CDoP2eENo3gbmdTBprD2RcB/hz5iI6IaY3p1+8fTX2ehvI3loRA8Qjr/xzkzMUlpA/8NLKbJD4YxNGgFbauEmEnlC8Evq2vMrxdDr2SjnBAUwzZ63Nq+pUoBNYG/c+h+eO/s7bjnJVe0m2/2ZqPj1jWQp4hGoNzzU1cQmy6TdEWJcg2c8ints5068HN3o0gQKkp1EseNrdB8SuG+me/c/uIOX8dPASgo3Yjv9IGLhhx8GOGQxHEQN9QFC4QyZt/rrAyGmlX342PBNYmmStgVWHiYCcMVUWGlsG0XvG6bvGgmMeHNVsDf6WdMQuLj9luvxJzrd4FlKX6O0X/sIaqMVSkhIbD2+vvKNqrii7JdUTntUPs89L5h9DoDqQWkL13Plg1iQt4/VYeKTbUhYYz1lw== revo-xut@plank" - ]; - - sandro.sshKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFidD6Snqgd8J7avxHvdDd81rdi0zNZWSilBe3eaTIlv sandro@magnesium" - ]; - - tboston.sshKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIINkmizml/XsSRzp3mNIumb3ZEPQoZhi/TtDU7rOUiKA tboston" - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2bxUZkDM++SVg/lR6JI/ANUWVPPgGp7fmcD0mL7AI5u+VtdwUlVpPl4GjPnpBPFD2W3+WAg9DQpiA3+j/MuwaP7JjUwfI9hfVP/4QjdfgVgEyAuCWstHftk2bZvzKa+D5d7r5kOpDmWnxwuffOUqR7vmZscIJfRxSD/gOnIDMKUF8RAF94p4SuTX+1uoTbzmlIFVFZjoR1hqPL+PjA/Rmwncy8/2QKn3fagM5oTeLuk7ebFqL9mEBQolE9NJSTZJsN1IflRI9jxQYNN/jebaxDDF/bT+p8v0WxXGLmogzzyxviqOvrJVCjugyplLRh1AQ4XPh8yBqCeY9fN+LuKmz tboston" - ]; - - windsleep.sshKeys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD6vi3Y/e5wxJzsehFyM+N16f1QAmepMwIOSL3gO9w7CZ1jUF2Cky6y/40TcNWMDyvgxbcEfobG/Foa8DXQgKcc9LZS8jjGmzTVRCKxON5hQsYXRmxzawe8Fg2bkYxpWeoknW0wgDc/3XJA17IP2ONfVtX3YVQyhf5WPDHrXojnBadXMBUtvK5p7T+L9Z3/cGB80K5BoQCC4ZRn6gkOMjpFOKYXJfIzmLI5WPvTe7B/uuEfZ8IT8nzZsi2VBwru01s+iEXs7th/rAp2Q74pWTW8Q8jhNL1E15Yct9K7yV1p6D7YPF/BCKtXKP6VzU2ULmTp6nlCkeDJvZgLP6UpzLJJ basti@windnix" - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3iUaE0wXfRfG48bLs3pCSRi3TqH8a9yuh0JfycRv/Wai+hwJ/VopqxvN+L+NVFSEGWeTAvQRDzJZhgVgP29zrWALGnuvGCSi6jeuzhm57R2ebZcnXkS3fYiowfV34BJSmYkzM3mIg8ujxIp6R/7LqCx+7IKZfLqjeWAMFzVvZcF2aIs2OP59EWJYJN8fKSXpoMk6elnDwvxHD6zzNMhLu+n/7vKJccUoqJaEaPMd/AWyBi2aFn3C1btkFQ5fT8bO9Ob9t5eh97cyny9MAvlxPIHOR/xbJ80WMgVeqst/rb8atafe4UJVf643lzmzlbyxErBGAaeTY3p9Yc93QdvVP basti@basti-ThinkPad-T530" - ]; - - leon.sshKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJPZoT83l0ogbJpviBs4VmO+NdF4NPtYAnyf8RRSoXsv leon@leon" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIANupx+diz5N8sGZOc7ZXopyPh9HaML8M7Qh70aVVIaJ leon@leons-Air" - ]; -}