loadout

command module
v0.0.0-...-c68aebb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 22, 2026 License: GPL-3.0 Imports: 1 Imported by: 0

README

loadout

Your installed software, as code.

loadout snapshots every package manager on your system into a single loadout.toml file. Commit it to git, then restore your exact setup on any machine — or use it as a reference when switching distros or package managers.

Install

go install github.com/akvartz/loadout@latest

Or build from source:

git clone https://github.com/akvartz/loadout
cd loadout
go build -o loadout .

Usage

Snapshot your current setup
loadout snapshot
# saved to loadout.toml

Use --verbose to see each package manager as it runs:

loadout snapshot --verbose
# detecting apt...
#   apt: found 142 packages
# detecting flatpak...
#   flatpak: found 12 packages
# ...
Check what has changed since your last snapshot
loadout diff
# [apt]
#   + htop
#   - cowsay
# [flatpak]
#   + org.gimp.GIMP

Exits with code 1 if there are differences — useful in shell scripts or cron jobs.

Restore on a new machine

Dry-run (default) — prints the install commands without executing them:

loadout restore --target shell
#!/usr/bin/env sh
set -e

# apt
sudo apt-get install -y curl git htop ripgrep ...

# flatpak
flatpak install -y flathub org.signal.Signal
flatpak install -y flathub com.spotify.Client
...

Execute it directly with --apply:

loadout restore --target shell --apply
Restore targets
Target Output Best for
shell Shell script using each native manager Restoring on the same distro
brewfile Homebrew Brewfile Moving to macOS
nix home-manager home.packages snippet Moving to NixOS / home-manager

For brewfile and nix, packages from other managers are listed as comments — cross-manager name translation is not automatic (see Roadmap).

Use a custom file path
loadout snapshot --file ~/dotfiles/loadout.toml
loadout diff    --file ~/dotfiles/loadout.toml
loadout restore --file ~/dotfiles/loadout.toml --target nix

Supported package managers

Source Detection method
apt apt-mark showmanual
flatpak flatpak list --app
snap snap list
pip pip list --user --format=json
cargo ~/.cargo/.crates2.json
npm npm list -g --depth=0 --json
appimage scans ~/Applications and ~/.local/share/applications
brew brew list --formula --casks
nix nix-env --query --installed

Managers not present on the system are silently skipped.

State file format

loadout.toml is plain TOML — commit it, diff it, edit it by hand:

[meta]
schema_version = 1
captured_at = 2026-05-15T14:32:00Z
hostname = "mybox"
os = "linux"

[sources.apt]
packages = ["curl", "git", "htop", "ripgrep"]

[sources.flatpak]
packages = ["org.signal.Signal", "com.spotify.Client"]

[sources.pip]
packages = ["httpie", "yt-dlp"]

Roadmap

  • Cross-manager translation plugin — convert apt package names to their brew or nix equivalents automatically

License

GPL v3 — see LICENSE.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
internal
plugin/rpc
Package rpc implements the loadout external plugin JSON-RPC protocol.
Package rpc implements the loadout external plugin JSON-RPC protocol.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL