summaryrefslogtreecommitdiff
path: root/microvms/auth
diff options
context:
space:
mode:
authorGrisha Shipunov2026-07-26 08:45:30 +0000
committerGrisha Shipunov2026-07-26 08:45:30 +0000
commita38e90adf7d746cc9cb1c1e02a615e32556597fa (patch)
tree4752a20ffb4a2dab18e26952eaf4a84c9e0417e0 /microvms/auth
parent7be7bf0700dd2ae6e9e9b9726ec94d211f4615d7 (diff)
move microvms to separate folder
Diffstat (limited to 'microvms/auth')
-rw-r--r--microvms/auth/authentik.nix17
-rw-r--r--microvms/auth/default.nix78
-rw-r--r--microvms/auth/secrets.yaml39
3 files changed, 134 insertions, 0 deletions
diff --git a/microvms/auth/authentik.nix b/microvms/auth/authentik.nix
new file mode 100644
index 0000000..a1257ee
--- /dev/null
+++ b/microvms/auth/authentik.nix
@@ -0,0 +1,17 @@
+{ config, inputs, ... }:
+{
+ imports = [
+ inputs.authentik-nix.nixosModules.default
+ ];
+ sops.secrets."authentik/env" = { };
+ services.authentik = {
+ enable = true;
+ environmentFile = config.sops.secrets."authentik/env".path;
+ settings = {
+ log_level = "debug";
+ disable_startup_analytics = true;
+ avatars = "initials";
+ postgresql.host = "/run/postgresql";
+ };
+ };
+}
diff --git a/microvms/auth/default.nix b/microvms/auth/default.nix
new file mode 100644
index 0000000..734ef43
--- /dev/null
+++ b/microvms/auth/default.nix
@@ -0,0 +1,78 @@
+{ config, lib, ... }:
+let
+ mac = "02:00:00:00:00:01";
+in
+{
+ imports = [
+ ./authentik.nix
+ ];
+ sops.defaultSopsFile = ./secrets.yaml;
+ sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
+
+ sops.secrets = {
+ "wg/0xa-proxy" = {
+ owner = config.users.users.systemd-network.name;
+ };
+ };
+
+ microvm = {
+ hypervisor = "cloud-hypervisor";
+ vsock.cid = 3 + 1;
+ mem = 2 * 1024;
+ vcpu = 2;
+ interfaces = [
+ {
+ type = "tap";
+ id = "uvm-auth";
+ mac = mac;
+ }
+ ];
+ shares = [
+ {
+ source = "/nix/store";
+ mountPoint = "/nix/.ro-store";
+ tag = "store";
+ proto = "virtiofs";
+ socket = "store.socket";
+ }
+ ]
+ ++
+ map
+ (dir: {
+ source = dir;
+ mountPoint = "/${dir}";
+ tag = dir;
+ proto = "virtiofs";
+ socket = "${dir}.socket";
+ })
+ [
+ "etc"
+ "var"
+ "home"
+ ];
+ };
+
+ networking.useNetworkd = true;
+ networking.firewall.enable = lib.mkForce false; # firewalling done by the host
+
+ systemd.network = {
+ enable = true;
+ networks."11-host" = {
+ matchConfig.MACAddress = mac;
+ networkConfig = {
+ Address = "10.99.99.11/24";
+ DHCP = "no";
+ };
+ routes = [
+ {
+ Gateway = "10.99.99.1";
+ Destination = "0.0.0.0/0";
+ Metric = 1024;
+ }
+ ];
+ };
+ };
+
+ networking.hostName = "auth";
+ system.stateVersion = "24.11";
+}
diff --git a/microvms/auth/secrets.yaml b/microvms/auth/secrets.yaml
new file mode 100644
index 0000000..87d2f31
--- /dev/null
+++ b/microvms/auth/secrets.yaml
@@ -0,0 +1,39 @@
+authentik:
+ env: ENC[AES256_GCM,data:XNA4bZPi9yzHrUXOIs18i9LnlsG2/jGBKgc9zPN/3ECzvvX1Q1eejKG657PgOIvuDkqyNdn4cD7iYEl8q4vX45BMb7+hCqKm5eCuOlf2z8HeqU7Jmvh+++92RIyLiv2D9LIWDIBY,iv:J3eXfDZHmxK+10uMJu6hGUEwXSTMKt/M4fsaoJr7eL4=,tag:98swY3PkL//2mCPcHZjp1A==,type:str]
+wg:
+ 0xa-proxy: ENC[AES256_GCM,data:q6vpJZy1Cb54MhMRj0nm8QEX1a38S7Adxymex6gMtwkA6A9V3nLTHPfdJAc=,iv:EsRkUqrpUXoFVkZ8SGE2jp22SeqTlvBx8OTBCRxOjDA=,tag:JLv73iYYV6ZvJiODQOqfEQ==,type:str]
+sops:
+ age:
+ - recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl9iYG5oHBq/poBn7Jf1/FGWWbAnbx+NKjs7qtT3uAK
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHowb2lXdyBkSkFE
+ NXBuRDFSM2VPMThnUm5GUFE1dGMvc2lOZllEVlpxeEtWOVl0TWl3CnNzdzdwa281
+ QjlDcEYwQ2sybllRSnBOSDZiNE9manVNTGN6bzAxMkpka0UKLS0tIGRnVXRreENQ
+ QXE3STV3dk9vWTU5RldTRGRvSXhlMjZobHk3YUMvZmoraHcKVzGIc+T5EJFC5tPl
+ W2xBG90+KNHicTX/OkUg2qnUq3Kdbb4DVda/rYIfpjq5NzHP6G7csJvJYhVheive
+ wWGaYQ==
+ -----END AGE ENCRYPTED FILE-----
+ - recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAXrwZsBChUhVuF5gFEfj8GwQlnrqEttAytS5jVCfuE4 0xa@frituurpan
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFlJOElMUSBtSGRU
+ TG4wMUVrSEpwRi9PZS9xRExEN2d0SkZLKy9XVHJRVFp2SzhWTDAwCllHczFyVnc1
+ eW9HMVRJTkh6M09JbzNnRGcxNjFuYnkyWUd5ZWRRL09YbFkKLS0tIHR4OWFnZGdY
+ WGMvdld3clZlUUZTa3l4VUcxN0NxVVZ5MnhuV0NEZHhnYjQKOcL30dTkKrxUAPWY
+ eJF58GBz4FPMJz2MDUj8UmO2IXQciV45nXSRrMXO0KspXr33N5fRKQcg2NH80wdV
+ iaiVrA==
+ -----END AGE ENCRYPTED FILE-----
+ - recipient: age1vzwz5s35w9g8ck9l5zaq5skrnl3mqzf3hsnc9w22sj4k8tu8kqfstpg2a8
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByNXAxSDk3dVNRK01VdnZt
+ TDZWWVRFZmtzUzN3Nkh3azllRWhDenhRdDFjCjR1VnFGcWYybFhpME9pODh6OFFk
+ OUJLWTRvSFlKMEFzTEp3eHhoRXc2eUEKLS0tIFJIcXFCbTRVRUFsR05EaGJrS214
+ V2puZzZ4djZrMTRzZzdSL2c0aHpGd2cKAGr3Gac1BcKlmpYG9S1m7RgAsEZEFvHN
+ 8Uf40hHABXEKB1LXo7D8CxxLWTU+w4LOLAblaG1Rcp/mM6NYvmxhFA==
+ -----END AGE ENCRYPTED FILE-----
+ lastmodified: "2025-01-21T00:19:40Z"
+ mac: ENC[AES256_GCM,data:oqKBofuW0pUMjQ5vvKSj/DO4AqkZTRoDuD/KahzI9Q20Jyoj0lNTzxh872ngWdKhIizoB3yiWW9GUS0zWp8rj1yzwFmvvNXBnk2sWHbskDFIEgfom6jfmz7csmXQXaU0kFNEmTvyxnsTrhvdcETO6lZBTooFN955ECrcoxspsbA=,iv:JU7AtvTluophE0IIZJJiVvdpctxzkaWLFGwUWFcufvM=,tag:ro6Kf8QaFJq7wWtx9oOWBA==,type:str]
+ unencrypted_suffix: _unencrypted
+ version: 3.9.3