# 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
    postgresql
    python38
    openjdk11
    openldap.dev cyrus_sasl.dev # for python-ldap
    wkhtmltopdf
    gcc binutils
    pwgen
    tmate
    git
    which
    gnupg
    nettools
    file
    curl
    netcat
    nix
    vim
    openssh
  ];
  multiPkgs = pkgs: [
    (pkgs.runCommand "protocols" {}
      ''
      mkdir -p $out/etc
      ln -s ${pkgs.iana-etc}/etc/protocols $out/etc/protocols
      '')
  ];
  runScript = wrapper;
}).env
