# Shell for being able to use bazel on NixOS (or on any operating system with Nix installed).

let

  hscloud = import ./default.nix {};

in with hscloud.config.pkgs; let

  wrapper = pkgs.writeScript "wrapper.sh"
  ''
    source /etc/profile
    source ${toString ./.}/env.sh
    ${toString ./.}/tools/install.sh

    exec bash "$@"
  '';

in (pkgs.buildFHSUserEnv {
  name = "hscloud-build";
  targetPkgs = pkgs: with pkgs; [
    bazel
    postgresql
    python38
    openjdk11
    openldap.dev cyrus_sasl.dev # for python-ldap
    wkhtmltopdf
    gcc binutils
    pwgen
    tmate
    git
  ];
  multiPkgs = pkgs: [
    (pkgs.runCommand "protocols" {}
      ''
      mkdir -p $out/etc
      ln -s ${pkgs.iana-etc}/etc/protocols $out/etc/protocols
      '')
  ];
  runScript = wrapper;
}).env
