The develop environment for Berekeley-CS164
{
  description = "CS164";

  inputs={
    nixpkgs.url="github:nixos/nixpkgs/nixos-unstable";
  };

  outputs = {self,nixpkgs,...}:let
    system="x86_64-linux";
  in{
    devShells."${system}".default=let
      pkgs = import nixpkgs{
        inherit system;
      };
    in pkgs.mkShell{
      packages = with pkgs; [
        ocaml
        ocamlPackages.menhir
        ocamlPackages.ocaml-lsp
        ocamlPackages.merlin
        ocamlPackages.ocamlformat
        nasm
        dune_3
        ocamlPackages.utop
        ocamlPackages.ounit2
        ocamlPackages.ppx_deriving
        ocamlPackages.ppx_inline_test
        ocamlPackages.ppx_let
        ocamlPackages.ppx_blob
        ocamlPackages.shexp
        ocamlPackages.core
        ocamlPackages.core_unix
        ocamlPackages.yojson
        gradescope-submit
        gnumake
        gcc
      ];
      shellHook = ''
        if command -v fish > /dev/null 2>&1; then
          exec fish
        fi
      '';
    };
  };
}