emplace
Command-line tool to mirror installed software on multiple machines.
Features
-
Outputs a human-readable (RON) file to sync between machines:
.emplace -
Version control with git to automatically push & pull updates
-
Automatic prompt after installing a package
-
Integrates well with dotfiles repositories
-
Parses history file
-
Package managers supported:
OS Package Manager Apt Nix Pacman RUA Yay Snap Homebrew Chocolatey Scoop Cargo Rustup Component Python Pip Python Pip 3 Node Package Manager -
Shells supported:
Shell Bash Zsh Fish
Installation
Getting Started
-
Install the emplace binary:
Windows
Scoop
scoop install emplace
Source
Rust
cargo install emplace
-
Add the init script to your shell's config file:
Bash
Add the following to the end of
~/.bashrc:# ~/.bashrc source <(emplace init bash)
Zsh
Add the following to the end of
~/.zshrc:# ~/.zshrc eval "$(emplace init zsh)"
Fish
Add the following to the end of
~/.config/fish/config.fish:# ~/.config/fish/config.fish emplace init fish | source
Usage
Mirroring Packages
Invoke the supported package manager of choice using the command line in a normal way and you will automatically be prompted to mirror the package, for example:
cargo install topgrade
# -- or --
rustup component add rustfmt
# -- or --
sudo apt install meld
# -- or --
pacman -S zsh
# -- or --
rua install peek
# -- or --
yay -S thunar
# -- or --
sudo snap install scrcpy
# -- or --
npm install -g release
# -- or --
pip3 install --user termtosvg
# -- or --
choco install neovim
# -- or --
scoop install curl
# -- or --
nix-env -iA nixpkgs.nixfmt
# -- or --
brew install wgetSynchronizing On Another Machine
Just invoke emplace install, and you will be prompted with the packages to install:
emplace installHistory Analysis
Invoke emplace history $HISTFILE or emplace history /path/to/history/file.
It will parse your history and prompt to select, which packages you want to synchronize.
Removing Synchronized Packages
Run emplace clean and select the packages you want to be cleaned, they won't be removed from your system.
Creating and modifying config files
Run emplace config --new to create a new config and configure the repository or emplace config --path to retrieve the path to the configuration file.
Contributors
Thanks goes to these wonderful people (emoji key):
Logan Magee |
Vladimir |
Jozef HollΓ½ |
Oleksii Filonenko |
x0f5c3 |
Benjamin S. Leveritt |
Michael Borejdo |
This project follows the all-contributors specification. Contributions of any kind welcome!

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
