This hasn't reduced the extra deps we have to pass to our nixos build unfortunally, but maybe at least it can safe us a few in the future.
132 lines
3.7 KiB
Nix
132 lines
3.7 KiB
Nix
{ self, ... }:
|
|
{
|
|
# Define machines that use the nixOS modules
|
|
clan.machines = {
|
|
test-vm-persistence-x86_64-linux = {
|
|
imports = [ self.nixosModules.test-vm-persistence ];
|
|
nixpkgs.hostPlatform = "x86_64-linux";
|
|
};
|
|
test-vm-persistence-aarch64-linux = {
|
|
imports = [ self.nixosModules.test-vm-persistence ];
|
|
nixpkgs.hostPlatform = "aarch64-linux";
|
|
};
|
|
test-vm-deployment-x86_64-linux = {
|
|
imports = [ self.nixosModules.test-vm-deployment ];
|
|
nixpkgs.hostPlatform = "x86_64-linux";
|
|
};
|
|
test-vm-deployment-aarch64-linux = {
|
|
imports = [ self.nixosModules.test-vm-deployment ];
|
|
nixpkgs.hostPlatform = "aarch64-linux";
|
|
};
|
|
};
|
|
|
|
flake.nixosModules = {
|
|
# NixOS module for test_vm_persistence
|
|
test-vm-persistence =
|
|
{ config, ... }:
|
|
{
|
|
imports = [ self.nixosModules.clan-vm-base ];
|
|
|
|
system.stateVersion = config.system.nixos.release;
|
|
|
|
# Disable services that might cause issues in tests
|
|
systemd.services.logrotate-checkconf.enable = false;
|
|
services.getty.autologinUser = "root";
|
|
|
|
# Basic networking setup
|
|
networking.useDHCP = false;
|
|
networking.firewall.enable = false;
|
|
|
|
# VM-specific settings
|
|
clan.virtualisation.graphics = false;
|
|
clan.core.networking.targetHost = "client";
|
|
|
|
# State configuration for persistence test
|
|
clan.core.state.my_state.folders = [
|
|
"/var/my-state"
|
|
"/var/user-state"
|
|
];
|
|
|
|
# Initialize users for tests
|
|
users.users = {
|
|
root = {
|
|
initialPassword = "root";
|
|
};
|
|
test = {
|
|
initialPassword = "test";
|
|
isSystemUser = true;
|
|
group = "users";
|
|
};
|
|
};
|
|
};
|
|
|
|
# NixOS module for test_vm_deployment
|
|
test-vm-deployment =
|
|
{ config, lib, ... }:
|
|
{
|
|
imports = [ self.nixosModules.clan-vm-base ];
|
|
|
|
system.stateVersion = config.system.nixos.release;
|
|
|
|
# Disable services that might cause issues in tests
|
|
systemd.services.logrotate-checkconf.enable = false;
|
|
services.getty.autologinUser = "root";
|
|
|
|
# Basic networking setup
|
|
networking.useDHCP = false;
|
|
networking.firewall.enable = false;
|
|
|
|
# VM-specific settings
|
|
clan.virtualisation.graphics = false;
|
|
|
|
# SSH for deployment tests
|
|
services.openssh.enable = true;
|
|
|
|
# Initialize users for tests
|
|
users.users = {
|
|
root = {
|
|
initialPassword = "root";
|
|
};
|
|
};
|
|
|
|
# hack to make sure
|
|
sops.validateSopsFiles = false;
|
|
sops.secrets."vars/m1_generator/my_secret" = lib.mkDefault {
|
|
sopsFile = builtins.toFile "fake" "";
|
|
};
|
|
|
|
# Vars generators configuration
|
|
clan.core.vars.generators = {
|
|
m1_generator = {
|
|
files.my_secret = {
|
|
secret = true;
|
|
path = "/run/secrets/vars/m1_generator/my_secret";
|
|
};
|
|
script = ''
|
|
echo hello > "$out"/my_secret
|
|
'';
|
|
};
|
|
|
|
my_shared_generator = {
|
|
share = true;
|
|
files = {
|
|
shared_secret = {
|
|
secret = true;
|
|
path = "/run/secrets/vars/my_shared_generator/shared_secret";
|
|
};
|
|
no_deploy_secret = {
|
|
secret = true;
|
|
deploy = false;
|
|
path = "/run/secrets/vars/my_shared_generator/no_deploy_secret";
|
|
};
|
|
};
|
|
script = ''
|
|
echo hello > "$out"/shared_secret
|
|
echo hello > "$out"/no_deploy_secret
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|