diff --git a/devices/srv1/node2/default.nix b/devices/srv1/node2/default.nix index a76b51fc..b8a9cffa 100644 --- a/devices/srv1/node2/default.nix +++ b/devices/srv1/node2/default.nix @@ -19,7 +19,7 @@ inputs: { xray.client.enable = true; beesd."/".threads = 4; - kvm = {}; + kvm.nodatacow = true; }; }; boot.initrd.systemd.network.networks."10-eno2" = inputs.config.systemd.network.networks."10-eno2"; diff --git a/modules/services/kvm.nix b/modules/services/kvm.nix index 73acc9ac..c2e1c62f 100644 --- a/modules/services/kvm.nix +++ b/modules/services/kvm.nix @@ -4,6 +4,7 @@ inputs: { type = types.nullOr (types.submodule { options = { + nodatacow = mkOption { type = types.bool; default = false; }; autoSuspend = mkOption { type = types.listOf types.nonEmptyStr; default = []; }; };}); default = null; @@ -38,7 +39,12 @@ inputs: }; spiceUSBRedirection.enable = true; }; - environment.systemPackages = with inputs.pkgs; [ qemu_full win-spice guestfs-tools virt-manager ]; + environment = + { + persistence."/nix/nodatacow".directories = inputs.lib.mkIf kvm.nodatacow + { directory = "/var/lib/libvirt/images"; mode = "0711"; }; + systemPackages = with inputs.pkgs; [ qemu_full win-spice guestfs-tools virt-manager ]; + }; systemd = { services = @@ -117,4 +123,8 @@ inputs: networking.firewall.interfaces."virbr*".allowedUDPPorts = [ 53 67 ]; hardware.ksm.enable = true; }; + + + ++ inputs.lib.optional (inputs.config.nixos.services.kvm != null) + { directory = "/var/lib/libvirt/images"; mode = "0711"; }; } diff --git a/modules/system/fileSystems/impermanence.nix b/modules/system/fileSystems/impermanence.nix index 781579ba..89bcc8b6 100644 --- a/modules/system/fileSystems/impermanence.nix +++ b/modules/system/fileSystems/impermanence.nix @@ -27,9 +27,7 @@ inputs: { hideMounts = true; directories = - [{ directory = "/var/log/journal"; user = "root"; group = "systemd-journal"; mode = "u=rwx,g=rx+s,o=rx"; }] - ++ inputs.lib.optional (inputs.config.nixos.services.kvm != null) - { directory = "/var/lib/libvirt/images"; mode = "0711"; }; + [{ directory = "/var/log/journal"; user = "root"; group = "systemd-journal"; mode = "u=rwx,g=rx+s,o=rx"; }]; }; } # 挂载 /home/user