From a38e90adf7d746cc9cb1c1e02a615e32556597fa Mon Sep 17 00:00:00 2001 From: Grisha Shipunov Date: Sun, 26 Jul 2026 08:45:30 +0000 Subject: move microvms to separate folder --- microvms/stream/default.nix | 77 +++++++++++++++++++++++++++++++++++++++++++ microvms/stream/navidrome.nix | 16 +++++++++ microvms/stream/secrets.yaml | 37 +++++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 microvms/stream/default.nix create mode 100644 microvms/stream/navidrome.nix create mode 100644 microvms/stream/secrets.yaml (limited to 'microvms/stream') diff --git a/microvms/stream/default.nix b/microvms/stream/default.nix new file mode 100644 index 0000000..2cad795 --- /dev/null +++ b/microvms/stream/default.nix @@ -0,0 +1,77 @@ +{ config, lib, ... }: +let + mac = "02:00:00:00:00:07"; +in +{ + imports = [ + ./navidrome.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 + 7; + mem = 3 * 1024; + vcpu = 2; + interfaces = [ + { + type = "tap"; + id = "uvm-stream"; + mac = mac; + } + ]; + shares = [ + { + source = "/nix/store"; + mountPoint = "/nix/.ro-store"; + tag = "store"; + proto = "virtiofs"; + } + ] + ++ + map + (dir: { + source = dir; + mountPoint = "/${dir}"; + tag = dir; + proto = "virtiofs"; + }) + [ + "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.17/24"; + DHCP = "no"; + }; + routes = [ + { + Gateway = "10.99.99.1"; + Destination = "0.0.0.0/0"; + Metric = 1024; + } + ]; + }; + }; + + networking.hostName = "stream"; + system.stateVersion = "25.05"; +} diff --git a/microvms/stream/navidrome.nix b/microvms/stream/navidrome.nix new file mode 100644 index 0000000..0b1cd07 --- /dev/null +++ b/microvms/stream/navidrome.nix @@ -0,0 +1,16 @@ +{ ... }: +{ + services.navidrome = { + enable = true; + settings = { + Address = "10.89.88.17"; + BaseUrl = "/"; + EnableExternalServices = false; + MusicFolder = "/var/lib/navidrome/music"; + Port = 4533; + ScanSchedule = "@every 11m"; + TranscodingCacheSize = "11GiB"; + ReverseProxyWhitelist = "10.89.88.1/24"; + }; + }; +} diff --git a/microvms/stream/secrets.yaml b/microvms/stream/secrets.yaml new file mode 100644 index 0000000..d26d805 --- /dev/null +++ b/microvms/stream/secrets.yaml @@ -0,0 +1,37 @@ +wg: + 0xa-proxy: ENC[AES256_GCM,data:uZfFc4elxCAVZvdIHJ7lgoPs9qKkD9ZvLhcYbexDcqn0alaMzIr++CY52FI=,iv:CREMt6GrLHs4Jwj/55awDFHh9hQlJPEi4ZQ7ZLMPvRA=,tag:iJAGdqzQbyezmDj+tzjdNQ==,type:str] +sops: + age: + - recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl9iYG5oHBq/poBn7Jf1/FGWWbAnbx+NKjs7qtT3uAK + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHowb2lXdyB5Zytw + K1ZKTHBFYy83WU94N3Izczh1RnE4Ry9iRkEvMUxLUUNaTW52MW1ZCjIxWFI3NTJ6 + eXlXYXVVbHQ5Qjkxc0YwSU1MUjRVRi9abFl2dm1QSkx4N00KLS0tIEtaeXgyUzAv + UWhnSjR0TlJyMkpEVlJkaEdNZURXNUhQdXpkcWRYMmxFNDAKFIoZevnllkATCBog + 5R7ntMPrAlub8WnOjZVT5QdMgU3dRmxUnnfXY4PY7QpLNKyjEUxQ/5zvEeogYOSZ + IUVfhA== + -----END AGE ENCRYPTED FILE----- + - recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAXrwZsBChUhVuF5gFEfj8GwQlnrqEttAytS5jVCfuE4 0xa@frituurpan + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IFlJOElMUSBuVVJO + ZS9Ed3NrVEl4ZGRpZURZZVRaZ3pwcTZVRmJmQ3lrdHlQaWYzSjFvCkJQTXNDR2xm + WkhxdnA3RlhPRkpnMWIvS0RzcTRJdEFISlpUb0NaYXVoMlUKLS0tIGZDSGw5QjRG + bW9vUzRSRWk5ZG5rc0tjYjFzSzFuVWpJTExEVDhmdXloZzQKzJrWm1z3KRLSLkxt + ZsmunVoD55HjrFsvPNnVear40c9JB+U3+m1pjdL5eax27lrX/rlvXx7rhzOhtTkN + 9IDAjg== + -----END AGE ENCRYPTED FILE----- + - recipient: age148r2q3cy9sjem37rvgtcc4qjx8usxkdg77pqexa56gmcexn58aaslh3cnj + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLNG9vM1FqTVVBSTFYaGt2 + Rkpvci9ibXJyL3ZVbHNYbmF4Umk5ZHJ1bURFCmVjalI0S084R1dsdzdHQ0lZbmcr + SjBXSDRUUGtUQ21wN2kzUmxwZmdKWUkKLS0tIHNjM1pkemxJbWZDNGZ4T01GZVli + b05oNElQQjUrUklpYkR1TCsrTU5uUHMKWB5XybfmmjTfk/c+mRT2PNgsI4q8tbac + nV6pFb97477fcnHH/vpbBD24bixFt/X8A90G3ilbjqL+1rd4G+K7jA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-06-12T22:54:11Z" + mac: ENC[AES256_GCM,data:15EU9VupWfvR8CrfKrX3nhpD60hYB2LY3vuAPvdqzKLliqSqolNj956fOFicfSHvmW/s+7x+M+5FROnOzSbToTZotFtvALQihHH999veGZMx8Q8oIyljT1PBw/SU9djXPI1KjG/zzYOAwu7y/Ffm0QKhMRziH7CQLn30KR0o2w0=,iv:ghdyTvcpgnBi2L9s4UrzwWwt9TeU0WkGquZ64+w9IN8=,tag:4m4hYFgejlEaQROB/OEi6g==,type:str] + unencrypted_suffix: _unencrypted + version: 3.10.2 -- cgit v1.3.1