pathlint 0.0.3

Lint the PATH environment variable against declarative ordering rules.
Documentation
# Built-in source catalog. See docs/PRD.md §9.

#

# Bump `catalog_version` whenever an existing source's per-OS path,

# semantics, or definition changes — never just for additions.

# Users who pin `require_catalog = N` in their pathlint.toml will

# get a config error on a binary whose embedded catalog is older

# than what they need.

catalog_version = 1



# ---- Cross-OS user-installed binaries ----



[source.cargo]

description = "binaries from `cargo install`"

windows = "$UserProfile/.cargo/bin"

unix    = "$HOME/.cargo/bin"



[source.go]

description = "binaries from `go install`"

windows = "$UserProfile/go/bin"

unix    = "$HOME/go/bin"



[source.npm_global]

windows = "$AppData/npm"

unix    = "$HOME/.npm-global/bin"



[source.pip_user]

windows = "$AppData/Python"

unix    = "$HOME/.local/bin"



[source.user_bin]

windows = "$UserProfile/bin"

unix    = "$HOME/bin"



[source.user_local_bin]

unix    = "$HOME/.local/bin"



# ---- Polyglot version managers ----



# Catch-all that matches anything served by mise (shims + installs).

# Kept for backwards compatibility with rules that don't care which

# layer mise served the binary from. Prefer mise_shims / mise_installs

# in new rules for finer control.

[source.mise]

description = "any binary served by mise (alias matching shims + installs)"

windows = "$LocalAppData/mise"

unix    = "$HOME/.local/share/mise"



# Binaries reached via the mise shim layer ($PATH front-loaded with

# `mise/shims`). This is the typical setup when shells run

# `mise activate`.

[source.mise_shims]

description = "mise shim layer"

windows = "$LocalAppData/mise/shims"

unix    = "$HOME/.local/share/mise/shims"



# Direct binaries from `mise/installs/<tool>/<version>/bin`. This is

# what shows up when mise activates a runtime via PATH-rewriting

# rather than shims, or when a plugin (cargo-*, npm-*, etc.) was

# installed through mise.

[source.mise_installs]

description = "mise per-runtime install dirs"

windows = "$LocalAppData/mise/installs"

unix    = "$HOME/.local/share/mise/installs"



[source.volta]

windows = "$LocalAppData/Volta"

unix    = "$HOME/.volta/bin"



[source.aqua]

windows = "$LocalAppData/aquaproj-aqua"

unix    = "$HOME/.local/share/aquaproj-aqua"



[source.asdf]

unix    = "$HOME/.asdf/shims"



# ---- Windows-only package managers ----



[source.winget]

windows = "$LocalAppData/Microsoft/WinGet"



[source.choco]

windows = "$ProgramData/chocolatey"



[source.scoop]

windows = "$UserProfile/scoop"



[source.WindowsApps]

description = "Microsoft Store stub layer"

windows = "Microsoft/WindowsApps"



[source.strawberry]

windows = "Strawberry"



[source.mingw]

windows = "mingw"



[source.msys]

windows = "msys"



# ---- macOS-only package managers ----



[source.brew_arm]

description = "Homebrew on Apple Silicon"

macos = "/opt/homebrew"



[source.brew_intel]

description = "Homebrew on Intel macOS"

macos = "/usr/local"



[source.macports]

macos = "/opt/local"



# ---- Linux-only package managers ----



[source.apt]

linux = "/usr/bin"



[source.pacman]

linux = "/usr/bin"



[source.dnf]

linux = "/usr/bin"



[source.flatpak]

linux = "/var/lib/flatpak/exports/bin"



[source.snap]

linux = "/snap/bin"



# ---- Termux ----



[source.pkg]

description = "Termux pkg installs"

termux = "$PREFIX/bin"



[source.termux_user_bin]

termux = "$PREFIX/../home/bin"



# ---- OS baseline ----



[source.system_windows]

windows = "$SystemRoot/System32"



[source.system_macos]

macos = "/usr/bin"



[source.system_linux]

linux = "/usr/bin"