summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/programs/cdemu.nix13
-rw-r--r--pkgs/applications/emulators/cdemu/daemon.nix10
2 files changed, 22 insertions, 1 deletions
diff --git a/nixos/modules/programs/cdemu.nix b/nixos/modules/programs/cdemu.nix
index d43f009f2f9..7eba4d29d83 100644
--- a/nixos/modules/programs/cdemu.nix
+++ b/nixos/modules/programs/cdemu.nix
@@ -53,6 +53,19 @@ in {
       dbus.packages = [ pkgs.cdemu-daemon ];
     };
 
+    users.groups.${config.programs.cdemu.group} = {};
+
+    # Systemd User service
+    # manually adapted from example in source package:
+    # https://sourceforge.net/p/cdemu/code/ci/master/tree/cdemu-daemon/service-example/cdemu-daemon.service
+    systemd.user.services.cdemu-daemon.description = "CDEmu daemon";
+    systemd.user.services.cdemu-daemon.serviceConfig = {
+      Type = "dbus";
+      BusName = "net.sf.cdemu.CDEmuDaemon";
+      ExecStart = "${pkgs.cdemu-daemon}/bin/cdemu-daemon --config-file \"%h/.config/cdemu-daemon\"";
+      Restart = "no";
+    };
+
     environment.systemPackages =
       [ pkgs.cdemu-daemon pkgs.cdemu-client ]
       ++ optional cfg.gui pkgs.gcdemu
diff --git a/pkgs/applications/emulators/cdemu/daemon.nix b/pkgs/applications/emulators/cdemu/daemon.nix
index 5d376955ea6..359b2f26a57 100644
--- a/pkgs/applications/emulators/cdemu/daemon.nix
+++ b/pkgs/applications/emulators/cdemu/daemon.nix
@@ -1,4 +1,4 @@
-{ callPackage, glib, libao, intltool, libmirage }:
+{ callPackage, glib, libao, intltool, libmirage, coreutils }:
 let pkg = import ./base.nix {
   version = "3.2.5";
   pname = "cdemu-daemon";
@@ -7,4 +7,12 @@ let pkg = import ./base.nix {
 in callPackage pkg {
   nativeBuildInputs = [ intltool ];
   buildInputs = [ glib libao libmirage ];
+  drvParams.postInstall = ''
+    mkdir -p $out/share/dbus-1/services
+    cp -R ../$pname-$version/service-example $out/share/cdemu
+    substitute \
+      $out/share/cdemu/net.sf.cdemu.CDEmuDaemon.service \
+      $out/share/dbus-1/services/net.sf.cdemu.CDEmuDaemon.service \
+      --replace /bin/true ${coreutils}/bin/true
+  '';
 }