let pkgs = import { }; in rec { utils = import ./utils.nix { pkgs = pkgs; src = pkgs.nix-gitignore.gitignoreSource [ ] ./.; baseName = "vps"; }; subtasks = rec { formatTerraform = utils.baseTask.overrideAttrs (baseAttrs: { name = "${baseAttrs.name}-format-terraform"; buildInputs = baseAttrs.buildInputs ++ [ pkgs.terraform ]; buildPhase = '' terraform fmt -check=true -diff=true || { echo "Terraform files are unformatted. To fix it, run:" echo " terraform fmt" exit 1 } touch $out ''; }); dockerComposeLint = utils.baseTask.overrideAttrs (baseAttrs: { name = "${baseAttrs.name}-docker-compose-lint"; buildInputs = baseAttrs.buildInputs ++ [ pkgs.docker-compose ]; buildPhase = '' source .envrc # =docker-compose config= doesn't accept files with different names cp docker-compose.env.yaml docker-compose.yaml docker-compose config &> /dev/null || { echo "Invalid docker-compose.yml file." exit 1 } touch $out ''; }); shellBuildInputs = with pkgs; [ file gitMinimal git-crypt gettext terraform-providers.vultr terraform ansible ]; }; test = utils.test [ (utils.shellcheck null) (utils.fixme null) (utils.shellEnvironmentBuild subtasks.shellBuildInputs) utils.formatNix subtasks.formatTerraform subtasks.dockerComposeLint ]; shell = utils.shellEnvironment subtasks.shellBuildInputs; }