2026-03-05 16:19:06 +01:00
|
|
|
# SPDX-FileCopyrightText: 2026 Qyriad <qyriad@qyriad.me>
|
|
|
|
|
#
|
|
|
|
|
# SPDX-License-Identifier: EUPL-1.1
|
|
|
|
|
|
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"
|
|
|
|
|
|
2026-02-16 18:02:39 +01:00
|
|
|
echo "/** GENERATED BY mk-test-configuration-dot-nix! */" >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo "{ lib, ... }:" >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo "{" >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo " imports = [ ./configuration.nix ];" >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo " config = lib.mkMerge [" >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo " ];" >> "$modulesOut/dynamic.nix"
|
|
|
|
|
echo "}" >> "$modulesOut/dynamic.nix"
|
2026-02-11 13:19:59 +01:00
|
|
|
runHook postInstall
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
passthru = {
|
|
|
|
|
modulesPath = self.out + "/share/nixos";
|
|
|
|
|
configuration = self.out + "/share/nixos/configuration.nix";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
in lib.extendMkDerivation {
|
|
|
|
|
constructDrv = stdenv.mkDerivation;
|
|
|
|
|
extendDrvArgs = mkDynixConfigurationDotNix;
|
|
|
|
|
}
|