diff options
Diffstat (limited to 'nixpkgs/nixos/modules/programs/cdemu.nix')
-rw-r--r-- | nixpkgs/nixos/modules/programs/cdemu.nix | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/programs/cdemu.nix b/nixpkgs/nixos/modules/programs/cdemu.nix new file mode 100644 index 000000000000..6a0185d362c5 --- /dev/null +++ b/nixpkgs/nixos/modules/programs/cdemu.nix @@ -0,0 +1,58 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.programs.cdemu; +in { + + options = { + programs.cdemu = { + enable = mkOption { + default = false; + description = '' + <command>cdemu</command> for members of + <option>programs.cdemu.group</option>. + ''; + }; + group = mkOption { + default = "cdrom"; + description = '' + Group that users must be in to use <command>cdemu</command>. + ''; + }; + gui = mkOption { + default = true; + description = '' + Whether to install the <command>cdemu</command> GUI (gCDEmu). + ''; + }; + image-analyzer = mkOption { + 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; + }; + +} |