-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflake.nix
109 lines (99 loc) · 3.34 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
{
description = "An extensible EDSL for high-performance computing.";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; };
haskellPackages = pkgs.haskellPackages;
jailbreakUnbreak = pkg:
pkgs.haskell.lib.doJailbreak (pkg.overrideAttrs (_: { meta = { }; }));
packageName = "janus";
derivation =
{ mkDerivation
, stdenv
, lib
, base
, async
, base16-bytestring
, containers
, cryptohash-sha256
, cudaPackages_12_3
, dependent-sum-template
, gcc12
, hashable
, lens
, language-c-quote
, libffi
, linuxPackages
, profunctors
, rock
, semigroupoids
, semilattices
, tasty-discover
, tasty-hedgehog
, tasty-hunit
, transformers
, vector
, zstd
}:
mkDerivation {
pname = packageName;
version = "0.1.0.0";
src = ./.;
libraryHaskellDepends =
[
base
async
base16-bytestring
containers
cryptohash-sha256
dependent-sum-template
hashable
lens
language-c-quote
libffi
profunctors
rock
semigroupoids
semilattices
transformers
vector
zstd
];
librarySystemDepends = [ cudaPackages_12_3.cudatoolkit cudaPackages_12_3.libnvjitlink gcc12 linuxPackages.nvidia_x11 ];
testHaskellDepends = [tasty-discover tasty-hedgehog tasty-hunit];
description = "An extensible EDSL for high-performance computing.";
license = "unknown";
hydraPlatforms = lib.platforms.none;
};
pkg = (haskellPackages.override {
overrides = self: super: rec {
dependent-hashmap = pkgs.haskell.lib.dontCheck (super.dependent-hashmap.overrideAttrs (_ : { meta = { broken = false; }; }));
rock = jailbreakUnbreak super.rock;
semilattices = jailbreakUnbreak super.semilattices;
};
}).callPackage derivation {};
in {
packages.${packageName} = pkg;
defaultPackage = self.packages.${system}.${packageName};
devShell = haskellPackages.shellFor {
packages = p: [ pkg ];
buildInputs = with haskellPackages; pkg.env.buildInputs ++ [
cabal-install
haskell-language-server
];
withHoogle = true;
shellHook = ''
export PATH=${pkgs.gcc12}/bin:$PATH
export CUDA_PATH=${pkgs.cudaPackages_12_3.cudatoolkit}
export LD_LIBRARY_PATH=${pkgs.linuxPackages.nvidia_x11}/lib:${pkgs.cudaPackages_12_3.libnvjitlink}/lib
export EXTRA_LDFLAGS="-L${pkgs.linuxPackages.nvidia_x11}/lib"
export EXTRA_CCFLAGS="-I/usr/include"
'';
};
});
}