7 releases
0.2.18 | Apr 3, 2024 |
---|---|
0.2.17 | Mar 15, 2024 |
0.2.12 | Feb 23, 2024 |
0.2.2 |
|
0.1.0 |
|
#1561 in Command line utilities
77KB
2K
SLoC
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 Dagger Module
Call from the command line:
dagger -m github.com/tsirysndr/daggerverse/envhub call \
use --environment github:tsirysndr/dotfiles-example \
--src .
call from a Fluent CI module:
import { use } from 'jsr:@fx/envhub';
await use(
".",
"github:tsirysndr/dotfiles-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.18'
- run: envhub --help
Dependencies
~16–27MB
~385K SLoC