Files
OpenShell/flake.nix
T
Simon Scatton 905e99aa2a feat(build): add Nix-native Linux toolchains (#2875)
* feat(nix): add glibc 2.28 development shell

* feat(nix): add musl development shell

* feat(build): use mold in musl development shell

* feat(flake): add nix remote cache

* feat(build): use mold in default development shell
2026-08-24 12:16:00 +00:00

95 lines
2.7 KiB
Nix

# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
{
description = "OpenShell development environment";
nixConfig = {
extra-substituters = [ "https://openshell.cachix.org" ];
extra-trusted-public-keys = [
"openshell.cachix.org-1:OAr5MunsfH5PZvUsfD08OtGx5RtcwdNZGJdU5FqLm5w="
];
};
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
treefmt-nix = {
url = "github:numtide/treefmt-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
{
flake-utils,
nixpkgs,
treefmt-nix,
rust-overlay,
...
}:
flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ] (
system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ (import rust-overlay) ];
};
commonDevShellPackages = with pkgs; [
# Assemble Debian artifacts on macOS and Linux.
dpkg
# Required to find packages.
pkg-config
# Coverage.
lcov
];
treefmtEval = treefmt-nix.lib.evalModule pkgs {
projectRootFile = "flake.nix";
programs.nixfmt.enable = true;
};
rustToolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
z3-static = pkgs.callPackage ./nix/pkgs/z3-static.nix { };
aws-lc-static = pkgs.callPackage ./nix/pkgs/aws-lc-static.nix { };
testGuest = import ./nix/test-guest { inherit pkgs; };
in
{
apps.test-guest = testGuest.app;
apps.test-guest-cache = testGuest.cacheApp;
devShells = {
default =
(pkgs.mkShell.override {
stdenv =
if pkgs.stdenv.hostPlatform.isLinux then
pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv
else
pkgs.stdenv;
})
{
packages = [
rustToolchain
z3-static
aws-lc-static
]
++ commonDevShellPackages;
};
}
// pkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux {
glibc-2-28 = import ./nix/devShells/glibc-2-28.nix {
inherit pkgs rust-overlay commonDevShellPackages;
};
musl = import ./nix/devShells/musl.nix {
inherit pkgs rust-overlay commonDevShellPackages;
};
};
formatter = treefmtEval.config.build.wrapper;
}
);
}