Go to file
aszlig 1cba74dfc1
setup-hooks: Add autoPatchelfHook
I originally wrote this for packaging proprietary games in Vuizvui[1]
but I thought it would be generally useful as we have a fair amount of
proprietary software lurking around in nixpkgs, which are a bit tedious
to maintain, especially when the library dependencies change after an
update.

So this setup hook searches for all ELF executables and libraries in the
resulting output paths after install phase and uses patchelf to set the
RPATH and interpreter according to what dependencies are available
inside the builder.

For example consider something like this:

stdenv.mkDerivation {
  ...
  nativeBuildInputs = [ autoPatchelfHook ];
  buildInputs = [ mesa zlib ];
  ...
}

Whenever for example an executable requires mesa or zlib, the RPATH will
automatically be set to the lib dir of the corresponding dependency.

If the library dependency is required at runtime, an attribute called
runtimeDependencies can be used to list dependencies that are added to
all executables that are discovered unconditionally.

Beside this, it also makes initial packaging of proprietary software
easier, because one no longer has to manually figure out the
dependencies in the first place.

[1]: https://github.com/openlab-aux/vuizvui

Signed-off-by: aszlig <aszlig@nix.build>
Closes: #34506
2018-02-10 00:27:24 +05:30
.github CODEOWNERS: Make @orivej a {cc,bintools}-wrapper codeowner 2018-01-19 16:18:27 -05:00
doc setup-hooks: Add autoPatchelfHook 2018-02-10 00:27:24 +05:30
lib nixos/tests: add predictable-interface-names.nix (#34305) 2018-02-09 18:40:39 +00:00
maintainers/scripts debian-patches.sh: patch-tracker is long-since dead, fix to use sources? 2018-01-17 13:17:45 -06:00
nixos Merge pull request #33700 from roberth/nixos-externalpkgs 2018-02-09 18:47:48 +00:00
pkgs setup-hooks: Add autoPatchelfHook 2018-02-10 00:27:24 +05:30
.editorconfig
.gitignore
.version Impala makes packaging a life-long addiction 2017-08-30 23:13:56 +02:00
COPYING 2018 will be the year of NixOS 2018-01-04 17:59:52 -05:00
default.nix
README.md README: Use HTTPS for all hyperlinks 2017-11-22 19:51:40 +01:00

logo

Code Triagers Badge

Nixpkgs is a collection of packages for the Nix package manager. It is periodically built and tested by the Hydra build daemon as so-called channels. To get channel information via git, add nixpkgs-channels as a remote:

% git remote add channels git://github.com/NixOS/nixpkgs-channels.git

For stability and maximum binary package support, it is recommended to maintain custom changes on top of one of the channels, e.g. nixos-17.09 for the latest release and nixos-unstable for the latest successful build of master:

% git remote update channels
% git rebase channels/nixos-17.09

For pull-requests, please rebase onto nixpkgs master.

NixOS Linux distribution source code is located inside nixos/ folder.

Communication: