summary refs log tree commit diff
path: root/release
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rw-r--r--release/checks/default.nix2
-rw-r--r--release/checks/try.nix51
-rw-r--r--release/live/default.nix2
3 files changed, 54 insertions, 1 deletions
diff --git a/release/checks/default.nix b/release/checks/default.nix
index f8a3f9b..bf26b9a 100644
--- a/release/checks/default.nix
+++ b/release/checks/default.nix
@@ -15,4 +15,6 @@ import ../../lib/eval-config.nix ({ ... } @ args:
   rustfmt = import ./rustfmt.nix args;
 
   shellcheck = import ./shellcheck.nix args;
+
+  try = import ./try.nix args;
 })
diff --git a/release/checks/try.nix b/release/checks/try.nix
new file mode 100644
index 0000000..62fade9
--- /dev/null
+++ b/release/checks/try.nix
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: MIT
+# SPDX-FileCopyrightText: 2023 Alyssa Ross <hi@alyssa.is>
+
+import ../../lib/eval-config.nix ({ config, ... }:
+
+let
+  live = import ../live { inherit config; };
+in
+
+config.pkgs.nixosTest ({ stdenv, mtools, ... }: {
+  name = "try-spectrum-test";
+  nodes = {};
+
+  testScript = ''
+    import shlex
+    import subprocess
+
+    conf = subprocess.run([
+      "${mtools}/bin/mcopy",
+      "-i",
+      "${live}@@1M",
+      "::loader/entries/spectrum.conf",
+      "-",
+    ], stdout=subprocess.PIPE)
+    conf.check_returncode()
+
+    cmdline = None
+    for line in conf.stdout.decode('utf-8').splitlines():
+      key, value = line.split(' ', 1)
+      if key == 'options':
+        cmdline = value
+        break
+
+    flags = " ".join(map(shlex.quote, [
+      "qemu-kvm",
+      "-m", "512",
+      "-kernel", "${live.rootfs.kernel}/${stdenv.hostPlatform.linux-kernel.target}",
+      "-initrd", "${live.initramfs}",
+      "-device", "qemu-xhci",
+      "-device", "usb-storage,drive=drive1,removable=true",
+      "-drive", "file=${live},id=drive1,format=raw,if=none,readonly=on",
+      "-append", f"panic=-1 {cmdline}",
+    ]))
+
+    machine = create_machine({"startCommand": flags})
+
+    machine.start()
+    machine.wait_for_console_text("EXT4-fs \(sda4\): mounted filesystem")
+    machine.crash()
+  '';
+}))
diff --git a/release/live/default.nix b/release/live/default.nix
index b7ee036..6df73d4 100644
--- a/release/live/default.nix
+++ b/release/live/default.nix
@@ -48,6 +48,6 @@ stdenvNoCC.mkDerivation {
 
   enableParallelBuilding = true;
 
-  passthru = { inherit rootfs; };
+  passthru = { inherit initramfs rootfs; };
 }
 ) {})