cdemu: fix service setup

closes https://github.com/NixOS/nixpkgs/issues/154613

Changed files
+22 -1
nixos
modules
programs
pkgs
applications
emulators
cdemu
+13
nixos/modules/programs/cdemu.nix
···
dbus.packages = [ pkgs.cdemu-daemon ];
};
environment.systemPackages =
[ pkgs.cdemu-daemon pkgs.cdemu-client ]
++ optional cfg.gui pkgs.gcdemu
···
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
+9 -1
pkgs/applications/emulators/cdemu/daemon.nix
···
-
{ callPackage, glib, libao, intltool, libmirage }:
let pkg = import ./base.nix {
version = "3.2.5";
pname = "cdemu-daemon";
···
in callPackage pkg {
nativeBuildInputs = [ intltool ];
buildInputs = [ glib libao libmirage ];
}
···
+
{ callPackage, glib, libao, intltool, libmirage, coreutils }:
let pkg = import ./base.nix {
version = "3.2.5";
pname = "cdemu-daemon";
···
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
+
'';
}