From efbc4a2f086357b034112908fb29f8d3bfe4875b Mon Sep 17 00:00:00 2001 From: Scott Worley Date: Thu, 22 Jun 2023 14:24:51 -0700 Subject: [PATCH 1/1] 23.05: New way to get the list of tier1 systems --- flake.lock | 6 +++--- flake.nix | 2 +- lib/tier1.nix | 28 ++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 lib/tier1.nix diff --git a/flake.lock b/flake.lock index 0faa452..0ec3471 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1639876010, - "narHash": "sha256-naGsoUfsY92NaIGiFI8XFXBnesw8BQGe694xcfaLMDI=", + "lastModified": 1686960236, + "narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "395879c28386e1abf20c7ecacd45880759548391", + "rev": "04af42f3b31dba0ef742d254456dc4c14eedac86", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 757331d..ddce3f9 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,7 @@ let inherit (nixpkgs.lib) genAttrs; - systems = nixpkgs.lib.systems.supported.tier1; + systems = import ./lib/tier1.nix nixpkgs; forAllSystems = genAttrs systems; diff --git a/lib/tier1.nix b/lib/tier1.nix new file mode 100644 index 0000000..beb5e35 --- /dev/null +++ b/lib/tier1.nix @@ -0,0 +1,28 @@ +# Since 168b926435628cb06c4a8cb0f3e6f69f141529f1, we do shenanigans to get the tier1 list. :( + +nixpkgs: + +let + inherit (nixpkgs) lib; + inherit (lib) elemAt foldl' isList splitString; + inherit (builtins) readFile; + + lines = splitString "\n"; + + between = start: stop: list: + let + step = state: x: + if isNull state && x == start then + [ ] + else if isList state then + if x == stop then { result = state; } else state ++ [ x ] + else + state; + in (foldl' step null list).result; + + strip-quotes = x: elemAt (builtins.match " \"(.*)\"" x) 0; + + systems-file = "${nixpkgs}/lib/systems/flake-systems.nix"; + +in map strip-quotes +(between " # Tier 1" " # Tier 2" (lines (readFile systems-file))) -- 2.44.1