{ lib , buildGoModule , fetchFromGitHub , runCommand , makeWrapper , tflint , tflint-plugins , symlinkJoin }: buildGoModule rec { pname = "tflint"; version = "0.45.0"; src = fetchFromGitHub { owner = "terraform-linters"; repo = pname; rev = "v${version}"; sha256 = "sha256-tsnW6KoLHEWd/uDZrK2cnVZ2IWftoxZ5zGdYhRdUp9Q="; }; vendorSha256 = "sha256-crGs7j9hAnGCCFjhigIJVpTM0rr9WgvBq3/ZGt6hwqQ="; doCheck = false; subPackages = [ "." ]; ldflags = [ "-s" "-w" ]; passthru.withPlugins = plugins: let actualPlugins = plugins tflint-plugins; pluginDir = symlinkJoin { name = "tflint-plugin-dir"; paths = [ actualPlugins ]; }; in runCommand "tflint-with-plugins" { nativeBuildInputs = [ makeWrapper ]; } '' makeWrapper ${tflint}/bin/tflint $out/bin/tflint \ --set TFLINT_PLUGIN_DIR "${pluginDir}" ''; meta = with lib; { description = "Terraform linter focused on possible errors, best practices, and so on"; homepage = "https://github.com/terraform-linters/tflint"; changelog = "https://github.com/terraform-linters/tflint/raw/v${version}/CHANGELOG.md"; license = licenses.mpl20; maintainers = [ maintainers.marsam ]; }; }