Newer
Older
minerva / Toolchain / default.nix
@minerva minerva on 13 Jul 1 KB Initial commit
{
  pkgs ? import <nixpkgs> { },
}:
with pkgs;

mkShell.override { stdenv = gccStdenv; } {
  packages =
    [
      ccache
      cmake
      curl
      e2fsprogs
      flex
      git
      gmp
      libmpc
      libxcrypt
      mpfr
      ninja
      openssl
      patch
      pkg-config
      python3
      qemu
      rsync
      texinfo
      unzip
      wget
      # For building and installing ports
      autoconf
      automake
      gperf
      imagemagick
      libtool
      # For development
      # NOTE: The unwrapped clang package is used because the one installed by `clang-tools`
      #       adds extra include and resource directories that conflict with minerva's custom toolchain.
      # FIXME: Go back to the `clang-tools` package once https://github.com/NixOS/nixpkgs/pull/354755 is merged.
      llvmPackages_19.clang-unwrapped
      nodePackages.prettier
      pre-commit
    ]
    ++ lib.optionals stdenv.isLinux [
      fuse
      fuse-ext2
      grub2
      parted
    ]
    ++ lib.optionals stdenv.isDarwin [
      genext2fs
    ];

  buildInputs = lib.optionals stdenv.isDarwin [
    apple-sdk_13
    (darwinMinVersionHook "13.3")
  ];

  shellHook = ''
    # The toolchain is built with `mtune=native` which nix warns about, but we don't care about that warning.
    export NIX_ENFORCE_NO_NATIVE=0
  '';

  hardeningDisable = [ "format" ];
}