Trying to make a nix derivation pure

Hello all,

I have a nix derivation for a particularly tricky-to-run piece of software (xilinx vivado). It uses the buildFHSUserEnv function to build. It works, but only when I run it impurely (ie, without the --pure argument). When run as --pure, it throws a fairly undescriptive error which I strongly suspect is to do with it missing some C packages (possibly glibc), or perhaps missing 32-bit binaries for the same.

The uptight part of myself would really like to get this working as a pure derivation. My attempts to do so so far have involved looking at which packages I have on my local machine (a very long list), which packages already exist as targetPkgs in buildFHSUserEnv (a medium-sized list), and then experimentally adding local packages into targetPkgs and retrying with --pure. As you might imagine, it doesn’t feel like a very efficient way to tackle the problem.

My questions are:

  • Is it nuts to try to make this run --pure anyway? Should I just learn to relax a little?
  • If the answer to the above is ‘no’, is there a better way to proceed than the way I’m going about it? In a perfect world the target software (vivado) would give a better error message as to what it depends on, but in this flawed universe we have to live in, it doesn’t, and neither is the code in the public domain.

Thanks for any help!

1 Like