-
Notifications
You must be signed in to change notification settings - Fork 73
Expand file tree
/
Copy pathflake.nix
More file actions
95 lines (89 loc) · 2.87 KB
/
Copy pathflake.nix
File metadata and controls
95 lines (89 loc) · 2.87 KB
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
{
description = "Nix devshells for XiangShan";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
gsim = {
url = "github:OpenXiangShan/gsim";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, gsim, ... }: let
system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; };
in {
devShells.${system}.default = pkgs.mkShell {
packages = with pkgs; [
# === tool ===
wget
git
tmux
curl
time
# === runtime ===
python3
python3Packages.psutil # for XiangShan/scripts/xiangshan.py
openjdk
# === toolchain ===
gcc # host toolchain
pkgsCross.riscv64.buildPackages.gcc # riscv64-unknown-elf-xxx toolchain
llvm # for pgo
llvmPackages.bolt # for pgo
clang
gnumake # make
dtc # device tree compiler
flex
autoconf
bison
# override mill & verilator to use our version
(mill.overrideAttrs (finalAttrs: previousAttrs: {
version = "0.12.15";
src = fetchurl {
url = "https://repo1.maven.org/maven2/com/lihaoyi/mill-dist/${finalAttrs.version}/mill-dist-${finalAttrs.version}.exe";
hash = "sha256-6hu6AeIg9M4guzMyR9JUor+bhlVMEMPX1+FmQewKdtg=";
};
}))
(verilator.overrideAttrs (finalAttrs: previousAttrs: {
version = "5.048";
VERILATOR_SRC_VERSION = "v${finalAttrs.version}";
src = fetchFromGitHub {
owner = "verilator";
repo = "verilator";
rev = "v${finalAttrs.version}";
hash = "sha256-xvqqgbW7L07+NBYzGN2KLhwir58ByShxo4VVPI3pgZk=";
};
# drop patch https://github.com/NixOS/nixpkgs/commit/06be23d66287c004cb8ef933a9ff6589276ab104
# since it's already included in 5.044
patches = [];
# use jemalloc by default
buildInputs = previousAttrs.buildInputs ++ [
jemalloc
];
doCheck = false;
}))
gsim.packages.${system}.default
# === debug ===
gtkwave
# === lib ===
readline
SDL2
zlib
zstd
sqlite
];
shellHook = ''
echo "=== Welcome to XiangShan devshell! ==="
echo "Version info:"
echo "- $(verilator --version | head -n 1)"
echo "- $(gsim --version | head -n 1)"
echo "- $(mill --version | head -n 1)"
echo "- $(gcc --version | head -n 1)"
echo "- $(riscv64-unknown-linux-gnu-gcc --version | head -n 1)"
echo "- $(clang --version | head -n 1)"
echo "- $(java -version 2>&1 | head -n 1)"
echo "You can press Ctrl + D to exit devshell."
export LD_LIBRARY_PATH="${pkgs.zlib}/lib:${pkgs.stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH"
source $(pwd)/env.sh
'';
};
};
}