{ lib, stdenv, fetchFromGitHub, pkgs, ... }: let meta = { maintainers = with lib.maintainers; [ peterhoeg ]; platforms = lib.platforms.linux; }; dep = { pname, version, hash, rev ? "v${version}", buildInputs ? [ ], }: stdenv.mkDerivation { inherit pname version; src = fetchFromGitHub { owner = "c-util"; repo = pname; inherit hash rev; }; nativeBuildInputs = with pkgs; [ meson ninja pkg-config ]; inherit buildInputs; meta = meta // { description = "The C-Util Project is a collection of utility libraries for the C11 language."; homepage = "https://c-util.github.io/"; license = [ lib.licenses.asl20 lib.licenses.lgpl21Plus ]; }; }; # These libraries are not used outside of dbus-broker. # # If that changes, we can always break them out, but they are essentially # part of the dbus-broker project, just in separate repositories. c-dvar = dep { pname = "c-dvar"; version = "1.1.0"; hash = "sha256-p/C+BktclVseCtZJ1Q/YK03vP2ClnYRLB1Vmj2OQJD4="; buildInputs = [ c-stdaux c-utf8 ]; }; c-ini = dep { pname = "c-ini"; version = "1.1.0"; hash = "sha256-wa7aNl20hkb/83c4AkQ/0YFDdmBs4XGW+WLUtBWIC98="; buildInputs = [ c-list c-rbtree c-stdaux c-utf8 ]; }; c-list = dep { pname = "c-list"; version = "3.1.0"; hash = "sha256-fp3EAqcbFCLaT2EstLSzwP2X13pi2EFpFAullhoCtpw="; }; c-rbtree = dep { pname = "c-rbtree"; version = "3.2.0"; hash = "sha256-dTMeawhPLRtHvMXfXCrT5iCdoh7qS3v+raC6c+t+X38="; buildInputs = [ c-stdaux ]; }; c-shquote = dep { pname = "c-shquote"; version = "1.1.0"; hash = "sha256-z6hpQ/kpCYAngMNfxLkfsxaGtvP4yBMigX1lGpIIzMQ="; buildInputs = [ c-stdaux ]; }; c-stdaux = dep { pname = "c-stdaux"; version = "1.5.0"; hash = "sha256-MsnuEyVCmOIr/q6I1qyPsNXp48jxIEcXoYLHbOAZtW0="; }; c-utf8 = dep { pname = "c-utf8"; version = "1.1.0"; hash = "sha256-9vBYylbt1ypJwIAQJd/oiAueh+4VYcn/KzofQuhUea0="; buildInputs = [ c-stdaux ]; }; in stdenv.mkDerivation (finalAttrs: { pname = "dbus-broker"; version = "36"; src = fetchFromGitHub { owner = "bus1"; repo = "dbus-broker"; rev = "v${finalAttrs.version}"; hash = "sha256-5dAMKjybqrHG57vArbtWEPR/svSj2ION75JrjvnnpVM="; }; nativeBuildInputs = with pkgs; [ docutils meson ninja pkg-config ]; buildInputs = [ c-dvar c-ini c-list c-rbtree c-shquote c-stdaux c-utf8 pkgs.dbus pkgs.linuxHeaders pkgs.systemd ]; mesonFlags = [ # while we technically support 4.9 and 4.14, the NixOS module will throw an # error when using a kernel that's too old "--prefix=/" "--bindir=/usr/bin" "-D=linux-4-17=true" "-D=system-console-users=gdm,sddm,lightdm" ]; PKG_CONFIG_SYSTEMD_SYSTEMDSYSTEMUNITDIR = "/usr/lib/systemd/system"; PKG_CONFIG_SYSTEMD_SYSTEMDUSERUNITDIR = "/usr/lib/systemd/user"; PKG_CONFIG_SYSTEMD_CATALOGDIR = "/usr/lib/systemd/catalog"; preInstall = '' export DESTDIR=${placeholder "out"} ''; postInstall = '' mkdir -p $out/usr/share cp -Pr ${pkgs.dbus.out}/share/* $out/usr/share/ cp ${pkgs.dbus.out}/etc/systemd/system/dbus.socket $out/usr/lib/systemd/system/ find $out/usr/share/ -type d -exec chmod 755 {} \; sed -i 's#/nix/store.*/share#/usr/share#' $out/usr/share/xml/dbus-1/catalog.xml sed -i 's#/nix/store.*/libexec#/usr/bin#' $out/usr/share/dbus-1/system.conf ''; doCheck = false; meta = meta // { description = "Linux D-Bus Message Broker"; homepage = "https://github.com/bus1/dbus-broker/wiki"; license = lib.licenses.asl20; }; })