roc/shell.nix

91 lines
2.1 KiB
Nix
Raw Normal View History

2020-10-24 22:22:51 +03:00
{ }:
with {
2020-09-05 23:58:33 +03:00
# Look here for information about how pin version of nixpkgs
2020-01-07 15:27:34 +03:00
# → https://nixos.wiki/wiki/FAQ/Pinning_Nixpkgs
2020-10-24 22:22:51 +03:00
pkgs = import (builtins.fetchGit {
name = "nixpkgs-2020-10-24";
url = "https://github.com/nixos/nixpkgs-channels/";
ref = "refs/heads/nixpkgs-unstable";
rev = "502845c3e31ef3de0e424f3fcb09217df2ce6df6";
2020-01-07 15:27:34 +03:00
}) { };
2020-10-26 00:50:31 +03:00
isMacOS = builtins.currentSystem == "x86_64-darwin";
2020-10-24 22:22:51 +03:00
};
2020-01-07 15:27:34 +03:00
let
2020-09-18 03:39:07 +03:00
darwin-frameworks =
2020-09-23 02:42:53 +03:00
if isMacOS then
2020-09-18 03:39:07 +03:00
with pkgs.darwin.apple_sdk.frameworks; [
AppKit
CoreFoundation
CoreServices
CoreVideo
Foundation
Metal
Security
]
else
[ ];
2020-09-05 23:58:33 +03:00
llvm = pkgs.llvm_10;
2020-09-23 02:42:53 +03:00
lld = pkgs.lld_10; # this should match llvm's version
clang = pkgs.clang_10; # this should match llvm's version
2020-10-26 00:50:31 +03:00
zig = import ./nix/zig.nix { inherit pkgs isMacOS; };
2020-09-05 23:58:33 +03:00
inputs =
[
2020-10-24 22:22:51 +03:00
# build libraries
pkgs.rustc
2020-09-05 23:58:33 +03:00
pkgs.cargo
2020-11-08 00:29:53 +03:00
pkgs.clippy
pkgs.rustfmt
pkgs.cmake
pkgs.git
pkgs.python3
2020-10-28 21:13:26 +03:00
llvm
clang
2020-10-24 22:22:51 +03:00
pkgs.valgrind
pkgs.pkg-config
2020-10-26 00:50:31 +03:00
zig
2020-10-24 22:22:51 +03:00
# llb deps
2020-09-05 23:58:33 +03:00
pkgs.libffi
pkgs.libxml2
pkgs.xorg.libX11
2020-09-05 23:58:33 +03:00
pkgs.zlib
pkgs.vulkan-headers
pkgs.vulkan-loader
pkgs.vulkan-tools
pkgs.vulkan-validation-layers
2020-09-23 02:42:53 +03:00
# faster builds - see https://github.com/rtfeldman/roc/blob/trunk/BUILDING_FROM_SOURCE.md#use-lld-for-the-linker
lld
2020-10-24 22:22:51 +03:00
# dev tools
pkgs.rust-analyzer
2020-10-26 00:50:31 +03:00
# (import ./nix/zls.nix { inherit pkgs zig; })
2020-10-24 22:22:51 +03:00
pkgs.ccls
2020-09-05 23:58:33 +03:00
];
in pkgs.mkShell {
buildInputs = inputs ++ darwin-frameworks;
LLVM_SYS_100_PREFIX = "${llvm}";
2020-10-29 04:22:54 +03:00
APPEND_LIBRARY_PATH = pkgs.stdenv.lib.makeLibraryPath [
pkgs.pkgconfig
pkgs.vulkan-headers
pkgs.vulkan-loader
pkgs.vulkan-tools
pkgs.vulkan-validation-layers
pkgs.xorg.libX11
pkgs.xorg.libXcursor
pkgs.xorg.libXrandr
pkgs.xorg.libXi
pkgs.libcxx
pkgs.libcxxabi
pkgs.libunwind
];
2020-10-29 04:22:54 +03:00
# Aliases don't work cross shell, so we do this
2020-10-29 04:17:58 +03:00
shellHook = ''
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$APPEND_LIBRARY_PATH"
export PATH="$PATH:$PWD/nix/bin"
2020-10-29 04:17:58 +03:00
'';
2020-09-05 23:58:33 +03:00
}