From 7d39b44e6a5e6fe592c9267aec42dfa2bf455f7f Mon Sep 17 00:00:00 2001 From: xenia Date: Sat, 26 Apr 2025 19:50:28 -0400 Subject: [PATCH] mkFlake: add self argument which handles system --- flake.nix | 26 +++++++------------------- lib/mkflake/default.nix | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 lib/mkflake/default.nix diff --git a/flake.nix b/flake.nix index 797fafe..b221935 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,6 @@ (import ./overlay.nix) (import "${lix-module}/overlay.nix" { inherit lix; }) ]; - forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; in { # we don't just use nix.registry.whatever.flake = self # the reason for this is to be able to handle a flake.lock containing an entry for this @@ -43,6 +42,8 @@ meta.path-entry = "dragnpkgs-unstable=flake:dragnpkgs-unstable"; lib = nixpkgs.lib.extend (final: prev: { + forAllSystems = final.genAttrs final.systems.flakeExposed; + licenses = prev.licenses // { fyptl = import ./lib/licenses/fyptl.nix; }; nixosSystem = args: @@ -172,26 +173,13 @@ } // builtins.removeAttrs args [ "modules" ] ); - mkFlake = flakeDef: - let - rewritePerSystem = sectionDef: (forAllSystems (system: - builtins.mapAttrs (name: value: - if final.isDerivation value then - value - else - self.legacyPackages.${system}.callPackage value {} - ) sectionDef - )); - in - builtins.mapAttrs (name: value: - if name == "packages" || name == "legacyPackages" || name == "devShells" then - rewritePerSystem value - else - value - ) flakeDef; + mkFlake = import ./lib/mkflake/default.nix { + pkgs = system: self.legacyPackages.${system}; + lib = final; + }; }); - legacyPackages = forAllSystems (system: + legacyPackages = self.lib.forAllSystems (system: let unsafeConf = if builtins.hasAttr "extraBuiltins" builtins then ( let conf = builtins.extraBuiltins; in diff --git a/lib/mkflake/default.nix b/lib/mkflake/default.nix new file mode 100644 index 0000000..ef6b4c8 --- /dev/null +++ b/lib/mkflake/default.nix @@ -0,0 +1,28 @@ +{ pkgs, lib }: +flakeDef: +let + rewritePerSystem = final: sectionDef: + lib.forAllSystems (system: + builtins.mapAttrs (name: value: + if lib.isDerivation value then + value + else + (pkgs system).callPackage value { self = (final system); } + ) sectionDef + ); + rewriteAttr = final: name: value: + let + final_self = system: (builtins.mapAttrs (aname: avalue: + if aname == "packages" || aname == "legacyPackages" || aname == "devShells" then + avalue.${system} + else + avalue + ) final); + in + if name == "packages" || name == "legacyPackages" || name == "devShells" then + rewritePerSystem final_self value + else + value; + self = builtins.mapAttrs (rewriteAttr self) flakeDef; +in + self