1{ lib
2, stdenv
3, fetchFromGitHub
4, meson
5, ninja
6, nixosTests
7}:
8let
9 libDir = if builtins.elem stdenv.system [ "x86_64-linux" "mips64-linux" "powerpc64le-linux" ]
10 then "/lib64"
11 else "/lib";
12in
13stdenv.mkDerivation rec {
14 pname = "nix-ld";
15 version = "1.1.0";
16
17 src = fetchFromGitHub {
18 owner = "mic92";
19 repo = "nix-ld";
20 rev = version;
21 sha256 = "sha256-dM9YPN+yq6sHmRhJQinYdAVXBkTgEtrVQcsd/mIIX0o=";
22 };
23
24 doCheck = true;
25
26 nativeBuildInputs = [ meson ninja ];
27
28 mesonFlags = [
29 "-Dnix-system=${stdenv.system}"
30 ];
31
32 hardeningDisable = [
33 "stackprotector"
34 ];
35
36 postInstall = ''
37 mkdir -p $out/nix-support
38
39 ldpath=${libDir}/$(basename $(< ${stdenv.cc}/nix-support/dynamic-linker))
40 echo "$ldpath" > $out/nix-support/ldpath
41 mkdir -p $out/lib/tmpfiles.d/
42 cat > $out/lib/tmpfiles.d/nix-ld.conf <<EOF
43 L+ $ldpath - - - - $out/libexec/nix-ld
44 EOF
45 '';
46
47 passthru.tests.nix-ld = nixosTests.nix-ld;
48
49 meta = with lib; {
50 description = "Run unpatched dynamic binaries on NixOS";
51 homepage = "https://github.com/Mic92/nix-ld";
52 license = licenses.mit;
53 maintainers = with maintainers; [ mic92 ];
54 platforms = platforms.linux;
55 };
56}