significantly improve purity

This commit is contained in:
Qyriad 2026-02-09 14:32:56 +01:00
parent 45a7d43f77
commit 68e9b9a1e4
12 changed files with 139 additions and 230 deletions

View file

@ -5,71 +5,13 @@
in import src { inherit pkgs; },
}: let
inherit (qpkgs) lib;
dynix = qpkgs.callPackage ./package.nix { };
dynix = qpkgs.callPackage ./modules-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 = { ... }: {
imports = [
./configuration.nix
(lib.setAttrByPath option (lib.mkOverride (-999) value))
];
};
};
withActivationScripts = evalNixos {
configuration = ({ ... }: {
imports = [ ./configuration.nix ];
config.environment.systemPackages = [ nixosAfter.config.dynamicism.for.gotosocial.activate ];
});
};
in {
inherit nixosBefore nixosAfter withActivationScripts;
};
in dynix.overrideAttrs (final: prev: let
self = final.finalPackage;
in lib.recursiveUpdate prev {
passthru = {
ts = let
scope = pkgs.callPackage ./modules/tests.nix { };
in scope.packages scope;
dync = self.nixos.config.dynamicism;
dyno = self.nixos.options.dynamicism;
gotosocial = self.nixos.options.dynamicism.for.valueMeta.attrs.gotosocial.configuration;
inherit byStdenv;
nixos = evalNixos {
configuration = ./configuration.nix;
};
c = self.nixos;
nixos-vm = self.nixos.config.system.build.vm;
doChange = builtins.seq self.nixos.config.dynamicism doChange;
withVox = self.doChange {
option = lib.splitString "." "services.gotosocial.settings.application-name";
value = "Vox is an asshole";
};
};
in dynix.overrideAttrs (prev: lib.recursiveUpdate prev {
passthru = { inherit byStdenv; };
})