Skip to content

Commit 0da023c

Browse files
Merge pull request #102 from OpenXiangShan/feat-nix
chore: add nix flake for xs-env
2 parents 973b233 + 03a1ea7 commit 0da023c

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,6 @@ doc/html
1717
*.txt
1818
emu/obj*
1919
playground/
20+
21+
# nix build .
22+
result

flake.lock

Lines changed: 27 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
{
2+
description = "GSIM: A Fast RTL Simulator for Large-Scale Designs";
3+
4+
inputs = {
5+
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
6+
};
7+
8+
outputs = { self, nixpkgs, ... }:
9+
let
10+
systems = nixpkgs.lib.systems.flakeExposed;
11+
perSystem = nixpkgs.lib.genAttrs systems (system:
12+
let
13+
pkgs = import nixpkgs { inherit system; };
14+
llvm = pkgs.llvmPackages_19;
15+
gsim = llvm.stdenv.mkDerivation {
16+
pname = "gsim";
17+
version = "1.0.0-dev"; # FIXME?
18+
src = self;
19+
20+
strictDeps = true;
21+
enableParallelBuilding = true;
22+
dontConfigure = true;
23+
24+
nativeBuildInputs = [
25+
pkgs.flex
26+
pkgs.bison
27+
];
28+
buildInputs = [
29+
pkgs.flex
30+
pkgs.gmp
31+
];
32+
33+
makeFlags = [
34+
# gsim defaults to /bin/bash, which is not guaranteed in NixOS
35+
"SHELL=${llvm.stdenv.shell}"
36+
# override default build target to avoid running tests
37+
"build-gsim"
38+
];
39+
40+
installPhase = ''
41+
runHook preInstall
42+
install -Dm755 build/gsim/gsim $out/bin/gsim
43+
runHook postInstall
44+
'';
45+
46+
meta = {
47+
description = "Fast RTL Simulator for Large-Scale Designs";
48+
homepage = "https://github.com/OpenXiangShan/gsim";
49+
platforms = pkgs.lib.platforms.linux;
50+
};
51+
};
52+
in
53+
{
54+
packages = {
55+
gsim = gsim;
56+
default = gsim;
57+
};
58+
}
59+
);
60+
in
61+
{
62+
packages = nixpkgs.lib.mapAttrs (_: v: v.packages) perSystem;
63+
};
64+
}

0 commit comments

Comments
 (0)