[PATCH 0/8] kdevops: add nixos-qemu subtree and refactor NIXOS role

Daniel Gomez <[email protected]> Thu, 23 Apr 2026 00:48:38 +0200
Newsgroups dev.linux.lists.kdevops
Message-ID <20260423-kdevops-series-b-nixos-qemu-v1-0-209154ae54f8@samsung.com>
Add scripts/nixos-qemu/ as a squashed git subtree. The project is
a NixOS flake exposing two backend modules for kdevops guests: a
libvirt backend (qcow2, grub, DHCP from libvirtd, drop-in for the
existing kdevops NIXOS bringup) and an imageless backend (tmpfs
root, systemd initramfs, external kernel, /nix/store and
/lib/modules mounted over virtiofs from the host) used by the
follow-up qemu-system-units series.

Point the existing NIXOS role at the subtree: render a per-node
default.nix that imports the flake, build the per-node image via
the flake output under ansible.builtin.command, and split
playbooks/nixos.yml into roles/nixos/tasks/*.yml phases so the
follow-up imageless bringup can share the same provisioning,
install_deps, and ssh_access tasks without duplicating them.

No behaviour change for existing NIXOS users: libvirt stays the
default, the legacy inline configuration.nix template is gone in
favour of the flake module, and the Makefile path is the same.

Signed-off-by: Daniel Gomez <[email protected]>
---
Daniel Gomez (8):
      scripts: import nixos-qemu at scripts/nixos-qemu
      nixos: consume nixos-qemu modules via a per-node default.nix
      nixos: build the per-node disk image through the flake output
      nixos: invoke nix build through ansible.builtin.command
      nixos: restructure playbook into roles/nixos with per-phase task files
      nixos: collapse playbook into a tag-gated role entry
      nixos: drop stale top-level nixos/ entrypoint
      nixos: drop hardcoded /xfs1 path from clean_nixos_cache

 .gitignore                                         |   3 -
 docs/kdevops-nixos.md                              |   8 +-
 kconfigs/Kconfig.nixos                             |   7 +-
 nixos/flake.nix                                    |  32 -
 playbooks/nixos.yml                                | 554 +---------------
 playbooks/roles/nixos/tasks/console.yml            |  25 +
 playbooks/roles/nixos/tasks/destroy.yml            |  89 +++
 playbooks/roles/nixos/tasks/generate_configs.yml   |  97 +++
 playbooks/roles/nixos/tasks/install_deps.yml       |  53 ++
 playbooks/roles/nixos/tasks/libvirt_build.yml      |  52 ++
 playbooks/roles/nixos/tasks/libvirt_network.yml    |  23 +
 playbooks/roles/nixos/tasks/libvirt_provision.yml  |  49 ++
 playbooks/roles/nixos/tasks/main.yml               |  63 ++
 playbooks/roles/nixos/tasks/ssh_access.yml         |  60 ++
 playbooks/roles/nixos/templates/default.nix.j2     |  69 ++
 .../nixos/templates}/run-vm-wrapper.sh.j2          |   0
 .../nixos/templates}/vm-libvirt.xml.j2             |   0
 playbooks/templates/nixos/configuration.nix.j2     | 138 ----
 playbooks/templates/nixos/flake.nix.j2             |  38 --
 .../templates/nixos/hardware-configuration.nix.j2  |  42 --
 playbooks/templates/nixos/vms.nix.j2               |  45 --
 playbooks/templates/nixos/workflow-deps.nix.j2     | 127 ----
 scripts/nixos-qemu/.gitignore                      |   2 +
 scripts/nixos-qemu/CLAUDE.md                       | 175 +++++
 scripts/nixos-qemu/COPYING                         |  22 +
 scripts/nixos-qemu/LICENSE                         |   5 +
 .../LICENSES/preferred/copyleft-next-0.3.1         | 239 +++++++
 scripts/nixos-qemu/README.md                       | 116 ++++
 scripts/nixos-qemu/docs/design-decisions.md        | 351 ++++++++++
 scripts/nixos-qemu/docs/usage.md                   | 722 +++++++++++++++++++++
 scripts/nixos-qemu/flake.lock                      |  27 +
 scripts/nixos-qemu/flake.nix                       |  86 +++
 scripts/nixos-qemu/modules/build-tools.nix         |  23 +
 scripts/nixos-qemu/modules/devel.nix               | 118 ++++
 scripts/nixos-qemu/modules/imageless.nix           | 114 ++++
 scripts/nixos-qemu/modules/libvirt.nix             |  58 ++
 scripts/nixos-qemu/modules/shares.nix              |  41 ++
 scripts/nixos-qemu/modules/storage.nix             | 106 +++
 scripts/nixos-qemu/modules/user.nix                |  42 ++
 scripts/nixos-qemu/modules/workflows/blktests.nix  |  29 +
 scripts/nixos-qemu/modules/workflows/fstests.nix   |  41 ++
 scripts/nixos-qemu/modules/workflows/gitr.nix      |  21 +
 scripts/nixos-qemu/modules/workflows/ltp.nix       |  33 +
 scripts/nixos-qemu/modules/workflows/mmtests.nix   |  23 +
 scripts/nixos-qemu/modules/workflows/pynfs.nix     |  22 +
 scripts/nixos-qemu/modules/workflows/selftests.nix |  25 +
 scripts/nixos-qemu/modules/workflows/sysbench.nix  |  26 +
 scripts/nixos-qemu/overlays/default.nix            |  14 +
 scripts/nixos-qemu/overlays/fio.nix                |  36 +
 scripts/nixos-qemu/overlays/xfstests.nix           |  23 +
 scripts/nixos-qemu/pkgs/cpupower.nix               |  64 ++
 scripts/nixos-qemu/pkgs/damo.nix                   |  58 ++
 scripts/nixos-qemu/pkgs/default.nix                |  21 +
 scripts/nixos-qemu/pkgs/libbpf-tools.nix           | 117 ++++
 scripts/nixos-qemu/pkgs/nfstest.nix                |  67 ++
 scripts/nixos-qemu/pkgs/pynfs.nix                  |  94 +++
 scripts/nixos-qemu/pkgs/xnvme.nix                  |  49 ++
 scripts/nixos-qemu/templates/imageless/default.nix |  33 +
 scripts/nixos-qemu/templates/imageless/flake.nix   |  51 ++
 scripts/nixos-qemu/templates/libvirt/default.nix   |  33 +
 scripts/nixos-qemu/templates/libvirt/flake.nix     |  58 ++
 scripts/nixos.Makefile                             |   2 -
 62 files changed, 3775 insertions(+), 986 deletions(-)
---
base-commit: 1a61f43dc2bc2e019fc4a35d9673cfa31909272d
change-id: 20260423-kdevops-series-b-nixos-qemu-05d26a0416c1
prerequisite-change-id: 20260422-kdevops-series-a-fixes-e26bd7d77c76:v1
prerequisite-patch-id: a92bf777d89e14bd149d1967d2b6dfdd704633a4
prerequisite-patch-id: be22a3a7dbdc0d166677baae73157965556b2bea
prerequisite-patch-id: 662a8d56c2343e4ccf954f4b8057a75ca464799d
prerequisite-patch-id: 5e6b740ec798a1b645d8a2430c705de2727458d4
prerequisite-patch-id: 4cc5044b243438136ea4307cd3ec06109a5b2498
prerequisite-patch-id: dfb1809d2120d252529ae6d1d49d7d2524141894
prerequisite-patch-id: c51be5cfa9f8024a5e34d72e124cceb66f15218d
prerequisite-patch-id: d8d5c310220184db0a6d6f4a15d66b11cc4d301a

Best regards,
--  
Daniel Gomez <[email protected]>