nixos: add virtualization module
This commit is contained in:
parent
e490c6be8e
commit
44d58268ac
6 changed files with 85 additions and 1 deletions
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./virtualization.nix
|
||||
./bat.nix
|
||||
./btop.nix
|
||||
./git.nix
|
||||
|
|
|
|||
19
modules/home/console/tools/virtualization.nix
Normal file
19
modules/home/console/tools/virtualization.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
lib,
|
||||
osConfig,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) elem mkIf;
|
||||
inherit (osConfig.ooknet.workstation) profiles;
|
||||
in {
|
||||
config = mkIf (elem "virtualization" profiles) {
|
||||
# setup connections for virt-manager
|
||||
# see <https://nixos.wiki/wiki/Virt-manager>
|
||||
dconf.settings = {
|
||||
"org/virt-manager/virt-manager/connections" = {
|
||||
autoconnect = ["qemu:///system"];
|
||||
uris = ["qemu:///system"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -14,6 +14,7 @@ in {
|
|||
./programs
|
||||
./gaming
|
||||
./environment
|
||||
./virtualization
|
||||
];
|
||||
|
||||
home-manager.users.${admin.name} = mkIf admin.homeManager {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ in {
|
|||
default = null;
|
||||
};
|
||||
profiles = mkOption {
|
||||
type = listOf (enum ["gaming" "communication" "productivity" "creative" "media"]);
|
||||
type = listOf (enum ["gaming" "communication" "productivity" "creative" "media" "virtualization"]);
|
||||
default = [];
|
||||
};
|
||||
environment = mkOption {
|
||||
|
|
|
|||
5
modules/nixos/workstation/virtualization/default.nix
Normal file
5
modules/nixos/workstation/virtualization/default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./virt-manager.nix
|
||||
];
|
||||
}
|
||||
58
modules/nixos/workstation/virtualization/virt-manager.nix
Normal file
58
modules/nixos/workstation/virtualization/virt-manager.nix
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
inherit (builtins) attrValues;
|
||||
inherit (lib) mkIf elem;
|
||||
inherit (config.ooknet.workstation) profiles;
|
||||
in {
|
||||
config = mkIf (elem "virtualization" profiles) {
|
||||
environment.systemPackages = attrValues {
|
||||
inherit
|
||||
(pkgs)
|
||||
virt-viewer
|
||||
qemu_kvm
|
||||
qemu
|
||||
spice
|
||||
spice-protocol
|
||||
# for windows virtualization
|
||||
|
||||
win-virtio
|
||||
win-spice
|
||||
;
|
||||
# virt-manager needs this
|
||||
inherit (pkgs.gnome) adwaita-icon-theme;
|
||||
};
|
||||
# sets up dconf settins for qemu and add virt-manager to systemPackages
|
||||
programs.virt-manager = {
|
||||
enable = true;
|
||||
package = pkgs.virt-manager;
|
||||
};
|
||||
virtualisation = {
|
||||
# allow unprivileged users to pass usb devices to vm
|
||||
spiceUSBRedirection.enable = true;
|
||||
|
||||
# our virtualization daemon
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
|
||||
qemu = {
|
||||
# by default this uses pkgs.qemu but since i do not need to emulate aarch64 currently i use
|
||||
# qemu_kvm which only supports the hosts system architecture.
|
||||
package = pkgs.qemu_kvm;
|
||||
|
||||
# for emulating TPM
|
||||
swtpm.enable = true;
|
||||
|
||||
# UEFI secure boot
|
||||
ovmf = {
|
||||
enable = true;
|
||||
packages = [pkgs.OVMFFull.fd];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue