dynix/default.nix

72 lines
1.8 KiB
Nix
Raw Normal View History

2026-01-21 15:23:04 +01:00
{
pkgs ? import <nixpkgs> { },
qpkgs ? let
src = fetchTree (builtins.parseFlakeRef "github:Qyriad/nur-packages");
in import src { inherit pkgs; },
}: let
inherit (qpkgs) lib;
2026-02-02 11:34:52 +01:00
dynix = qpkgs.callPackage ./package.nix { };
2026-01-21 15:23:04 +01:00
byStdenv = lib.mapAttrs (stdenvName: stdenv: let
2026-02-02 11:34:52 +01:00
withStdenv = dynix.override { inherit stdenv; };
dynix' = withStdenv.overrideAttrs (prev: {
2026-01-21 15:23:04 +01:00
pname = "${prev.pname}-${stdenvName}";
});
2026-02-02 11:34:52 +01:00
in dynix') qpkgs.validStdenvs;
2026-01-21 15:23:04 +01:00
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 {
2026-02-03 22:31:32 +01:00
configuration = { ... }: {
imports = [
./configuration.nix
(lib.setAttrByPath option (lib.mkOverride (-999) value))
];
};
};
2026-02-03 22:31:32 +01:00
withActivationScripts = evalNixos {
configuration = ({ ... }: {
imports = [ ./configuration.nix ];
config.environment.systemPackages = [ nixosAfter.config.dynamicism.for.gotosocial.activate ];
});
};
in {
2026-02-03 22:31:32 +01:00
inherit nixosBefore nixosAfter withActivationScripts;
};
in dynix.overrideAttrs (final: prev: let
self = final.finalPackage;
in lib.recursiveUpdate prev {
passthru = {
2026-02-03 18:37:16 +01:00
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;
};
2026-02-03 18:37:16 +01:00
c = self.nixos;
nixos-vm = self.nixos.config.system.build.vm;
doChange = builtins.seq self.nixos.config.dynamicism doChange;
2026-02-03 22:31:32 +01:00
withVox = self.doChange {
option = lib.splitString "." "services.gotosocial.settings.application-name";
value = "Vox is an asshole";
};
};
2026-01-21 15:23:04 +01:00
})