# 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}"
    export SHELL="${pkgs.bash}/bin/bash"
    export HSCLOUD_NIX=yes

    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
    zlib

    colmena
  ];
  multiPkgs = pkgs: [
    (pkgs.runCommand "protocols" {}
      ''
      mkdir -p $out/etc
      ln -s ${pkgs.iana-etc}/etc/protocols $out/etc/protocols
      '')
  ];
  runScript = wrapper;
}).env
