lazygit but for Terraform :D
Download platform archives and checksums from GitHub Releases.
brew tap ushiradineth/homebrew https://github.com/ushiradineth/homebrew
brew install --cask lazytfRun without installing:
nix run github:ushiradineth/lazytfBuild from source:
nix build github:ushiradineth/lazytfNixOS module usage:
{
inputs.lazytf.url = "github:ushiradineth/lazytf";
outputs = { self, nixpkgs, lazytf, ... }: {
nixosConfigurations.host = nixpkgs.lib.nixosSystem {
modules = [
lazytf.nixosModules.default
({ pkgs, ... }: {
nixpkgs.overlays = [ lazytf.overlays.default ];
programs.lazytf.enable = true;
programs.lazytf.settings.theme.name = "default";
})
];
};
};
}Home Manager module usage:
{
inputs.lazytf.url = "github:ushiradineth/lazytf";
outputs = { home-manager, lazytf, ... }: {
homeConfigurations.user = home-manager.lib.homeManagerConfiguration {
modules = [
lazytf.homeManagerModules.default
({ pkgs, ... }: {
nixpkgs.overlays = [ lazytf.overlays.default ];
programs.lazytf.enable = true;
programs.lazytf.settings.theme.name = "default";
})
];
};
};
}The Nix module programs.lazytf.settings options are generated from internal/config/config.schema.json.
Regenerate schema and Nix options after config model changes:
just generate-checkConfig is stored in YAML and supports a schema hint for editors.
Path resolution order:
LAZYTF_CONFIG$XDG_CONFIG_HOME/lazytf/config.yaml~/.config/lazytf/config.yaml/etc/lazytf/config.yaml
Example:
version: 1
theme:
name: default
terraform:
default_flags:
- -compact-warnings
timeout: 10m
history:
enabled: true
level: standardBoth nixosModules.default and homeManagerModules.default write the same YAML keys under programs.lazytf.settings.
NixOS:
programs.lazytf = {
enable = true;
settings = {
theme.name = "default";
terraform.default_flags = [ "-compact-warnings" ];
terraform.timeout = "10m";
history.enabled = true;
history.level = "standard";
};
};Home Manager:
programs.lazytf = {
enable = true;
settings = {
theme.name = "default";
terraform.default_flags = [ "-compact-warnings" ];
terraform.timeout = "10m";
history.enabled = true;
history.level = "standard";
};
};Notes:
- Nix modules only write keys you set. lazytf applies runtime defaults for omitted values.
- Keep YAML schema and Nix options in sync with
just generate-checkafter config model changes.
go install github.com/ushiradineth/lazytf/cmd/lazytf@latest- Tagged releases (
vX.Y.Z) run.github/workflows/release.ymland publish artifacts to GitHub Releases. - Manual release flow is available via GitHub Actions
workflow_dispatchwithpatchorminorbump. - Release notes are generated from merged PRs and commits using GitHub native release notes plus
.github/release.ymlcategories. - Homebrew cask updates are published to
ushiradineth/homebrewby GoReleaser.
- GitHub release artifacts inject semver via ldflags from the release tag.
- Nix flake builds inject version via ldflags from
internal/consts/consts.go. just run,just build, andjust installinject version via ldflags from an exact git tag when present, otherwise short commit SHA.- Local/dev fallback version comes from
internal/consts/consts.gowhen ldflags are not applied.
- Go 1.25.5 or later
- just
- Install direnv
direnv allow
OR
just shell
just deps-tooling
# Install dependencies
just deps
# Run the application
just run # or `just dev` for live reloadRun just without arguments to see all available commands:
- Fork the repository
- Create a feature branch
- Make your changes
- Run
just check-allto ensure quality - Submit a pull request
Always run the quality checks:
just check-all
- Built with Bubble Tea by Charm.
- UI components from Bubbles.
- Terminal styling from Lipgloss.
- Inspired by Terraform Cloud and lazygit.