All Projects → tversteeg → Emplace

tversteeg / Emplace

Licence: agpl-3.0
👩‍❤️‍💋‍👩 Synchronize installed packages on multiple machines

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Emplace

.tmux
🇫🇷 Oh my tmux! My self-contained, pretty & versatile tmux configuration made with ❤️
Stars: ✭ 15,594 (+14751.43%)
Mutual labels:  cli, dotfiles, configuration
Chezmoi
Manage your dotfiles across multiple diverse machines, securely.
Stars: ✭ 5,590 (+5223.81%)
Mutual labels:  dotfiles, configuration
Dotfiles
My configuration. Minimalist, but helps save a few thousand keystrokes a day.
Stars: ✭ 284 (+170.48%)
Mutual labels:  dotfiles, configuration
Dasel
Query, update and convert data structures from the command line. Comparable to jq/yq but supports JSON, TOML, YAML, XML and CSV with zero runtime dependencies.
Stars: ✭ 759 (+622.86%)
Mutual labels:  cli, configuration
eRCaGuy dotfiles
.bashrc file, terminal prompt that shows current git branch, Arduino setup, Eclipse setup, git diff with line numbers, helpful scripts, improved Linux productivity, etc.
Stars: ✭ 84 (-20%)
Mutual labels:  dotfiles, configuration
LKI
LKI's dotfiles.
Stars: ✭ 31 (-70.48%)
Mutual labels:  dotfiles, configuration
Ini Parser
Read/Write an INI file the easy way!
Stars: ✭ 643 (+512.38%)
Mutual labels:  cli, configuration
Dotfiles
My personal collection of configuration files.
Stars: ✭ 105 (+0%)
Mutual labels:  cli, dotfiles
Mrm
Codemods for your project config files
Stars: ✭ 900 (+757.14%)
Mutual labels:  cli, dotfiles
Env
My setup, partially
Stars: ✭ 41 (-60.95%)
Mutual labels:  dotfiles, configuration
Dots
Dotfiles for Arch Linux and OS X (branched)
Stars: ✭ 54 (-48.57%)
Mutual labels:  dotfiles, configuration
Stow
GNU Stow - mirror of savannah git repository occasionally with more bleeding-edge branches
Stars: ✭ 207 (+97.14%)
Mutual labels:  cli, dotfiles
Dotfile
Simple version control made for tracking single files
Stars: ✭ 71 (-32.38%)
Mutual labels:  dotfiles, configuration
zshrc
📝 Zsh Configuration for nerds with zplug
Stars: ✭ 28 (-73.33%)
Mutual labels:  dotfiles, configuration
Staert
Merge your configuration sources
Stars: ✭ 108 (+2.86%)
Mutual labels:  cli, configuration
Confy
🛋 Zero-boilerplate configuration management in Rust
Stars: ✭ 379 (+260.95%)
Mutual labels:  cli, configuration
Tmux Config
📗 Example tmux configuration - screen + vim key-bindings, system stat, cpu load bar.
Stars: ✭ 1,633 (+1455.24%)
Mutual labels:  dotfiles, configuration
Ansible Role Dotfiles
Ansible Role - Easy and flexible dotfile installation.
Stars: ✭ 133 (+26.67%)
Mutual labels:  dotfiles, configuration
Carvel Ytt
YAML templating tool that works on YAML structure instead of text
Stars: ✭ 816 (+677.14%)
Mutual labels:  cli, configuration
Dotfiles
🖥️ Automated Configuration, Preferences and Software Installation for macOS
Stars: ✭ 1,103 (+950.48%)
Mutual labels:  dotfiles, configuration

emplace

Command-line tool to mirror installed software on multiple machines.

Build Status Downloads Version


Features

  • [x] Outputs a human-readable (RON) file to sync between machines: .emplace

  • [x] Version control with git to automatically push & pull updates

  • [x] Automatic prompt after installing a package

  • [x] Integrates well with dotfiles repositories

  • [x] Parses history file

  • Package managers supported:

    OS Package Manager
    Apt
    GNU Guix
    Nix
    Pacman
    RUA
    Yay
    Snap
    DNF/YUM
    Homebrew
    Pkg
    Chocolatey
    Scoop
    Cargo
    Rustup Component
    Python Pip
    Python Pip 3
    Node Package Manager
    Ruby Gem
    Go
  • Shells supported:

    Shell
    Bash
    Zsh
    Fish
    Nu

Installation Packaging status

Getting Started

  1. Install the emplace binary:

    Windows

    Scoop

    scoop install emplace
    

    NixOS

    nix-env -iA nixos.emplace
    

    Linux, MacOS, Windows

    Rust

    cargo install emplace
    

    Binary

    Download the latest binary from releases for your OS and put it somewhere in your PATH.

  2. 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
    

    Nu

    Run the following in your shell:

    emplace init nu | config set_into prompt
    
  3. 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.

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 wget
# -- or --
sudo dnf install htop
# -- or --
guix install 0ad
# -- or --
gem install aasm-diagram
# -- or --
go get colorgo
# -- or --
pkg install nginx

Synchronizing On Another Machine

Just invoke emplace install, and you will be prompted with the packages to install:

emplace install

History Analysis

You can also parse history files, this will try to extract installation commands from each line.

Bash & Zsh

emplace history $HISTFILE

Fish

emplace history ~/.local/share/fish/fish_history

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

🤔

Ken Tobias

📦

Adam Stephens

🐛

omar

🐛

5c0tt-b0t

🤔 🐛

Modded Gamers

🐛

John Vandenberg

🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].