diff --git a/darwin/default.nix b/darwin/default.nix index e89f214..30d6d49 100644 --- a/darwin/default.nix +++ b/darwin/default.nix @@ -25,7 +25,7 @@ let gnome = false; gui = false; home = "/Users/gregory.hellings"; - mac = true; + host = name; }; }; users.users."gregory.hellings".home = "/Users/gregory.hellings"; diff --git a/darwin/ivr/default.nix b/darwin/ivr/default.nix index 9c79196..3678a92 100644 --- a/darwin/ivr/default.nix +++ b/darwin/ivr/default.nix @@ -25,11 +25,16 @@ in { brews = [ "qemu" "gcc" + "libaacs" { name = "libvirt"; restart_service = true; } "virt-manager" ]; + casks = [ + "synology-drive" + "handbrake" + ]; }; } diff --git a/flake.lock b/flake.lock index 6142626..97926ea 100644 --- a/flake.lock +++ b/flake.lock @@ -219,11 +219,11 @@ ] }, "locked": { - "lastModified": 1691312444, - "narHash": "sha256-J9e9dGwAPTX+UlAn8jehoyaEq6fwK+L+gunfx0cYT4E=", + "lastModified": 1692260837, + "narHash": "sha256-2FpkX1zl+7ni7djK7NeE1ZGupRUwZgjW+RPCSBgDf4k=", "owner": "nix-community", "repo": "home-manager", - "rev": "903e06d734bcae48efb79b9afd51b406d2744179", + "rev": "6a94c1a59737783c282c4031555a289c28b961e4", "type": "github" }, "original": { @@ -281,11 +281,11 @@ "nmt": "nmt" }, "locked": { - "lastModified": 1691355845, - "narHash": "sha256-00GSWiXYdCiBOv7MTW4mCzoSCqBZYQ8K9NID5E3WVas=", + "lastModified": 1692281989, + "narHash": "sha256-b1WPbUNVWahAHvMxWnp+0zzswUj8lReX/c28O2Au2Og=", "owner": "NixNeovim", "repo": "NixNeovim", - "rev": "98296a348aad6d6430a568dfb17101c817f00714", + "rev": "929c6c4a188947801ac354e1c5d110937fca9449", "type": "github" }, "original": { @@ -307,11 +307,11 @@ "poetry2nix": "poetry2nix" }, "locked": { - "lastModified": 1691331489, - "narHash": "sha256-aSz1bJyHhKtjN5DpPLoIkpW3TYWs4zqiSBjAjnEObsw=", + "lastModified": 1692281871, + "narHash": "sha256-nyOnXgW1lyD+ngprSVrKAQdgcK+XSd0vvRaZm5PwRwk=", "owner": "nixneovim", "repo": "nixneovimplugins", - "rev": "76048147f3e04fe3f1fa79114d2feb7f35caa64d", + "rev": "93da8f94aa765d8597d631ee5beafb6d26824777", "type": "github" }, "original": { @@ -354,11 +354,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1691186842, - "narHash": "sha256-wxBVCvZUwq+XS4N4t9NqsHV4E64cPVqQ2fdDISpjcw0=", + "lastModified": 1692174805, + "narHash": "sha256-xmNPFDi/AUMIxwgOH/IVom55Dks34u1g7sFKKebxUm0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "18036c0be90f4e308ae3ebcab0e14aae0336fe42", + "rev": "caac0eb6bdcad0b32cb2522e03e4002c8975c62e", "type": "github" }, "original": { @@ -386,11 +386,11 @@ }, "nixunstable": { "locked": { - "lastModified": 1690272529, - "narHash": "sha256-MakzcKXEdv/I4qJUtq/k/eG+rVmyOZLnYNC2w1mB59Y=", + "lastModified": 1692174805, + "narHash": "sha256-xmNPFDi/AUMIxwgOH/IVom55Dks34u1g7sFKKebxUm0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ef99fa5c5ed624460217c31ac4271cfb5cb2502c", + "rev": "caac0eb6bdcad0b32cb2522e03e4002c8975c62e", "type": "github" }, "original": { diff --git a/home/gui/default.nix b/home/gui/default.nix index 9f8ece8..835fed8 100644 --- a/home/gui/default.nix +++ b/home/gui/default.nix @@ -12,14 +12,25 @@ in ./firefox.nix ]; + # An alternative editor to vim, when I need it for some things + programs.vscode = { + enable = true; + package = pkgs.vscodium; + extensions = with pkgs.vscode-extensions; [ + golang.go + ms-python.python + ms-pyright.pyright + vscjava.vscode-java-test + vscjava.vscode-java-dependency + vscjava.vscode-java-debug + vscodevim.vim + ]; + }; + # These packages are Linux only home.packages = with pkgs; ( excludes ["x86_64-darwin" "aarch64-darwin"] [ cdrtools - ffmpeg - handbrake - libtheora - makemkv vlc x265 ]) ++ @@ -34,6 +45,11 @@ in libreoffice logseq nextcloud-client + ]) ++ + + # Items that are not supported on ARM/Linux + ( excludes ["aarch64-linux"] + [ onlyoffice-bin synology-drive-client zoom-us diff --git a/home/home.nix b/home/home.nix index 978c8ea..1b1d098 100644 --- a/home/home.nix +++ b/home/home.nix @@ -1,5 +1,6 @@ { pkgs, lib, gui, gnome, - inputs, mac, + inputs, + host ? "most", ...}: { @@ -11,11 +12,10 @@ ./direnv.nix ./git.nix ./ssh.nix - ./templates.nix ./vim.nix ./xonsh.nix - ] ++ ( if gui then [ ./gui ] else []) - ++ ( if mac then [ ./mac.nix ] else []); + ./hosts/${host} + ] ++ ( if gui then [ ./gui ] else []); greg.gnome = gnome; @@ -35,10 +35,9 @@ home.stateVersion = "23.05"; home.packages = with pkgs; [ bitwarden-cli - brew + copier diffutils findutils - gimp git gnupatch gregpy @@ -55,7 +54,10 @@ transcrypt tree unzip - vagrant wget - ]; + ] ++ ( if pkgs.system == "x86_64-linux" || pkgs.system == "aarch64-linux" then + # Linux-only packages here + [ + busybox + ] else []); } diff --git a/home/hosts/2maccabees/default.nix b/home/hosts/2maccabees/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/2maccabees/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/genesis/default.nix b/home/hosts/genesis/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/genesis/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/icdm-root/default.nix b/home/hosts/icdm-root/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/icdm-root/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/iso/default.nix b/home/hosts/iso/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/iso/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/ivr/default.nix b/home/hosts/ivr/default.nix new file mode 100644 index 0000000..fe4e7cb --- /dev/null +++ b/home/hosts/ivr/default.nix @@ -0,0 +1,16 @@ +{ pkgs, lib, ...}: + +{ + home.packages = with pkgs; [ + aacs + brew + ]; + home.file.".pip/pip.conf".text = (lib.strings.concatStringsSep "\n" [ + "[global]" + "retries = 1" + "index-url = https://pypi.python.org/simple" + "extra-index-url =" + " https://pypi.ivrtechnology.com/simple/" + " https://pypidev.ivrtechnology.com/simple/" + ]); +} diff --git a/home/hosts/jude/default.nix b/home/hosts/jude/default.nix new file mode 100644 index 0000000..25e1a0f --- /dev/null +++ b/home/hosts/jude/default.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + gimp + gnucash + ffmpeg + handbrake + libtheora + makemkv + synology-drive-client + vagrant + ]; +} diff --git a/home/hosts/lappy/default.nix b/home/hosts/lappy/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/lappy/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/linode/default.nix b/home/hosts/linode/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/linode/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/linodeeu/default.nix b/home/hosts/linodeeu/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/linodeeu/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/mm/default.nix b/home/hosts/mm/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/mm/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/hosts/work/default.nix b/home/hosts/work/default.nix new file mode 100644 index 0000000..7c60c06 --- /dev/null +++ b/home/hosts/work/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + brew + ]; +} diff --git a/home/hosts/wsl/default.nix b/home/hosts/wsl/default.nix new file mode 100644 index 0000000..d8147ea --- /dev/null +++ b/home/hosts/wsl/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + +} diff --git a/home/mac.nix b/home/mac.nix deleted file mode 100644 index f724bdd..0000000 --- a/home/mac.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, ... }: - -{ - # Programs for everyone? - programs.vscode = { - enable = true; - package = pkgs.vscodium; - extensions = with pkgs.vscode-extensions; [ - golang.go - ms-python.python - ms-pyright.pyright - vscjava.vscode-java-test - vscjava.vscode-java-dependency - vscjava.vscode-java-debug - vscodevim.vim - ]; - }; -} diff --git a/home/modules/gnome.nix b/home/modules/gnome.nix index 6696770..edd0749 100644 --- a/home/modules/gnome.nix +++ b/home/modules/gnome.nix @@ -19,8 +19,18 @@ in { }; dconf.settings = { + "org/gnome/Disks" = { + image-dir-uri = "file:///home/greg/Downloads"; + }; "org/gnome/desktop/interface" = { clock-show-weekday = true; + color-scheme = "default"; + cursor-size = 24; + toolbar-style = "text"; + }; + "org/gnome/desktop/screensaver" = { + lock-delay = "uint32 0"; + lock-enabled = false; }; "org/gnome/desktop/wm/keybindings" = { switch-applications = []; @@ -28,16 +38,28 @@ in { switch-windows = ["Tab"]; switch-windows-backward = [ "Tab" ]; }; + "org/gnome/desktop/wm/preferences" = { + button-layout="icon:minimize,maximize,close"; + }; + "org/gnome/file-roller/listing" = { + list-mode = "as-folder"; + name-coloumn-width = 302; + show-path = true; + sort-method = "name"; + sort-type = "ascending"; + }; "org/gnome/nautilus/preferences" = { default-folder-viewer = "icon-view"; search-filter-time-type = "last_modified"; search-view = "list-view"; }; - "org/gnome/shell/window-switcher" = { - app-icon-mode = "both"; - current-workspace-only = true; - }; "org/gnome/shell" = { + enabled-extensions = [ + "appindicatorsupport@rgcjonas.gmail.com" + "Vitals@CoreCoding.com" + "window-list@gnome-shell-extensions.gcampax.github.com" + "gsconnect@andyholmes.github.io" + ]; favorite-apps = [ "org.gnome.Calendar.desktop" "org.gnome.Nautilus.desktop" @@ -45,6 +67,16 @@ in { "firefox.desktop" "vlc.desktop" ]; + remember-mount-password = true; + }; + "org/gnome/shell/extensions/vitals" = { + hot-sensors = [ + "_memory_usage_" + "_system_load_1m_" + "__network-rx_max__" + "_temperature_k10temp_tccd1_" + "_temperature_k10temp_tctl_" + ]; }; "org/gnome/shell/overrides" = { attach-modal-dialogs = true; @@ -53,6 +85,29 @@ in { focus-change-on-pointer-rest = true; workspaces-only-on-primary = true; }; + "org/gnome/shell/weather" = { + automation-location = true; + locations = "[<(uint32 2, <('Midlothian / Waxahachie, Mid-Way Regional Airport', 'KJWY', false, [(0.5664611473274288, -1.691437359323684)], @a(dd) [])>)>]"; + }; + "org/gnome/shell/window-switcher" = { + app-icon-mode = "both"; + current-workspace-only = true; + }; + "org/gtk/settings/file-chooser" = { + location-mode = "path-bar"; + show-hidden = false; + show-size-column = true; + sort-column = "modified"; + sort-directories-first = false; + sort-order = "descending"; + }; + "org/virt-manager/virt-manager/confirm" = { + delete-storage = true; + forcepoweroff = false; + }; + "org/virt-manager/virt-manager/details" = { + show-toolbar = true; + }; "org/virt-manager/virt-manager/connections" = { autoconnect = [ "qemu:///session" "qemu:///system" ]; uris = [ "qemu:///session" "qemu:///system" ]; diff --git a/home/ssh/authorized_keys b/home/ssh/authorized_keys index 6634830..e388d30 100644 --- a/home/ssh/authorized_keys +++ b/home/ssh/authorized_keys @@ -3,3 +3,5 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQCgg6FGmtWPjw5iYTlxJLz1WBCE7zhYhXgmfPvFRt6c ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDUd5LQVl/spIfJ3mh/MERlCfSIHCh3jXnaNVnyHY2AVD2dFVgFX+Q+1adA64plXqXHEQVb3q2EMzVW14QAMP9VJspnODgpyMHwpxp6ZNUsZIH83RN8kauVHgW2LRDCZ4DLRzbqaeDm92rntapoUB74Vjto00AE3gWyGQp/v6BeAUhqE0J2p6T6xDgsuyJ+Tzm2YEUozFW8w8LSGDgaoTKzjq0WVkAo9rNaxGLr/ez8P3SUHgb2VSUrL1qrHE99KL8rravOjP0aQmGGWu/MOjgvh7icQuqYlBF6MHfxeSd7/FZApVNKzEXD9TKBg5IaCOjHH2GHnxthSC0mcjKmF2EVAXuWYDARqxmtIfV/9YdeECEFxzB6X+t6b3RYxA0/oa5Zt70WH2LILmc3U5EfiRf88x4WcsdmbcsKQ74/julgg7vYlTlndBxvl8Nd1IKd6ZD3nJBMMMKrDOYbME5r6x2VTzm/RQkpp+SHarCMXxjukhguYY3Iz9CTO2hdGaQ/41ftlOhpb3I1Gai9GymTPFDt9n3JCEVyQ1+a97ELVr+Ky1L3hMewE8nqZFIoXUB2RFMu2pD9GggDO2e6bXdN3SIHLL/8amoDK62iYgVEp1XBkzHJ7U6hhIYbkFji0KK8A7Cwg8+gOKdovycJIAWndHjaDcLmWDlBktqHIRQvLMTzE9f935faTcrSTpnrCLK/pR3f7ir7HGpD8lUug8m7DfxhH3am1Fz7uY9iNI1GLctexC7espXq/xEA/+j7JRVVKbpIubXcmJjNlKs6jOx849SpdWvLlnJpqo1PIjxE9ZDa7zlPSLMTKGTuY0ekKvvbuaOhcOBuYg1RfbdN1QIX5ba86U7giFMZb7wGh7Pbsy0PhFgO7ANgNZy81RKp45G8ozHLnXCj/qhstqjcEgUICDkT/CGnNkreu023kqOaix0nELBLwWBVM/5iWmKQZnpiBhHHDNJ3Q6DsCkIUdfOWZNCIRwGDPuV8uMOEHJIemg25Z282QqWUIfWzGOO1f0ylVmhTQooZIfjhyGXxKa6AV+/tAXQtkF5B1Z8rB5A3pYYLDmnY1E007sWpvm2L/HKV7cWUX7bkuS+qBXZyHxEn+cc6YvalJbDi5/bE5kFQudZFgKInwFiMLhX/8BpbgBUv+6MvvCn79o9qnoOnkI36A9bEOdQKpjwPdg9tkVWr0RotXfP62tIAQsxS05J7yxprC5Uitf+Bhp+Hph0tS/hyxTbN1h30vfdABouvQpcqbgUlp6psyTT17efeNbGcs9l4gkg4HOGpmF60alA1+PBZ1l7ba6bglp+CZoeA5qsCTmMxT5yLaWcEck/8WR3NHQqkER5ZyH1204Kci35kNon69y1/ greg@linode ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQCoGGV3eD1oF0O62JZfCWNxmViRjRGQsfOhRkQfzQROkwDlFZ7S1+02fudD9t7mPtZE6dQ4yS2+6Q3NIfGW8NBbZAlWwsQ6PnrpuAhWpWc+ng/IDQd9CH/rBCt5bWSLL8AGHa4c+qde7iyoFGK0l9jXVD9wATBFQ274WTmPacVQVHmIAmJS6ISmR6vlq9eaDj1fX8wixao6WvzfwAUvXIs8nhPEfmtyu4T/1Eev9rVIxOw3ODQjk/E0VWV4Koeptsyc+V+j+XMyA91v8f20T4Uwe5LGnJHSQS0WavHnCMWHb1tzkmiKdaNCymoDUcUF2rywMYry7JN0kZo2mp2d7OzE/RP3bz/IsAI33+DwRlDYDNzgeLsLVmOJij61AtqBZque6WDcyCF8HN0ZaY0KJPOtNlN92+GUBRF/Faei0MXZ7wW2BZL5Bc7qnXc9USyhPNsm2vQ7LLhh/NtBGqB88+C+AidTTZ/xiIHKWZJXPkWLPRcK5cfaFqHFqcVMk4U+b0FYB95vYPKmjURlAZ6WrU6dNaNaMH9hJSE6/03is4hb4t8RCRiNaR41pEACDZbATjY0DInFn1LxxpUV66xfpOVg5hKm5ScIks3KxWJ8i3v4/cX7WvbDC/UzWb2UygpsqR7/1n5LV1SNPl+/qxFfdaOyZ8WVvx7DKGxkKfkPBgGwdpSthdv7BY+SC4sT9WXQAPGnvOIk6HwKhHjJYX7AIKK64ACfGZbjBC2gg7Ocl4HkgwpYYlUWLRJdJUhHOCi3VhPZDspYhw/UxPnUhYa8lxq5l7kgkks/tFe1qHOvPe3QRW6brg3EdJNkwtMrlrstW4/nph/KFqSshzNVDlEqTAnhE1cjbBZNmlHt1Un4ixcW1b8b86mE+472pSsIEfO8vxP26brQhxepJFZGOFv2vs3XDrrtn6IMJok4e+AQSCCY0kCcgfG5nMYXUoWpGyTpN/JLG0joJuhPWt58OaOzzKNPq2+rCVAbS7/UmDCqkwxjCywxOZRwluBsEWbZaLEdOwQOfIZQGwSDBM0hfHJJxMSaLN3rCe6VZb+c/5mFXUZ46L5mOGkRlO1TOEAe4jqawAQnuGaHN8mMWSw1gKM+UBXTKa0tBR6Aj/OSfPW0jU+mz/YzzJkzNnlRFiSrLxWvL4eXaBsMZvgKdpA41+E4JG8Vu+9D9KNGRnLASOCxRknV18MubZlEEyKby9A6TaKoPrz7GVQZP+36V9DtAJAza74nHSDNAQG/4w2BLOw9+VrDNdXwjMbgG+SN4f1K+e554OirtSMVB73VXjdwoH/FyX+7+dcUZRQ7V2n37jIVOE6CcuEPjzdnkvKSqBsdTO3Bt66+QtS9BwGHu5c01+Q7jvIl greg@nixos ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDR4vmc5TiymSjMB7E+oYsiTxOg+2xwnLAILYjQKPA7dIvz/A/HW31R1aVVxNEgkHm8qeqmgE1bUysMMl128zvdKmwkMmq2uagx9hboyfCwOYRaQOtpS0dlgSllhM654vL9553t94sTuMIfNUiXBD3EV2Z5JJ1RteCkBTJjzmXQnV9he0xozBYOdGv35UGneQzAr7Pps9iK81mR4yW+vLcW3pAaPmDBbN7C6WFxqcEBWsaJZK0rLCTrQo+6B130XgH6gPgh4GyDaRmtRJl63yANiP/RfkDFTPKOh87slLLZaHJUe94P2CTZw0e9xSzWuzx71nBp9JhkoZkI9XD+AnbHIZ9X3twIADUf+D0fivzOH+Yzne0gNRFa+O4x8xd/xj8QeM+Rr1ATikBf/FRfyx+RzHgHS1ZyOKfIpQbrm44E8Smv7FzS5RcCfAScSn0npOqP0cilYjtDCEoeMVsx4XQy4+iYLOA/EaMICSz2PwQFG/KXe7NK30Cc5flq5qUiz8TX1Mzlxuro4qTktYSXZBs5YyEg3Za/hcqMV52kVn0W8S1DatHOL4TlRKYeKsg1hWNvtm2MRqJvWkqK9vNNL86Ew5D5hgXdCk+AiRzOhQxfprPYMea2Vx1Mkaq3VYHWmJBWc/m4aOKUSajhFu8KG7l8bc4IkgC+qQCYzr6pCUDlCaCEF1iQ3lItSkbJJmRBHKEOb85lsIJ/SZ0bhsMl8bc9z33zY+bwv2NezG/aKVGrny4ZTAI1BKkZN/60L0yzJihyKamEa442jjnvG1jzC2wEtd/0gCGWScfZsQWqDu97spbeq8jrc67U9xqlGTrWyyNsCW2lpu26cQWWRC8ufl5zBNRDFDSYKceBaJ2+sx1GPj3YYdJSlTt5JvxNyBg0BGfGqCTd0w4IXF3KP9IZRWWAKPaOZcil2MRZwYhWEd7p+CtKVAL93uW0sE+0C13+iFMnBUkFBJ2dZH+tWpywCRYcrVNvrBlsHe2XniwBwvQHUFgKaQAB8upFTK1xBWTh2S+CVyNed/fckAUrPDj4sI2NERGcyPC5Oi6r0fUPtcWvKRfA/yXx5A0iNWc6acTqd5wwSO3s8rOCjIwdczZmkmnjAf3UKhmtDnwRd9rbO5Hanom80re9Dk0W+z9E2+70b9iYvZ60pbw+cG4WqEQnr02RS8hKvU0CsYFoDMTzV4snqTKNrl0IeD+Fmjl7oDkcC4YQbZd2902qVL3WHHvW+p0WQ1B/rk8BPVRYVmrUQbqwPFCQlmTe3Zy+LpqbWYemhQJGVSiEiioVNCc7pHO6RyWLCoEQKwKHAoNleKtkG94hT/d0z+1RYpB/nbJ51BPihK5EMlXbw/Hu1SVaaDLOSL6p greg@mm +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINAX6pNx5mbwIa8X+GzktyNijfYmJUpgROFpRxSW9js0 greg@linode +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQCXP9nxL5Hg1R1AtT78zJl+ObCDZsnWWAqAYhTVjpRvYpiTbODvCf2IImvUsLGMdgo/xdSSzNqQcK6+KZVeNbvRSsw0ssWw7ggYnhw/yyv/KDZwnqXsppeucicnwpQNvts154yOqAvuuMaOYCTTQoOVvecDdgtA3svIpfxL3vVB/Mq/Ns/NwoE9XKz3NBYlWytqDcvSwR6Les7RzbMIs6axSfMVNwm9w41dG1NqDMteLjKlQ8bFfrtWXZ4QHKlnEWatOgJIzbP1hU91JvvzfypjleGuE9EBCSayqhu9PuxJ1/yxMJKSMaXUl8SoPMLsPNr1ZS5ZNjkNCvZK4fI+CqyAXtbgeSGKIKqZhg9z6/fR9SG0l3Gh3Prtw+AEuE+Xzb99Bi4IAe8lTaL+lw+z+CmsXR+kcJ4nnNrmf1fnDsI4l1EctVGb3Yt3tutV6GjB4mDjIYKwNBxuIx8hlugmZIy3oEUGrh85o5wnXlJQzmhszS4eas99dj1L5tj5dF4O/ED7SyQI5e7V9Pb5AgolcvLLXcFzDuy43oU8kWvQJMMvbEIFr6qPXWmp8MvrSTucRQCCzWJVudhrYhodXA56tRoJvFIRs0s12p/YXzsmJbKxPiVwLGOlCd2CqbdM2rCqN2LkUeOAQitb/8wv4njRKZ4lgqhjyXnBtoD2Nm/NmuIERoUY9J21dOhc2tg0zLvH120xVKa+WN5HVOOG9LyKl7koyc8nqdSDKFhcN4joYmnZKfyJUJzQIhiQayEfvWfTNJiNVkMIE2OqQ4O64s/7QzOHeHSMzY4TCO7+5bK9ecOqPxCDHLHhO0xVA3/w4FscRkObjkQ6zv3UCFJTSbr4YkdUIk8OtRR2KN9y9txrt/OS1l1DigVyuYUdz/L83+Y8E8d3l0hq/S1YLMwlkCbHE8hm0HxlLuyTA3OqXizRxNk7w4ku9OC4+nHrj03i2apNG0Z/ojcGsJxSBLhPGlPWbDJ2h7YL+lkDZFitdhBZHjIQKC2dNoretA8zEzNk48Pi829NFRuXqjSsq3iOJ1sXP/lMAZvdzbZOQ8CrH5SWb9GDeWR0uh76RXzKXvv5UTtu1PpYj/BHToApc8kUAxpUh3ypjt6bS7XLYtk74PEZHD3HXbpBYBnMNPUp2ecDw6rxpLxq3rnzROriX4Uvy0sOx8Q13ZgrZwxLeEWImlK9qQT4SYytGGxt4vwG0R2B8zS1xNiNC/B8jnBrK4GwnYSuJwNMrJ8vk1u9gn1pCj51RslBsldVzVB30jxNU74iD/WQGJudJrUAYkQ5EpArKZK0GQfaRXM6VzsvyLBA02CZJkeIU0jUc6Q1Nms+C8teKrP8+EKXONT/igsLXwfLMiR2CqVP greg@nixos diff --git a/home/templates.nix b/home/templates.nix deleted file mode 100644 index 7f6ccb8..0000000 --- a/home/templates.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = [ - pkgs.cookiecutter - ]; -} diff --git a/home/xonsh.nix b/home/xonsh.nix index 029a3da..2281b50 100644 --- a/home/xonsh.nix +++ b/home/xonsh.nix @@ -41,7 +41,7 @@ cylint = "./scripts/run_yaml_lint.py"; cpip = "compass workspace run src/python3/uc/tools:run_pip_compile"; - cleanup = "nix-collect-garbage -d && nix store optimise"; + cleanup = "nix-collect-garbage --delete-older-than 30d && nix store optimise"; d = "vox deactivate"; devroles = "cd ~/src/ansible_collections/devroles"; dirflake = "nix flake new -t github:nix-community/nix-direnv"; diff --git a/hosts/default.nix b/hosts/default.nix index 9311317..c3792c5 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -16,7 +16,7 @@ let }; in channel.lib.nixosSystem { inherit system; - specialArgs = { inherit nixpkgs; }; + specialArgs = { inherit nixpkgs inputs; }; modules = [ { nixpkgs.overlays = overlays; @@ -26,6 +26,7 @@ let home-manager.extraSpecialArgs = { inherit gnome gui inputs overlays; home = "/home/greg"; + host = name; }; } inputs.agenix.nixosModules.default @@ -36,7 +37,11 @@ let ] ++ extraMods; }; in { - "2maccabees" = unstable { name = "2maccabees"; system = "aarch64-linux"; }; + "2maccabees" = unstable { + system = "aarch64-linux"; + name = "2maccabees"; + }; + genesis = unstable { name = "genesis"; }; jude = unstable { name = "jude"; gnome = true; diff --git a/hosts/genesis/default.nix b/hosts/genesis/default.nix new file mode 100644 index 0000000..1f0d378 --- /dev/null +++ b/hosts/genesis/default.nix @@ -0,0 +1,49 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = [ + # Include the results of the hardware scan. + ./dnsmasq.nix + ./hardware-configuration.nix + ./home-assistant.nix + ./networking.nix + ./vhosts.nix + ]; + + greg.home = true; + greg.gnome.enable = false; + + # Bootloader. + boot.loader = { + systemd-boot.enable = true; + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot/efi"; + }; + }; + + networking.hostName = "genesis"; # Define your hostname. + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; +} diff --git a/hosts/genesis/dnsmasq.nix b/hosts/genesis/dnsmasq.nix new file mode 100644 index 0000000..86a6fe7 --- /dev/null +++ b/hosts/genesis/dnsmasq.nix @@ -0,0 +1,108 @@ +{ config, pkgs, ... }: + +let + extraHosts = builtins.concatStringsSep "\n" [ + # Local hosts + "10.42.0.1 switch" + "10.42.1.1 router genesis genesis.thehellings.lan dns dns.thehellings.lan smart smart.thehellings.lan jellyfin jellyfin.thehellings.lan" + #"10.42.1.2 2maccabees 2maccabees.thehellings.lan dns dns.thehellings.lan smart smart.thehellings.lan jellyfin jellyfin.thehellings.lan" + "10.42.1.3 printer" + "10.42.1.4 chronicles nas" + "10.42.1.12 tv" + + # Tailscale hosts + "100.90.74.19 jude.shire-zebra.ts.net" + "100.99.244.92 dns.shire-zebra.ts.net 2maccabees.shire-zebra.ts.net smart.shire-zebra.ts.net jellyfin.shire-zebra.ts.net" + "100.119.228.115 chronicles.shire-zebra.ts.net nas.shire-zebra.ts.net" + "100.115.57.8 linode.shire-zebra.ts.net" + + # Dev hosts + "10.42.101.1 icdm.lan wiki.icdm.lan *.icdm.lan" + ]; + + extraConfig = builtins.concatStringsSep "\n" [ + ]; + + lanDevice = "enp1s0"; +in +{ + # Enable the service with its own configuration + services.dnsmasq = { + enable = true; + settings = { + domain = "thehellings.lan"; + dhcp-range = [ + # "${lanDevice},10.42.0.1,10.42.1.255,255.255.0.0,static" + "${lanDevice},10.42.2.1,10.42.2.255,255.255.0.0,12h" + "vlan66@${lanDevice},192.168.66.3,192.168.66.150,255.255.255.0,12h" + "vlan67@${lanDevice},192.168.67.3,192.168.67.150,12h" + ]; + dhcp-option = [ + "${lanDevice},option:router,10.42.1.1" + "${lanDevice},option:dns-server,10.42.1.1,1.1.1.1" + "${lanDevice},option:domain-search,thehellings.lan,shire-zebra.ts.net" + + "vlan66@${lanDevice},option:router,192.168.66.1" + "vlan66@${lanDevice},option:dns-server,192.168.66.1" + + "vlan67@${lanDevice},option:router,192.168.67.1" + "vlan67@${lanDevice},option:dns-server,192.168.67.1" + ]; + dhcp-host = [ + # Static IPs for things in the IOT range + "98:da:c4:77:7f:4d,192.168.66.102" + "28:87:ba:0e:ca:da,192.168.66.74" # KS200M switch + "8c:49:62:aa:58:60,192.168.66.108" # Roku, HiHandsome + "28:87:ba:0e:c9:fd,192.168.66.75" + "4c:a1:61:05:cd:52,192.168.66.61" + "8c:85:80:1c:f9:d1,192.168.66.104" + "48:d6:d5:5d:81:21,192.168.66.65" # Google Home + "ac:84:c6:5e:4b:28,192.168.66.100" + "d8:0d:17:19:60:62,192.168.66.112" + "0c:80:63:41:6c:5d,192.168.66.98" # HS200 switch + "0c:80:63:41:74:73,192.168.66.106" + "0c:80:63:41:6e:0f,192.168.66.90" + "98:da:c4:20:f3:64,192.168.66.6" + "98:da:c4:21:1b:2e,192.168.66.85" + "98:da:c4:20:ea:db,192.168.66.107" # HS220 switch + "f0:03:8c:b3:b0:f6,192.168.66.55" # Roomba + "98:da:c4:77:80:18,192.168.66.84" + "98:da:c4:77:82:7b,192.168.66.105" + "e4:f0:42:61:fa:b5,192.168.66.149" # Google Home-mini + "b4:b0:24:9a:14:0e,192.168.66.131" + "6c:29:90:3e:e2:02,192.168.66.66" # wiz + "54:af:97:83:ed:33,192.168.66.80" + "54:af:97:c2:0f:a1,192.168.66.76" + "b4:b0:24:9a:12:53,192.168.66.130" # KL125 + ]; + expand-hosts = true; + log-dhcp = true; + log-queries = true; + addn-hosts = "/etc/adblock_hosts"; + # Public AdGuard DNS servers + server = [ + "94.140.14.14" + "94.140.15.15" + ]; + }; + extraConfig = "${extraConfig}"; + }; + environment.systemPackages = [ pkgs.curl ]; + + # Regularly update DNS block list + services.cron = { + enable = true; + systemCronJobs = [ + "* * * * * root ( ${pkgs.curl}/bin/curl -s https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | sed '1,33d' > /etc/adblock_hosts && systemctl restart dnsmasq ) 2>&1 > /var/log/adblock.log" + ]; + }; + + # Allow traffic through + networking.firewall = { + allowedTCPPorts = [ 53 ]; + allowedUDPPorts = [ 53 67 ]; + }; + + # Custom host addition + networking.extraHosts = "${extraHosts}"; +} diff --git a/hosts/genesis/hardware-configuration.nix b/hosts/genesis/hardware-configuration.nix new file mode 100644 index 0000000..8c1e016 --- /dev/null +++ b/hosts/genesis/hardware-configuration.nix @@ -0,0 +1,45 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot = { + initrd = { + availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ]; + kernelModules = [ ]; + }; + kernelModules = [ "kvm-intel" ]; + extraModulePackages = [ ]; + }; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/a509426b-5af7-4d04-ac42-619674d932d9"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + fileSystems."/boot/efi" = { + device = "/dev/disk/by-uuid/5AC6-50D7"; + fsType = "vfat"; + }; + + swapDevices = [ { + device = "/dev/disk/by-uuid/a57f8b82-dc0c-4906-8a48-56203d07556b"; + } ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; + # networking.interfaces.enp2s0.useDHCP = lib.mkDefault true; + # networking.interfaces.eth2.useDHCP = lib.mkDefault true; + + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/genesis/home-assistant.nix b/hosts/genesis/home-assistant.nix new file mode 100755 index 0000000..357a5b8 --- /dev/null +++ b/hosts/genesis/home-assistant.nix @@ -0,0 +1,93 @@ +{ config, pkgs, ... }: + +let + service_list = [ "podman-home-assistant.service" ]; +in +{ + virtualisation.podman.enable = true; + + services.home-assistant = { + enable = true; + configDir = "/var/lib/hass"; + package = (pkgs.home-assistant.override { + extraComponents = [ + "accuweather" + "calendar" + "cast" + "eufy" + "lovelace" + "nextcloud" + "smart_meter_texas" + "solaredge" + "tplink" + "wiz" + "zwave_js" + ]; + }).overrideAttrs (oldAttrs: { + doInstallCheck = false; + }); + + config = { + default_config = {}; + tts = [ { platform = "google_translate"; } ]; + http = { + use_x_forwarded_for = true; + trusted_proxies = [ "127.0.0.1" "::1" ]; + server_host = "127.0.0.1"; + }; + #"automation manual" = *nix config here* and so on + "automation ui" = ""; + "script ui" = ""; + "scene ui" = ""; + }; + }; + + # Although NixOS has a package for Home Assistant, it is not kept as up to date as the container and the upstream + # is very vocal about only supporting their own container or the HAOS deployments. So we deploy the container here + # and avoid any potential messes from that + virtualisation.oci-containers = { + backend = "podman"; + + # I have ZWave devices. The easiest way to connect to them is the zwavejs2mqtt service running, so we spin up + # its container and map the ZWave device into it + containers.zwave = { + image = "zwavejs/zwavejs2mqtt:latest"; + ports = [ "8091:8091" "3000:3000" ]; + volumes = [ "/var/lib/zwave:/usr/src/app/store" ]; + extraOptions = [ + "--device" "/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave" + "--pull=newer" + ]; + }; + }; + + # Both of the above container need storage for their configuration and devices, but it is not created correctly by + # the container. So we add the creation of /var/lib/{zwave,hass} to the systemd Unit files + systemd.services = { + "podman-zwave".serviceConfig = { + StateDirectory = "zwave"; + StateDirectoryMode = pkgs.lib.mkForce "0777"; + }; + }; + + + greg.proxies = { + "smart.thehellings.lan".target = "http://127.0.0.1:8123"; + "genesis.shire-zebra.ts.net" = { + target = "http://127.0.0.1:8123"; + path = "/smart/"; + }; + }; + + # Ensure that both ports are up and running. We keep 8123 directly open because we are on the LAN and sometimes want to connect + # directly for troubleshooting Nginx configuration + networking.firewall = { + allowedTCPPorts = [ 80 443 8091 8123 ]; + }; + + greg.backup.jobs.zwave = { + src = "/var/lib/zwave"; + dest = "zwave"; + user = "root"; + }; +} diff --git a/hosts/genesis/networking.nix b/hosts/genesis/networking.nix new file mode 100644 index 0000000..d4d040e --- /dev/null +++ b/hosts/genesis/networking.nix @@ -0,0 +1,117 @@ +{ pkgs, config, ... }: +let + lan = "enp1s0"; + wan = "enp2s0"; + iot = "vlan66"; +in { + greg.tailscale.enable = true; + + # Really, why do I still have to force-disable this crap? + boot.kernel.sysctl = { + "net.ipv6.conf.${lan}.disable_ipv6" = true; + "net.ipv6.conf.${wan}.disable_ipv6" = true; + "net.ipv6.conf.${iot}.disable_ipv6" = true; + "net.ipv6.conf.lo.disable_ipv6" = true; + }; + + networking = { + enableIPv6 = false; + networkmanager.enable = pkgs.lib.mkForce false; + #defaultGateway = "10.42.1.1"; + # 100.100.100.100 is the tailscale DNS + nameservers = [ + "1.1.1.1" + #"100.100.100.100" + "127.0.0.1" + ]; + interfaces = { + # This is our WAN port + "${wan}" = { + useDHCP = true; + }; + + # This is our LAN port + "${lan}" = { + ipv4.addresses = [ { + address = "10.42.1.1"; + prefixLength = 16; + } ]; + useDHCP = false; + }; + wlan0.useDHCP = false; + + "${iot}" = { + useDHCP = false; + ipv4.addresses = [ { + address = "192.168.66.1"; + prefixLength = 24; + } ]; + }; + }; + + vlans = { + "${iot}" = { + id = 66; + interface = lan; + }; + }; + + firewall.enable = false; + # Router portion here + nftables = let + myvars = { + lanInterfaces = [ lan ]; + wanInterface = wan; + limitedLan = [ iot ]; + tcpPorts = config.networking.firewall.allowedTCPPorts; + udpPorts = config.networking.firewall.allowedUDPPorts; + }; + in { + enable = true; + rulesetFile = pkgs.template "router.nft" myvars ./nftables.nft; + }; + }; + + + fileSystems."/media" = { + device = "10.42.1.4:/volume1/video/"; + fsType = "nfs"; + options = [ "ro" ]; + }; + + services.jellyfin = { + enable = true; + openFirewall = true; + }; + + greg.proxies = { + "jellyfin.thehellings.lan".target = "http://localhost:8096"; + "jellyfin.shire-zebra.ts.net" = { + target = "http://localhost:8096"; + genAliases = false; + }; + }; + + ######### + # Blind service proxy behind the walls of the VPN + ######## + services._3proxy = { + enable = true; + services = [ { + type = "socks"; + auth = [ "strong" ]; + bindPort = 3128; + acl = [ { + rule = "allow"; + users = [ "greg" ]; + } ]; + } ]; + #usersFile = "/run/agenix/3proxy"; + denyPrivate = false; + }; + #age.secrets."3proxy" = { + # file = ../../secrets/3proxy.age; + # mode = "776"; + #}; + networking.firewall.allowedTCPPorts = [ 3128 ]; +} diff --git a/hosts/genesis/nftables.nft b/hosts/genesis/nftables.nft new file mode 100644 index 0000000..2c82f5e --- /dev/null +++ b/hosts/genesis/nftables.nft @@ -0,0 +1,60 @@ +#!/usr/bin/env nft -f + +table ip filter { + define FRIENDS = { {{ '\"' + ( lanInterfaces | join('\", \"') ) + '\"' }} , "tailscale0" } + define SUS = { {{ limitedLan | join(", ") }} } + define LAN = { $FRIENDS, $SUS } + + counter tcp_dns {} + counter udp_dns {} + counter catchall {} + counter sus {} + + chain output { + type filter hook output priority 100; policy accept; + } + + chain input { + type filter hook input priority 0; policy drop; + + iifname lo accept + iifname $SUS counter name sus + + # Router needs to yield up DNS and DHCP for itself, in my case + iifname $LAN tcp dport { 53, 67 } counter name tcp_dns accept + iifname $LAN udp dport { 53, 67 } counter name udp_dns accept + # Open the specific ports that we allow + {% for port in tcpPorts %} + iifname $FRIENDS tcp dport {{ port }} accept + {% endfor %} + {% for port in udpPorts %} + iifname $FRIENDS udp dport {{ port }} accept + {% endfor %} + + iifname $LAN counter name catchall accept comment "Allows LAN traffic and outgoing" + iifname {{ wanInterface }} ct state { established, related } accept comment "Allows existing connections" + iifname {{ wanInterface }} icmp type { echo-request, destination-unreachable, time-exceeded } accept comment "Allow some ICMP traffic" + iifname {{ wanInterface }} counter drop comment "Drop other incoming traffic, and count how much" + } + chain forward { + type filter hook forward priority 0; policy drop; + iifname $LAN oifname {{ wanInterface }} accept comment "Forward LAN to WAN" + iifname {{ wanInterface }} oifname $LAN ct state established, related accept comment "Allow incoming established traffic" + } +} + +table ip nat { + chain postrouting { + type nat hook postrouting priority 100; policy accept; + oifname { {{ wanInterface }} } masquerade + } +} + +table ip6 filter { + chain input { + type filter hook input priority 0; policy drop; + } + chain forward { + type filter hook forward priority 0; policy drop; + } +} diff --git a/hosts/genesis/vhosts.nix b/hosts/genesis/vhosts.nix new file mode 100644 index 0000000..e899089 --- /dev/null +++ b/hosts/genesis/vhosts.nix @@ -0,0 +1,10 @@ +# Virtual hosts that don't seem to have any better place to live should go in here. +# There are others that are specific to their own purposese scattered about in the +# configuration in places where they more naturally live. This is more of a catchall +# for ones that do not have a better place to live +{ ... }: + +{ + # The module doesn't handle this + services.nginx.virtualHosts."dns.thehellings.lan".serverAliases = [ "dns" ]; +} diff --git a/hosts/jude/boot.nix b/hosts/jude/boot.nix index 9d53e14..efde9e0 100644 --- a/hosts/jude/boot.nix +++ b/hosts/jude/boot.nix @@ -1,17 +1,35 @@ -{ ... }: +{ lib, ... }: { # Use the systemd-boot EFI boot loader. #boot.loader.systemd-boot.enable = true; - boot.loader.grub.device = "/dev/nvme0n1"; - boot.loader.grub.useOSProber = false; - boot.loader.grub.extraEntries = '' - menuentry "Windows" --class windows --class os { - insmod nfts - search --no-floppy --set=root --fs-uuid A41B-5963 - chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi - } - ''; - boot.loader.efi.canTouchEfiVariables = true; + boot = { + supportedFilesystems = [ "ntfs" ]; + loader = { + systemd-boot = { + enable = true; + configurationLimit = 10; + extraEntries = { + "Windows.conf" = (lib.strings.concatStringsSep "\n" [ + "title Windows" + "efi /EFI/Microsoft/EFI/bootmgfw.efi" + ]); + }; + }; + grub = { + enable = false; + device = "/dev/nvme0n1"; + useOSProber = true; + efiSupport = true; + extraEntries = '' + menuentry "Windows" --class windows --class os { + insmod ntfs + chainloader (hd0,0)/EFI/Windows/bootmgfw.efi + } + ''; + }; + #efi.canTouchEfiVariables = true; + }; + }; networking.interfaces.enp4s0.useDHCP = true; } diff --git a/hosts/jude/default.nix b/hosts/jude/default.nix index ca949ad..35ee182 100644 --- a/hosts/jude/default.nix +++ b/hosts/jude/default.nix @@ -17,6 +17,28 @@ greg.kde.enable = false; environment.systemPackages = with pkgs; [ + # Video/Audio data composition framework tools like "gst-inspect", "gst-launch" ... + gst_all_1.gstreamer + # Common plugins like "filesrc" to combine within e.g. gst-launch + gst_all_1.gst-plugins-base + # Specialized plugins separated by quality + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-ugly + # Plugins to reuse ffmpeg to play almost every video format + gst_all_1.gst-libav + # Support the Video Audio (Hardware) Acceleration API + gst_all_1.gst-vaapi oathToolkit ]; + fileSystems = { + "/boot" = { + device = "/dev/nvme0n1p1"; + fsType = "auto"; + }; + "/windows" = { + device = "/dev/nvme0n1p3"; + fsType = "ntfs-3g"; + }; + }; } diff --git a/hosts/jude/virt.nix b/hosts/jude/virt.nix index ed78ae4..a5cbeda 100644 --- a/hosts/jude/virt.nix +++ b/hosts/jude/virt.nix @@ -2,11 +2,14 @@ { environment.systemPackages = with pkgs; [ + dmidecode guestfs-tools libguestfs + ovftool packer virt-manager vmware-workstation + vmfs-tools ]; # Give my user access to the libvirtd process @@ -23,8 +26,8 @@ enableExtensionPack = true; }; - waydroid.enable = true; - lxd.enable = true; + waydroid.enable = false; + lxd.enable = false; }; users.extraGroups.vboxusers.members = [ "greg" ]; diff --git a/modules-all/default.nix b/modules-all/default.nix index 57d8458..ecbdcad 100644 --- a/modules-all/default.nix +++ b/modules-all/default.nix @@ -16,6 +16,12 @@ } ]; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; + settings = { auto-optimise-store = true; experimental-features = "nix-command flakes"; diff --git a/modules-linux/router.nix b/modules-linux/router.nix index 0a7f561..b483587 100644 --- a/modules-linux/router.nix +++ b/modules-linux/router.nix @@ -17,6 +17,10 @@ let udpPortsString = lib.strings.concatMapStringsSep "\n" (x: "iifname { ${lanList}, \"tailscale0\" } udp dport ${toString x} accept") openUDPPorts; in lib.strings.concatStringsSep "\n" [ "table ip filter {" + " chain output {" + " type filter hook output priority 100; policy accept;" + " }" + " chain input {" " type filter hook input priority 0; policy drop;" diff --git a/overlays/aacs.nix b/overlays/aacs.nix new file mode 100644 index 0000000..cf123a6 --- /dev/null +++ b/overlays/aacs.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +pkgs.writeShellScriptBin "aacs" '' +set -ex +[ ! -d "''${HOME}/.config/aacs" ] && mkdir -p "''${HOME}/.config/aacs" +cd "''${HOME}/.config/aacs" +[ -f KEYDB.cfg.zip ] && rm -f KEYDB.cfg.zip +curl -L -o KEYDB.cfg.zip "http://fvonline-db.bplaced.net/fv_download.php?lang=eng" +${pkgs.unzip}/bin/unzip KEYDB.cfg.zip +mv keydb.cfg KEYDB.cfg'' diff --git a/overlays/copier.nix b/overlays/copier.nix deleted file mode 100644 index 82fa817..0000000 --- a/overlays/copier.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ lib, buildPythonPackage, fetchPypi, pkgs, -colorama, -dunamai, -iteration-utilities, -jinja2, -jinja2-ansible-filters, -packaging, -pathspec, -plumbum, -pydantic, -pygments, -pyyaml, -pyyaml-include, -questionary, -setuptools, -wheel}: - -let - pydeps = [ - colorama - dunamai - iteration-utilities - jinja2 - jinja2-ansible-filters - packaging - pathspec - plumbum - pydantic - pygments - pyyaml - pyyaml-include - questionary - setuptools - wheel - ]; -in buildPythonPackage rec { - pname = "copier"; - version = "6.2.0"; - - src = fetchPypi { - inherit pname version; - sha256 = "sha256-eSxm7Rpu3dhWkLoSA1/b8IemWxjIsHwlJ+NYEpbilkk="; - }; - - meta = with lib; { - description = "A library and CLI app for rendering templates"; - homepage = "https://github.com/copier-org/copier"; - license = licenses.mit; - maintainers = []; - }; - - doCheck = false; - - propagatedBuildInputs = pydeps; - - buildInputs = []; -} diff --git a/overlays/default.nix b/overlays/default.nix index 1d3c84d..0906666 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -3,7 +3,6 @@ final: prev: let myPackages = pypackages: with pypackages; [ black - copier dateutil flake8 ipython @@ -48,27 +47,27 @@ in rec { jinja2-ansible-filters pyyaml-include; }; - iteration-utilities = cp ./iteration-utilities.nix {}; - jinja2-ansible-filters = cp ./jinja2-ansible-filters.nix {}; - pyyaml-include = cp ./pyyaml-include.nix {}; - xonsh-vox = cp ./xonsh-vox.nix {}; }) ]; + aacs = prev.callPackage ./aacs.nix {}; brew = prev.callPackage ./homebrew.nix {}; - enwiki-dump = prev.callPackage ./enwiki-dump.nix {}; hms = prev.callPackage ./hms.nix { pkgs = final.pkgs; }; inject = prev.callPackage ./inject.nix { inherit (final) pkgs; }; + jinja2-cli = prev.python3.pkgs.callPackage ./jinja2-cli.nix {}; + libbluray = prev.libbluray.override { + withAACS = true; + withBDplus = true; + }; setup-ssh = prev.callPackage ./setup-ssh.nix { pkgs = final.pkgs; }; + template = prev.callPackage ./template.nix { }; - xonsh = (prev.callPackage ./xonsh.nix { - #inherit (final) lib coreutils python3Packages git; - }).overridePythonAttrs (old: rec{ + xonsh = prev.xonsh.overridePythonAttrs (old: rec{ python3 = final.gregpy; propagatedBuildInputs = with final.gregpy.pkgs; old.propagatedBuildInputs ++ [ xonsh-apipenv @@ -77,9 +76,9 @@ in rec { ]; }); - bitwarden = macOver ./mac/bitwarden.nix "bitwarden"; - gnucash = macOver ./mac/gnucash.nix "gnucash"; - handbrake = macOver ./mac/handbrake.nix "handbrake"; - onlyoffice-bin = macOver ./mac/onlyoffice-bin.nix "onlyoffice-bin"; - vlc = macOver ./mac/vlc.nix "vlc"; + #bitwarden = macOver ./mac/bitwarden.nix "bitwarden"; + #gnucash = macOver ./mac/gnucash.nix "gnucash"; + #handbrake = macOver ./mac/handbrake.nix "handbrake"; + #onlyoffice-bin = macOver ./mac/onlyoffice-bin.nix "onlyoffice-bin"; + #vlc = macOver ./mac/vlc.nix "vlc"; } diff --git a/overlays/iteration-utilities.nix b/overlays/iteration-utilities.nix deleted file mode 100644 index cb272ca..0000000 --- a/overlays/iteration-utilities.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ lib, buildPythonPackage, fetchPypi, pkgs}: - -buildPythonPackage rec { - pname = "iteration-utilities"; - version = "0.11.0"; - - src = fetchPypi { - inherit version; - pname = "iteration_utilities"; - sha256 = "sha256-+R9BolSemn5A/1Rg/fkDO27lswXZvneUO2OlVFNMKnc="; - }; - - meta = with lib; { - description = "Utilities based on Pythons iterators and generators."; - homepage = "https://github.com/MSeifert04/iteration_utilities"; - license = licenses.afl20; - maintainers = []; - }; - - propagatedBuildInputs = []; - - doCheck = false; -} diff --git a/overlays/jinja2-ansible-filters.nix b/overlays/jinja2-ansible-filters.nix deleted file mode 100644 index c6eacad..0000000 --- a/overlays/jinja2-ansible-filters.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ lib, buildPythonPackage, fetchPypi, pkgs}: - -let - pydeps = pypkgs: with pypkgs; [ - ansible-core - setuptools - wheel - ]; -in buildPythonPackage rec { - pname = "jinja2-ansible-filters"; - version = "1.3.2"; - - src = fetchPypi { - inherit pname version; - sha256 = "sha256-B8EM9E1wc/TwEQLKEtmi3DG0HUfkxh7ZLvam0mabNWs="; - }; - - meta = with lib; { - description = "A port of the Jinja2 filters from Ansible"; - homepage = "https://gitlab.com/dreamer-labs/libraries/jinja2-ansible-filters"; - license = licenses.gpl3; - maintainers = []; - }; - - doCheck = false; - - buildInputs = with pkgs; [ - (python3.withPackages pydeps) - ]; - - nativeBuildInputs = with pkgs; [ - (python3.withPackages pydeps) - ]; -} diff --git a/overlays/jinja2-cli.nix b/overlays/jinja2-cli.nix new file mode 100644 index 0000000..4cca67b --- /dev/null +++ b/overlays/jinja2-cli.nix @@ -0,0 +1,39 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + flake8, + jinja2, + pytestCheckHook, + setuptools, +}: + +buildPythonPackage { + pname = "jinja2-cli"; + version = "0.8.2"; + + src = fetchFromGitHub { + owner = "mattrobenolt"; + repo = "jinja2-cli"; + rev = "0.8.2"; + hash = "sha256-67gYt0nZX+VTVaoSxVXGzbRiXD7EMsVBFWC8wHo+Vw0="; + }; + + propagatedBuildInputs = [ + jinja2 + setuptools + ]; + + checkInputs = [ + flake8 + pytestCheckHook + ]; + + meta = with lib; { + description = "A CLI interface for Jinja2 templates"; + homepage = "https://github.com/mattrobenolt/jinja2-cli"; + license = licenses.bsd2; + maintainers = [ lib.maintainers.greg ]; + }; +} diff --git a/overlays/pyyaml-include.nix b/overlays/pyyaml-include.nix deleted file mode 100644 index 4a6213f..0000000 --- a/overlays/pyyaml-include.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ lib, buildPythonPackage, fetchPypi, pkgs, -pyyaml, -setuptools, -setuptools-scm, -setuptools-scm-git-archive, -wheel -}: - -let - pydeps = [ - pyyaml - ]; -in buildPythonPackage rec { - pname = "pyyaml-include"; - version = "1.3"; - - src = fetchPypi { - inherit pname version; - sha256 = "sha256-9/vrjnG1C+Dm4HRy98edv7GhW63pyToHg2n/SeV+Z3E="; - }; - - meta = with lib; { - description = "A PyYAML extension to allow includes."; - homepage = "https://github.com/tanbro/pyyaml-include"; - license = licenses.gpl3; - maintainers = []; - }; - - doCheck = false; - - propagatedBuildInputs = pydeps; - - buildInputs = [ - setuptools - setuptools-scm - setuptools-scm-git-archive - wheel - ]; - - nativeBuildInputs = with pkgs; [ - ]; -} diff --git a/overlays/setup-ssh.sh b/overlays/setup-ssh.sh index c2dd88b..cec958a 100644 --- a/overlays/setup-ssh.sh +++ b/overlays/setup-ssh.sh @@ -1,11 +1,12 @@ # vim: set ft=bash: -if [ ! -f "${HOME}/.ssh/id_rsa" ]; then +file="${HOME}/.ssh/id_ed25519" +if [ ! -f "${file}" ]; then echo "Generating a new key" - ssh-keygen -t rsa -b 8192 -f "${HOME}/.ssh/id_rsa" -N '' - cat "${HOME}/.ssh/id_rsa.pub" >> /etc/nixos/home/ssh/authorized_keys + ssh-keygen -t ed25519 -f "${file}" -N '' + cat "${file}.pub" >> /etc/nixos/home/ssh/authorized_keys echo "Authing key to GitHub - may fail" gh auth refresh -h github.com -s admin:public_key - gh ssh-key add -t ${HOSTNAME}-auto ~/.ssh/id_rsa.pub || true + gh ssh-key add -t ${HOSTNAME}-auto "${file}" || true fi cp /etc/nixos/home/ssh/authorized_keys "${HOME}/.ssh/authorized_keys" diff --git a/overlays/template.nix b/overlays/template.nix new file mode 100644 index 0000000..e4bfcde --- /dev/null +++ b/overlays/template.nix @@ -0,0 +1,15 @@ +{ stdenv, jinja2-cli }: + +name: vars: template: +(stdenv.mkDerivation { + inherit name; + + passAsFile = [ "varsData" ]; + varsData = builtins.toJSON vars; + + nativeBuildInputs = [ jinja2-cli ]; + phases = [ "buildPhase" "installPhase" ]; + + buildPhase = ''${jinja2-cli}/bin/jinja2 --format=json ${template} $varsDataPath > result''; + installPhase = "cp result $out"; +}) diff --git a/secrets/3proxy.age b/secrets/3proxy.age index be6cc0e..39b12a8 100644 Binary files a/secrets/3proxy.age and b/secrets/3proxy.age differ diff --git a/secrets/drone.age b/secrets/drone.age index 0a64d79..f15b871 100644 Binary files a/secrets/drone.age and b/secrets/drone.age differ diff --git a/secrets/matrix.age b/secrets/matrix.age index d1413eb..dd559eb 100644 Binary files a/secrets/matrix.age and b/secrets/matrix.age differ diff --git a/secrets/nextcloudadmin.age b/secrets/nextcloudadmin.age index bcb8bb4..b6ad3a7 100644 --- a/secrets/nextcloudadmin.age +++ b/secrets/nextcloudadmin.age @@ -1,40 +1,192 @@ age-encryption.org/v1 -> ssh-rsa KsR+0w -VMaTGFrR/XXf3I5UpvEE0w0Om0TlRl7TsqCQjQXKbk13R35Y7C0Lz9fm7XPIhZje -9Uh52TZMuh5prWP5f5NBLhp0n22ASAY2zdyv/eR5QU9kV0ai8opsT/Bx79Ocuk6N -bAhlyAOfrT/o1wJuTxTXCU+6a2XmJnbrYwYQVsERiGT08RV7xL6awAT3Dk4b9ucF -2kYGdx9egq0dIp2qE5Ws8bo9LBuE8NjncK4H3vbne1g37gEBFpa4oicuK4PvVsWk -TsdfizPDA7NI4avaMNL7izCxYWIdSb25dTu9NUtQXfVQxvgAC71pVDcOXUO4iau8 -jS4Nh4/PB/2UNLhxBZ/a2Xc1HfHBxlENHDRy4VyhjhwDvzy6EFj85KEQdfC5BKiF -yo2BTHlRJJVLGkdF6oeG/rCMtRqjr6QPYPBRis/Lziz4DhGvBb0rpaG47CZfGyCo -Ev5yZGJssiNIfm38zfNmpN/xsd9K/kQjZMMpjd121CMDs0XV/sifANmPcvL0l9Sy -kzbbJjN+Tu7sN1PU01J/DpntEX8na4B/xJktP/LMwIkhyPWEz9L8qwKlZMzKQ3is -8n34BcHnmJHyVSTVrYgKUned+Wnhan4luWZD0S8RdCmnCRoR2U7ikuSTRRadatgl -8AxZCqNd+OnjNj5nsm4wBdbIixiMiAynHymyUx/hx0w +uEe6nhDJEfOSY/zDBYqjdSpx075qbgQSTWYNv+3t6/Nw8Ia/0LK/ZZEfO7TUFZO+ +EpckZuNUMiEyrxwlOFZGvvxZbu0lDZPRRgd1knl8mIGwyRUf5Q/BR3pOfNw/NuxL +pQErJLAezFoZtk8XW7wVXY/raZhlwMkVcjsUYWk3IgY3QdZjsrXqyMHsqv5Qifhx +l9lo7lB8KLWVwnsOthqWjelIJ4CMYpGZuixQBYTptMuEb/Lf8PMIGqpO71F0DxXh +4lXFC/d3PD1O6frRIt2OHNFk8R8F0awpMO+rJe9teUNNBcG4QZ5WLI+keFVzDyy9 +AAma8rY5OH1eP/KXuGKV9t8Ddbp/ekPErudNvIvm7gjtae4j8uLnm5iy3e/mkhFN +qktlm/IIZAhHTHqkaF+zxT5sqyqlqO0CKrDvXOGLdEeAoteQxlqT7rD/6eAl/nm4 +Uw0Vtei4uPGSo7lTyCPl8/52IZEdB5dF2K4LWtha58CMc2VVHe/yQ/jOlmqrCamj +e0MXjBIfpxsQs8xdBeA4ud7gD1vNAgt12GwwT98RRKz4nSvX6OIchvnoRCB1+oqf +OaqHddHAMX1S913LnUgfxg7adCLT4mcNvVIuIQKRC/trkirS5hvPyZvYzWmLAQn1 +LEFRXv0zg4fN+Auk6nYxN6Ofr4q/SOays0jklRLfeYo +-> ssh-rsa kEvMzA +M0KEYcUKnV12kLX1PSy+eSWHt1aWE9B0P0FGFsKguqgNvtVcbNQJ2mVKDBgDDBQJ +TFU4HgK7MeAv3wm7kPFzFm4330wYjQQi+9kofA/Da9BdhGsnhcYdQ1uFPW5ahIgm +xbw5Dmx82Ja/04zZgLAxJ6FNwP+z6n0OXqZ78hAQeGa34HQ3urNc50UxTtGFpPDp +w11jSGtoeS0MGxYursGkmcyotcZL8mrnppYqUYJEoRsjeg269mF5wpQYyfPlufxH +9bGdI0AisRpZ7bQNQJdQeK3obp3rpjEHOubJ5XrK3xFgUULqtcQOm516UnGUb4G1 ++t+zk3gTDkYUm5C0tFyhAeVQajtr/3PL3dQlRza7aNz7bgSmxAkqWHc5SiW9bOw1 +sqghGCd0loZmzCvNUxZ5dB62/vvXW99EG8uFQjC7p3LHKb/XArYDH9Qip8FqQHiC +s9yBgxl9rmyKRba/9iilNwBtwDYxUF+tzILebw3eSXuEwJVl95793Mw3Ccz4CUE9 +FdpIJoXls5lAUGyoQuPQnzP/x5iKFW06yb2ibpE+wF6lVWKW/aA5mw9jO3juRllI +3rihlWKSf43egZGN/EGscDPBDIqCeVPbyiHb8p9WgtKyCUdbYpavp/GANP6f4rb+ +9uOge0tLuaMArg2WAwE4lfnUNlQHY/CSZ18NbCIaXj8 -> ssh-rsa hjSvjw -EVfVhO2sgOqRtoLuJZKAzLpHzw3iqNBqrklOuXtev6no1uvK91eaNWarry6M21BA -ukGeN089MdvWZ+ZuooQT1iOd1uNmuauwKtERR1306rRFBRnrhIIsEPYMxqPif2r9 -qX6+XjoEUTXO/nKjQExmipknORiXMQTpU0/PPmy2syRu0f1hizEpc8/aMTkve0f4 -2hoC5sieprQPOojmwyxGfAp9dT5ierKs7/PRH2ln2rOFg5569kOIheEDrfMblbVi -CrhbqcJ9ewqfjEC7pZiPtRUUarwlUnVZ3pLul99QKALDIFYwcprz4l9VFr6lqUwn -3qtWKmjKEzN2jw2mB2RvymKRl50auOreH8GMOk7pvL8T6bAhvU9ApYZsHPN9Z/1B -AHzgCmyM4p3l5w3o0N14jkDbUB5ev9T7QiCcvrUCRvjLc8ZSX3V61mElAzNQcTP/ -3wWHOL8Wq8l8L73kRmn/My/lgn/s4cL09g2TElmcJ2RWfeFs+gmPF0wH7HZJpBqp -BoHQ5YUi1ixQXilYr+Ix8swhFL9PnrVoJ3Ln/gkG2fqG+bjknGzOlTsyl4u1xjua -X18XsYkJ9cl4K9R+ArL3fWxXg5SRJNhpJUYenedySvngnBjVkF0NgbkzZMIR9y89 -mh0hVmSxidbUUKZZ2v3x8Oez/OIz67Qn9oEFEgr0XwKPD9uK1nnRlDOEs+NTiN2R -G4laxV7VjCCVOEJrQMNQp9TivhHLFO5VFq9JCJkdA15iGwRR304QHv2RvBAxJ0Fl -NHOqSX0zw07BTjKaaDng8phlC/2Eou3hxOz9i2lrxKAFtoq3wuo4Uz743Yp3QkcU -DTNAp+XNFcqWvfgDa1s8pMWD0ayyWFhu9E3LyGYswWtB1eeow1oBGY3i3vn3ddjr -3StEhwoH9wFo+luYYYha7lZexbwEkwTs3ZFiGA8d0vU7NsLdwtd7YlFueVmqCLc6 -rjQMuhcSMedLq0ACNP0X+PCLfGiHRXPrfx0UQRZFMhaF7Wb4B5gsQkssco02BY5H -4AJyAxArafltEmtCPW6lPU0lQKKm/u6NrdwuwMln9KJfMZwRXiVdeyVxiLxznpls -0LU7rMhjMVVodZyHRRur3oIGb96X1w5uzY64BPLOZx94vXKFCVCKFC7BfKb563tb -99VzH5t0jsD1z51HcN8QtAUhvaPTtZP4w82xgy3nuefx3R3D0ns1ylI7logU1VzG -el/j5TYbQiDN7fGvBK7/YlLV02XDSI6wI/AmzerosDKLxe7/lvJJk/87pzFx5X/2 -mRDHHHaPT3j49K9PIqzYhjmXMkfNDF1F8wzBZ8uuB+cu2JQ4USbI8UiZCF1kh1mI -hZMXOKtC/tkEQMBHIFjepQ --> QD-grease -IGsXeglI2u+sj7bs5NoSeG+LplglQrYvp2skjHaNOIgXGA9bi00 ---- LTL5VCdJPqJku3MXXoRRIXVDuog2iimLW6CbFeL/Hz0 -q60f*f"&ˏT!@U%ÈnXu"$m1 \ No newline at end of file +IR4b7UJ4OqdagwLN5lReaUj4Z8+iRNGc4Amwj00SBedn06st0K8EOfwbFG4OeNgZ +PfvpDUy4vnpzUkhmCHnqdUqg+gD7h+8Flv41rHQN+LoBEcaHO86eFK92oVzmcYuF +sQi3Q85rHydXjhebJ+1oVwc/LPIo9EM1k2+Jv5EJ6uuZmL7iNKDYc1H7ECX+cwxp +TlcZBcoeQYf+dmWKfxOocKjviOA0036NUJUBAOLCIjYA5ZueCjiR2f2WUe1IC4fe +rSazUqKshR/ZVtrG/AabkL/kN96KxIEMe0sdX/NXjNpY+noS0/CLCR7NPklUpC5B +LjbeSiBmcmygNvDx8HWjROSmmLyiHiI52QziyqFyLo6wW9bOMXRFv5L4foPuQ/3G +GQb9xDhkAQu21ukRD2eVOfaBmxYHIUyz1pIXFqQsEyrFheBYJdsoP6emtiOYXlmF +ToJ0Ie7ChPJoBHUJSxBLeHSQ4/KSNR1Mkk7KBrzn5bD/v6ALvTsSrxbejX6f1tWR +p4teVvgLCLev/I0INZLc0hR35g/Jdz6Qg4hcEBqINFbDQR7NggOfdSRRloyYmbZi +kvMfnGcxzOciCh42m68yo8nm+yOkOvb1OxKM/fVXzpXZCknir0tTMZd0lIonAvMg +yd4Y6QsqpAb7yy51abXQe7grOEH2F8kMdDH5bFKLASrcX3kKyblscwkftaza4H/f +yFRCimnHjvVoQZPG9w6heOkgDJCGIH3Ai2NnRnAMV+jOt2CGG6MWO3kwqmP+vpOj +WrYUhgN1HhQkCAq59VdJkEXa95sfRHwpa/7ES4YwYmk8YZE2SvwKA22eLJB4XQ9f +3LcO13O0BNuIpMJq+JOrmabCp3qEeY48ZsCZdJTvHUvV9RvR4GafXIN1KNeGDbiV +knNILYzRxfWA71nNHtAXv2KjOZsEqtxuTl8aQjnxVztTLe6g6woNtHy5fgJLVoAH +5rr3Z6XjcWe/4WJmQf2kjpfrbqu4ex4b/+W/zg+GKmKNhLmyGEeUgGPwF7TeyfzK +Dx6zzx8ijnVBFRlq2fvFqWYlspmOagKvN7WvPK0h3LESVw+mOVLqypaZ5NQI5A0X +vAnmJq/2wXrabETLHYPDAJE6Zr+PWaJr3fVoW6tr74/kxMXtuV+EsHmTDrqmZUQp +Yj/pQLeaT9VtSk5MqwBq709cBtNipsXFE5DJFUuB1H2OHKzVP8TkgiqKWkEuX1V+ +llUi6vq2ZHl4VXImx9/bi6GZ3aKkBvz/Kei6aFCflujrh4xs5TJdmbMnw735fQgC +Emo8wwMCr4DQab/6C3pAgRKMQ33x01jXIwpnQ9Ni9ECVnpWgUQl/Ipm5vc/QdW9d +nbQNg9BQwBX5JSPKIw82Jw +-> ssh-rsa mMfKqA +eNHzuaUhRLdB654cTcLuFvWH2wFrihTASYUJbIEBfi/VpqGeozYBbg7eG2FBjKgI +WGWodtYdK9kakyX28QAvil6XAj1FM63yJVXApfaljKPc58yfaA1QLx1U1D5PmoWk +08H2Q5OmwFIfHweLbrRn5mWVNYvpD+dblS/dvsPSi3MIVfa8rRS1Ex5wVmUENsAW +v0GQkRXheRP4OTF7brC7W629eGpfkVxR2Pepv94zzBQgt7ODb7oCOtgesEyDElCH +64XXCnZrLc83IeCTqUig+JU3uHOkNYmKhBCd/Qd7ODILEVD9WKBZbi7vDyqsv6uc +/USCBU8T01rT4hYcgQbz6olVA1Vf41edinnzD3f3nVZafo08LEBQDmlToEjdJAIW ++lcnXIDMZg0t6NUr+ePQ3so9wom8Se8azITnkv/df213KzX3T3ujEv+oE882PmL/ +bapT+TleeIj7e1YAsWNGzbG2VPpWHGfwra97LpGplcsusEtj2URxuMiiP3X8tAxv +PC4JXfxuK+icDf1pdtHTb1TUxbgy/cuASGJzjgjmPsv00RPGWt6y2zMuLCGKa4va +0UN5UXwXNtl6IzK3TnPkvWbwydon8cUxoi9OBHOljt4pvZuwl3fCAQkTxSlHlVS/ +6GZSmb/J2HMFh7iELJK0jmulRWwAlS72xc+BuRSv2Z2I1vLSxBWoZL3Znw4Wxy8c ++zJkTKN5VjfJ4fhmDUjRZlFgvyu3YIFV1oD0DYZWSM7QKxQWDJMSBzP3zodalBp/ +CI2b/yjDpEhmXvo/wWRazz8u5eBBGAi3H43H7wUXU2f7WST50S76AA9c09jg3XK3 +iG57BvlMnJGVceCQQIpdOGxZ0bNlGLJW9uBisMTmhQ2K4BiTU5bmoTe9jeKwtUv2 +QcGJCuTFjM6sxQSaIWTBjkXUmNBUlMQNmpTB+t68lNBGAhmMHMpzoz/NDF50NqIH +fTHMAU8eC/8euMRGR8dums4FSq97AFMlrybcnnPLPktM/tDEIsfvSkix/wtpDfUw +Tnpsj14j0tUl0yq557dmC87NZNR9q4iH4NhtUdMKUBV5LpeW7zZxuGQd70p3XTOx +6Z11+Sz2Jp/xsALytPds0SAWEss2c5vTX4sp79qk0ACbBOiGG0r3YN0BqNE/ajPj +W+nKdTc+3ncZhOt+tcipGRtIaM3+5GHs5tE7BN75NwKygYXywvQZgXhN29Lhtr4T +OUDaakNt4uSiCuA7rAwVt9Z+RppBRalU03YoAJgAbvThVI4kveJURDLEOLneivOv +gVaIpQphCmHZgYauo3hgTTxYohqvqafP3FWfHWk/z369e3WySvtNC+KCue5qMFOF +Egmx2Mu5c2Heui/55KqSHQ +-> ssh-rsa hjSvjw +R1dwwXod6s4y+gIe0pmHb7d+f4zTRZVUyvZZqiMp6f7udSWwwpTACW0+ygt8CAHh +9F7Xmlz6o1eXVvpgbFZI1s85aK9lgeljOk+tqKHk6D/0l4u0r3rex3cTTXgkslL9 +57AvNoXOSUdLgka7k3AlaNiPW9sppyeTydRd9ROQAcOdd4o9rc/q8XlrK2FdyJnX +rxhBEmdMXkkDrlA7gKHHBC2JK4vq+zSYPFnqJgqYmKm5m7VaxJSE18GoWEBVv/jr +s2xY0RPr/y8QTUo66vFVZLJ8dcMG3nv4wj7cbM1wBV3gepdo6ZXN1RwFyXxB2piG +0S8PubnoeVUr7PRMtUraEsv6yEyxcsX0QnFPUiHsWNVBbr5Cj1lGCQTVseecORrO +tAikxVPMrmTWWBWp2ddSjgLicz32ry7bQcshFrNU+GoGXofr6eVGu7OnMj6aKmRe +ie8pfLodJBLPtCB8g+WXhSQrOsKf9ACro6cMcfo4dFhi07V/zbOhlvwUk+K/cOI7 +DqFtYwvItsKK/uahJd+gjBEORGjS3jri7PG9LabVVBWeg/w64ZTq781jcnJY/9rP +zOZpGu9w2BYnH5x1SCqbUaC4yLS5RIkW3C3Vj4+ZmyQTxCcErkwJiTlDQfoDZb2L +Vv7wQx+fn/EQzeTnhWhhDCHMiTjjzYEr1mg9Wub+SMvyX8bDemgTP+OJxhxAjXcV +HsO/AI+Fm7nVF6zDf0WvqKv1wDOEmpg2EYeirEE2q/xDAUo0+K4AXtbS5YEUsUFs +p4HvmoCCpriuEZY7q9a7i91IgSVeCrfKrH7slC15eXw0IjqqRY63zceGVS+FtDHV +gTduM6CpDx/f4OLKY0YXgeDgSKZsG4Qkeb1++db7tv/q/SeIS62LgTpaUUSxVnHZ +WaBASxJO8iutgSg6OichMNFiIwfIuioCQNW/P2PYXB8Y0uD00zTJp0/gOPwxNzIp +wJKy6DFMIKBh3yQx7wSy50Mcl3Lp0oiIFc6lt5v0PJPLOGWf6/ebsjglfgtCWc79 +HKeGIUPiILEs3y4NIS7k3JVSlfm17WSSRH4ogq6nDiKUOzIl/2P9tI6KHQ7Hm5lI +gmH6yGoarBodxf1vbbeVMTNjvTxTC5rbfDAeXubTJ8gAOrPVgCGi9el4BWu9yw1+ +PekATy/O9BPDp/LN9GUi6cJgz2NDAH5Q1j1pl+lhBd5TmJASx/809K8dvpoTWP0h +njLKgufW+8wVcpBitDvCaJLulkgerzZP9uUvGCT3rMjMj4ac3S//fVaYWAwc7Cxs +qyaBz2x6Kz06AF3LpZV2d2k56YmdaIKAdd+2cnU/2eD2GBcFIKBjP9nFE+KIJVZf +4xYWuJQovYbejkBfqWHiIA +-> ssh-rsa FS7DnA +kGER2nVJY1PFXepVRgmrFtfq6xRCIFHtPgFqz+VPudvDiQaW6eIflQSDFKpwr1rQ +wf6I1yXJY1Mm4+rlYWuWze3qslONFSes5FoFHNjD9pmZ6IBiGV3HYPmeCPIO+PMR +CXHnLMDl4dKBnl7QtEZwX9E7ez2cBGq7IRs79pCpRRpARYjjbQRQVcnmmBk0Ze5l +WgqYJeTWnBo/4OywKtVtYhY5/LqfkjLcdPrslMdGriraDK8YiDpv2YbNgxY7DrZE +VXq5qTjabYQ0oU93QbIc9XTtn1UGvoaAKb7VV6o+kPNU8MwXfEzdCbyd73ZwlPOp +wdVOuiQRnL3I2M2Yy0dezlof2GIgQ7BHJpxgbKLSH835NlFky67Ooz5GDg0C1eqI +dpbIeDCHG5b/TZGeGlkPsLccblLAvekZ98CRTsBN3h/LMzSgD5Ysgi+M39W4kE+4 +7Y1OwO8TQ9KU0CBe7njtiGhtcMaT2+QpCocXeNGKJOXDjneYX9yPWx6N1jL/U3rf +yM/9COD/09bDNDkn+aWqWR1M0GS0+z4WUjxqjjDuQcwu2LI1rYBcPs6Ys8/iWIY9 +vQ4qf0kBkoDrS2gPnSSxfu1/HEE1Y3i6YGmOAZvrdtK1/OVJl16WposmVlPpYlp4 +dIG3zuQeQSYSyGvGsXPmv+WKYIz92NyFTn8tiV1jE92rnZzsCux0VP09N0hOSlmv +B+QLHh9LsnJwhTYZElZfgeXB/C+5RwLWgL1jnql7/eJhjp342zlVE8CLcUOfe902 +A89ECYN+mg4Mhp9WFRG29LkTsy7HYyl1PkP4TZOMiRIQaqndTbm1Ld+3OQ6Pfgz7 +ksOLdfJSeoX09WBP/k3cevbm908hnU7KUC1WpDN9MsSf1lE1kYMWM9IR6OrfRDlW +NmyWHpU8824iX1clFNTZMLCIDiJmkbALeezuQqO0EXCrgNyCP2r3tJsv/BD6aXzu +h+wTiGv0maHZXlYeU5BtdMRcKZ6I4dNHgo2Mf8h+xxv0XuJHPHQfQSpbVxkNK26A +oEt4onSPvM4LXdyEQJ7iHWSuebN1vY/r+0f5GxC9qavL4DDiPR8S2WXEXoHnKgnp +b/SmPluBITVGSYEB9k7Z72r1MNpOcDN+nAD7Jn5CBsWVEtKoCGy7qpdlYHwdoSDb +6sdqk372RAOyiH6o1WtN2xmM4OccUJYdh18N2tXmjtXfxm2QOLCNZmw5iz56figG +VOrkybTDXUm3dBvCvefhgR8nhcTsI/XrDo1BK9jAIax+SnnYvEwOsmzZsmvY9reX +7EtWVU45O7yHLvZyuSZFXS8XpW41yTSXMlXGLS/CwTnCZdTFGFNaHfbH3gryyw8W +wm2iPDhrbSLjpmWywyvkGQ +-> ssh-rsa mMfKqA +o6dPmyM7WB12mXdpK5MPXjsuzCevVhlo7Ud2vIAsAWf8SErATIF4/59rVZGIusu0 +RM1+P/ZagI13L4VdC4OOfdEU6cOw5zpYzRRacI/uaG9By2i9ohqSvqAzyg7Rf3/z +DKQjiVwDDv/kyTzzAGRhAIuw7ZfuXgkYkeM11H3wpNUuFjPg4P5Inef5g/MEYijQ +sckJDxZ1xFuX0SfkOOR9XUQcUkVMHT3V6/tEYfNPbSoaN1txH7NA0aLTI12yGFgr +6OnlVV30Accdn/zmj0sP893ockGoAs7PgE281vRpljlHyzcygEU+luRjR0vY8Hy2 +J1q3TDXBAG4Is9aVUFBc3nwWFpB839qQTu8HNGfg14oYcm1ctB8aMEMMPMCbtrCm +ToiF2LSsSMQ7V5wqyKPra5jHc1KurjQ/vNvWZW2vvZHrh0indOyI291/H8xT8YlT +RUPZUBKuZZH/xbuzSpbEJvaO8ui2TZIQvYc+2JOGHjzIkoO8CaC/WY9yGKBOdjx+ +RD1MYKR6CPEoFxGGiYz9kIkJYVUfcySxCcMgs/L0YhnEbNMjS7h4YWIfRJjoTFCz +fm4mfvFqzAqdrn2acUrYgd6G2ZuKNIuey0Bgs9IGwL3S9o1VXSDenP7ON7iF7y4q +jiXw84u5hG6F1kEJkI9oqbxDtzBt2r5nemiGxWBFVnpKKv/R6i4eP5Y3zyTyDhN8 +IKgjVSU35q7ZwpbN6w+IivQIrEEMGMhU0Xz5UJkAQRzTG8+t2vvod70EgOIkuV2J +KSbwOlAlLuMt2g+IbVwHGYefEYWe3qU5irrcELwzgV93VFJIwf9sy8h42RbsnI4C +9nKGRmfNn/aYv0CI87NlpxsUgN8swzLq6jU6JKT9xPjw3LojON0kk4Dp5TsRVHoH +yH5sugIzLpfjJ7ERR+j1S25l6GXR0Tpz1VGZ85vy0sMIU22lvSe/TPTjvHkbK/E5 +wOAahiGXN1z2f/P2jHxhxb6CaCJRWEEW1W9fnUbo6fgLAlWyRPVkm8sSOrssxgea +Q5ZivuosfkTMtr0AXpJdXK5Lzy9TCyK5H+fpc0TYlnvWkZgpX6X4meIJqAGkf+rf +Q5TOrK9o0pROm2i9WTXoHyBSe7IuvcFSgaZSAl688tnS2aQTICrRqBIC1m//EYDS +M8AA1lo6d/Ub6lUFcSxif1qwiMreOGGtEJldTJ3kxSS6+uGQMMvzbBRjezXTTMAR +59FU1zUPZL4R4RAxv86wY4qjEOMnWHQf7+OZKd5scwxSLIIyZPVf+SSGY3B9nj7V +/HQoi8wAaBuJzTHEIFay1eDR/137yea+6/z2e71HfPLCoLwlMNyCkangnp+ycQ8w +QHHpovjPt0f3L8Ue1yX83Q +-> ssh-rsa PYwg6A +PhfZacWUEX4MoBjBMeBJF/78ayDslWIC1cV9XY0fvrr5h+Hof2rkitZHBDr45Mb1 +tpoLMGrMtAYKS7Ea1qz64SPJAjQLYmXJzWoGxy1p++ym/kPr3QyalO1OLK3vuaon +oCgguT0vs0dZ4hurDa4n3BWYy5lhmVo7x2jkJp3+LRxMA7JJZhY9oVbyp0sw0xWz +jRn4QRfdZyt3XDN/bHvNViplYslzSLlEILaZtn24eojIAvFc7RoyxV1oAwIRpvSi +kMgWTRTglNG9pKB5XtJ3hxFCQilIIRLrio46Aj6BCj6xkkT7wwGqZ6gWXqJYqu74 +e8nkGm2/+A0NtDQr1ocpWq6x51pL4rBj2ZBE4PphAs431yxPkqKnPiS5/cR84ldo +7opm3Zd4PvP/nM+sed/VUblatlgS6MN8QwxxEMdKr9giMZJvhkcBf6f+EAS06Hs3 +bITY9k0rVL+DwNvk7aVjxWyp3vpJcd0CQigJhjVNtgveKMit4alEY13SkVA0sHdH +iBOx9o4dxP/QziBL/M6sRpXQ0edxriUU0ehoIkWg2Jwzxii1hAlCYjGpyhr5ksOn +QWRYhYfTc+JXaXASHoTO8IlsSIHUh5ydrcn/5pJhpENQY4nqtrc+7+gfSBPOUWfH +wD0l7WdCaRbVNSEaFV5JUGtFiNwVg21rqBiFeCqlNiMADEyOAc0scLmroeqk0Unx +vXykd6GtBu0ep9WzZwOYXmjXPe0nNMl8wtazNJC5MfXPv5lh2eF9fqST1BjxHQyz +8R+20ZC73qilLvr2BqWbPV6mcKXPyTrweV66anUhmXkayWUOv/UbtvMhiLgcoZjN +q0MSrmVy1cOC1gx3CpDkGroExq8LntMlJVbHvlrnb3dt5wpNuoWd+CfNS68nz2s2 +FxESRM62huXR/GeSG4isOKWCSTer0kYL1GtIUaYTTjhXYiT1YBaJUtJol6q1UBje +blWJ+kwnCdzVCOzFrKlsnFO2JVwrLNfSm0tagXephy05+hrHMx5e1x8RA97z8kYV +dG+cu5n1t9FmyCoZzj5OC4xHqF2jdp66trRdvhps8nBCzsCWEl+s4mcG2VOePbrd +L1lV9aIys7UrOkzUDvl+DhT6ykyl6oV4tYiuumcmFwE8Q+uj1RDXlNsNOq1Y40S6 +oX1kyuiq4D2IxuIfG99DLSvjKbn95NX1UMwOJeKpghihdH4MfEyTtqGs/2AJka00 +SQme2RkTNi+ze9Aif4MbZPHKbQ1pR4FgwZZWOryXfo7mxJUizF0CTlWGuC1EN+VX +m0xrS7cFlH3eRoNgWBUI6m4WqbhFzUFeIErnk7FOGq1/uBvi8pGFt+CV6wu/AykA +b3HINkLMTvhgEHn/XnzkDA +-> ssh-rsa 5JwzEA +BCKJDtQfy2AME+ll1rpcnxxJK7yM6lQxBM8TyruNBNxyk6bK3OPRUoUE1otOt7O5 +IB9HexflFpMlEH+uTy9Z/k9wQBbPWNKtDlEGl73jWpC7gp9rjGtwNbeVvckSSt0D +ia/T2ctUmLVozZMskYgWPkra7M+anGVp5FCTg/kNg71AIc7umLrbBj8aKiQKzXEF +GgMD+fdLgXsJeNC3kYRpBgG3PE/PGirfja2rEs5XXjo8RkXpXyVoQ/MYqAxY+daR +OgCW2GHMT8F5lwCFlFLGsEKCaHrNgFCnrp3nTc0Yz+qjoekCi35OCGVxC1+jVew2 +vCHNhsOitFveBfjLgkblVl9EK4uGOaSRdPlgIZbWOO4WgrQGHGo7nlTr45khUOq1 +P5VxMdqovseIlCeFIYBKmCDaS+cCvMejKsREOgR4+QFGp7U72fDwg1uY3yxubBvg +FIm45kS9vsR/ae6pWi2OKzqAkCWuI/mLy1Wv2UhHrVpbElaZ98L7o/2/+vu2hZtG +uLS2mZNrkiz1Cy/JVRn8eW/7yO28M+e+mOzNiLa3eZoRdI7ClER53L+H8QQ/X+GT +XIHGaRntGnOiHmROgGkfn6smaaF+ZoT7kC6Y1G9X1tUqIvRVKT57JyRagYICGHyj +QCv/S+9VGiFMagnsOviO1EjvcimKk4XI1rgNWIfpVsXHQlWcO9VaXHl/iN24If0S +sU72NFbAMPiuNCnt0I1wsgz+DSbA+pvZmGPrO96PAPgOej15w8gxp8OYUKirUGu0 +FACXZeLWiInIr7yJ+ahtaKuwVqgN7WtYnxndXL+/AGq0qajo90+0X/by9Es8dQfW +M1IMQC3hIuGckq5dwZ+sVbn5kyrw8FweAM5pp9WOZg1S+0kVUm6EC3RMUZrva+rg +NPdYCsb/ng57I0dq6C0PJ5317mNhfS9IPE8H3Ul8lLjHSlLLT3v7gMATHof8wxuz +y7HFH7RKkvxOsXkCqizMuEYiDOUVVywR6ezojpxhrhovZIRh3BBFBlkKrbRcus7w +l+iaJJeWsB2b0H+L4kj1IaeeJoKBMaio6OFIPcatJorv2GVGm0wkSxuHLet/1svu +IYb3Nfz4iqLhvjeh46vO983K+x54MX8fsvRWFhTZ4WT2Hrr/+mqldgDBvh1Dg/uJ +Uy+LN6o4Gbu+EsNCm/biM3EvXVSmpKeLhSzSswx3itdOD3caODvNJKRxKGJ6E2Wt +FQiSFGywF3DJSgjs5+psZj9spFlt2jzoZnLSLkLNj3zbYBTc2DkijJ66juPLkXHx +NEym3rdK5XZS28LlivJ5gzfrQN+J2YaL0U/oV5yau3p7m+GyJNVr+ruVeK76tPCD +GhpPN+LjVbVItTBme+x/tQ +-> Wh4shPrk-grease 3Z?p +vDyeBSBkunx5fJuQUvG8rXbnafBfDg3vZofg1EZir+HBwSQhhUCTiCNAZJwqv6f6 +x12Lk29wt/Q+h+ru +--- D/xNQTu3lbJG4bmFx3SCwjSyWexKLAarsbuOa0fqAzk +, 46 +3PKvo*v')dd+-= \ No newline at end of file diff --git a/secrets/secrets.nix b/secrets/secrets.nix index dba5232..250b604 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -4,8 +4,25 @@ let systems = [ linode macca2 ]; user = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDLQRq55JKqLifX+31kEXyuoB8gfM+5thAlgR7XLPvvdu6g2a5cCWyozQ1I2oGbPRfJtzcJ5ifM7Ii2PuqAj3MdYFLHBEDOhIpBBWme9Ts2YB9HJ4NorBvB4zEfJd0Q7k2MmylyeBOwdwGz3bVqPRDcJbxWFMDHqr33FEs6SXdfyAQ5SvhWGARI84qz8zUUdOp6M4e3aIGO3cx1gA+YzYQ4FbUtL8+m1NFO8VoNFMZBMf5q0iF/SgEu5bmGWUCePia6DvfeBFQ2/y4Y7WmOj980WE+JmFTkIvmGruMYeGI8FuDQ2JIIIcehddy9bQbPF4VlGnTFsHqJYVRUUWc+vH1cPNMn01oB8s27ogf9e1lyhIN+cZOgp/jDt4eXcO4Wr04uwj7CI6m+d8iMQOa5Jv0hmNgqqiwOMVBlKeo0FCxlovzwvn/Lia9WZ74JqM6JwLCD8SZ0oFgiSIHOTHrQhr7iaCmj7X/0ey7VR8FnCrpeAJpG+ELTfWGshF1d9QR2zW7u4EsXTDLiuOmdJ+/KxwMvjMcWdlg2+Qch6SwulTQRxWaED2IWJo+YiAql8eaiVXu/eZJGLoiskGFZnONoLrzIT4pSjakPlrSpn/M/GkP1pDpaMkr24OhJsGpJNEU3F1ZcOMqy2iJzIxlPmU8Xg0I/OrnbJplpaXeRCqnmouJUJhWkaPzawaVyW7dtvprLWcpQtUgTRet18WLyOrLKlq1jwvNRMTPKUJ2IFJMpk2pNEP6bdiUxyMa4vrRIEU2p1zsYSUJpCRLtccZ/i/+yAqwnTA2L5TdAORi9nD2uCdM/Ljz52V3A14QapS6oqcoWx2soWKgnsbVXoG8DxmUTpll77Ze9t7Y5216SMInWuOu0vstP8ZcgFmWsiBgIYIuLA58abWHMxgD251phYidua6R3Gtkf8J/kYqTR1P6eJF1bt5efEg7FD2aL1QQZsYJo3CRNz7yVe1XqMdPbfe2mFXQVF9TDX5x6r9Ir3d0KiEmTlBdByz8nSyPJ8IQxC58NT4LNVQs3p2XH2Zcf6B4JOBSmV4NNBnLseFobsxniWjkWwZigED/D2iu3OXuuhmskCbw0hKy2rBcKffaSNMioVqYIiYNfKlMlSvAacQKqc/1HCpqgX8PwAcSgNSLy4K7/gIrTHmjY+g+CH7onzatWzkLo+0vsZRa/D/qwhhK2CU2FeU07mhnWxWuzqpJuqVaAwDTaEforK7nQUtAOFAZZP6qGhIoqsynYt4THb+QORb3QYfaP0PVgQwXfVU5Q8eUQFZ8A+siPtOASFjDumsIbseB5VzkF+UhvdseJwkX2+4pVFu8eHFDyvArYsHeGK6fBcQGJFQc2jSs6doIP9HD9IO2R ghelling@unknown38BAF87CD102"; + genesis_user = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQCXP9nxL5Hg1R1AtT78zJl+ObCDZsnWWAqAYhTVjpRvYpiTbODvCf2IImvUsLGMdgo/xdSSzNqQcK6+KZVeNbvRSsw0ssWw7ggYnhw/yyv/KDZwnqXsppeucicnwpQNvts154yOqAvuuMaOYCTTQoOVvecDdgtA3svIpfxL3vVB/Mq/Ns/NwoE9XKz3NBYlWytqDcvSwR6Les7RzbMIs6axSfMVNwm9w41dG1NqDMteLjKlQ8bFfrtWXZ4QHKlnEWatOgJIzbP1hU91JvvzfypjleGuE9EBCSayqhu9PuxJ1/yxMJKSMaXUl8SoPMLsPNr1ZS5ZNjkNCvZK4fI+CqyAXtbgeSGKIKqZhg9z6/fR9SG0l3Gh3Prtw+AEuE+Xzb99Bi4IAe8lTaL+lw+z+CmsXR+kcJ4nnNrmf1fnDsI4l1EctVGb3Yt3tutV6GjB4mDjIYKwNBxuIx8hlugmZIy3oEUGrh85o5wnXlJQzmhszS4eas99dj1L5tj5dF4O/ED7SyQI5e7V9Pb5AgolcvLLXcFzDuy43oU8kWvQJMMvbEIFr6qPXWmp8MvrSTucRQCCzWJVudhrYhodXA56tRoJvFIRs0s12p/YXzsmJbKxPiVwLGOlCd2CqbdM2rCqN2LkUeOAQitb/8wv4njRKZ4lgqhjyXnBtoD2Nm/NmuIERoUY9J21dOhc2tg0zLvH120xVKa+WN5HVOOG9LyKl7koyc8nqdSDKFhcN4joYmnZKfyJUJzQIhiQayEfvWfTNJiNVkMIE2OqQ4O64s/7QzOHeHSMzY4TCO7+5bK9ecOqPxCDHLHhO0xVA3/w4FscRkObjkQ6zv3UCFJTSbr4YkdUIk8OtRR2KN9y9txrt/OS1l1DigVyuYUdz/L83+Y8E8d3l0hq/S1YLMwlkCbHE8hm0HxlLuyTA3OqXizRxNk7w4ku9OC4+nHrj03i2apNG0Z/ojcGsJxSBLhPGlPWbDJ2h7YL+lkDZFitdhBZHjIQKC2dNoretA8zEzNk48Pi829NFRuXqjSsq3iOJ1sXP/lMAZvdzbZOQ8CrH5SWb9GDeWR0uh76RXzKXvv5UTtu1PpYj/BHToApc8kUAxpUh3ypjt6bS7XLYtk74PEZHD3HXbpBYBnMNPUp2ecDw6rxpLxq3rnzROriX4Uvy0sOx8Q13ZgrZwxLeEWImlK9qQT4SYytGGxt4vwG0R2B8zS1xNiNC/B8jnBrK4GwnYSuJwNMrJ8vk1u9gn1pCj51RslBsldVzVB30jxNU74iD/WQGJudJrUAYkQ5EpArKZK0GQfaRXM6VzsvyLBA02CZJkeIU0jUc6Q1Nms+C8teKrP8+EKXONT/igsLXwfLMiR2CqVP greg@genesis"; linode_user = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDUd5LQVl/spIfJ3mh/MERlCfSIHCh3jXnaNVnyHY2AVD2dFVgFX+Q+1adA64plXqXHEQVb3q2EMzVW14QAMP9VJspnODgpyMHwpxp6ZNUsZIH83RN8kauVHgW2LRDCZ4DLRzbqaeDm92rntapoUB74Vjto00AE3gWyGQp/v6BeAUhqE0J2p6T6xDgsuyJ+Tzm2YEUozFW8w8LSGDgaoTKzjq0WVkAo9rNaxGLr/ez8P3SUHgb2VSUrL1qrHE99KL8rravOjP0aQmGGWu/MOjgvh7icQuqYlBF6MHfxeSd7/FZApVNKzEXD9TKBg5IaCOjHH2GHnxthSC0mcjKmF2EVAXuWYDARqxmtIfV/9YdeECEFxzB6X+t6b3RYxA0/oa5Zt70WH2LILmc3U5EfiRf88x4WcsdmbcsKQ74/julgg7vYlTlndBxvl8Nd1IKd6ZD3nJBMMMKrDOYbME5r6x2VTzm/RQkpp+SHarCMXxjukhguYY3Iz9CTO2hdGaQ/41ftlOhpb3I1Gai9GymTPFDt9n3JCEVyQ1+a97ELVr+Ky1L3hMewE8nqZFIoXUB2RFMu2pD9GggDO2e6bXdN3SIHLL/8amoDK62iYgVEp1XBkzHJ7U6hhIYbkFji0KK8A7Cwg8+gOKdovycJIAWndHjaDcLmWDlBktqHIRQvLMTzE9f935faTcrSTpnrCLK/pR3f7ir7HGpD8lUug8m7DfxhH3am1Fz7uY9iNI1GLctexC7espXq/xEA/+j7JRVVKbpIubXcmJjNlKs6jOx849SpdWvLlnJpqo1PIjxE9ZDa7zlPSLMTKGTuY0ekKvvbuaOhcOBuYg1RfbdN1QIX5ba86U7giFMZb7wGh7Pbsy0PhFgO7ANgNZy81RKp45G8ozHLnXCj/qhstqjcEgUICDkT/CGnNkreu023kqOaix0nELBLwWBVM/5iWmKQZnpiBhHHDNJ3Q6DsCkIUdfOWZNCIRwGDPuV8uMOEHJIemg25Z282QqWUIfWzGOO1f0ylVmhTQooZIfjhyGXxKa6AV+/tAXQtkF5B1Z8rB5A3pYYLDmnY1E007sWpvm2L/HKV7cWUX7bkuS+qBXZyHxEn+cc6YvalJbDi5/bE5kFQudZFgKInwFiMLhX/8BpbgBUv+6MvvCn79o9qnoOnkI36A9bEOdQKpjwPdg9tkVWr0RotXfP62tIAQsxS05J7yxprC5Uitf+Bhp+Hph0tS/hyxTbN1h30vfdABouvQpcqbgUlp6psyTT17efeNbGcs9l4gkg4HOGpmF60alA1+PBZ1l7ba6bglp+CZoeA5qsCTmMxT5yLaWcEck/8WR3NHQqkER5ZyH1204Kci35kNon69y1/ greg@linode"; - users = [ user linode_user ]; + + user1 = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDLQRq55JKqLifX+31kEXyuoB8gfM+5thAlgR7XLPvvdu6g2a5cCWyozQ1I2oGbPRfJtzcJ5ifM7Ii2PuqAj3MdYFLHBEDOhIpBBWme9Ts2YB9HJ4NorBvB4zEfJd0Q7k2MmylyeBOwdwGz3bVqPRDcJbxWFMDHqr33FEs6SXdfyAQ5SvhWGARI84qz8zUUdOp6M4e3aIGO3cx1gA+YzYQ4FbUtL8+m1NFO8VoNFMZBMf5q0iF/SgEu5bmGWUCePia6DvfeBFQ2/y4Y7WmOj980WE+JmFTkIvmGruMYeGI8FuDQ2JIIIcehddy9bQbPF4VlGnTFsHqJYVRUUWc+vH1cPNMn01oB8s27ogf9e1lyhIN+cZOgp/jDt4eXcO4Wr04uwj7CI6m+d8iMQOa5Jv0hmNgqqiwOMVBlKeo0FCxlovzwvn/Lia9WZ74JqM6JwLCD8SZ0oFgiSIHOTHrQhr7iaCmj7X/0ey7VR8FnCrpeAJpG+ELTfWGshF1d9QR2zW7u4EsXTDLiuOmdJ+/KxwMvjMcWdlg2+Qch6SwulTQRxWaED2IWJo+YiAql8eaiVXu/eZJGLoiskGFZnONoLrzIT4pSjakPlrSpn/M/GkP1pDpaMkr24OhJsGpJNEU3F1ZcOMqy2iJzIxlPmU8Xg0I/OrnbJplpaXeRCqnmouJUJhWkaPzawaVyW7dtvprLWcpQtUgTRet18WLyOrLKlq1jwvNRMTPKUJ2IFJMpk2pNEP6bdiUxyMa4vrRIEU2p1zsYSUJpCRLtccZ/i/+yAqwnTA2L5TdAORi9nD2uCdM/Ljz52V3A14QapS6oqcoWx2soWKgnsbVXoG8DxmUTpll77Ze9t7Y5216SMInWuOu0vstP8ZcgFmWsiBgIYIuLA58abWHMxgD251phYidua6R3Gtkf8J/kYqTR1P6eJF1bt5efEg7FD2aL1QQZsYJo3CRNz7yVe1XqMdPbfe2mFXQVF9TDX5x6r9Ir3d0KiEmTlBdByz8nSyPJ8IQxC58NT4LNVQs3p2XH2Zcf6B4JOBSmV4NNBnLseFobsxniWjkWwZigED/D2iu3OXuuhmskCbw0hKy2rBcKffaSNMioVqYIiYNfKlMlSvAacQKqc/1HCpqgX8PwAcSgNSLy4K7/gIrTHmjY+g+CH7onzatWzkLo+0vsZRa/D/qwhhK2CU2FeU07mhnWxWuzqpJuqVaAwDTaEforK7nQUtAOFAZZP6qGhIoqsynYt4THb+QORb3QYfaP0PVgQwXfVU5Q8eUQFZ8A+siPtOASFjDumsIbseB5VzkF+UhvdseJwkX2+4pVFu8eHFDyvArYsHeGK6fBcQGJFQc2jSs6doIP9HD9IO2R ghelling@unknown38BAF87CD102"; + user2 = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQCgg6FGmtWPjw5iYTlxJLz1WBCE7zhYhXgmfPvFRt6cd+sPdBdD3axkYPwuUxIa1dxwLEHn8BY9ZajFNrbD+Y0C82stxbBGLRhScj9phGP6LPJhNJsqeuU1rXcnUS127GlFayBb92UajpgMBVlQVJVgOikdK0GZWS4LMsTafkldS5leYr4o8pJ94ZQUk04m9Y2AhkLOMWDdLqqbVS7rFDKsfNDm6YUIrc4fCFvMwo2IhKb3VMv/CqPBFWx9YWFnLoNRAUhVTbcpDWBprvgAirf1rI9jXihX78gBLYqaI0shZg3mldIfQPaPudxXAYXZBFxZkcdnlEwOIL3jvR1bQKfRroAsLs4Nz66RDMIEC6cYm6QEIppFzx5pAXmjBHk8RPYPV0Z7gHxlp2yL0C3K6E1XN/A6cvK719VxEI8Sqmzl7Dd9/wikuyZhA/ZJfShpGTFX7M4wWKd9ZB6F01ATqAqACs4BHIIakl01C+lad2WQwxCXZo3dxGTMGoUrWTlTcAIKYHA0uun0k3oU0KRcSojpGMFCedR/HfLXZ/3TxeUHAZzSFKAQqZPE+6AZMoDSqVgWW6gPvRqVbtgG17qf6kPXM7XQRw/mNnjUWYrqSzDU4eEyN0AcfWhAN7defp+ERNlDyIdvYSiTniONuBMR5nz5xhLctKosJ1DaQcyNxYok9kGhG92pShRW11JmU/AmM3K6svD2tMRNRg2sJUNYHVzr/P65vZ43jXFV9hn5VTvhNofiDmAgTiPP+4Xo25FHtzu2CDwd7ve1zZZ8WyunmHx5kevdCQBcscKnpHO5MK1EBG2acThWD3HbfzncLkP6w5ZkLngGieIB1C3UjpzbbcBTeQ2NJnra59ZpouZ/ivqoxr/xqCakKlRmi201PV4DzB3HEYhODnmieykZcpSU77EuQb5H5w4k/YY0I9ZVrwyBuMfEducUPV8ghV6HRuZYUNWhOOr+rSmPSvi24kH8kkuoG7D+6aZbLpezyl6u6RvFuwGC784nr1nLXFSMOQpjND23SuGWn6iAcSCqxJ5eBIh50U2ZylsavBjaMDp94esBEG/YyWKcFO5b3xPr75/cwaeLGttdrnMfyWFG6Iz1yFxiMvTNqLKRlGNduK6OPTet89ymu1Gau+l5kfn9YE22gvwCRWU2GuCyTk/PigFyrAKmKduglUecW+Wgylh2OQ6YLJkE3nnJ2u+ujEJsqNdoQBJRFYm4efPFp0WK6DrAmOT/fAD6TyLitWwH+1XFgDR3IKynHgTVaG5SVhjBrT9NA59b90FDmQJmKiVMItDFTn6Ir2+qMw3mvl/xHoXJ6QRuNEOTWtqh8QeJIU5+tjr0pfW+Dz4/fydmOYX3khVZADR9 greg@jude"; + user3 = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDUd5LQVl/spIfJ3mh/MERlCfSIHCh3jXnaNVnyHY2AVD2dFVgFX+Q+1adA64plXqXHEQVb3q2EMzVW14QAMP9VJspnODgpyMHwpxp6ZNUsZIH83RN8kauVHgW2LRDCZ4DLRzbqaeDm92rntapoUB74Vjto00AE3gWyGQp/v6BeAUhqE0J2p6T6xDgsuyJ+Tzm2YEUozFW8w8LSGDgaoTKzjq0WVkAo9rNaxGLr/ez8P3SUHgb2VSUrL1qrHE99KL8rravOjP0aQmGGWu/MOjgvh7icQuqYlBF6MHfxeSd7/FZApVNKzEXD9TKBg5IaCOjHH2GHnxthSC0mcjKmF2EVAXuWYDARqxmtIfV/9YdeECEFxzB6X+t6b3RYxA0/oa5Zt70WH2LILmc3U5EfiRf88x4WcsdmbcsKQ74/julgg7vYlTlndBxvl8Nd1IKd6ZD3nJBMMMKrDOYbME5r6x2VTzm/RQkpp+SHarCMXxjukhguYY3Iz9CTO2hdGaQ/41ftlOhpb3I1Gai9GymTPFDt9n3JCEVyQ1+a97ELVr+Ky1L3hMewE8nqZFIoXUB2RFMu2pD9GggDO2e6bXdN3SIHLL/8amoDK62iYgVEp1XBkzHJ7U6hhIYbkFji0KK8A7Cwg8+gOKdovycJIAWndHjaDcLmWDlBktqHIRQvLMTzE9f935faTcrSTpnrCLK/pR3f7ir7HGpD8lUug8m7DfxhH3am1Fz7uY9iNI1GLctexC7espXq/xEA/+j7JRVVKbpIubXcmJjNlKs6jOx849SpdWvLlnJpqo1PIjxE9ZDa7zlPSLMTKGTuY0ekKvvbuaOhcOBuYg1RfbdN1QIX5ba86U7giFMZb7wGh7Pbsy0PhFgO7ANgNZy81RKp45G8ozHLnXCj/qhstqjcEgUICDkT/CGnNkreu023kqOaix0nELBLwWBVM/5iWmKQZnpiBhHHDNJ3Q6DsCkIUdfOWZNCIRwGDPuV8uMOEHJIemg25Z282QqWUIfWzGOO1f0ylVmhTQooZIfjhyGXxKa6AV+/tAXQtkF5B1Z8rB5A3pYYLDmnY1E007sWpvm2L/HKV7cWUX7bkuS+qBXZyHxEn+cc6YvalJbDi5/bE5kFQudZFgKInwFiMLhX/8BpbgBUv+6MvvCn79o9qnoOnkI36A9bEOdQKpjwPdg9tkVWr0RotXfP62tIAQsxS05J7yxprC5Uitf+Bhp+Hph0tS/hyxTbN1h30vfdABouvQpcqbgUlp6psyTT17efeNbGcs9l4gkg4HOGpmF60alA1+PBZ1l7ba6bglp+CZoeA5qsCTmMxT5yLaWcEck/8WR3NHQqkER5ZyH1204Kci35kNon69y1/ greg@linode"; + user4 = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQCoGGV3eD1oF0O62JZfCWNxmViRjRGQsfOhRkQfzQROkwDlFZ7S1+02fudD9t7mPtZE6dQ4yS2+6Q3NIfGW8NBbZAlWwsQ6PnrpuAhWpWc+ng/IDQd9CH/rBCt5bWSLL8AGHa4c+qde7iyoFGK0l9jXVD9wATBFQ274WTmPacVQVHmIAmJS6ISmR6vlq9eaDj1fX8wixao6WvzfwAUvXIs8nhPEfmtyu4T/1Eev9rVIxOw3ODQjk/E0VWV4Koeptsyc+V+j+XMyA91v8f20T4Uwe5LGnJHSQS0WavHnCMWHb1tzkmiKdaNCymoDUcUF2rywMYry7JN0kZo2mp2d7OzE/RP3bz/IsAI33+DwRlDYDNzgeLsLVmOJij61AtqBZque6WDcyCF8HN0ZaY0KJPOtNlN92+GUBRF/Faei0MXZ7wW2BZL5Bc7qnXc9USyhPNsm2vQ7LLhh/NtBGqB88+C+AidTTZ/xiIHKWZJXPkWLPRcK5cfaFqHFqcVMk4U+b0FYB95vYPKmjURlAZ6WrU6dNaNaMH9hJSE6/03is4hb4t8RCRiNaR41pEACDZbATjY0DInFn1LxxpUV66xfpOVg5hKm5ScIks3KxWJ8i3v4/cX7WvbDC/UzWb2UygpsqR7/1n5LV1SNPl+/qxFfdaOyZ8WVvx7DKGxkKfkPBgGwdpSthdv7BY+SC4sT9WXQAPGnvOIk6HwKhHjJYX7AIKK64ACfGZbjBC2gg7Ocl4HkgwpYYlUWLRJdJUhHOCi3VhPZDspYhw/UxPnUhYa8lxq5l7kgkks/tFe1qHOvPe3QRW6brg3EdJNkwtMrlrstW4/nph/KFqSshzNVDlEqTAnhE1cjbBZNmlHt1Un4ixcW1b8b86mE+472pSsIEfO8vxP26brQhxepJFZGOFv2vs3XDrrtn6IMJok4e+AQSCCY0kCcgfG5nMYXUoWpGyTpN/JLG0joJuhPWt58OaOzzKNPq2+rCVAbS7/UmDCqkwxjCywxOZRwluBsEWbZaLEdOwQOfIZQGwSDBM0hfHJJxMSaLN3rCe6VZb+c/5mFXUZ46L5mOGkRlO1TOEAe4jqawAQnuGaHN8mMWSw1gKM+UBXTKa0tBR6Aj/OSfPW0jU+mz/YzzJkzNnlRFiSrLxWvL4eXaBsMZvgKdpA41+E4JG8Vu+9D9KNGRnLASOCxRknV18MubZlEEyKby9A6TaKoPrz7GVQZP+36V9DtAJAza74nHSDNAQG/4w2BLOw9+VrDNdXwjMbgG+SN4f1K+e554OirtSMVB73VXjdwoH/FyX+7+dcUZRQ7V2n37jIVOE6CcuEPjzdnkvKSqBsdTO3Bt66+QtS9BwGHu5c01+Q7jvIl greg@nixos"; + user5 = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAEAQDR4vmc5TiymSjMB7E+oYsiTxOg+2xwnLAILYjQKPA7dIvz/A/HW31R1aVVxNEgkHm8qeqmgE1bUysMMl128zvdKmwkMmq2uagx9hboyfCwOYRaQOtpS0dlgSllhM654vL9553t94sTuMIfNUiXBD3EV2Z5JJ1RteCkBTJjzmXQnV9he0xozBYOdGv35UGneQzAr7Pps9iK81mR4yW+vLcW3pAaPmDBbN7C6WFxqcEBWsaJZK0rLCTrQo+6B130XgH6gPgh4GyDaRmtRJl63yANiP/RfkDFTPKOh87slLLZaHJUe94P2CTZw0e9xSzWuzx71nBp9JhkoZkI9XD+AnbHIZ9X3twIADUf+D0fivzOH+Yzne0gNRFa+O4x8xd/xj8QeM+Rr1ATikBf/FRfyx+RzHgHS1ZyOKfIpQbrm44E8Smv7FzS5RcCfAScSn0npOqP0cilYjtDCEoeMVsx4XQy4+iYLOA/EaMICSz2PwQFG/KXe7NK30Cc5flq5qUiz8TX1Mzlxuro4qTktYSXZBs5YyEg3Za/hcqMV52kVn0W8S1DatHOL4TlRKYeKsg1hWNvtm2MRqJvWkqK9vNNL86Ew5D5hgXdCk+AiRzOhQxfprPYMea2Vx1Mkaq3VYHWmJBWc/m4aOKUSajhFu8KG7l8bc4IkgC+qQCYzr6pCUDlCaCEF1iQ3lItSkbJJmRBHKEOb85lsIJ/SZ0bhsMl8bc9z33zY+bwv2NezG/aKVGrny4ZTAI1BKkZN/60L0yzJihyKamEa442jjnvG1jzC2wEtd/0gCGWScfZsQWqDu97spbeq8jrc67U9xqlGTrWyyNsCW2lpu26cQWWRC8ufl5zBNRDFDSYKceBaJ2+sx1GPj3YYdJSlTt5JvxNyBg0BGfGqCTd0w4IXF3KP9IZRWWAKPaOZcil2MRZwYhWEd7p+CtKVAL93uW0sE+0C13+iFMnBUkFBJ2dZH+tWpywCRYcrVNvrBlsHe2XniwBwvQHUFgKaQAB8upFTK1xBWTh2S+CVyNed/fckAUrPDj4sI2NERGcyPC5Oi6r0fUPtcWvKRfA/yXx5A0iNWc6acTqd5wwSO3s8rOCjIwdczZmkmnjAf3UKhmtDnwRd9rbO5Hanom80re9Dk0W+z9E2+70b9iYvZ60pbw+cG4WqEQnr02RS8hKvU0CsYFoDMTzV4snqTKNrl0IeD+Fmjl7oDkcC4YQbZd2902qVL3WHHvW+p0WQ1B/rk8BPVRYVmrUQbqwPFCQlmTe3Zy+LpqbWYemhQJGVSiEiioVNCc7pHO6RyWLCoEQKwKHAoNleKtkG94hT/d0z+1RYpB/nbJ51BPihK5EMlXbw/Hu1SVaaDLOSL6p greg@mm"; + user6 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINAX6pNx5mbwIa8X+GzktyNijfYmJUpgROFpRxSW9js0 greg@linode"; + users = [ + genesis_user + linode_user + user + user1 + user2 + user3 + user4 + user5 + ]; everyone = systems ++ users; in @@ -20,6 +37,4 @@ in "drone.age".publicKeys = everyone; "3proxy.age".publicKeys = everyone; - - "dendrite.age".publicKeys = everyone; }