envhub

Crates.ioenvhub
lib.rsenvhub
version0.2.18
sourcesrc
created_at2023-10-10 09:01:03.161083
updated_at2024-04-03 14:59:46.585581
descriptionManage your dotfiles and packages with ease.
homepage
repositoryhttps://github.com/tsirysndr/envhub
max_upload_size
id998941
size74,946
Tsiry Sandratraina (tsirysndr)

documentation

README

EnvHub

FlakeHub flakestry.dev crates downloads ci discord

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.

Made with VHS

🚚 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
Commit count: 134

cargo fmt