Change:
System: 17.03beta320. (Gorilla) Nix version: nix-env (Nix) 1.11.7 Nixpkgs version: "17.03beta320." ; also occurs on master.
You need to install SDL-1.2: After installing SDL, you may need to recompile pygame.
This isn't how Nix works — libraries aren't installed.
Try the following steps - they worked for me on a fresh VirtualBox. Step 1: Add the following lines (taken from ) to : Step 2: Install the environment: Step 3: Load the environment: Step 4: Download a sample PDF: Step 5: Open the PDF in Impressive:
Yep, that works, thanks for the input! However, this should not be the only way it works — particularly because myEnvFun is deprecated in favour of nix-shell. I'll see if I can fix the packaging. EDIT: works. So it'll be because ctypes uses gcc to discover library paths, which is a little insane IMHO but hey. I'll add a step in the patchPhase which inserts the full path to the SDL library rather than using ctypes's discovery.

Discussion:
<del> { fetchurl, stdenv, python2Packages, makeWrapper, lib , xpdf, mesa, SDL, freeglut }: </del> <ins> { fetchurl, stdenv, python2, makeWrapper, lib , mesa, SDL, freeglut, ghostscript, pdftk, dejavu_fonts }: </ins> let <del> inherit (python2Packages) python pyopengl pygame setuptools pillow; </del> version = "0.11.1"; <ins> pythonEnv = python2.withPackages (ps: with ps; [pyopengl pygame pillow]); </ins> in stdenv.mkDerivation { # This project was formerly known as KeyJNote. <del> # See http://keyj.s2000.ws/?p=77 for details. </del> <ins> # See http://keyj.emphy.de/apple-lawsuit/ for details. </ins> name = "impressive-${version}";

sha256 = "0b3rmy6acp2vmf5nill3aknxvr9a5aawk1vnphkah61anxp62gsr"; }; <del> # Note: We need to have `setuptools' in the path to be able to use # PyOpenGL. buildInputs = [ makeWrapper xpdf pillow pyopengl pygame ]; </del> <ins> buildInputs = [ makeWrapper pythonEnv ]; </ins> configurePhase = '' <ins> # Let's fail at build time if the library we're substituting in doesn't # exist/isn't marked as executable test -x ${SDL}/lib/libSDL.so </ins> sed -i "impressive.py"  <del> -e 's|^#!/usr/bin/env.*$|#!${python}/bin/python|g' </del> <ins> -e '/^__website__/a SDL_LIBRARY = "${SDL}/lib/libSDL.so"'  -e 's/sdl = CDLL.*/sdl = CDLL(SDL_LIBRARY)/'  -e 's^FontPath =.*/usr/.*$^FontPath = ["${dejavu_fonts}/share/fonts", ""]^' </ins> ''; installPhase = '' <del> mkdir -p "$out/bin" "$out/share/doc/impressive" </del> <ins> mkdir -p "$out/bin" "$out/share/doc/impressive" "$out/share/man/man1" </ins> mv impressive.py "$out/bin/impressive" <del> mv * "$out/share/doc/impressive" </del> <ins> mv impressive.1 "$out/share/man/man1" mv changelog.txt impressive.html license.txt "$out/share/doc/impressive" </ins> <del> # XXX: We have to reiterate PyOpenGL's dependencies here. # # `setuptools' must be in the Python path as it's used by # PyOpenGL. # # We set $LIBRARY_PATH (no `LD_'!) so that ctypes can find # `libGL.so', which it does by running `gcc', which in turn # honors $LIBRARY_PATH.  See # http://python.net/crew/theller/ctypes/reference.html#id1 . </del> wrapProgram "$out/bin/impressive"  <del> --prefix PATH ":" "${xpdf}/bin"  --prefix PYTHONPATH ":"  ${lib.concatStringsSep ":" (map (path: path + "/lib/${python.libPrefix}/site-packages") [ pillow pyopengl pygame setuptools ])}  --prefix LIBRARY_PATH ":" "${lib.makeLibraryPath [ mesa freeglut SDL ]}" </del> <ins> --prefix PATH ":" "${ghostscript}/bin:${pdftk}/bin" </ins> ''; meta = {

license = stdenv.lib.licenses.gpl2; <del> maintainers = [ ]; </del> <ins> maintainers = with lib.maintainers; [ lheckemann ]; </ins> platforms = stdenv.lib.platforms.mesaPlatforms; }; }