shorkie-flake/base/virtualisation/kvmfr-options.nix

52 lines
No EOL
1.3 KiB
Nix

# https://gist.github.com/j-brn/716a03822d256bc5bf5d77b951c7915c
{ lib, pkgs, config, ... }:
with lib;
let
cfg = config.virtualisation.kvmfr;
in
{
options.virtualisation.kvmfr = {
enable = mkEnableOption "Kvmfr";
shm = {
enable = mkEnableOption "shm";
size = mkOption {
type = types.int;
default = "128";
description = "Size of the shared memory device in megabytes.";
};
user = mkOption {
type = types.str;
default = "root";
description = "Owner of the shared memory device.";
};
group = mkOption {
type = types.str;
default = "root";
description = "Group of the shared memory device.";
};
mode = mkOption {
type = types.str;
default = "0600";
description = "Mode of the shared memory device.";
};
};
};
config = mkIf cfg.enable {
boot.extraModulePackages = with config.boot.kernelPackages; [
(pkgs.callPackage ./kvmfr-git-package.nix { inherit kernel;})
];
boot.initrd.kernelModules = [ "kvmfr" ];
boot.kernelParams = optionals cfg.shm.enable [
"kvmfr.static_size_mb=${toString cfg.shm.size}"
];
services.udev.extraRules = optionals cfg.shm.enable ''
SUBSYSTEM=="kvmfr", OWNER="${cfg.shm.user}", GROUP="${cfg.shm.group}", MODE="${cfg.shm.mode}"
'';
};
}