Skip to content

Commit

Permalink
Add a dev shell for opentitan
Browse files Browse the repository at this point in the history
  • Loading branch information
nbdd0121 committed Jan 4, 2024
1 parent 1896675 commit 2c41ce1
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 1 deletion.
73 changes: 73 additions & 0 deletions dev/opentitan.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
{
pkgs,
ncurses5-fhs,
python_ot,
verilator_ot,
edaTools ? [],
wrapCCWith,
gcc-unwrapped,
pkg-config,
...
}: let
edaExtraDeps = with pkgs; [elfutils openssl];

# Bazel rules_rust expects build PIE binary in opt build but doesn't request PIE/PIC, so force PIC
gcc-patched = wrapCCWith {
cc = gcc-unwrapped;
nixSupport.cc-cflags = ["-fPIC"];
};

# Bazel filters out all environment including PKG_CONFIG_PATH. Append this inside wrapper.
pkg-config-patched = pkg-config.override {
extraBuildCommands = ''
echo "export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig" >> $out/nix-support/utils.bash
'';
};
in
(pkgs.buildFHSEnv {
name = "opentitan";
targetPkgs = _:
with pkgs;
[
bazelisk

python_ot
verilator_ot

# For serde-annotate which can be built with just cargo
rustup

# Bazel downloads Rust compilers which are not patchelfed and they need this.
zlib
openssl
curl

gcc-patched
pkg-config-patched

libxcrypt-legacy
udev
libftdi1
libusb1 # needed for libftdi1 pkg-config
ncurses5-fhs

srecord

# For documentation
hugo
doxygen
]
++ map (tool:
tool.override {
extraDependencies = edaExtraDeps;
})
edaTools;
extraOutputsToInstall = ["dev"];

extraBwrapArgs = [
# OpenSSL included in the Python downloaded by Bazel makes use of these paths.
"--symlink ${pkgs.openssl.out}/etc/ssl/openssl.cnf /etc/ssl/openssl.cnf"
"--symlink /etc/ssl/certs/ca-certificates.crt /etc/ssl/cert.pem"
];
})
.env
7 changes: 6 additions & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,13 @@
pkgs = import nixpkgs {
inherit system;
};
in {
in rec {
packages = import ./pkgs {inherit pkgs inputs;};
devShells = {
opentitan = pkgs.callPackage ./dev/opentitan.nix {
inherit (packages) ncurses5-fhs verilator_ot python_ot;
};
};
formatter = pkgs.alejandra;
});
in
Expand Down

0 comments on commit 2c41ce1

Please sign in to comment.