inline proxmox-template call

this did not need to go thru a separate file, as it turned out not
recursive

Signed-off-by: Kiara Grouwstra <kiara@procolix.eu>
This commit is contained in:
Kiara Grouwstra 2025-11-14 12:02:42 +01:00
parent ddbd7abbb2
commit 10431f42ad
Signed by: kiara
SSH key fingerprint: SHA256:COspvLoLJ5WC5rFb9ZDe5urVCkK4LJZOsjfF4duRJFU
4 changed files with 55 additions and 87 deletions

View file

@ -2,14 +2,14 @@
config, config,
system, system,
modulesPath, modulesPath,
sources ? import ../../../../npins, sources ? import ../../../npins,
... ...
}@args: }@args:
let let
inherit (sources) nixpkgs; inherit (sources) nixpkgs;
pkgs = import nixpkgs { inherit system; }; pkgs = import nixpkgs { inherit system; };
inherit (pkgs) lib; inherit (pkgs) lib;
inherit (pkgs.callPackage ../../common/utils.nix { inherit modulesPath; }) mkNixosConfiguration; inherit (pkgs.callPackage ../common/utils.nix { inherit modulesPath; }) mkNixosConfiguration;
inherit (config) inherit (config)
nodeName nodeName
pathToRoot pathToRoot
@ -30,10 +30,10 @@ let
ipv6Address ipv6Address
; ;
in in
(pkgs.callPackage ../../../utils.nix { }).evalModel ( (pkgs.callPackage ../../utils.nix { }).evalModel (
{ config, ... }: { config, ... }:
{ {
imports = [ ../../common/model.nix ]; imports = [ ../common/model.nix ];
config = { config = {
environments.default = environment: { environments.default = environment: {
resources."operator-environment".login-shell = { resources."operator-environment".login-shell = {

View file

@ -7,23 +7,61 @@
}: }:
let let
inherit (pkgs) system; inherit (pkgs) system;
inherit (pkgs.callPackage ../../utils.nix { }) evalModel;
inherit (pkgs.callPackage ../common/utils.nix { inherit modulesPath; }) mkNixosConfiguration;
backendPort = builtins.toString 8080; backendPort = builtins.toString 8080;
tfBackend = fragment: { tfBackend = fragment: {
address = "http://localhost:${backendPort}/state/${fragment}"; address = "http://localhost:${backendPort}/state/${fragment}";
}; };
template-deployment = template-deployment =
(import ./setups/template.nix { (evalModel (
inherit sources system modulesPath; { config, ... }:
{
imports = [ ../common/model.nix ];
config = { config = {
environments.default = environment: {
resources."operator-environment".login-shell = {
wheel = true;
username = "operator";
};
implementation =
{
required-resources,
...
}:
{
tf-proxmox-template = {
nixos-configuration = {
imports = [
(mkNixosConfiguration environment required-resources)
./shared.nix
];
};
inherit system;
ssh.host = "pve";
httpBackend = tfBackend "proxmox-test/upload"; httpBackend = tfBackend "proxmox-test/upload";
nodeName = "pve";
targetSystem = system;
node-name = "pve"; node-name = "pve";
imageDatastoreId = "local"; imageDatastoreId = "local";
}; };
}).default.tf-proxmox-template; };
};
};
options.default =
let
env = config.environments.default;
in
lib.mkOption {
type = env.resource-mapping.output-type;
default = env.deployment {
deployment-name = "default";
# normally our template is distinct, but our test cannot download build deps due to sandboxing
configuration = config."example-configuration";
};
};
}
)).default.tf-proxmox-template;
vm-deployment = vm-deployment =
(import ./setups/vm.nix { (import ./data-model.nix {
inherit sources system modulesPath; inherit sources system modulesPath;
config = { config = {
httpBackend = tfBackend "proxmox-test/nixos"; httpBackend = tfBackend "proxmox-test/nixos";

View file

@ -1,70 +0,0 @@
{
config,
system,
modulesPath,
sources ? import ../../../../npins,
...
}:
let
inherit (sources) nixpkgs;
pkgs = import nixpkgs { inherit system; };
inherit (pkgs) lib;
inherit (pkgs.callPackage ../../common/utils.nix { inherit modulesPath; }) mkNixosConfiguration;
inherit (config)
nodeName
targetSystem
httpBackend
node-name
imageDatastoreId
;
in
(pkgs.callPackage ../../../utils.nix { }).evalModel (
{ config, ... }:
{
imports = [ ../../common/model.nix ];
config = {
environments.default = environment: {
resources."operator-environment".login-shell = {
wheel = true;
username = "operator";
};
implementation =
{
required-resources,
...
}:
{
tf-proxmox-template = {
nixos-configuration = {
imports = [
(mkNixosConfiguration environment required-resources)
./shared.nix
];
};
system = targetSystem;
ssh = {
host = nodeName;
};
inherit
node-name
httpBackend
imageDatastoreId
;
};
};
};
};
options.default =
let
env = config.environments.default;
in
lib.mkOption {
type = env.resource-mapping.output-type;
default = env.deployment {
deployment-name = "default";
# normally our template is distinct, but our test cannot download build deps due to sandboxing
configuration = config."example-configuration";
};
};
}
)

View file

@ -1,12 +1,12 @@
{ {
lib, lib,
sources ? import ../../../../npins, sources ? import ../../../npins,
... ...
}: }:
{ {
imports = [ imports = [
"${sources.disko}/module.nix" "${sources.disko}/module.nix"
../../../../infra/common/proxmox-qemu-vm.nix ../../../infra/common/proxmox-qemu-vm.nix
]; ];
networking.useDHCP = false; networking.useDHCP = false;
services.qemuGuest.enable = true; services.qemuGuest.enable = true;