2026-01-21 15:23:04 +01:00
|
|
|
{
|
|
|
|
|
lib,
|
2026-02-11 13:16:54 +01:00
|
|
|
stdenvNoCC,
|
|
|
|
|
callPackage,
|
2026-01-21 15:23:04 +01:00
|
|
|
}: let
|
2026-02-11 13:16:54 +01:00
|
|
|
stdenv = stdenvNoCC;
|
2026-01-21 15:23:04 +01:00
|
|
|
in stdenv.mkDerivation (self: {
|
2026-02-11 13:16:54 +01:00
|
|
|
name = "dynix-modules";
|
2026-01-21 15:23:04 +01:00
|
|
|
|
|
|
|
|
strictDeps = true;
|
|
|
|
|
__structuredAttrs = true;
|
|
|
|
|
|
2026-02-11 13:16:54 +01:00
|
|
|
outputs = [ "out" "modules" ];
|
2026-01-21 15:23:04 +01:00
|
|
|
|
|
|
|
|
src = lib.fileset.toSource {
|
2026-02-11 13:16:54 +01:00
|
|
|
root = ./modules/dynamicism;
|
2026-01-21 15:23:04 +01:00
|
|
|
fileset = lib.fileset.unions [
|
2026-02-11 13:16:54 +01:00
|
|
|
./modules/dynamicism
|
2026-01-21 15:23:04 +01:00
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
2026-02-11 13:16:54 +01:00
|
|
|
phases = [ "unpackPhase" "patchPhase" "installPhase" ];
|
2026-01-21 15:23:04 +01:00
|
|
|
|
2026-02-11 13:16:54 +01:00
|
|
|
installPhase = lib.dedent ''
|
|
|
|
|
mkdir -p "$out"
|
|
|
|
|
cp -r * "$out/"
|
2026-01-21 15:23:04 +01:00
|
|
|
|
2026-02-11 13:16:54 +01:00
|
|
|
mkdir -p "$modules/share/nixos/modules/dynix"
|
|
|
|
|
cp --reflink=auto -r "$out/"* "$modules/share/nixos/modules/dynix/"
|
|
|
|
|
'';
|
2026-01-21 15:23:04 +01:00
|
|
|
|
|
|
|
|
passthru.mkDevShell = {
|
2026-02-11 13:16:54 +01:00
|
|
|
path,
|
2026-01-21 15:23:04 +01:00
|
|
|
mkShell,
|
2026-02-11 13:16:54 +01:00
|
|
|
python3Packages,
|
2026-01-21 15:23:04 +01:00
|
|
|
}: let
|
2026-02-11 13:16:54 +01:00
|
|
|
mkShell' = mkShell.override { inherit stdenv; };
|
|
|
|
|
pyEnv = python3Packages.python.withPackages (p: [
|
|
|
|
|
p.beartype
|
|
|
|
|
]);
|
2026-01-21 15:23:04 +01:00
|
|
|
in mkShell' {
|
2026-02-11 13:16:54 +01:00
|
|
|
name = "devshell-for-${self.finalPackage.name}";
|
|
|
|
|
packages = [ pyEnv ];
|
|
|
|
|
env.PYTHONPATH = [
|
|
|
|
|
"${pyEnv}/${pyEnv.sitePackages}"
|
|
|
|
|
# Cursed.
|
|
|
|
|
"${path}/nixos/lib/test-driver/src"
|
|
|
|
|
] |> lib.concatStringsSep ":";
|
2026-01-21 15:23:04 +01:00
|
|
|
};
|
|
|
|
|
|
2026-02-11 13:16:54 +01:00
|
|
|
passthru.modulesPath = self.finalPackage.modules + "/share/nixos/modules";
|
2026-01-21 15:23:04 +01:00
|
|
|
|
2026-02-11 13:16:54 +01:00
|
|
|
passthru.tests = lib.fix (callPackage ./tests {
|
|
|
|
|
dynix = self.finalPackage;
|
|
|
|
|
}).packages;
|
2026-01-21 15:23:04 +01:00
|
|
|
|
|
|
|
|
meta = {
|
2026-02-11 13:16:54 +01:00
|
|
|
outputsToInstall = [ "modules" ];
|
2026-01-21 15:23:04 +01:00
|
|
|
};
|
2026-02-11 13:16:54 +01:00
|
|
|
})
|