# 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
  ];
  multiPkgs = pkgs: [
    (pkgs.runCommand "protocols" {}
      ''
      mkdir -p $out/etc
      ln -s ${pkgs.iana-etc}/etc/protocols $out/etc/protocols
      '')
  ];
  runScript = wrapper;
}).env
