forked from fediversity/fediversity
some cleanup
Signed-off-by: Kiara Grouwstra <kiara@procolix.eu>
This commit is contained in:
parent
bf317c600a
commit
8a3cd4a903
8 changed files with 55 additions and 397 deletions
|
@ -130,46 +130,19 @@ let
|
||||||
"${nixpkgs}/nixos/modules/profiles/perlless.nix"
|
"${nixpkgs}/nixos/modules/profiles/perlless.nix"
|
||||||
"${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
|
"${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
|
||||||
../../../infra/common/nixos/repart.nix
|
../../../infra/common/nixos/repart.nix
|
||||||
# disko needed in makeInstallerIso.nix
|
|
||||||
# "${sources.disko}/module.nix"
|
|
||||||
# ../../../infra/common/proxmox-qemu-vm.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# boot.loader.systemd-boot.enable = true;
|
# boot.loader.systemd-boot.enable = true;
|
||||||
# boot.loader.efi.efiSysMountPoint = "/boot";
|
# boot.loader.efi.efiSysMountPoint = "/boot";
|
||||||
# boot.loader.systemd-boot.memtest86.enable = true;
|
|
||||||
# boot.loader.systemd-boot.netbootxyz.enable = true;
|
|
||||||
# boot.loader.systemd-boot.edk2-uefi-shell.enable = true;
|
# boot.loader.systemd-boot.edk2-uefi-shell.enable = true;
|
||||||
# boot.loader.efi.canTouchEfiVariables = true;
|
# boot.loader.efi.canTouchEfiVariables = true;
|
||||||
# boot.loader.systemd-boot.extraEntries = {
|
|
||||||
# "banana.conf" = ''
|
|
||||||
# title banana
|
|
||||||
# '';
|
|
||||||
# };
|
|
||||||
# # proxmox.qemuConf.bios == "ovmf";
|
# # proxmox.qemuConf.bios == "ovmf";
|
||||||
|
|
||||||
# boot.growPartition = true;
|
# boot.growPartition = true;
|
||||||
# boot.kernelParams = [ "console=ttyS0" ];
|
|
||||||
# boot.loader.timeout = 1;
|
# boot.loader.timeout = 1;
|
||||||
|
|
||||||
# # users.users.root.initialPassword = "root";
|
|
||||||
# boot.loader.grub.enable = true;
|
|
||||||
# # boot.loader.grub.device = "/dev/vda";
|
|
||||||
# # boot.loader.grub.device = "/dev/sda";
|
|
||||||
# # boot.loader.grub.device = "/dev/sda1";
|
|
||||||
# # boot.loader.grub.device = "/dev/sda2";
|
|
||||||
# # boot.loader.grub.device = "/dev/sda3";
|
|
||||||
# # boot.loader.grub.device = "/dev/disk/by-partlabel/disk-main-root";
|
|
||||||
# # boot.loader.grub.device = "/dev/disk/by-partlabel/disk-main-nixos";
|
|
||||||
# # boot.loader.grub.device = "/dev/disk/by-partlabel/disk-main-esp";
|
|
||||||
# # boot.loader.grub.device = "/dev/disk/by-partlabel/root";
|
|
||||||
# boot.loader.grub.device = "/dev/disk/by-partlabel/esp";
|
|
||||||
# # boot.loader.grub.device = "/dev/disk/by-partlabel/nixos";
|
|
||||||
# # boot.loader.grub.device = "/dev/disk/by-uuid/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
|
|
||||||
# # boot.loader.grub.device = "/dev/disk/by-uuid/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb";
|
|
||||||
# boot.loader.grub.efiSupport = lib.mkDefault true;
|
|
||||||
# boot.loader.grub.efiInstallAsRemovable = lib.mkDefault true;
|
|
||||||
system.stateVersion = "25.05";
|
system.stateVersion = "25.05";
|
||||||
|
services.qemuGuest.enable = true;
|
||||||
|
|
||||||
users.users = environment.config.resources."operator-environment".login-shell.apply {
|
users.users = environment.config.resources."operator-environment".login-shell.apply {
|
||||||
resources = lib.filterAttrs (_name: value: value ? login-shell) (
|
resources = lib.filterAttrs (_name: value: value ? login-shell) (
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
targetMachines = [
|
targetMachines = [
|
||||||
"mypve"
|
"pve"
|
||||||
];
|
];
|
||||||
pathToRoot = builtins.path {
|
pathToRoot = builtins.path {
|
||||||
path = ../../..;
|
path = ../../..;
|
||||||
|
|
|
@ -23,12 +23,6 @@ let
|
||||||
config = deployment-config;
|
config = deployment-config;
|
||||||
# opt not to pass `inputs`, as we could only pass serializable arguments through to its self-call
|
# opt not to pass `inputs`, as we could only pass serializable arguments through to its self-call
|
||||||
})."bash-proxmox-deployment".bash-proxmox-host;
|
})."bash-proxmox-deployment".bash-proxmox-host;
|
||||||
# tracking non-tarball downloads seems unsupported still in npins:
|
|
||||||
# https://github.com/andir/npins/issues/163
|
|
||||||
minimalIso = pkgs.fetchurl {
|
|
||||||
url = "https://releases.nixos.org/nixos/24.05/nixos-24.05.7139.bcba2fbf6963/nixos-minimal-24.05.7139.bcba2fbf6963-x86_64-linux.iso";
|
|
||||||
hash = "sha256-plre/mIHdIgU4xWU+9xErP+L4i460ZbcKq8iy2n4HT8=";
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
_class = "nixosTest";
|
_class = "nixosTest";
|
||||||
|
@ -62,12 +56,10 @@ in
|
||||||
sockets = 1;
|
sockets = 1;
|
||||||
kvm = true;
|
kvm = true;
|
||||||
scsi = [ { file = "local:16"; } ];
|
scsi = [ { file = "local:16"; } ];
|
||||||
# cdrom = "local:iso/minimal.iso";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
additionalPaths = [ minimalIso ];
|
|
||||||
diskSize = 2 * 1024;
|
diskSize = 2 * 1024;
|
||||||
memorySize = 2048;
|
memorySize = 2048;
|
||||||
};
|
};
|
||||||
|
@ -92,134 +84,14 @@ in
|
||||||
hello
|
hello
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
system.extraDependencies =
|
system.extraDependencies = [
|
||||||
# (lib.lists.map lib.traceVal)
|
pkgs.gnu-config
|
||||||
# (
|
pkgs.byacc
|
||||||
# (lib.lists.concatMap (
|
pkgs.stdenv
|
||||||
# pkg:
|
pkgs.stdenvNoCC
|
||||||
# (
|
sources.nixpkgs
|
||||||
# if
|
pkgs.vte
|
||||||
# pkg ? inputDerivation
|
];
|
||||||
# # error: output '/nix/store/dki9d3vldafg9ydrfm7x0g0rr0qljk98-sudo-1.9.16p2' is not allowed to refer to the following paths:
|
|
||||||
# # /nix/store/2xdmps65ryklmbf025bm4pxv16gb8ajv-sudo-1.9.16p2.tar.gz
|
|
||||||
# # /nix/store/58br4vk3q5akf4g8lx0pqzfhn47k3j8d-bash-5.2p37
|
|
||||||
# # /nix/store/8v6k283dpbc0qkdq81nb6mrxrgcb10i1-gcc-wrapper-14-20241116
|
|
||||||
# # /nix/store/9r1nl9ksiyszy4qzzg6y2gcdkca0xmhy-stdenv-linux
|
|
||||||
# # /nix/store/a4rmp6in7igbl1wbz9pli5nq0wiclq0y-groff-1.23.0
|
|
||||||
# # /nix/store/dki9d3vldafg9ydrfm7x0g0rr0qljk98-sudo-1.9.16p2
|
|
||||||
# # /nix/store/f5y58qz2fzpzgkhp0nizixi10x04ppyy-linux-pam-1.6.1
|
|
||||||
# # /nix/store/shkw4qm9qcw5sc5n1k5jznc83ny02r39-default-builder.sh
|
|
||||||
# # /nix/store/vj1c3wf9c11a0qs6p3ymfvrnsdgsdcbq-source-stdenv.sh
|
|
||||||
# # /nix/store/yh6qg1nsi5h2xblcr67030pz58fsaxx3-coreutils-9.6
|
|
||||||
# && !(lib.strings.hasInfix "sudo" (lib.traceVal (builtins.toString pkg)))
|
|
||||||
# then
|
|
||||||
# lib.trace "yes" [
|
|
||||||
# # lib.traceVal pkg.inputDerivation # not of type `path in the Nix store'
|
|
||||||
# (
|
|
||||||
# (
|
|
||||||
# x: builtins.trace "${builtins.toString pkg}: ${builtins.toString (lib.isPath x.inputDerivation)}" x
|
|
||||||
# )
|
|
||||||
# pkg
|
|
||||||
# ).inputDerivation
|
|
||||||
# ]
|
|
||||||
# else
|
|
||||||
# lib.trace "no" [ ]
|
|
||||||
# )
|
|
||||||
# ) machine.environment.systemPackages)
|
|
||||||
# ++ (let
|
|
||||||
# base =
|
|
||||||
# (import "${pkgs.nixos-generators}/share/nixos-generator/nixos-generate.nix" {
|
|
||||||
# inherit system;
|
|
||||||
# inherit (sources) nixpkgs;
|
|
||||||
# formatConfig = "${pkgs.nixos-generators}/share/nixos-generator/formats/proxmox.nix";
|
|
||||||
# configuration = "${pkgs.nixos-generators}/share/nixos-generator/configuration.nix";
|
|
||||||
# }).config;
|
|
||||||
# in [
|
|
||||||
# base.system.build.toplevel.inputDerivation
|
|
||||||
# base.system.build.etc.inputDerivation
|
|
||||||
# base.system.build.etcBasedir.inputDerivation
|
|
||||||
# base.system.build.etcMetadataImage.inputDerivation
|
|
||||||
# base.system.build.extraUtils.inputDerivation
|
|
||||||
# base.system.path.inputDerivation
|
|
||||||
# base.system.build.setEnvironment.inputDerivation
|
|
||||||
# base.system.build.vm.inputDerivation
|
|
||||||
# base.system.build.bootStage1.inputDerivation
|
|
||||||
# base.system.build.bootStage2.inputDerivation
|
|
||||||
# ])
|
|
||||||
# ++
|
|
||||||
[
|
|
||||||
# )
|
|
||||||
# (
|
|
||||||
# (x: builtins.trace "machine.system.build.vm.inputDerivation: ${builtins.toString (lib.isPath x)}" x)
|
|
||||||
# machine.system.build.toplevel.inputDerivation
|
|
||||||
# machine.system.build.etc.inputDerivation
|
|
||||||
# machine.system.build.etcBasedir.inputDerivation
|
|
||||||
# machine.system.build.etcMetadataImage.inputDerivation
|
|
||||||
# machine.system.build.extraUtils.inputDerivation
|
|
||||||
# machine.system.path.inputDerivation
|
|
||||||
# machine.system.build.setEnvironment.inputDerivation
|
|
||||||
# machine.system.build.vm.inputDerivation
|
|
||||||
# machine.system.build.bootStage1.inputDerivation
|
|
||||||
# machine.system.build.bootStage2.inputDerivation
|
|
||||||
pkgs.gnu-config
|
|
||||||
# pkgs.gnu-config.inputDerivation
|
|
||||||
pkgs.byacc
|
|
||||||
# pkgs.byacc.inputDerivation
|
|
||||||
pkgs.stdenv
|
|
||||||
pkgs.stdenvNoCC
|
|
||||||
sources.nixpkgs
|
|
||||||
pkgs.vte
|
|
||||||
|
|
||||||
# (
|
|
||||||
# ## We build a whole NixOS system that contains the module
|
|
||||||
# ## `system.extraDependenciesFromModule`, only to grab its
|
|
||||||
# ## configuration and the store paths needed to build it and
|
|
||||||
# ## dump them in `system.extraDependencies`.
|
|
||||||
# # see: https://git.fediversity.eu/Fediversity/Fediversity/pulls/338/files
|
|
||||||
|
|
||||||
# pkgs.closureInfo {
|
|
||||||
# rootPaths = map (drv: drv.drvPath) (
|
|
||||||
# [
|
|
||||||
# machine.system.build.toplevel.inputDerivation
|
|
||||||
# machine.system.build.etc.inputDerivation
|
|
||||||
# machine.system.build.etcBasedir.inputDerivation
|
|
||||||
# machine.system.build.etcMetadataImage.inputDerivation
|
|
||||||
# machine.system.build.extraUtils.inputDerivation
|
|
||||||
# machine.system.path.inputDerivation
|
|
||||||
# machine.system.build.setEnvironment.inputDerivation
|
|
||||||
# machine.system.build.vm.inputDerivation
|
|
||||||
# machine.system.build.bootStage1.inputDerivation
|
|
||||||
# machine.system.build.bootStage2.inputDerivation
|
|
||||||
# ]
|
|
||||||
# ++ lib.concatMap (x: if x ? source.inputDerivation then [ x.source.inputDerivation ] else [ ]) (
|
|
||||||
# lib.attrValues machine.environment.etc
|
|
||||||
# )
|
|
||||||
# ++ machine.environment.systemPackages
|
|
||||||
# );
|
|
||||||
# }
|
|
||||||
# )
|
|
||||||
|
|
||||||
]
|
|
||||||
# ++ lib.concatLists (
|
|
||||||
# lib.mapAttrsToList (
|
|
||||||
# _k: v:
|
|
||||||
# if v ? source.inputDerivation then
|
|
||||||
# [
|
|
||||||
# # v.source.inputDerivation
|
|
||||||
# (
|
|
||||||
# (
|
|
||||||
# x:
|
|
||||||
# builtins.trace "${builtins.toString (lib.attrNames v)}: ${builtins.toString (lib.isPath x.source.inputDerivation)}" x
|
|
||||||
# )
|
|
||||||
# v
|
|
||||||
# ).source.inputDerivation
|
|
||||||
# ]
|
|
||||||
# else
|
|
||||||
# [ ]
|
|
||||||
# ) machine.environment.etc
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extraTestScript = ''
|
extraTestScript = ''
|
||||||
|
@ -231,15 +103,11 @@ in
|
||||||
|
|
||||||
# pve.succeed("pvesh set /access/password --userid root@pam --password mypwdlol --confirmation-password mytestpw 1>&2")
|
# pve.succeed("pvesh set /access/password --userid root@pam --password mypwdlol --confirmation-password mytestpw 1>&2")
|
||||||
# pve.succeed("curl -s -i -k -d '{\"userid\":\"root@pam\",\"password\":\"mypwdhaha\",\"confirmation-password\":\"mypwdlol\"}' -X PUT https://localhost:8006/api2/json/access/password 1>&2")
|
# pve.succeed("curl -s -i -k -d '{\"userid\":\"root@pam\",\"password\":\"mypwdhaha\",\"confirmation-password\":\"mypwdlol\"}' -X PUT https://localhost:8006/api2/json/access/password 1>&2")
|
||||||
# on mistake: 401 No ticket
|
|
||||||
# pve.succeed("haha")
|
|
||||||
|
|
||||||
with subtest("Run the deployment"):
|
with subtest("Run the deployment"):
|
||||||
# target.fail("hello 1>&2")
|
|
||||||
deployer.succeed("""
|
deployer.succeed("""
|
||||||
${lib.getExe deployment.run}
|
${lib.getExe deployment.run}
|
||||||
""")
|
""")
|
||||||
# target.wait_for_unit("multi-user.target")
|
|
||||||
# target.succeed("su - operator -c hello 1>&2")
|
# target.succeed("su - operator -c hello 1>&2")
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
targetMachines = [
|
targetMachines = [
|
||||||
"mypve"
|
"pve"
|
||||||
];
|
];
|
||||||
pathToRoot = builtins.path {
|
pathToRoot = builtins.path {
|
||||||
path = ../../..;
|
path = ../../..;
|
||||||
|
|
|
@ -24,10 +24,6 @@ let
|
||||||
})."tf-proxmox-deployment".tf-proxmox-host;
|
})."tf-proxmox-deployment".tf-proxmox-host;
|
||||||
# tracking non-tarball downloads seems unsupported still in npins:
|
# tracking non-tarball downloads seems unsupported still in npins:
|
||||||
# https://github.com/andir/npins/issues/163
|
# https://github.com/andir/npins/issues/163
|
||||||
minimalIso = pkgs.fetchurl {
|
|
||||||
url = "https://releases.nixos.org/nixos/24.05/nixos-24.05.7139.bcba2fbf6963/nixos-minimal-24.05.7139.bcba2fbf6963-x86_64-linux.iso";
|
|
||||||
hash = "sha256-plre/mIHdIgU4xWU+9xErP+L4i460ZbcKq8iy2n4HT8=";
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
_class = "nixosTest";
|
_class = "nixosTest";
|
||||||
|
@ -61,12 +57,10 @@ in
|
||||||
sockets = 1;
|
sockets = 1;
|
||||||
kvm = true;
|
kvm = true;
|
||||||
scsi = [ { file = "local:16"; } ];
|
scsi = [ { file = "local:16"; } ];
|
||||||
# cdrom = "local:iso/minimal.iso";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
additionalPaths = [ minimalIso ];
|
|
||||||
diskSize = 2 * 1024;
|
diskSize = 2 * 1024;
|
||||||
memorySize = 2048;
|
memorySize = 2048;
|
||||||
};
|
};
|
||||||
|
@ -91,139 +85,18 @@ in
|
||||||
hello
|
hello
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
system.extraDependencies =
|
system.extraDependencies = [
|
||||||
# (lib.lists.map lib.traceVal)
|
pkgs.ubootQemuX86
|
||||||
(
|
pkgs.ubootQemuX86.inputDerivation
|
||||||
# (lib.lists.concatMap (
|
pkgs.pve-qemu
|
||||||
# pkg:
|
pkgs.pve-qemu.inputDerivation
|
||||||
# (
|
pkgs.gnu-config
|
||||||
# if
|
pkgs.byacc
|
||||||
# pkg ? inputDerivation
|
pkgs.stdenv
|
||||||
# # error: output '/nix/store/dki9d3vldafg9ydrfm7x0g0rr0qljk98-sudo-1.9.16p2' is not allowed to refer to the following paths:
|
pkgs.stdenvNoCC
|
||||||
# # /nix/store/2xdmps65ryklmbf025bm4pxv16gb8ajv-sudo-1.9.16p2.tar.gz
|
sources.nixpkgs
|
||||||
# # /nix/store/58br4vk3q5akf4g8lx0pqzfhn47k3j8d-bash-5.2p37
|
pkgs.vte
|
||||||
# # /nix/store/8v6k283dpbc0qkdq81nb6mrxrgcb10i1-gcc-wrapper-14-20241116
|
];
|
||||||
# # /nix/store/9r1nl9ksiyszy4qzzg6y2gcdkca0xmhy-stdenv-linux
|
|
||||||
# # /nix/store/a4rmp6in7igbl1wbz9pli5nq0wiclq0y-groff-1.23.0
|
|
||||||
# # /nix/store/dki9d3vldafg9ydrfm7x0g0rr0qljk98-sudo-1.9.16p2
|
|
||||||
# # /nix/store/f5y58qz2fzpzgkhp0nizixi10x04ppyy-linux-pam-1.6.1
|
|
||||||
# # /nix/store/shkw4qm9qcw5sc5n1k5jznc83ny02r39-default-builder.sh
|
|
||||||
# # /nix/store/vj1c3wf9c11a0qs6p3ymfvrnsdgsdcbq-source-stdenv.sh
|
|
||||||
# # /nix/store/yh6qg1nsi5h2xblcr67030pz58fsaxx3-coreutils-9.6
|
|
||||||
# && !(lib.strings.hasInfix "sudo" (lib.traceVal (builtins.toString pkg)))
|
|
||||||
# then
|
|
||||||
# lib.trace "yes" [
|
|
||||||
# # lib.traceVal pkg.inputDerivation # not of type `path in the Nix store'
|
|
||||||
# (
|
|
||||||
# (
|
|
||||||
# x: builtins.trace "${builtins.toString pkg}: ${builtins.toString (lib.isPath x.inputDerivation)}" x
|
|
||||||
# )
|
|
||||||
# pkg
|
|
||||||
# ).inputDerivation
|
|
||||||
# ]
|
|
||||||
# else
|
|
||||||
# lib.trace "no" [ ]
|
|
||||||
# )
|
|
||||||
# ) machine.environment.systemPackages)
|
|
||||||
# ++ (let
|
|
||||||
# base =
|
|
||||||
# (import "${pkgs.nixos-generators}/share/nixos-generator/nixos-generate.nix" {
|
|
||||||
# inherit system;
|
|
||||||
# inherit (sources) nixpkgs;
|
|
||||||
# formatConfig = "${pkgs.nixos-generators}/share/nixos-generator/formats/proxmox.nix";
|
|
||||||
# configuration = "${pkgs.nixos-generators}/share/nixos-generator/configuration.nix";
|
|
||||||
# }).config;
|
|
||||||
# in [
|
|
||||||
# base.system.build.toplevel.inputDerivation
|
|
||||||
# base.system.build.etc.inputDerivation
|
|
||||||
# base.system.build.etcBasedir.inputDerivation
|
|
||||||
# base.system.build.etcMetadataImage.inputDerivation
|
|
||||||
# base.system.build.extraUtils.inputDerivation
|
|
||||||
# base.system.path.inputDerivation
|
|
||||||
# base.system.build.setEnvironment.inputDerivation
|
|
||||||
# base.system.build.vm.inputDerivation
|
|
||||||
# base.system.build.bootStage1.inputDerivation
|
|
||||||
# base.system.build.bootStage2.inputDerivation
|
|
||||||
# ])
|
|
||||||
# ++
|
|
||||||
[
|
|
||||||
# )
|
|
||||||
# (
|
|
||||||
# (x: builtins.trace "machine.system.build.vm.inputDerivation: ${builtins.toString (lib.isPath x)}" x)
|
|
||||||
# machine.system.build.toplevel.inputDerivation
|
|
||||||
# machine.system.build.etc.inputDerivation
|
|
||||||
# machine.system.build.etcBasedir.inputDerivation
|
|
||||||
# machine.system.build.etcMetadataImage.inputDerivation
|
|
||||||
# machine.system.build.extraUtils.inputDerivation
|
|
||||||
# machine.system.path.inputDerivation
|
|
||||||
# machine.system.build.setEnvironment.inputDerivation
|
|
||||||
# machine.system.build.vm.inputDerivation
|
|
||||||
# machine.system.build.bootStage1.inputDerivation
|
|
||||||
# machine.system.build.bootStage2.inputDerivation
|
|
||||||
pkgs.ubootQemuX86
|
|
||||||
pkgs.ubootQemuX86.inputDerivation
|
|
||||||
pkgs.pve-qemu
|
|
||||||
pkgs.pve-qemu.inputDerivation
|
|
||||||
# (pkgs.callPackage "${sources.proxmox-nixos}/pkgs/pve-qemu" { })
|
|
||||||
# (pkgs.callPackage "${sources.proxmox-nixos}/pkgs/pve-qemu" { }).inputDerivation
|
|
||||||
pkgs.gnu-config
|
|
||||||
# pkgs.gnu-config.inputDerivation
|
|
||||||
pkgs.byacc
|
|
||||||
# pkgs.byacc.inputDerivation
|
|
||||||
pkgs.stdenv
|
|
||||||
pkgs.stdenvNoCC
|
|
||||||
sources.nixpkgs
|
|
||||||
pkgs.vte
|
|
||||||
|
|
||||||
# (
|
|
||||||
# ## We build a whole NixOS system that contains the module
|
|
||||||
# ## `system.extraDependenciesFromModule`, only to grab its
|
|
||||||
# ## configuration and the store paths needed to build it and
|
|
||||||
# ## dump them in `system.extraDependencies`.
|
|
||||||
# # see: https://git.fediversity.eu/Fediversity/Fediversity/pulls/338/files
|
|
||||||
|
|
||||||
# pkgs.closureInfo {
|
|
||||||
# rootPaths = map (drv: drv.drvPath) (
|
|
||||||
# [
|
|
||||||
# machine.system.build.toplevel.inputDerivation
|
|
||||||
# machine.system.build.etc.inputDerivation
|
|
||||||
# machine.system.build.etcBasedir.inputDerivation
|
|
||||||
# machine.system.build.etcMetadataImage.inputDerivation
|
|
||||||
# machine.system.build.extraUtils.inputDerivation
|
|
||||||
# machine.system.path.inputDerivation
|
|
||||||
# machine.system.build.setEnvironment.inputDerivation
|
|
||||||
# machine.system.build.vm.inputDerivation
|
|
||||||
# machine.system.build.bootStage1.inputDerivation
|
|
||||||
# machine.system.build.bootStage2.inputDerivation
|
|
||||||
# ]
|
|
||||||
# ++ lib.concatMap (x: if x ? source.inputDerivation then [ x.source.inputDerivation ] else [ ]) (
|
|
||||||
# lib.attrValues machine.environment.etc
|
|
||||||
# )
|
|
||||||
# ++ machine.environment.systemPackages
|
|
||||||
# );
|
|
||||||
# }
|
|
||||||
# )
|
|
||||||
|
|
||||||
]
|
|
||||||
# ++ lib.concatLists (
|
|
||||||
# lib.mapAttrsToList (
|
|
||||||
# _k: v:
|
|
||||||
# if v ? source.inputDerivation then
|
|
||||||
# [
|
|
||||||
# # v.source.inputDerivation
|
|
||||||
# (
|
|
||||||
# (
|
|
||||||
# x:
|
|
||||||
# builtins.trace "${builtins.toString (lib.attrNames v)}: ${builtins.toString (lib.isPath x.source.inputDerivation)}" x
|
|
||||||
# )
|
|
||||||
# v
|
|
||||||
# ).source.inputDerivation
|
|
||||||
# ]
|
|
||||||
# else
|
|
||||||
# [ ]
|
|
||||||
# ) machine.environment.etc
|
|
||||||
# )
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extraTestScript = ''
|
extraTestScript = ''
|
||||||
|
@ -234,15 +107,11 @@ in
|
||||||
|
|
||||||
# pve.succeed("pvesh set /access/password --userid root@pam --password mypwdlol --confirmation-password mytestpw 1>&2")
|
# pve.succeed("pvesh set /access/password --userid root@pam --password mypwdlol --confirmation-password mytestpw 1>&2")
|
||||||
# pve.succeed("curl -s -i -k -d '{\"userid\":\"root@pam\",\"password\":\"mypwdhaha\",\"confirmation-password\":\"mypwdlol\"}' -X PUT https://localhost:8006/api2/json/access/password 1>&2")
|
# pve.succeed("curl -s -i -k -d '{\"userid\":\"root@pam\",\"password\":\"mypwdhaha\",\"confirmation-password\":\"mypwdlol\"}' -X PUT https://localhost:8006/api2/json/access/password 1>&2")
|
||||||
# on mistake: 401 No ticket
|
|
||||||
# pve.succeed("haha")
|
|
||||||
|
|
||||||
with subtest("Run the deployment"):
|
with subtest("Run the deployment"):
|
||||||
# target.fail("hello 1>&2")
|
|
||||||
deployer.succeed("""
|
deployer.succeed("""
|
||||||
${lib.getExe deployment.run}
|
${lib.getExe deployment.run}
|
||||||
""")
|
""")
|
||||||
# target.wait_for_unit("multi-user.target")
|
|
||||||
# target.succeed("su - operator -c hello 1>&2")
|
# target.succeed("su - operator -c hello 1>&2")
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ in
|
||||||
{
|
{
|
||||||
name = "proxmox-basic";
|
name = "proxmox-basic";
|
||||||
|
|
||||||
nodes.mypve =
|
nodes.pve =
|
||||||
{ sources, ... }:
|
{ sources, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
@ -44,41 +44,41 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript = ''
|
testScript = ''
|
||||||
machine.start()
|
pve.start()
|
||||||
machine.wait_for_unit("pveproxy.service")
|
pve.wait_for_unit("pveproxy.service")
|
||||||
assert "running" in machine.succeed("pveproxy status")
|
assert "running" in pve.succeed("pveproxy status")
|
||||||
|
|
||||||
# Copy Iso
|
# Copy Iso
|
||||||
machine.succeed("mkdir -p /var/lib/vz/template/iso/")
|
pve.succeed("mkdir -p /var/lib/vz/template/iso/")
|
||||||
machine.succeed("cp ${minimalIso} /var/lib/vz/template/iso/minimal.iso")
|
pve.succeed("cp ${minimalIso} /var/lib/vz/template/iso/minimal.iso")
|
||||||
|
|
||||||
# Declarative VM creation
|
# Declarative VM creation
|
||||||
machine.wait_for_unit("multi-user.target")
|
pve.wait_for_unit("multi-user.target")
|
||||||
machine.succeed("qm stop 100 --timeout 0")
|
pve.succeed("qm stop 100 --timeout 0")
|
||||||
|
|
||||||
# Seabios VM creation
|
# Seabios VM creation
|
||||||
machine.succeed(
|
pve.succeed(
|
||||||
"qm create 101 --kvm 0 --bios seabios -cdrom local:iso/minimal.iso",
|
"qm create 101 --kvm 0 --bios seabios -cdrom local:iso/minimal.iso",
|
||||||
"qm start 101",
|
"qm start 101",
|
||||||
"qm stop 101 --timeout 0"
|
"qm stop 101 --timeout 0"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Legacy ovmf vm creation
|
# Legacy ovmf vm creation
|
||||||
machine.succeed(
|
pve.succeed(
|
||||||
"qm create 102 --kvm 0 --bios ovmf -cdrom local:iso/minimal.iso",
|
"qm create 102 --kvm 0 --bios ovmf -cdrom local:iso/minimal.iso",
|
||||||
"qm start 102",
|
"qm start 102",
|
||||||
"qm stop 102 --timeout 0"
|
"qm stop 102 --timeout 0"
|
||||||
)
|
)
|
||||||
|
|
||||||
# UEFI ovmf vm creation
|
# UEFI ovmf vm creation
|
||||||
machine.succeed(
|
pve.succeed(
|
||||||
"qm create 103 --kvm 0 --bios ovmf --efidisk0 local:4,efitype=4m -cdrom local:iso/minimal.iso",
|
"qm create 103 --kvm 0 --bios ovmf --efidisk0 local:4,efitype=4m -cdrom local:iso/minimal.iso",
|
||||||
"qm start 103",
|
"qm start 103",
|
||||||
"qm stop 103 --timeout 0"
|
"qm stop 103 --timeout 0"
|
||||||
)
|
)
|
||||||
|
|
||||||
# UEFI ovmf vm creation with secure boot
|
# UEFI ovmf vm creation with secure boot
|
||||||
machine.succeed(
|
pve.succeed(
|
||||||
"qm create 104 --kvm 0 --bios ovmf --efidisk0 local:4,efitype=4m,pre-enrolled-keys=1 -cdrom local:iso/minimal.iso",
|
"qm create 104 --kvm 0 --bios ovmf --efidisk0 local:4,efitype=4m,pre-enrolled-keys=1 -cdrom local:iso/minimal.iso",
|
||||||
"qm start 104",
|
"qm start 104",
|
||||||
"qm stop 104 --timeout 0"
|
"qm stop 104 --timeout 0"
|
||||||
|
|
|
@ -8,18 +8,13 @@ terraform {
|
||||||
}
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
# dump_name = "vzdump-qemu-nixos-fediversity-${var.category}.vma.zst"
|
dump_name = "qemu-nixos-fediversity-${var.category}.raw"
|
||||||
dump_name = "vzdump-qemu-nixos-fediversity-${var.category}.raw"
|
|
||||||
# dump_name = "vzdump-qemu-nixos-fediversity-${var.category}.qcow2"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://registry.terraform.io/providers/bpg/proxmox/latest/docs
|
# https://registry.terraform.io/providers/bpg/proxmox/latest/docs
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
endpoint = "https://${var.host}:8006/"
|
endpoint = "https://${var.host}:8006/"
|
||||||
insecure = true
|
insecure = true
|
||||||
# timeouts {
|
|
||||||
# create = "60m"
|
|
||||||
# }
|
|
||||||
|
|
||||||
ssh {
|
ssh {
|
||||||
agent = true
|
agent = true
|
||||||
|
@ -100,24 +95,20 @@ resource "proxmox_virtual_environment_file" "upload" {
|
||||||
# }
|
# }
|
||||||
|
|
||||||
resource "proxmox_virtual_environment_vm" "nix_vm" {
|
resource "proxmox_virtual_environment_vm" "nix_vm" {
|
||||||
# lifecycle {
|
lifecycle {
|
||||||
# replace_triggered_by = [
|
ignore_changes = ["disk.import_from"]
|
||||||
# proxmox_virtual_environment_file.upload,
|
}
|
||||||
# ]
|
|
||||||
# }
|
|
||||||
|
|
||||||
node_name = var.node_name
|
node_name = var.node_name
|
||||||
pool_id = var.pool_id
|
pool_id = var.pool_id
|
||||||
description = var.description
|
description = var.description
|
||||||
started = true
|
started = true
|
||||||
|
|
||||||
# # https://wiki.nixos.org/wiki/Virt-manager#Guest_Agent
|
# https://wiki.nixos.org/wiki/Virt-manager#Guest_Agent
|
||||||
# # services.qemuGuest.enable = true;
|
agent {
|
||||||
# # QEMU guest agent is not running
|
enabled = true
|
||||||
# agent {
|
# timeout = "15m"
|
||||||
# enabled = true
|
}
|
||||||
# # timeout = "15m"
|
|
||||||
# }
|
|
||||||
|
|
||||||
cpu {
|
cpu {
|
||||||
type = "x86-64-v2-AES"
|
type = "x86-64-v2-AES"
|
||||||
|
@ -142,9 +133,6 @@ resource "proxmox_virtual_environment_vm" "nix_vm" {
|
||||||
backup = false
|
backup = false
|
||||||
cache = "none"
|
cache = "none"
|
||||||
|
|
||||||
# BdsDxe: failed to load Boot0001 "UEFI QEMU QEMU HARDDISK " from PciRoot(0x0)/Pci(0x5,0x0)/Pci(0x1,0x0)/Scsi(0x0,0x0): Not Found
|
|
||||||
# BdsDxe: No bootable option or device was found.
|
|
||||||
# BdsDxe: Press any key to enter the Boot Manager Menu.
|
|
||||||
# import_from = "local:import/vzdump-qemu-nixos-fediversity-test.qcow2"
|
# import_from = "local:import/vzdump-qemu-nixos-fediversity-test.qcow2"
|
||||||
# import_from = "local:import/vzdump-qemu-nixos-fediversity-test.raw"
|
# import_from = "local:import/vzdump-qemu-nixos-fediversity-test.raw"
|
||||||
import_from = proxmox_virtual_environment_file.upload.id
|
import_from = proxmox_virtual_environment_file.upload.id
|
||||||
|
@ -171,21 +159,16 @@ resource "proxmox_virtual_environment_vm" "nix_vm" {
|
||||||
bios = "ovmf"
|
bios = "ovmf"
|
||||||
}
|
}
|
||||||
|
|
||||||
# module "nixos-rebuild" {
|
module "nixos-rebuild" {
|
||||||
# depends_on = [
|
depends_on = [
|
||||||
# proxmox_virtual_environment_vm.nix_vm
|
proxmox_virtual_environment_vm.nix_vm
|
||||||
# ]
|
]
|
||||||
|
|
||||||
# source = "../tf-single-host"
|
source = "../tf-single-host"
|
||||||
|
|
||||||
# system = var.system
|
nixos_conf = var.nixos_conf
|
||||||
# username = var.ssh_user
|
username = var.ssh_user
|
||||||
# host = proxmox_virtual_environment_vm.nix_vm.ipv4_addresses[0] # needs guest agent installed
|
host = proxmox_virtual_environment_vm.nix_vm.ipv4_addresses[0][0]
|
||||||
# module = var.module
|
key_file = var.key_file
|
||||||
# args = var.args
|
ssh_opts = var.ssh_opts
|
||||||
# key_file = var.key_file
|
}
|
||||||
# deployment_name = var.deployment_name
|
|
||||||
# root_path = var.root_path
|
|
||||||
# ssh_opts = var.ssh_opts
|
|
||||||
# deployment_type = var.deployment_type
|
|
||||||
# }
|
|
||||||
|
|
|
@ -189,39 +189,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# disko.devices.disk.main = {
|
|
||||||
# device = "/dev/sda";
|
|
||||||
# type = "disk";
|
|
||||||
# content = {
|
|
||||||
# type = "gpt";
|
|
||||||
# partitions = {
|
|
||||||
# MBR = {
|
|
||||||
# priority = 0;
|
|
||||||
# size = "1M";
|
|
||||||
# type = "EF02";
|
|
||||||
# };
|
|
||||||
# ESP = {
|
|
||||||
# priority = 1;
|
|
||||||
# size = "500M";
|
|
||||||
# type = "EF00";
|
|
||||||
# content = {
|
|
||||||
# type = "filesystem";
|
|
||||||
# format = "vfat";
|
|
||||||
# mountpoint = "/boot";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# root = {
|
|
||||||
# priority = 2;
|
|
||||||
# size = "100%";
|
|
||||||
# content = {
|
|
||||||
# type = "filesystem";
|
|
||||||
# format = "ext4";
|
|
||||||
# mountpoint = "/";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue