75 lines
1.9 KiB
Nix
75 lines
1.9 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 = { ... }: {
|
|
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";
|
|
};
|
|
};
|
|
})
|