[Nix-dev] Handle runtime dependencies

Nicolas Pierron nicolas.b.pierron at gmail.com
Sun Mar 16 22:42:31 CET 2008


Hi,

I have found a way to handle runtime dependencies which offer the
opportunity to not recompile a program if its runtime dependencies
have changed.The following code handle a new attribute
(runtimeDependencies) inside mkDerivation. This attribute contains a
derivation which has as source (src) the "clean" installed version.

  addRuntimeDependenciesToDerivation = stdenv: stdenv //
    { mkDerivation = args:
        if args ? runtimeDependencies then
          stdenv.mkDerivation ({
            meta = args.meta;
            name = args.name;
            src = stdenv.mkDerivation (removeAttrs args
["runtimeDependencies"]);
          } // args.runtimeDependencies)
        else
          stdenv.mkDerivation args
        ;
    };

It is use as follow:

{ ... }:

stdenv.mkDerivation rec {
  name = "...";
  src = fetchurl { ... };

  runtimeDependencies = {
     buildInputs = [ ... ];

     buildCommand = '' ... '';
  };

  meta = { ... };
}

Should I commit this?

-- 
Nicolas Pierron



More information about the nix-dev mailing list