{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.cdemu; in { options = { programs.cdemu = { enable = mkOption { type = types.bool; default = false; description = '' cdemu for members of . ''; }; group = mkOption { type = types.str; default = "cdrom"; description = '' Group that users must be in to use cdemu. ''; }; gui = mkOption { type = types.bool; default = true; description = '' Whether to install the cdemu GUI (gCDEmu). ''; }; image-analyzer = mkOption { type = types.bool; default = true; description = '' Whether to install the image analyzer. ''; }; }; }; config = mkIf cfg.enable { boot = { extraModulePackages = [ config.boot.kernelPackages.vhba ]; kernelModules = [ "vhba" ]; }; services = { udev.extraRules = '' KERNEL=="vhba_ctl", MODE="0660", OWNER="root", GROUP="${cfg.group}" ''; dbus.packages = [ pkgs.cdemu-daemon ]; }; environment.systemPackages = [ pkgs.cdemu-daemon pkgs.cdemu-client ] ++ optional cfg.gui pkgs.gcdemu ++ optional cfg.image-analyzer pkgs.image-analyzer; }; }