{ extraDevshellPkgs, devshell, pkgs, pkgs20-09, self, system, ... }: pkgs.devshell.mkShell { # devshell docs: https://numtide.github.io/devshell/modules_schema.html name = "tritonshell"; devshell.interactive = { PS1_util = pkgs.lib.noDepEntry '' if [[ -n "''${PRJ_ROOT:-}" ]]; then # Print the path relative to $PRJ_ROOT rel_root() { local path path=$(${pkgs.coreutils}/bin/realpath --relative-to "$PRJ_ROOT" "$PWD") if [[ $path != . ]]; then echo " $path " fi } else # If PRJ_ROOT is unset, print only the current directory name rel_root() { echo " \W " } fi ''; PS1.text = '' PS1='\[\033[38;5;202m\][$SDC_ACCOUNT@$TRITON_DC]$(rel_root)\$ \[\033[0m\]' ''; }; commands = [ { package = pkgs.devshell.cli; help = "Per project developer environments"; } { package = pkgs.nodePackages.triton; category = "triton & manta tools"; name = "triton"; help = "Triton DC CLI (https://docs.greenbaum.cloud/en/devops/triton-cli.html)"; } { package = pkgs.nodePackages.manta; category = "triton & manta tools"; name = "manta"; help = "Manta CLIs (https://apidocs.joyent.com/manta/index.html#cli)"; } { package = self.packages.${system}.triton-utils; category = "triton & manta tools"; name = "ttp"; help = "Quickly switch triton profiles (shell function)"; } ]; devshell.packages = [ pkgs.bash-completion # use docker-compose version 1.26.2 for best triton API compatibility pkgs20-09.docker-compose # shell scripts and utilities to set and unset triton environment variables self.packages.${system}.triton-utils self.packages.${system}.triton-docker-env # useful for working with JSON data pkgs.jq pkgs.bunyan-rs ] ++ extraDevshellPkgs; env = [ # workaround for TLS certs bug in docker-compose, CERTIFICATE_VERIFY_FAILED # see: https://github.com/joyent/triton-docker-cli/issues/17 { name = "CURL_CA_BUNDLE"; value = "${self.packages.${system}.triton-utils}/share/certs/cacert-2022-02-01.pem"; } { name = "CONSUL_HTTP_ADDR"; value = "http://consul.service.consul:8500"; } { name = "NOMAD_ADDR"; value = "https://nomad.service.consul:4646"; } { name = "VAULT_ADDR"; value = "https://vault.service.consul:8200"; } ]; bash = { extra = '' source ${self.packages.${system}.triton-docker-env}/bin/triton-docker-env.sh source ${self.packages.${system}.triton-utils}/bin/ttp.sh if [ "$(uname)" == "Darwin" ]; then source $DEVSHELL_DIR/share/bash-completion/bash_completion fi ''; }; }