2 releases
0.1.1 | Feb 23, 2024 |
---|---|
0.1.0 | Oct 10, 2023 |
#2938 in Command line utilities
55 downloads per month
Used in envhub
12KB
262 lines
EnvHub is a simple tool to manage dotfiles and packages accross multiple machines.
Written in Rust, internally it uses nix/homebrew/pkgx/devbox to manage packages and home-manager/stow to manage dotfiles.
🚚 Installation
Using bash :
curl -sSL https://install.envhub.sh | bash
Using Cargo :
cargo install envhub
Using Nix :
nix profile install --experimental-features "nix-command flakes" github:tsirysndr/envhub
Compile from source :
git clone https://github.com/tsirysndr/envhub.git
cd envhub
nix develop --experimental-features "nix-command flakes"
cargo install --path crates/cli
envhub --help
Using Homebrew :
brew install tsirysndr/tap/envhub
Or download the latest release for your platform here.
🚀 Quick Start
Initialize a new environment :
envhub init
It will create a new envhub.hcl
file and a dotfiles
directory in the current directory.
You can then edit the envhub.hcl
file to add packages and add dotfiles to the dotfiles
directory.
Enable the environment :
envhub use
📚 Example
The following example will install the hello
package, set the EDITOR
environment variable to vim
, and copy the .screenrc
and gradle.properties
files from the current directory to the home directory.
# Path: envhub.hcl
packages = [
"hello"
]
envs {
"EDITOR" = "vim"
}
file ".screenrc" {
source = ".screenrc"
}
file ".gradle/gradle.properties" {
content = "org.gradle.daemon=true"
}
See demo and examples for a more complete example.
As a GitHub Action
You can use EnvHub as a GitHub Action to manage your dotfiles and packages in your CI/CD workflow.
- uses: tsirysndr/setup-envhub@v1
with:
version: 'v0.2.16'
- run: envhub --help
Dependencies
~5MB
~99K SLoC