Compare commits

...

1 Commits

Author SHA1 Message Date
xenia 7d39b44e6a mkFlake: add self argument which handles system 2025-04-26 19:56:23 -04:00
2 changed files with 35 additions and 19 deletions

View File

@ -21,7 +21,6 @@
(import ./overlay.nix) (import ./overlay.nix)
(import "${lix-module}/overlay.nix" { inherit lix; }) (import "${lix-module}/overlay.nix" { inherit lix; })
]; ];
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
in { in {
# we don't just use nix.registry.whatever.flake = self # 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 # 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"; meta.path-entry = "dragnpkgs-unstable=flake:dragnpkgs-unstable";
lib = nixpkgs.lib.extend (final: prev: { lib = nixpkgs.lib.extend (final: prev: {
forAllSystems = final.genAttrs final.systems.flakeExposed;
licenses = prev.licenses // { fyptl = import ./lib/licenses/fyptl.nix; }; licenses = prev.licenses // { fyptl = import ./lib/licenses/fyptl.nix; };
nixosSystem = args: nixosSystem = args:
@ -172,26 +173,13 @@
} // builtins.removeAttrs args [ "modules" ] } // builtins.removeAttrs args [ "modules" ]
); );
mkFlake = flakeDef: mkFlake = import ./lib/mkflake/default.nix {
let pkgs = system: self.legacyPackages.${system};
rewritePerSystem = sectionDef: (forAllSystems (system: lib = final;
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;
}); });
legacyPackages = forAllSystems (system: legacyPackages = self.lib.forAllSystems (system:
let let
unsafeConf = if builtins.hasAttr "extraBuiltins" builtins then ( unsafeConf = if builtins.hasAttr "extraBuiltins" builtins then (
let conf = builtins.extraBuiltins; in let conf = builtins.extraBuiltins; in

28
lib/mkflake/default.nix Normal file
View File

@ -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