Revert "modules.services.nixvirt: vnc use tls"

This reverts commit 015ae9d3a5.
This commit is contained in:
2025-05-02 21:18:49 +08:00
parent 015ae9d3a5
commit 9d76ad0ec7
2 changed files with 29 additions and 51 deletions

View File

@@ -33,7 +33,7 @@ inputs:
# 大部分空间用于存储虚拟机nodatacow其它内容不多
beesd."/".hashTableSizeMB = 32;
sshd = {};
nixvirt.instance =
nixvirt =
{
test = { memoryGB = 8; cpus = 4; address = 2; owner = "chn"; };
};

View File

@@ -2,35 +2,27 @@ inputs:
{
options.nixos.services.nixvirt = let inherit (inputs.lib) mkOption types; in mkOption
{
type = types.nullOr (types.submodule { options =
{
hostname = mkOption { type = types.nonEmptyStr; default = "phj.chn.moe"; };
instance = mkOption
type = types.nullOr (types.attrsOf (types.submodule (submoduleInputs: { options =
let
hash = builtins.hashString "sha256" submoduleInputs.config._module.args.name;
createString = separator: parts: builtins.concatStringsSep separator
(builtins.map (p: builtins.substring (builtins.head p) (builtins.elemAt p 1) hash) parts);
in
{
type = types.attrsOf (types.submodule (submoduleInputs: { options =
let
hash = builtins.hashString "sha256" submoduleInputs.config._module.args.name;
createString = separator: parts: builtins.concatStringsSep separator
(builtins.map (p: builtins.substring (builtins.head p) (builtins.elemAt p 1) hash) parts);
in
{
uuid = mkOption
{
type = types.nonEmptyStr;
default = createString "-" [ [ 0 8 ] [ 8 4 ] [ 12 4 ] [ 16 4 ] [ 20 12 ] ];
};
storage = mkOption { type = types.nonEmptyStr; default = submoduleInputs.config._module.args.name; };
memoryGB = mkOption { type = types.ints.unsigned; };
cpus = mkOption { type = types.ints.unsigned; };
vncPort = mkOption { type = types.ints.unsigned; default = 15900 + submoduleInputs.config.address; };
mac = mkOption
{ type = types.nonEmptyStr; default = "02:${createString ":" [ [ 0 2 ] [ 2 2 ] [ 4 2 ] [ 6 2 ] [ 8 2 ] ]}"; };
address = mkOption { type = types.ints.unsigned; };
owner = mkOption { type = types.nonEmptyStr; default = submoduleInputs.config._module.args.name; };
};}));
default = {};
};
};});
uuid = mkOption
{
type = types.nonEmptyStr;
default = createString "-" [ [ 0 8 ] [ 8 4 ] [ 12 4 ] [ 16 4 ] [ 20 12 ] ];
};
storage = mkOption { type = types.nonEmptyStr; default = submoduleInputs.config._module.args.name; };
memoryGB = mkOption { type = types.ints.unsigned; };
cpus = mkOption { type = types.ints.unsigned; };
vncPort = mkOption { type = types.ints.unsigned; default = 15900 + submoduleInputs.config.address; };
mac = mkOption
{ type = types.nonEmptyStr; default = "02:${createString ":" [ [ 0 2 ] [ 2 2 ] [ 4 2 ] [ 6 2 ] [ 8 2 ] ]}"; };
address = mkOption { type = types.ints.unsigned; };
owner = mkOption { type = types.nonEmptyStr; default = submoduleInputs.config._module.args.name; };
};})));
default = null;
};
config = let inherit (inputs.config.nixos.services) nixvirt; in inputs.lib.mkIf (nixvirt != null)
@@ -45,7 +37,7 @@ inputs:
{
domains = builtins.map
(vm: { definition = inputs.config.sops.templates."${vm.name}.xml".path; active = true; })
(inputs.localLib.attrsToList nixvirt.instance);
(inputs.localLib.attrsToList nixvirt);
networks =
[{
definition =
@@ -54,7 +46,7 @@ inputs:
{ uuid = "8f403474-f8d6-4fa7-991a-f62f40d51191"; subnet_byte = 122; };
host = builtins.map
(vm: { inherit (vm) mac; ip = "192.168.122.${builtins.toString vm.address}"; })
(builtins.attrValues nixvirt.instance);
(builtins.attrValues nixvirt);
in lib.network.writeXML (base // { ip = base.ip // { dhcp = base.ip.dhcp // { inherit host; }; }; });
active = true;
}];
@@ -76,16 +68,9 @@ inputs:
''
namespaces = []
vnc_listen = "0.0.0.0"
vnc_tls = 1
vnc_tls_x509_cert_dir = "/etc/pki/libvirt-vnc"
default_tls_x509_cert_dir = "/etc/pki/libvirt-vnc"
'';
};
nixos.services =
{
kvm = {};
acme.cert."${nixvirt.hostname}".group = "qemu-libvirtd";
};
nixos.services.kvm = {};
sops =
{
templates = builtins.listToAttrs (builtins.map
@@ -124,12 +109,11 @@ inputs:
vcpu = { placement = "static"; count = vm.value.cpus; };
});
})
(inputs.localLib.attrsToList nixvirt.instance));
(inputs.localLib.attrsToList nixvirt));
secrets = builtins.listToAttrs (builtins.map
(vm: { name = "nixvirt/${vm}"; value = {}; }) (builtins.attrNames nixvirt.instance));
(vm: { name = "nixvirt/${vm}"; value = {}; }) (builtins.attrNames nixvirt));
placeholder = builtins.listToAttrs (builtins.map
(vm: { name = "nixvirt/${vm}"; value = builtins.hashString "sha256" vm; })
(builtins.attrNames nixvirt.instance));
(vm: { name = "nixvirt/${vm}"; value = builtins.hashString "sha256" vm; }) (builtins.attrNames nixvirt));
};
security.wrappers.vm =
{
@@ -140,7 +124,7 @@ inputs:
({
virsh = "${inputs.pkgs.libvirt}/bin/virsh";
vm =
let vms = builtins.groupBy (vm: vm.value.owner) (inputs.localLib.attrsToList nixvirt.instance);
let vms = builtins.groupBy (vm: vm.value.owner) (inputs.localLib.attrsToList nixvirt);
in builtins.listToAttrs (builtins.map (owner:
{
name = builtins.toString inputs.config.nixos.user.uid.${owner.name};
@@ -155,12 +139,6 @@ inputs:
group = "root";
setuid = true;
};
networking.firewall.allowedTCPPorts = builtins.map (vm: vm.vncPort) (builtins.attrValues nixvirt.instance);
environment.etc = let dir = inputs.config.security.acme.certs."${nixvirt.hostname}".directory; in
{
"pki/libvirt-vnc/ca-cert.pem".source = "${dir}/chain.pem";
"pki/libvirt-vnc/server-cert.pem".source = "${dir}/full.pem";
"pki/libvirt-vnc/server-key.pem".source = "${dir}/key.pem";
};
networking.firewall.allowedTCPPorts = builtins.map (vm: vm.vncPort) (builtins.attrValues nixvirt);
};
}