dynix/tests/mk-test-configuration-dot-nix.nix

59 lines
1.8 KiB
Nix
Raw Normal View History

2026-02-11 13:19:59 +01:00
{
lib,
stdenvNoCC,
}: let
stdenv = stdenvNoCC;
mkDynixConfigurationDotNix = finalAttrs: {
name,
2026-02-13 17:19:54 +01:00
/** A *path* to a `configuration.nix`-like NixOS module.
* NOT a NixOS module *value*.
*/
2026-02-11 13:19:59 +01:00
configuration,
}: assert lib.isStringLike configuration; let
self = finalAttrs.finalPackage;
in {
name = "configuration-dot-nix-for-${name}";
strictDeps = true;
__structuredAttrs = true;
preferLocalBuild = true;
phases = [ "installPhase" ];
outputs = [ "out" ];
modulesOut = "${placeholder "out"}/share/nixos";
baseConfiguration = configuration;
2026-02-13 17:19:54 +01:00
dynixVmConfiguration = ./dynix-vm-configuration.nix;
2026-02-11 13:19:59 +01:00
installPhase = ''
runHook preInstall
install -Dm a=r "$baseConfiguration" "$modulesOut/test-configuration.nix"
2026-02-13 17:19:54 +01:00
install -Dm a=r "$dynixVmConfiguration" "$modulesOut/dynix-vm-configuration.nix"
2026-02-11 13:19:59 +01:00
echo "/** GENERATED BY mk-test-configuration-dot-nix! */" >> "$modulesOut/configuration.nix"
echo "{ ... }:" >> "$modulesOut/configuration.nix"
echo >> "$modulesOut/configuration.nix"
echo >> "$modulesOut/configuration.nix"
echo "{" >> "$modulesOut/configuration.nix"
echo " imports = [" >> "$modulesOut/configuration.nix"
echo " ./test-configuration.nix" >> "$modulesOut/configuration.nix"
echo " ./dynix-vm-configuration.nix" >> "$modulesOut/configuration.nix"
echo " ./hardware-configuration.nix" >> "$modulesOut/configuration.nix"
echo " ];" >> "$modulesOut/configuration.nix"
echo "}" >> "$modulesOut/configuration.nix"
runHook postInstall
'';
passthru = {
modulesPath = self.out + "/share/nixos";
configuration = self.out + "/share/nixos/configuration.nix";
};
};
in lib.extendMkDerivation {
constructDrv = stdenv.mkDerivation;
extendDrvArgs = mkDynixConfigurationDotNix;
}