From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44264278768 for ; Wed, 27 Aug 2025 09:32:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.137.202.133 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756287138; cv=none; b=qoSW3IHS1asbQoB5beySPs+/TKFTWRf1brRLaVPzqapbO9HJvRN+mw4cMklPotM4Y/mjnpB04P3y+tyA1Kk457qQdSxyrgmVlseD081VnDVMsdM6gARGsPnRcucK1zeKpY6i+Ae7oMM8aHxX2Gce/fBXi5npRNOxOy6Op1R/Z4s= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756287138; c=relaxed/simple; bh=0yed67mJ0CC4H0KBNj3T9RwgTMyNM56AVd4RfT7TbS8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=S750rH5fZGoTDOEP2TIp74b4p+b6lcLt1LU20baawNQCRSqydHyeO+bY2CQhCxAKTPleEukC7PioA2R0Ifajrb9jF2VLHLVWlSnZ1PSjFsvSxjXWQGaaHR6XAfl71xJgGvM2zRTeugeiRYHD5tiRbInHkJQGgNO9yD7piCCkUjo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=x8OC5eBE; arc=none smtp.client-ip=198.137.202.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=kernel.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="x8OC5eBE" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-Type: Content-ID:Content-Description:In-Reply-To:References; bh=qXqqzrgU22HMdbMdD164wUJOoVllUrk3Sv7xS9Ym+7Q=; b=x8OC5eBEMJxIVtkwV9gJYNUByQ c3m3JZKzY+ywpfT2WmAgr4Vn43Dzc4lnjR5sc+mOehs7GTIAXUBKtBuxQNPh/RZb8ZYCq50QkhakA b/fP14aDBWoYKYzO9pdgkBEsZBeTzAOnycLMNXgoFmUtpeyT19ccB34XsXZi+f7hScjALf/iCY93s dEQlYHRWupRx8XNbNtAObElPC5Z3cfYizELktPEi+y0JIgXLCQafLWa49tBwbzZlcc9DzxUJfbIZy C3CmAh2wXl/P0HK6Pu+6KHTb+BwZ2BbX5xy0XlKxn81KQoWohFY5CnLZDnC18feeHgE2mHnDB6hqj VjMcdHog==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98.2 #2 (Red Hat Linux)) id 1urCVs-0000000Eqvt-3BpT; Wed, 27 Aug 2025 09:32:16 +0000 From: Luis Chamberlain To: Chuck Lever , Daniel Gomez , kdevops@lists.linux.dev Cc: Luis Chamberlain Subject: [PATCH 0/3] kdevops: add initial nixos support Date: Wed, 27 Aug 2025 02:32:11 -0700 Message-ID: <20250827093215.3540056-1-mcgrof@kernel.org> X-Mailer: git-send-email 2.49.0 Precedence: bulk X-Mailing-List: kdevops@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: Luis Chamberlain This adds a barebones nixos support. Enough to get ssh going and initial mirror support. The mirror works but its empty as it has no packages. So all we can do is bringup. Enough to kick the tires off. Some initial packages are added in preparation for future workflows suppor but that is a bit more complex and requires moer work. This should be enough to let the ball get rolling. Luis Chamberlain (3): common: use fallback for group inference on remote systems nixos: add NixOS support as third bringup option with libvirt integration mirror: add Nix binary cache mirroring support .gitignore | 3 + defconfigs/mirror | 1 + defconfigs/nixos | 27 + docs/kdevops-nixos.md | 404 +++++++++++++ kconfigs/Kconfig.bringup | 22 +- kconfigs/Kconfig.mirror | 68 ++- kconfigs/Kconfig.nixos | 130 +++++ nixos/flake.nix | 32 ++ .../files/scripts/detect_libvirt_session.sh | 26 + playbooks/linux-mirror.yml | 2 + playbooks/nixos.yml | 540 ++++++++++++++++++ playbooks/roles/common/tasks/main.yml | 29 +- .../devconfig/tasks/install-deps/main.yml | 1 + playbooks/roles/devconfig/tasks/main.yml | 4 +- playbooks/roles/gen_hosts/tasks/main.yml | 15 + .../roles/gen_hosts/templates/fstests.j2 | 20 + playbooks/roles/gen_hosts/templates/hosts.j2 | 16 + playbooks/roles/gen_nodes/tasks/main.yml | 24 + .../roles/gen_nodes/templates/nixos_nodes.j2 | 14 + .../linux-mirror/python/start-mirroring.py | 29 +- .../roles/nix-cache-mirror/defaults/main.yml | 7 + .../roles/nix-cache-mirror/handlers/main.yml | 11 + .../roles/nix-cache-mirror/tasks/main.yml | 161 ++++++ .../templates/nix-cache-mirror-cache.conf.j2 | 3 + .../templates/nix-cache-mirror.nginx.j2 | 81 +++ .../templates/nix-cache-sync.service.j2 | 17 + .../templates/nix-cache-sync.timer.j2 | 11 + .../roles/update_etc_hosts/tasks/main.yml | 2 + .../templates/nixos/configuration.nix.j2 | 138 +++++ playbooks/templates/nixos/flake.nix.j2 | 38 ++ .../nixos/hardware-configuration.nix.j2 | 42 ++ .../templates/nixos/run-vm-wrapper.sh.j2 | 159 ++++++ playbooks/templates/nixos/vm-libvirt.xml.j2 | 96 ++++ playbooks/templates/nixos/vms.nix.j2 | 45 ++ .../templates/nixos/workflow-deps.nix.j2 | 127 ++++ playbooks/update_ssh_config_nixos.yml | 57 ++ scripts/check_nix_mirror.sh | 66 +++ scripts/detect_libvirt_session.sh | 26 + scripts/nixos.Makefile | 93 +++ scripts/nixos_ssh_key_name.py | 55 ++ scripts/provision.Makefile | 4 + scripts/status_nixos.sh | 57 ++ scripts/update_ssh_config_nixos.py | 133 +++++ 43 files changed, 2826 insertions(+), 10 deletions(-) create mode 100644 defconfigs/nixos create mode 100644 docs/kdevops-nixos.md create mode 100644 kconfigs/Kconfig.nixos create mode 100644 nixos/flake.nix create mode 100755 playbooks/files/scripts/detect_libvirt_session.sh create mode 100644 playbooks/nixos.yml create mode 100644 playbooks/roles/gen_nodes/templates/nixos_nodes.j2 create mode 100644 playbooks/roles/nix-cache-mirror/defaults/main.yml create mode 100644 playbooks/roles/nix-cache-mirror/handlers/main.yml create mode 100644 playbooks/roles/nix-cache-mirror/tasks/main.yml create mode 100644 playbooks/roles/nix-cache-mirror/templates/nix-cache-mirror-cache.conf.j2 create mode 100644 playbooks/roles/nix-cache-mirror/templates/nix-cache-mirror.nginx.j2 create mode 100644 playbooks/roles/nix-cache-mirror/templates/nix-cache-sync.service.j2 create mode 100644 playbooks/roles/nix-cache-mirror/templates/nix-cache-sync.timer.j2 create mode 100644 playbooks/templates/nixos/configuration.nix.j2 create mode 100644 playbooks/templates/nixos/flake.nix.j2 create mode 100644 playbooks/templates/nixos/hardware-configuration.nix.j2 create mode 100644 playbooks/templates/nixos/run-vm-wrapper.sh.j2 create mode 100644 playbooks/templates/nixos/vm-libvirt.xml.j2 create mode 100644 playbooks/templates/nixos/vms.nix.j2 create mode 100644 playbooks/templates/nixos/workflow-deps.nix.j2 create mode 100644 playbooks/update_ssh_config_nixos.yml create mode 100755 scripts/check_nix_mirror.sh create mode 100755 scripts/detect_libvirt_session.sh create mode 100644 scripts/nixos.Makefile create mode 100755 scripts/nixos_ssh_key_name.py create mode 100755 scripts/status_nixos.sh create mode 100755 scripts/update_ssh_config_nixos.py -- 2.50.1