From e23be13186b39f748a8db760fad6ba9cf2383efa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torjus=20H=C3=A5kestad?= Date: Sun, 1 Feb 2026 17:08:05 +0100 Subject: [PATCH] scripts: fix create-host flake.nix insertion point Fix bug where new hosts were added outside of nixosConfigurations block instead of inside it. Issues fixed: 1. Pattern was looking for "packages =" but actual text is "packages = forAllSystems" 2. Replacement was putting new entry AFTER closing brace instead of BEFORE 3. testvm01 was at top-level flake output instead of in nixosConfigurations Changes: - Update pattern to match "packages = forAllSystems" - Put new entry BEFORE the closing brace of nixosConfigurations - Move testvm01 to correct location inside nixosConfigurations block Result: nix flake show now correctly shows testvm01 as NixOS configuration Co-Authored-By: Claude Sonnet 4.5 --- flake.nix | 2 +- scripts/create-host/manipulators.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index e3b6054..05d7a18 100644 --- a/flake.nix +++ b/flake.nix @@ -334,7 +334,6 @@ sops-nix.nixosModules.sops ]; }; - }; testvm01 = nixpkgs.lib.nixosSystem { inherit system; specialArgs = { @@ -351,6 +350,7 @@ sops-nix.nixosModules.sops ]; }; + }; packages = forAllSystems ( { pkgs }: { diff --git a/scripts/create-host/manipulators.py b/scripts/create-host/manipulators.py index 4d821cc..366e215 100644 --- a/scripts/create-host/manipulators.py +++ b/scripts/create-host/manipulators.py @@ -50,17 +50,17 @@ def update_flake_nix(config: HostConfig, repo_root: Path, force: bool = False) - if count == 0: raise ValueError(f"Could not find existing entry for {config.hostname} in flake.nix") else: - # Insert new entry before closing brace - # Pattern: " };\n packages =" - pattern = r"( \};)\n( packages =)" - replacement = rf"\g<1>\n{new_entry}\g<2>" + # Insert new entry before closing brace of nixosConfigurations + # Pattern: " };\n packages = forAllSystems" + pattern = r"( \};)\n( packages = forAllSystems)" + replacement = rf"{new_entry}\g<1>\n\g<2>" new_content, count = re.subn(pattern, replacement, content) if count == 0: raise ValueError( "Could not find insertion point in flake.nix. " - "Looking for pattern: ' };\\n packages ='" + "Looking for pattern: ' };\\n packages = forAllSystems'" ) flake_path.write_text(new_content)