dotfiles/pkgs/mdr.nix
2022-04-13 17:10:46 +02:00

98 lines
3.5 KiB
Nix

(self: super: {
libmdr = self.callPackage ({stdenv, fetchFromGitHub, bluez}: stdenv.mkDerivation rec {
pname = "libmdr";
version = "0.5.1";
buildInputs = [ bluez ];
src = fetchFromGitHub {
owner = "AndreasOlofsson";
repo = pname;
rev = "v${version}";
sha256 = "1asXrEwv1Bk82sgtOhU+beo2p8B8VBTHw4FP6seIPag=";
};
enableParallelBuilding = true;
installPhase = ''
install -D libmdr.a $out/lib/libmdr.a
cp -r include $out
'';
}) {};
mdrd = self.callPackage ({stdenv, fetchFromGitHub, libmdr, pkg-config, glib, bluez}: stdenv.mkDerivation rec {
pname = "mdrd";
version = "0.3";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ libmdr glib bluez ];
makeFlags = "LIBMDR=${libmdr}/lib/libmdr.a --assume-old=${libmdr}/lib/libmdr.a";
src = fetchFromGitHub {
owner = "AndreasOlofsson";
repo = pname;
rev = "v${version}";
sha256 = "sha256-XAcHtOaG/na9zlPezBSH52J5gF6uhW99vP7TW+ShnzY=";
};
installPhase = ''
install -D mdrd $out/bin/mdrd
mkdir -p $out/share/dbus-1/system-services
cat > $_/org.mdr.service <<HERE
[D-Bus Service]
Name=org.mdr
Exec=$out/bin/mdrd
User=root
SystemdService=dbus-org.mdr.service
HERE
mkdir -p $out/share/dbus-1/system.d
cat > $_/org.mdr.conf <<HERE
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<!-- Only root can own the service -->
<policy user="root">
<allow own="org.mdr"/>
</policy>
<!-- Allow anyone to invoke methods on the interfaces -->
<policy context="default">
<allow send_destination="org.mdr"
send_interface="org.mdr"/>
<allow send_destination="org.mdr"
send_interface="org.mdr.NoiseCancelling"/>
<allow send_destination="org.mdr"
send_interface="org.mdr.PowerOff"/>
<allow send_destination="org.mdr"
send_interface="org.mdr.AmbientSoundMode"/>
<allow send_destination="org.mdr"
send_interface="org.mdr.Eq"/>
<allow send_destination="org.mdr"
send_interface="org.mdr.AutoPowerOff"/>
<allow send_destination="org.mdr"
send_interface="org.mdr.KeyFunctions"/>
<allow send_destination="org.mdr"
send_interface="org.mdr.Playback"/>
<allow send_destination="org.mdr"
send_interface="org.freedesktop.DBus.Introspectable"/>
<allow send_destination="org.mdr"
send_interface="org.freedesktop.DBus.Properties"/>
</policy>
</busconfig>
HERE
'';
enableParallelBuilding = true;
}) {};
mdr-manager = self.callPackage ({stdenv, fetchFromGitHub, pkg-config, glib, gtk3}: stdenv.mkDerivation rec {
pname = "mdr-manager";
version = "0.3";
nativeBuildInputs = [ pkg-config ];
buildInputs = [ glib gtk3 ];
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
#makeFlags = "LIBMDR=${libmdr}/lib/libmdr.a --assume-old=${libmdr}/lib/libmdr.a";
src = fetchFromGitHub {
owner = "AndreasOlofsson";
repo = pname;
rev = "v${version}";
sha256 = "sha256-ZWXhsGsbGDQlnkZLCbL9MPi5Y7wZIltVyOrkPWImu2c=";
};
installPhase = "install -D mdr-manager $out/bin/mdr-manager";
enableParallelBuilding = true;
}) {};
})