From b7f3d6070869a9ffde75a9788a752a93f358ed20 Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Fri, 10 Nov 2023 15:15:48 +0100 Subject: [PATCH] feat(flake): perform final fixups to the flake outputs As flake-parts doesn't really support a concept of limited supported system (e.g. system for which we don't have CI), we need to fix up the final outputs to move the unsupported checks to another place where CI won't run them. --- flake.nix | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 61a98c3..705ee7e 100644 --- a/flake.nix +++ b/flake.nix @@ -36,7 +36,25 @@ }; outputs = inputs@{ self, nixpkgs, crane, rust-overlay, flake-parts, ... }: - flake-parts.lib.mkFlake { inherit inputs; } ({ moduleWithSystem, ... }: { + let + # Systems supported in CI + supportedSystems = [ "x86_64-linux" ]; + fixupFlakes = outputs: nixpkgs.lib.updateManyAttrsByPath [ + # Apply post-flakeparts massaging for limited supported systems, e.g. systems for which + # we don't have KVM support and cannot test in CI, but we still can meaningfully + # build packages. + { + path = [ "legacyPackages" "unsupportedChecks" ]; + update = checks: checks // (nixpkgs.lib.filterAttrs (name: _: !builtins.elem name supportedSystems) outputs.checks); + } + { + path = [ "checks" ]; + update = nixpkgs.lib.filterAttrs (name: _: builtins.elem name supportedSystems); + } + ] + outputs; + in + fixupFlakes (flake-parts.lib.mkFlake { inherit inputs; } ({ moduleWithSystem, ... }: { imports = [ # Derive the output overlay automatically from all packages that we define. inputs.flake-parts.flakeModules.easyOverlay @@ -255,5 +273,5 @@ TEST_SYSTEMD = pkgs.systemd; }; }; - }); + })); }