1{ stdenv, fetchgit, haskell, pythonPackages 2 3, autoconf 4, automake 5, binutils 6, coreutils 7, cpio 8, curl 9, gcc5 10, gdb 11, git 12, gmp 13, gnugrep 14, gnused 15, m4 16, qemu 17 18, ghc-version ? "ghc801" 19 20, propagate-deps ? false 21, use-repo-source ? false 22, repo-url ? "" 23, repo-commit-id ? "" 24, repo-commit-sha256 ? "" 25}: 26 27let src-repo = fetchgit { 28 url = repo-url; 29 rev = repo-commit-id; 30 sha256 = repo-commit-sha256; 31 }; 32 ghc = haskell.packages."${ghc-version}".ghcWithPackages 33 (haskellPackages: with haskellPackages; [ 34 async 35 bytestring-trie 36 ghc-paths 37 ghc-mtl 38 haskell-src-exts 39 parsec 40 random 41 ]); 42 deps = [ 43 autoconf 44 automake 45 binutils 46 coreutils 47 cpio 48 curl 49 gcc5 50 gdb 51 git 52 gmp 53 gnugrep 54 gnused 55 m4 56 qemu 57 58 pythonPackages.pexpect 59 60 # custom GHC 61 ghc 62 ]; 63in 64stdenv.mkDerivation { 65 version = "2016-11-09"; 66 name = "barrelfish"; 67 src = if use-repo-source 68 then src-repo 69 else builtins.filterSource 70 (path: type: baseNameOf path != ".git" && baseNameOf path != "build") 71 ./.; 72 73 buildInputs = deps; 74 propagatedBuildInputs = if propagate-deps 75 then deps 76 else []; 77 78 description = "The Barrelfish OS"; 79 license = "MIT"; 80} 81