roc/default.nix

90 lines
2.7 KiB
Nix
Raw Normal View History

2022-08-12 23:18:07 +03:00
{ rev ? "541a3ca27c9a8220b46f4feb7dd8e94336a77f42", # nixpkgs master
nixpkgsSource ? builtins.fetchTarball {
2022-07-26 18:21:51 +03:00
url = "https://github.com/nixos/nixpkgs/tarball/${rev}";
2022-08-12 23:09:59 +03:00
sha256 = "sha256:1mxv0zigm98pawf05kd4s8ipvk1pvvdsn1yh978c5an97kz0ck5w";
2022-08-12 23:18:07 +03:00
},
pkgs ? import nixpkgsSource { },
}:
# we only this file to release a nix package, use flake.nix for development
let
rustPlatform = pkgs.rustPlatform;
2022-07-26 18:21:51 +03:00
llvmPkgs = pkgs.llvmPackages_13;
2022-08-01 19:54:16 +03:00
# nix does not store libs in /usr/lib or /lib
nixGlibcPath = if pkgs.stdenv.isLinux then "${pkgs.glibc.out}/lib" else "";
in
rustPlatform.buildRustPackage {
pname = "roc";
2022-07-26 18:21:51 +03:00
version = "0.0.1";
src = pkgs.nix-gitignore.gitignoreSource [] ./.;
2022-08-12 23:18:13 +03:00
cargoSha256 = "sha256-treL2sWPcZ1NBwdab3FOb2FI2wT/Vt9tD4XRfJ8rYWA=";
2022-07-26 18:21:51 +03:00
LLVM_SYS_130_PREFIX = "${llvmPkgs.llvm.dev}";
2022-07-26 18:21:51 +03:00
# required for zig
2022-07-27 15:35:39 +03:00
XDG_CACHE_HOME = "xdg_cache"; # prevents zig AccessDenied error github.com/ziglang/zig/issues/6810
2022-07-26 18:21:51 +03:00
# want to see backtrace in case of failure
RUST_BACKTRACE = 1;
2022-07-27 15:35:39 +03:00
# skip running rust tests, problems:
# building of example platforms requires network: Could not resolve host
# zig AccessDenied error github.com/ziglang/zig/issues/6810
# Once instance has previously been poisoned ??
doCheck = false;
nativeBuildInputs = (with pkgs; [
cmake
git
pkg-config
python3
llvmPkgs.clang
llvmPkgs.llvm.dev
2022-07-26 18:21:51 +03:00
zig
rust-bindgen
]);
buildInputs = (with pkgs; [
libffi
libiconv
libxkbcommon
libxml2
ncurses
zlib
2022-07-26 18:21:51 +03:00
cargo
2022-08-01 17:50:38 +03:00
makeWrapper # necessary for postBuild wrapProgram
]
++ lib.optionals pkgs.stdenv.isLinux [
alsa-lib
valgrind
vulkan-headers
vulkan-loader
vulkan-tools
vulkan-validation-layers
xorg.libX11
xorg.libXcursor
xorg.libXi
xorg.libXrandr
xorg.libxcb
]
++ lib.optionals pkgs.stdenv.isDarwin [
pkgs.darwin.apple_sdk.frameworks.AppKit
pkgs.darwin.apple_sdk.frameworks.CoreFoundation
pkgs.darwin.apple_sdk.frameworks.CoreServices
pkgs.darwin.apple_sdk.frameworks.CoreVideo
pkgs.darwin.apple_sdk.frameworks.Foundation
pkgs.darwin.apple_sdk.frameworks.Metal
pkgs.darwin.apple_sdk.frameworks.Security
]);
2022-08-01 17:50:38 +03:00
# cp: to copy str.zig,list.zig...
# wrapProgram pkgs.stdenv.cc: to make ld available for compiler/build/src/link.rs
2022-08-05 14:31:52 +03:00
postInstall = if pkgs.stdenv.isLinux then ''
2022-08-01 17:50:38 +03:00
cp -r target/x86_64-unknown-linux-gnu/release/lib/. $out/lib
2022-08-01 19:54:16 +03:00
wrapProgram $out/bin/roc --set NIX_GLIBC_PATH ${nixGlibcPath} --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.stdenv.cc ]}
2022-08-05 14:31:52 +03:00
'' else ''
cp -r target/aarch64-apple-darwin/release/lib/. $out/lib
wrapProgram $out/bin/roc --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.stdenv.cc ]}
2022-08-01 17:50:38 +03:00
'';
}