{ pkgs ? import /home/steveej/src/github/NixOS/nixpkgs {}, name ? "generic", version, extraBuildInputs ? [] }: let goPackages = builtins.getAttr "go${version}Packages" pkgs; goBuildInputs = { goPackages }: [ goPackages.go goPackages.tools goPackages.tools.bin goPackages.gocode goPackages.gocode.bin goPackages.godef goPackages.godef.bin goPackages.godep goPackages.godep.bin goPackages.gox.bin goPackages.ginkgo goPackages.ginkgo.bin goPackages.gomega ]; goShellHook = { goPackages, name }: '' goname=${goPackages.go.version}_$name export GOROOT=${goPackages.go}/share/go export GOPATH="$HOME/.gopath_$goname" export PATH="$HOME/.gopath_$goname/bin:$PATH" unset name ''; in pkgs.stdenv.mkDerivation { inherit name; buildInputs = extraBuildInputs ++ (goBuildInputs){ inherit goPackages; }; shellHook = (goShellHook) { inherit name; inherit goPackages; }; }