From fa1beab7e9587143d445f3117db796125e864622 Mon Sep 17 00:00:00 2001 From: dawn <90008@gaze.systems> Date: Mon, 1 Jun 2026 19:45:10 +0300 Subject: [PATCH] nix: add test microvm --- flake.lock | 38 ++++++++++++++++++++++++++++++++++++++ flake.nix | 12 ++++++++++++ nix/vms/test.nix | 31 +++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 nix/vms/test.nix diff --git a/flake.lock b/flake.lock index 13ff027f..c298a61f 100644 --- a/flake.lock +++ b/flake.lock @@ -181,6 +181,27 @@ "url": "https://cdn.jsdelivr.net/npm/mermaid@11.12.3/dist/mermaid.min.js" } }, + "microvm": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "spectrum": "spectrum" + }, + "locked": { + "lastModified": 1779970379, + "narHash": "sha256-ZHsxoYXXnfJtMVh1/yY+1Eh9hHcPBhE28Qvinauh+BQ=", + "owner": "microvm-nix", + "repo": "microvm.nix", + "rev": "0d49083ba2d7419b22908ac392777c16df9a032e", + "type": "github" + }, + "original": { + "owner": "microvm-nix", + "repo": "microvm.nix", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1771848320, @@ -210,6 +231,7 @@ "inter-fonts-src": "inter-fonts-src", "lucide-src": "lucide-src", "mermaid-src": "mermaid-src", + "microvm": "microvm", "nixpkgs": "nixpkgs", "sqlite-lib-src": "sqlite-lib-src" } @@ -231,6 +253,22 @@ "type": "github" } }, + "spectrum": { + "flake": false, + "locked": { + "lastModified": 1778940603, + "narHash": "sha256-voSM8dZNlaOWN3kbYFky+FNY6fFQOEw0xF+ZMpZKkCQ=", + "ref": "refs/heads/main", + "rev": "367dd227f539267eae2b62770b4c17b88ac8c1f1", + "revCount": 1265, + "type": "git", + "url": "https://spectrum-os.org/git/spectrum" + }, + "original": { + "type": "git", + "url": "https://spectrum-os.org/git/spectrum" + } + }, "sqlite-lib-src": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index f82ce1f7..4d92534d 100644 --- a/flake.nix +++ b/flake.nix @@ -3,6 +3,10 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + microvm = { + url = "github:microvm-nix/microvm.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; fenix = { url = "github:nix-community/fenix"; inputs.nixpkgs.follows = "nixpkgs"; @@ -69,6 +73,7 @@ ibm-plex-mono-src, actor-typeahead-src, mermaid-src, + microvm, ... }: let supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; @@ -184,6 +189,8 @@ # }; }; }; + + microvm-test = self.nixosConfigurations.microvm-test.config.microvm.declaredRunner; }); defaultPackage = forAllSystems (system: self.packages.${system}.appview); devShells = forAllSystems (system: let @@ -406,5 +413,10 @@ }; formatter = forAllSystems (system: self.packages.${system}.treefmt-wrapper); + + nixosConfigurations.microvm-test = import ./nix/vms/test.nix { + inherit nixpkgs microvm; + system = "x86_64-linux"; + }; }; } diff --git a/nix/vms/test.nix b/nix/vms/test.nix new file mode 100644 index 00000000..ddc96cf3 --- /dev/null +++ b/nix/vms/test.nix @@ -0,0 +1,31 @@ +{ nixpkgs, microvm, system }: +nixpkgs.lib.nixosSystem { + inherit system; + modules = [ + microvm.nixosModules.microvm + { + networking.hostName = "my-microvm"; + users.users.root.password = ""; + microvm = { + volumes = [ { + mountPoint = "/var"; + image = "var.img"; + size = 256; + } ]; + shares = [ { + # use proto = "virtiofs" for MicroVMs that are started by systemd + proto = "9p"; + tag = "ro-store"; + # a host's /nix/store will be picked up so that no + # squashfs/erofs will be built for it. + source = "/nix/store"; + mountPoint = "/nix/.ro-store"; + } ]; + + # "qemu" has 9p built-in! + hypervisor = "qemu"; + socket = "control.socket"; + }; + } + ]; +} -- 2.51.2