diff --git a/pkgs/development/compilers/nim/default.nix b/pkgs/development/compilers/nim/default.nix index eed702f8512..0cebd40afdb 100644 --- a/pkgs/development/compilers/nim/default.nix +++ b/pkgs/development/compilers/nim/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchurl, makeWrapper, gcc }: +{ stdenv, lib, fetchurl, makeWrapper, nodejs, openssl, pcre, readline, sqlite }: stdenv.mkDerivation rec { name = "nim-${version}"; @@ -9,24 +9,52 @@ stdenv.mkDerivation rec { sha256 = "0rsibhkc5n548bn9yyb9ycrdgaph5kq84sfxc9gabjs7pqirh6cy"; }; - buildInputs = [ makeWrapper ]; + doCheck = true; - buildPhase = "sh build.sh"; + enableParallelBuilding = true; - installPhase = - '' - install -Dt "$out/bin" bin/nim - substituteInPlace install.sh --replace '$1/nim' "$out" - sh install.sh $out - wrapProgram $out/bin/nim \ - --suffix PATH : ${lib.makeBinPath [ gcc ]} - ''; + NIX_LDFLAGS = [ + "-lcrypto" + "-lpcre" + "-lreadline" + "-lsqlite3" + ]; - meta = with stdenv.lib; - { description = "Statically typed, imperative programming language"; - homepage = http://nim-lang.org/; - license = licenses.mit; - maintainers = with maintainers; [ ehmry peterhoeg ]; - platforms = platforms.linux ++ platforms.darwin; # arbitrary - }; + # 1. nodejs is only needed for tests + # 2. we could create a separate derivation for the "written in c" version of nim + # used for bootstrapping, but koch insists on moving the nim compiler around + # as part of building it, so it cannot be read-only + + buildInputs = [ + makeWrapper nodejs + openssl pcre readline sqlite + ]; + + buildPhase = '' + sh build.sh + ./bin/nim c koch + ./koch boot -d:release \ + -d:useGnuReadline \ + ${lib.optionals (stdenv.isDarwin || stdenv.isLinux) "-d:nativeStacktrace"} + ./koch tools -d:release + ''; + + installPhase = '' + install -Dt $out/bin bin/* koch + ./koch install $out + mv $out/nim/bin/* $out/bin/ && rmdir $out/nim/bin + mv $out/nim/* $out/ && rmdir $out/nim + wrapProgram $out/bin/nim \ + --suffix PATH : ${lib.makeBinPath [ stdenv.cc ]} + ''; + + checkPhase = "./koch tests"; + + meta = with stdenv.lib; { + description = "Statically typed, imperative programming language"; + homepage = http://nim-lang.org/; + license = licenses.mit; + maintainers = with maintainers; [ ehmry peterhoeg ]; + platforms = with platforms; linux ++ darwin; # arbitrary + }; } diff --git a/pkgs/development/tools/nimble/default.nix b/pkgs/development/tools/nimble/default.nix deleted file mode 100644 index d3248d6219e..00000000000 --- a/pkgs/development/tools/nimble/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ stdenv, fetchFromGitHub, nim, openssl }: - -stdenv.mkDerivation rec { - name = "nimble-${version}"; - - version = "0.7.10"; - - src = fetchFromGitHub { - owner = "nim-lang"; - repo = "nimble"; - rev = "v${version}"; - sha256 = "1bcv8chir73nn6x7q8n3sw2scf3m0x2w9gkkzx162ryivza1nm1r"; - }; - - buildInputs = [ nim openssl ]; - - patchPhase = '' - substituteInPlace src/nimble.nim.cfg --replace "./vendor/nim" "${nim}/share" - echo "--clib:crypto" >> src/nimble.nim.cfg - ''; - - buildPhase = '' - cd src && nim c -d:release nimble - ''; - - installPhase = '' - mkdir -p $out/bin - cp nimble $out/bin - ''; - - dontStrip = true; - - meta = with stdenv.lib; { - description = "Package manager for the Nim programming language"; - homepage = https://github.com/nim-lang/nimble; - license = licenses.bsd2; - maintainers = with maintainers; [ kamilchm ]; - platforms = platforms.linux ++ platforms.darwin; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e0f8be8f8d2..ef350dfef0c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5279,7 +5279,6 @@ in mozart = mozart-binary; nim = callPackage ../development/compilers/nim { }; - nimble = callPackage ../development/tools/nimble { }; nrpl = callPackage ../development/tools/nrpl { }; neko = callPackage ../development/compilers/neko { };