# 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.pkgs; let

  fontconfig = pkgs.writeText "fc-00-nixos-cache.conf" ''
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
    <fontconfig>
      <include>/etc/fonts/fonts.conf</include>
      <dir>${pkgs.roboto}</dir>
    </fontconfig>
  '';

  wrapper = pkgs.writeScript "wrapper.sh"
  ''
    export NIX_SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt"
    export SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt"
    export FONTCONFIG_FILE="${fontconfig}"

    source ${toString ./.}/env.sh

    # FIXME: //tools:install runs in a different PATH which thrashes our cache
    # and causes massive rebuilds on every launch... This next line is the only
    # important part off tools/install.sh
    # bazel run //tools:install
    #bazel build //tools/... //cluster/tools/...

    # Fancy colorful PS1 to make people notice easily they're in hscloud.
    PS1='\[\033]0;\u/hscloud:\w\007\]'
    if type -P dircolors >/dev/null ; then
      PS1+='\[\033[01;35m\]\u/hscloud\[\033[01;34m\] \w \$\[\033[00m\] '
    fi
    export PS1

    exec bash --noprofile --norc "$@"
  '';

in (pkgs.buildFHSUserEnv {
  name = "hscloud-build";
  targetPkgs = pkgs: with pkgs; [
    bazel_5
    postgresql
    python310
    openjdk11
    openldap.dev cyrus_sasl.dev # for python-ldap
    # No wkhtmltopdf as it got yoten from the hydra build set, and building it
    # takes ages. Run locally in docker container instead.
    #wkhtmltopdf
    gcc binutils clang
    libxcrypt-legacy
    pwgen
    tmate
    git
    which
    gnupg
    nettools
    file
    curl
    netcat
    nix
    vim
    openssh
    libxcrypt
  ];
  multiPkgs = pkgs: [
    (pkgs.runCommand "protocols" {}
      ''
      mkdir -p $out/etc
      ln -s ${pkgs.iana-etc}/etc/protocols $out/etc/protocols
      '')
  ];
  runScript = wrapper;
}).env
