{
  pkgs,
  lib,
  stdenv,
  fetchurl,
}:

with lib;

let

  sononymPkg = stdenv.mkDerivation rec {

    name = "sononym-crawler-${version}";
    version = "1.1.1";

    src = fetchurl {
      url = "https://www.sononym.net/download/sononym-${version}.tar.bz2";
      sha256 = "0snp624yg68k2g9myjpb7pam9s32ilbn2ixi5zfi0ya9ikdrk504";
    };

    installPhase = ''
      mkdir -p $out/usr/share/sononym-crawler/
      cp -r resources/*  $out/usr/share/sononym-crawler

      mkdir -p $out/bin
      ln -s $out/usr/share/sononym-crawler/Crawler $out/bin/sononym-crawler
    '';

    meta = {
      description = "The Crawler of Sononym";
      homepage = "http://www.sononym.net/";
      license = licenses.unfree;
      maintainers = [ ];
      platforms = [ "x86_64-linux" ];
    };

  };

in
(pkgs.buildFHSUserEnv {

  # name it
  # -------
  name = "sononym-crawler";

  # targetSystem packages
  # ---------------------
  # these are packages which are compiled for the target
  # system architecture
  targetPkgs =
    pkgs: with pkgs; [

      sononymPkg

      # Reihenfolge ist anscheinend wichtig !

      # todo : das hier aufräumen
      eudev
      expat
      freetype
      fuse
      gdk_pixbuf
      glib
      gtk2-x11
      mesa_glu
      libresample
      libtool
      autoconf
      automake
      gnum4
      pkgconfig
      gnumake
      jack2Full
      gcc49
      nodejs-10_x
      mpg123
      libcxx
      glibc
      binutils
      python27
      unzip

      alsaLib.out
      atk.out
      cairo.out
      cups.lib
      dbus_daemon.lib
      fontconfig.lib
      gcc-unwrapped.lib
      gdk_pixbuf.out
      glib.out
      gnome2.GConf.out
      gnome2.pango.out
      gnome3.gtk.out
      nspr.out
      nssTools.out
      wget
      xlibs.libX11.out
      xlibs.libXScrnSaver.out
      xlibs.libXcomposite.out
      xlibs.libXcursor.out
      xlibs.libXdamage.out
      xlibs.libXfixes.out
      xlibs.libXi.out
      xlibs.libXrandr.out
      xlibs.libXrender.out
      xlibs.libXtst.out
      xlibs.libxcb.out
      xorg_sys_opengl.out

    ];

  # multilib packages
  # -----------------
  # these are packages compiled for multiple system
  # architectures (32bit/64bit)
  multiPkgs = pkgs: with pkgs; [ ];

  # command
  # -------
  # the script which should be run right after starting this enviornment
  runScript = "/bin/sononym-crawler";

  # environment variables
  # ---------------------
  profile = ''
    export TERM="xterm"
    export CMAKE_INCLUDE_PATH="/usr/include"
    export CMAKE_LIBRARY_PATH="/usr/lib/"
    export MAKEFLAGS=-j$(($(grep -c ^processor /proc/cpuinfo) - 0))
    export NPM_CONFIG_PREFIX=~/.npm-global
  '';

})