# Install hk with Homebrew, MacPorts, Nix, scoop

Git hook and pre-commit lint manager. Version 1.54.0 via Homebrew; verified 2026-07-31. Also installable with nix: nix profile install nixpkgs#hk.

## Install

```sh
sudo av install brew:hk
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install hk
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install hk
```

  Evidence: MacPorts ports tree: devel/hk/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- Nix (92%):

```sh
nix profile install nixpkgs#hk
```

  Evidence: nixpkgs package indexes: pkgs/by-name/hk/hk/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

### Windows

- Scoop (92%):

```sh
scoop install main/hk
```

  Evidence: Scoop official bucket manifest trees: bucket/hk.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1

## Package facts

- **Package key:** brew:hk
- **Package manager:** Homebrew
- **Version:** 1.54.0
- **Source summary:** Git hook and pre-commit lint manager
- **Homepage:** <https://hk.jdx.dev>
- **Repository:** <https://github.com/jdx/hk>
- **Last updated:** 2026-07-31T07:14:45Z
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- generate-docs (alias)
- hk (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 1.54.0
## Project history and usage

hk is a Rust git-hook manager and project lint runner by jdx, designed around fast hook execution, tighter linter integration, and safe parallelism through read/write file locking.

### Project history

The official README describes hk as a git hook manager and project linting tool with an emphasis on performance. Its About page explains the motivation: git hooks need to be fast or developers stop using them, and naive parallel execution can break when multiple formatters or linters modify the same files.

hk's configuration model uses Apple's Pkl language through hk.pkl files. The configuration documentation describes layered sources, including built-in defaults, user-level hkrc, project config, Git config, environment variables, and CLI flags.

### Adoption history

hk is a young tool in the git-hook manager space. The GitHub repository was created in January 2025, early GitHub releases began in March 2025, and the documentation quickly oriented around global Git hook installation, per-project hk.pkl files, and integration with mise-en-place.

The input package facts show packaging through Homebrew, MacPorts, and Scoop, which is a practical footprint for a developer CLI aimed at local workstations rather than servers.

### How it is used

The intended workflow is to install hooks globally or per repository, run hk init to create hk.pkl, and then let Git events run configured lint and fix steps. hk check and hk fix provide explicit command-line entry points for running checks outside Git hooks.

The configuration docs emphasize precedence and local overrides: hk.local.pkl is for local changes that should not be committed, while ~/.config/hk/config.pkl can hold user-wide defaults.

### Why package nerds care

hk matters to package nerds because it is part of the newer wave of developer workflow CLIs that try to make local checks fast enough to keep enabled. Its differentiator is not another hook file format by itself, but the combination of Pkl configuration, built-in linter definitions, libgit2 usage, mise integration, and locking around file modification.

It also reflects a packaging trend: single-purpose Rust CLIs distributed through Homebrew, Scoop, MacPorts, and direct release binaries for developers who want one binary in their path.

### Timeline

- 2025-01-26: The jdx/hk GitHub repository was created.
- 2025-03-29: Early v0.6.x GitHub releases were published.
- 2025: hk documentation described global Git hook installation and hk.pkl project setup.
- 2026: hk documentation described pklr as the built-in Pkl evaluator and layered configuration sources.

### Related projects

- mise-en-place: jdx's environment/tool-version manager that hk documentation names as an integration point.
- pre-commit, lefthook, Husky, lint-staged: adjacent git-hook and lint-running tools in the same developer workflow category.
- Pkl: Apple's configuration language used for hk.pkl.

### Sources

- <https://api.github.com/repos/jdx/hk>
- <https://hk.jdx.dev/about.html>
- <https://hk.jdx.dev/configuration>
- <https://hk.jdx.dev/getting_started>
- <https://raw.githubusercontent.com/jdx/hk/main/README.md>
- input: source_facts.package-manager


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals


## Configuration and credential file locations

These source-backed paths show where this package keeps local settings or durable credentials. Automic Vault can use them as review targets for secret scanning, migration, and command approval.


## Configuration files

- Unix: hk.local.pkl, .config/hk.local.pkl, hk.pkl, .config/hk.pkl, ~/.config/hk/config.pkl
## Other Package-Manager Records

- Nix - hk: normalized package name match | nixpkgs package indexes: pkgs/by-name/hk/hk/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- MacPorts - hk: normalized package name match | MacPorts ports tree: devel/hk/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1
- Scoop - main/hk: normalized package name match | Scoop official bucket manifest trees: bucket/hk.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1


## Combined YAML source

View the package source record on GitHub. [combined/hk.yml](https://github.com/mxcl/pkgdb/blob/main/combined/hk.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated configuration and credential file locations
- curated package history
- pkgdb category and tag curation
- external package-manager database matches
- cross-ecosystem install command graph
