diff options
Diffstat (limited to 'script/jepsen.garage/flake.nix')
-rw-r--r-- | script/jepsen.garage/flake.nix | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/script/jepsen.garage/flake.nix b/script/jepsen.garage/flake.nix index 76ee8ebf..2afa9ea1 100644 --- a/script/jepsen.garage/flake.nix +++ b/script/jepsen.garage/flake.nix @@ -4,19 +4,56 @@ inputs.microvm.url = "github:astro/microvm.nix"; inputs.microvm.inputs.nixpkgs.follows = "nixpkgs"; - outputs = { self, nixpkgs, microvm }: { - # Example nixosConfigurations entry - nixosConfigurations.my-microvm = nixpkgs.lib.nixosSystem { + outputs = { self, nixpkgs, microvm }: + with nixpkgs.lib; + let + addressMap = + { + "n1" = { ip = "10.1.0.10"; mac = "02:00:00:00:99:01"; }; + "n2" = { ip = "10.2.0.10"; mac = "02:00:00:00:99:02"; }; + "n3" = { ip = "10.3.0.10"; mac = "02:00:00:00:99:03"; }; + "n4" = { ip = "10.4.0.10"; mac = "02:00:00:00:99:04"; }; + "n5" = { ip = "10.5.0.10"; mac = "02:00:00:00:99:05"; }; + }; + toHostsEntry = name: { ip, ... }: "${ip} ${name}"; + extraHosts = + builtins.concatStringsSep "\n" + (attrsets.mapAttrsToList toHostsEntry addressMap); + + nodeConfig = hostName: { ip, mac }: nixosSystem { system = "x86_64-linux"; modules = [ # Include the microvm module microvm.nixosModules.microvm # Add more modules here { - networking.hostName = "my-microvm"; + networking = { + inherit hostName extraHosts; + }; + microvm.hypervisor = "cloud-hypervisor"; + microvm.interfaces = [ { + inherit mac; + type = "tap"; + id = "microvm-${hostName}"; + } ]; + + services.openssh = { + enable = true; + permitRootLogin = "yes"; + }; + users.users.root.initialPassword = "root"; + + #services.garage = { + # enable = true; + # logLevel = "debug"; + # settings.replication_mode = "3"; + #}; } ]; }; + in + { + nixosConfigurations = mapAttrs nodeConfig addressMap; }; } |