nixpkgs/pkgs/development/libraries/polkit/default.nix
2013-10-06 23:54:47 +02:00

70 lines
2 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ stdenv, fetchurl, pkgconfig, glib, expat, pam, intltool, spidermonkey
, gobjectIntrospection
, useSystemd ? stdenv.isLinux, systemd }:
let
system = "/var/run/current-system/sw";
foolVars = {
LOCALSTATE = "/var";
SYSCONF = "/etc";
LIB = "${system}/lib";
DATA = "${system}/share";
};
in
stdenv.mkDerivation rec {
name = "polkit-0.112";
src = fetchurl {
url = "http://www.freedesktop.org/software/polkit/releases/${name}.tar.gz";
sha256 = "1xkary7yirdcjdva950nqyhmsz48qhrdsr78zciahj27p8yg95fn";
};
buildInputs =
[ pkgconfig glib expat pam intltool spidermonkey gobjectIntrospection ]
++ stdenv.lib.optional useSystemd systemd;
preConfigure = ''
patchShebangs .
'' + stdenv.lib.optionalString useSystemd /* bogus chroot detection */ ''
sed '/libsystemd-login autoconfigured, but system does not appear to use systemd/s/.*/:/' -i configure
'';
# TODO: Distro/OS detection is impure
configureFlags = [
"--libexecdir=$(out)/libexec/polkit-1"
"--with-systemdsystemunitdir=$(out)/etc/systemd/system"
];
preBuild =
''
# libpolkit-agent-1.so should call the setuid wrapper on
# NixOS. Hard-coding the path is kinda ugly. Maybe we can just
# call through $PATH, but that might have security implications.
substituteInPlace src/polkitagent/polkitagentsession.c \
--replace PACKAGE_LIBEXEC_DIR '"/var/setuid-wrappers"'
'';
makeFlags =
''
INTROSPECTION_GIRDIR=$(out)/share/gir-1.0
INTROSPECTION_TYPELIBDIR=$(out)lib/girepository-1.0
'';
postInstall =
''
# Allow some files with paranoid permissions to be stripped in
# the fixup phase.
chmod a+rX -R $out
'';
meta = with stdenv.lib; {
homepage = http://www.freedesktop.org/wiki/Software/polkit;
description = "A toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes";
platforms = platforms.linux;
maintainers = [ maintainers.urkud ];
};
}