diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 585dc6fbb230..d04105bdf1f8 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -1787,6 +1787,11 @@ githubId = 301546; name = "Antoine Roy-Gobeil"; }; + anton-4 = { + name = "Anton"; + github = "Anton-4"; + githubId = 17049058; + }; anton-dessiatov = { email = "anton.dessiatov@gmail.com"; github = "anton-dessiatov"; @@ -3271,6 +3276,11 @@ githubId = 24254289; name = "Payas Relekar"; }; + bhansconnect = { + github = "bhansconnect"; + githubId = 8334696; + name = "Brendan Hansknecht"; + }; bhasherbel = { email = "nixos.maintainer@bhasher.com"; github = "BhasherBEL"; @@ -21982,6 +21992,11 @@ githubId = 47790121; name = "Ryan Burns"; }; + rtfeldman = { + github = "rtfeldman"; + githubId = 1094080; + name = "Richard Feldman"; + }; rtimush = { email = "rtimush@gmail.com"; github = "rtimush"; diff --git a/pkgs/by-name/ro/roc/package.nix b/pkgs/by-name/ro/roc/package.nix new file mode 100755 index 000000000000..f65a958d3032 --- /dev/null +++ b/pkgs/by-name/ro/roc/package.nix @@ -0,0 +1,113 @@ +{ + lib, + stdenv, + fetchFromGitHub, + libffi, + libxml2, + makeBinaryWrapper, + cmake, + glibc, + rustPlatform, + zig_0_13, + llvmPackages_18, + writableTmpDirAsHomeHook, + valgrind, + autoPatchelfHook, +}: + +let + llvmPackages = llvmPackages_18; + rocVersion = "alpha3"; +in + +rustPlatform.buildRustPackage rec { + pname = "roc"; + version = "0-${rocVersion}"; + + src = fetchFromGitHub { + owner = "roc-lang"; + repo = "roc"; + rev = "9a0238e0f34c09e27e3ca89e8fc5a684a21bf456"; + hash = "sha256-iM16DlTf+1yXBZVH7QqzhKuSkn1n/ZDosnZj3t+io0E="; + }; + + nativeBuildInputs = + [ + cmake + zig_0_13 + ] + ++ lib.optionals stdenv.isLinux [ + autoPatchelfHook + ]; + + buildInputs = + [ + libffi + libxml2 + llvmPackages.clang + llvmPackages.llvm.dev + makeBinaryWrapper + ] + ++ lib.optionals stdenv.isLinux [ + glibc + stdenv.cc.cc.lib + ]; + + useFetchCargoVendor = true; + cargoHash = "sha256-9cOJ79GrnrMEIhFikvCfXa2SI4O0fy50cr4Fb6p4Vho="; + + # prevents zig AccessDenied error github.com/ziglang/zig/issues/6810 + XDG_CACHE_HOME = "xdg_cache"; + + preBuild = + let + llvmVersion = builtins.splitVersion llvmPackages.release_version; + llvmMajorMinorStr = builtins.elemAt llvmVersion 0 + "0"; + in + '' + export LLVM_SYS_${llvmMajorMinorStr}_PREFIX=${llvmPackages.llvm.dev} + ''; + + postInstall = + lib.optionalString stdenv.isLinux '' + wrapProgram $out/bin/roc \ + --set NIX_GLIBC_PATH ${glibc.out}/lib \ + --set NIX_LIBGCC_S_PATH ${stdenv.cc.cc.lib}/lib \ + --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]} + '' + + lib.optionalString (!stdenv.isLinux) '' + wrapProgram $out/bin/roc --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]} + ''; + + nativeCheckInputs = [ + writableTmpDirAsHomeHook + llvmPackages.clang + valgrind + ]; + + checkPhase = + lib.optionalString stdenv.isLinux '' + runHook preCheck + NIX_GLIBC_PATH=${glibc.out}/lib NIX_LIBGCC_S_PATH=${stdenv.cc.cc.lib}/lib cargo test --release --workspace --exclude test_mono --exclude uitest -- --skip glue_cli_tests + runHook postCheck + '' + + lib.optionalString (!stdenv.isLinux) '' + runHook preCheck + cargo test --release --workspace --exclude test_mono --exclude uitest -- --skip glue_cli_tests + runHook postCheck + ''; + + meta = { + description = "Fast, friendly, functional programming language"; + mainProgram = "roc"; + homepage = "https://www.roc-lang.org/"; + changelog = "https://github.com/roc-lang/roc/releases/tag/${rocVersion}"; + license = lib.licenses.upl; + maintainers = [ + lib.maintainers.anton-4 + lib.maintainers.bhansconnect + lib.maintainers.rtfeldman + ]; + platforms = [ "x86_64-linux" ]; + }; +}