| Crates.io | emplace |
| lib.rs | emplace |
| version | 1.6.0 |
| created_at | 2019-09-11 09:11:09.671683+00 |
| updated_at | 2024-05-25 10:10:33.399607+00 |
| description | Command-line tool to mirror installed software on multiple machines. |
| homepage | |
| repository | https://github.com/tversteeg/emplace |
| max_upload_size | |
| id | 164093 |
| size | 194,534 |
Command-line tool to mirror installed software on multiple machines.
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 | |
| GNU Guix | |
| Nix | |
| Pacman | |
| Paru | |
| RUA | |
| Yay | |
| Zypper | |
| Snap | |
| DNF/YUM | |
| Homebrew | |
| Pkg | |
| Chocolatey | |
| Scoop | |
| Cargo | |
| Cargo B(inary)Install | |
| Rustup Component | |
| Python Pip | |
| Python Pip 3 | |
| Node Package Manager | |
| Ruby Gem | |
| Go |
Shells supported:
| Shell | |
|---|---|
| Bash | |
| Zsh | |
| Fish | |
| Nu |
Install the emplace binary:
scoop install emplace
nix-env -iA nixos.emplace
cargo install emplace
Download the latest binary from releases for your OS and put it somewhere in your PATH.
Add the init script to your shell's config file:
Add the following to the end of ~/.bashrc:
# ~/.bashrc
source <(emplace init bash)
Add the following to the end of ~/.zshrc:
# ~/.zshrc
eval "$(emplace init zsh)"
Add the following to the end of ~/.config/fish/config.fish:
# ~/.config/fish/config.fish
emplace init fish | source
Run the following in your shell:
emplace init nu | config set_into prompt
Change the configuration file (optional)
When you want to use a different configuration file from the default one you can change emplace init $SHELL with emplace init $SHELL -c path/to/my/config.toml.
This will set the EMPLACE_CONFIG="path/to/my/config.toml" environment variable. This can be overwritten with export EMPLACE_CONFIG="path/to/other/config.toml" after the init function, except in the Nu shell.
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 --
cargo binstall zellij
# -- or --
rustup component add rustfmt
# -- or --
sudo apt install meld
# -- or --
pacman -S zsh
# -- or --
paru -S ventoy
# -- 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 wget
# -- or --
sudo dnf install htop
# -- or --
guix install 0ad
# -- or --
gem install aasm-diagram
# -- or --
go get colorgo
# -- or --
pkg install nginx
Just invoke emplace install, and you will be prompted with the packages to install:
emplace install
You can also parse history files, this will try to extract installation commands from each line.
emplace history $HISTFILE
emplace history ~/.local/share/fish/fish_history
Run emplace clean and select the packages you want to be cleaned, they won't be removed from your system.
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.
This software isn't actively developed on by me anymore, I do however review and accept pull requests.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!