diff --git a/lib/microvms.nix b/lib/microvms.nix index a16f8dd..cef59e7 100644 --- a/lib/microvms.nix +++ b/lib/microvms.nix @@ -6,13 +6,14 @@ rec { host: { ipv4, + machine-id, server ? false, }: - genMicroVM host ipv4 "x86_64-linux" (if server then server-config else agent-config) + genMicroVM host ipv4 "x86_64-linux" machine-id (if server then server-config else agent-config) ) vms; genMicroVM = - hostName: ipv4: _system: vm-config: + hostName: ipv4: _system: machine-id: vm-config: # microvm refers to microvm.nixosModules # { @@ -35,6 +36,12 @@ rec { imports = [ vm-config ]; # It is highly recommended to share the host's nix-store # with the VMs to prevent building huge images. + + environment.etc."machine-id" = { + mode = "0644"; + text = machine-id + "\n"; + }; + microvm.shares = [ { source = "/nix/store"; @@ -42,6 +49,15 @@ rec { tag = "ro-store"; proto = "virtiofs"; } + { + # On the host + source = "/var/lib/microvms/${hostName}/journal"; + # In the MicroVM + mountPoint = "/var/log/journal"; + tag = "journal"; + proto = "virtiofs"; + socket = "journal.sock"; + } ]; networking = { @@ -54,6 +70,22 @@ rec { ]; }; + services.openssh.enable = true; + users.users.alice = { + openssh.authorizedKeys.keys = [ + # photon + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOGcqhLaKsjwAnb6plDavAhEyQHNvFS9Uh5lMTuwMhGF alice@parthenon-7588" + # gh + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGoaEmzaS9vANckvBmqrYSHdFR0sPL4Xgeonbh9KcgFe gitlab keypair" + # janus + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAfcO9p5opG8Tym6tcLkat6YGCcE6vwg0+V4MTC5WKop alice@parthenon-7588" + # palatine + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP59pDsx34k2ikrKa0eVacj0APSGivaij3lP9L0Zd9au alice@parthenon-7588" + # jeeves + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJDgkUndkfns6f779T5ckHOVhyOKP8GttQ9RfaO9uJdx alice@parthenon-7588" + ]; + isNormalUser = true; + }; # Any other configuration for your MicroVM # [...] }; diff --git a/modules/opt/microvm-host.nix b/modules/opt/microvm-host.nix index 3673018..07605bd 100644 --- a/modules/opt/microvm-host.nix +++ b/modules/opt/microvm-host.nix @@ -22,13 +22,13 @@ in microvm.vms = cfg.vms; # TODO: deprecate this once we have syslog forwarders - # systemd.tmpfiles.rules = map ( - # vmHost: - # let - # machineId = lib.addresses.machineId.${vmHost}; - # in - # # creates a symlink of each MicroVM's journal under the host's /var/log/journal - # "L+ /var/log/journal/${machineId} - - - - /var/lib/microvms/${vmHost}/journal/${machineId}" - # ) (builtins.attrNames lib.addresses.machineId); + systemd.tmpfiles.rules = map ( + vmHost: + let + machineId = cfg.vms.${vmHost}.config.environment.etc."machine-id".text; + in + # creates a symlink of each MicroVM's journal under the host's /var/log/journal + "L+ /var/log/journal/${machineId} - - - - /var/lib/microvms/${vmHost}/journal/${machineId}" + ) (builtins.attrNames cfg.vms); }; } diff --git a/systems/palatine-hill/microvms.nix b/systems/palatine-hill/microvms.nix index 44abf16..a1ad488 100644 --- a/systems/palatine-hill/microvms.nix +++ b/systems/palatine-hill/microvms.nix @@ -16,6 +16,7 @@ in { "ph-server-1" = { ipv4 = "192.168.69.10"; + machine-id = "d694ad1e88b356887bb204ac665263f7"; server = true; }; # "ph-agent-1" = {