From f9e4e25d358e6044562e4f8be879bc61fa516548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikodem=20Rabuli=C5=84ski?= Date: Sun, 23 Mar 2025 21:14:39 +0100 Subject: [PATCH] flake: simplify transpose logic --- flake.nix | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/flake.nix b/flake.nix index 0d5e752..714019f 100644 --- a/flake.nix +++ b/flake.nix @@ -3,31 +3,23 @@ inputs@{ flake-parts, ... }: let nilla = import ./nilla.nix { inherit inputs; }; - transpose = - attrs: - let - inherit (inputs.nixpkgs) lib; - # maps an attrset of systems to packages to list of [ {name; system; value;} ] - pkgToListAll = - name: pkg: - map (system: { - inherit name system; - value = pkg.${system}; - }) (builtins.attrNames pkg); - pkgsToListAll = pkgs: map (name: pkgToListAll name pkgs.${name}) (builtins.attrNames pkgs); - # list of all packages in format [ {name; system; value;} ] - allPkgs = lib.flatten (pkgsToListAll attrs); - systems = builtins.groupBy (pkg: pkg.system) allPkgs; - in - builtins.mapAttrs (_: pkgs: lib.listToAttrs pkgs) systems; - in - flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; - + # NOTE: Assumes every package is available for every system. + # For now let's say this is always the case. + transpose = + attrs: + let + inherit (inputs.nixpkgs) lib; + mappedForSystem = system: builtins.mapAttrs (_: pkg: pkg.result.${system}) attrs; + in + lib.genAttrs systems mappedForSystem; + in + flake-parts.lib.mkFlake { inherit inputs; } { + inherit systems; imports = [ ./assets ./hosts @@ -35,8 +27,8 @@ ./services ]; - flake.devShells = transpose (builtins.mapAttrs (_: shell: shell.result) nilla.shells); - flake.packages = transpose (builtins.mapAttrs (_: pkg: pkg.result) nilla.packages); + flake.devShells = transpose nilla.shells; + flake.packages = transpose nilla.packages; flake.formatter = nilla.packages.formatter.result; };