dynix/default.nix

55 lines
1.3 KiB
Nix

{
pkgs ? import <nixpkgs> { },
qpkgs ? let
src = fetchTree (builtins.parseFlakeRef "github:Qyriad/nur-packages");
in import src { inherit pkgs; },
}: let
inherit (qpkgs) lib;
dynix = qpkgs.callPackage ./package.nix { };
byStdenv = lib.mapAttrs (stdenvName: stdenv: let
withStdenv = dynix.override { inherit stdenv; };
dynix' = withStdenv.overrideAttrs (prev: {
pname = "${prev.pname}-${stdenvName}";
});
in dynix') qpkgs.validStdenvs;
evalNixos = import (pkgs.path + "/nixos");
doChange = {
option,
value,
}:
assert lib.isList option;
assert lib.all lib.isString option;
let
nixosBefore = evalNixos {
configuration = ./configuration.nix;
};
dynamicBefore = nixosBefore.config.dynamicism.finalSettings;
nixosAfter = evalNixos {
configuration = lib.mkMerge [
nixosBefore
(lib.setAttrByPath option (lib.mkOverride (-999) value))
];
};
dynamicAfter = nixosAfter.config.dynamicism.finalSettings;
in {
};
in dynix.overrideAttrs (final: prev: let
self = final.finalPackage;
in lib.recursiveUpdate prev {
passthru = {
inherit byStdenv;
nixos = evalNixos {
configuration = ./configuration.nix;
};
nixos-vm = self.nixos.config.system.build.vm;
doChange = builtins.seq self.nixos.config.dynamicism doChange;
};
})