parent
d49405a5ab
commit
2961b83d08
@ -0,0 +1,49 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let cfg = config.services.cdemu; |
||||
in { |
||||
|
||||
options = { |
||||
services.cdemu = { |
||||
enable = mkOption { |
||||
default = false; |
||||
description = "Whether to enable cdemu for users of appropriate group (default cdrom)"; |
||||
}; |
||||
group = mkOption { |
||||
default = "cdrom"; |
||||
description = "Required group for users of cdemu"; |
||||
}; |
||||
gui = mkOption { |
||||
default = true; |
||||
description = "Whether to install cdemu GUI (gCDEmu)"; |
||||
}; |
||||
image-analyzer = mkOption { |
||||
default = true; |
||||
description = "Whether to install image analyzer"; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
config = mkIf cfg.enable { |
||||
|
||||
boot = { |
||||
extraModulePackages = [ pkgs.linuxPackages.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; |
||||
}; |
||||
|
||||
} |
@ -0,0 +1,15 @@ |
||||
{ callPackage, gtk3, libxml2, gnuplot, makeWrapper, stdenv }: |
||||
let pkg = import ./base.nix { |
||||
version = "3.0.0"; |
||||
pkgName = "image-analyzer"; |
||||
pkgSha256 = "1rb3f7c08dxc02zrwrkfvq7qlzlmm0kd2ah1fhxj6ajiyshi8q4v"; |
||||
}; |
||||
in callPackage pkg { |
||||
buildInputs = [ gtk3 libxml2 gnuplot (callPackage ./libmirage.nix {}) makeWrapper ]; |
||||
drvParams = { |
||||
postFixup = '' |
||||
wrapProgram $out/bin/image-analyzer \ |
||||
--set XDG_DATA_DIRS "$out/share:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS" |
||||
''; |
||||
}; |
||||
} |
@ -0,0 +1,37 @@ |
||||
{ pkgName, version, pkgSha256 }: |
||||
{ stdenv, fetchurl, cmake, pkgconfig, buildInputs, drvParams ? {} }: |
||||
let name = "${pkgName}-${version}"; |
||||
in stdenv.mkDerivation ({ |
||||
inherit name buildInputs; |
||||
src = fetchurl { |
||||
url = "http://downloads.sourceforge.net/cdemu/${name}.tar.bz2"; |
||||
sha256 = pkgSha256; |
||||
}; |
||||
nativeBuildInputs = [ pkgconfig cmake ]; |
||||
setSourceRoot = '' |
||||
mkdir build |
||||
cd build |
||||
sourceRoot="`pwd`" |
||||
''; |
||||
configurePhase = '' |
||||
cmake ../${name} -DCMAKE_INSTALL_PREFIX=$out -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_RPATH=ON |
||||
''; |
||||
meta = { |
||||
description = "CDemu is a software suite designed to emulate an optical drive and disc (including CD-ROMs and DVD-ROMs) on the Linux operating system."; |
||||
longDescription = '' |
||||
CDEmu consists of: |
||||
|
||||
- a kernel module implementing a virtual drive-controller |
||||
- libmirage which is a software library for interpreting optical disc images |
||||
- a daemon which emulates the functionality of an optical drive+disc |
||||
- textmode and GTK clients for controlling the emulator |
||||
- an image analyzer to view the structure of image files |
||||
|
||||
Optical media emulated by CDemu can be mounted within Linux. Automounting is also allowed. |
||||
''; |
||||
homepage = "http://cdemu.sourceforge.net/"; |
||||
license = stdenv.lib.licenses.gpl2Plus; |
||||
platforms = stdenv.lib.platforms.linux; |
||||
maintainers = [ "Rok Mandeljc <mrok AT users DOT sourceforge DOT net>" ]; |
||||
}; |
||||
} // drvParams) |
@ -0,0 +1,15 @@ |
||||
{ callPackage, python, dbus_python, intltool, makeWrapper }: |
||||
let pkg = import ./base.nix { |
||||
version = "3.0.0"; |
||||
pkgName = "cdemu-client"; |
||||
pkgSha256 = "125f6j7c52a0c7smbx323vdpwhx24yl0vglkiyfcbm92fjji14rm"; |
||||
}; |
||||
in callPackage pkg { |
||||
buildInputs = [ python dbus_python intltool makeWrapper ]; |
||||
drvParams = { |
||||
postFixup = '' |
||||
wrapProgram $out/bin/cdemu \ |
||||
--set PYTHONPATH "$PYTHONPATH" |
||||
''; |
||||
}; |
||||
} |
@ -0,0 +1,9 @@ |
||||
{ callPackage, glib, libao }: |
||||
let pkg = import ./base.nix { |
||||
version = "3.0.2"; |
||||
pkgName = "cdemu-daemon"; |
||||
pkgSha256 = "01jg9b1nkqrbh6binfcbyraz83s9yjavgwi3y4w1bmqg5qlhv6lc"; |
||||
}; |
||||
in callPackage pkg { |
||||
buildInputs = [ glib libao (callPackage ./libmirage.nix {}) ]; |
||||
} |
@ -0,0 +1,18 @@ |
||||
{ callPackage, python, pygobject3, gtk3, glib, libnotify, intltool, makeWrapper, gobjectIntrospection }: |
||||
let pkg = import ./base.nix { |
||||
version = "3.0.0"; |
||||
pkgName = "gcdemu"; |
||||
pkgSha256 = "1m5ab325r586v2y2d93a817phn6wck67y5mfkf948mph40ks0mqk"; |
||||
}; |
||||
in callPackage pkg { |
||||
buildInputs = [ python pygobject3 gtk3 glib libnotify intltool makeWrapper ]; |
||||
drvParams = { |
||||
postFixup = '' |
||||
wrapProgram $out/bin/gcdemu \ |
||||
--set PYTHONPATH "$PYTHONPATH" \ |
||||
--set GI_TYPELIB_PATH "$GI_TYPELIB_PATH" \ |
||||
--set XDG_DATA_DIRS "$out/share:$XDG_DATA_DIRS" |
||||
''; |
||||
# TODO AppIndicator |
||||
}; |
||||
} |
@ -0,0 +1,9 @@ |
||||
{ callPackage, glib, libsndfile, zlib, bzip2, lzma, libsamplerate }: |
||||
let pkg = import ./base.nix { |
||||
version = "3.0.3"; |
||||
pkgName = "libmirage"; |
||||
pkgSha256 = "03idg94h5qhmnnc8g9dw8yqf14yv2paph5n77dfmg925f3z70nyn"; |
||||
}; |
||||
in callPackage pkg { |
||||
buildInputs = [ glib libsndfile zlib bzip2 lzma libsamplerate ]; |
||||
} |
@ -0,0 +1,12 @@ |
||||
{ stdenv, fetchurl, kernel }: |
||||
let version = "20140928"; |
||||
in stdenv.mkDerivation { |
||||
name = "vhba-${version}"; |
||||
src = fetchurl { |
||||
url = "http://downloads.sourceforge.net/cdemu/vhba-module-${version}.tar.bz2"; |
||||
sha256 = "18jmpg2kpx87f32b8aprr1pxla9dlhf901rkj1sp3ammf94nxxa5"; |
||||
}; |
||||
preBuild = '' |
||||
makeFlags="KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build INSTALL_MOD_PATH=$out"; |
||||
''; |
||||
} |
Loading…
Reference in new issue