All Projects → ellipsis → Ellipsis

ellipsis / Ellipsis

Licence: mit
◦◦◦ Ellipsis is a package manager for dotfiles.

Programming Languages

shell
77523 projects
bash
514 projects

Projects that are alternatives of or similar to Ellipsis

Stow
GNU Stow - mirror of savannah git repository occasionally with more bleeding-edge branches
Stars: ✭ 207 (-35.31%)
Mutual labels:  dotfiles, package-manager
Pearl
Pearl is a lightweight package manager for automating reproducible environments between different systems (Linux and OSX). It can be used for dotfiles, plugins, programs and any form of code accessible via git.
Stars: ✭ 166 (-48.12%)
Mutual labels:  dotfiles, package-manager
Gps
your dependencies have arrived
Stars: ✭ 275 (-14.06%)
Mutual labels:  package-manager
Universe
The Mesosphere Universe package repository.
Stars: ✭ 308 (-3.75%)
Mutual labels:  package-manager
Dotfiles Windows
dotfiles for Windows, including Developer-minded system defaults. Built in PowerShell
Stars: ✭ 288 (-10%)
Mutual labels:  dotfiles
Dotfiles
My config files
Stars: ✭ 276 (-13.75%)
Mutual labels:  dotfiles
Kiss
KISS - Package Manager
Stars: ✭ 302 (-5.62%)
Mutual labels:  package-manager
Mac Setup
🛠️ Front end web development setup for macOS.
Stars: ✭ 265 (-17.19%)
Mutual labels:  dotfiles
Dotfiles
My OS X environment
Stars: ✭ 316 (-1.25%)
Mutual labels:  dotfiles
Dotfiles
My Dotfiles
Stars: ✭ 289 (-9.69%)
Mutual labels:  dotfiles
Dotly
🌚 Modular and easy to customize dotfiles framework
Stars: ✭ 301 (-5.94%)
Mutual labels:  dotfiles
0install
the core 0install package
Stars: ✭ 282 (-11.87%)
Mutual labels:  package-manager
Dotfiles
●📄 Ryan McGeary's configuration shiznit that makes him productive
Stars: ✭ 278 (-13.12%)
Mutual labels:  dotfiles
Dotfiles
Configuration files I use on my main machine
Stars: ✭ 299 (-6.56%)
Mutual labels:  dotfiles
Dotfiles
⚙ Dotfiles for Linux &macOS
Stars: ✭ 275 (-14.06%)
Mutual labels:  dotfiles
Volta
Volta: JS Toolchains as Code. ⚡
Stars: ✭ 4,810 (+1403.13%)
Mutual labels:  package-manager
.dotfiles
There's no place like ~ !
Stars: ✭ 265 (-17.19%)
Mutual labels:  dotfiles
Dotfiles
My configuration. Minimalist, but helps save a few thousand keystrokes a day.
Stars: ✭ 284 (-11.25%)
Mutual labels:  dotfiles
Berry
📦🐈 Active development trunk for Yarn ⚒
Stars: ✭ 4,423 (+1282.19%)
Mutual labels:  package-manager
Conan Center Index
Recipes for the ConanCenter repository
Stars: ✭ 310 (-3.12%)
Mutual labels:  package-manager

Ellipsis Build Status Documentation status Latest tag Gitter chat

 _    _    _
/\_\ /\_\ /\_\
\/_/ \/_/ \/_/   …because $HOME is where the <3 is!

Ellipsis is a package manager for dotfiles.

Features

  • Creating new packages is trivial (any git repository is already a package).
  • Modular configuration files are easier to maintain and share with others.
  • Allows you to quickly see which dotfiles have been modified, and keep them updated and in-sync across systems.
  • Adding new dotfiles to your collection can be automated with ellipsis add.
  • Cross platform, known to work on Mac OS X, Linux, FreeBSD and even Cygwin.
  • Large test suite to ensure your $HOME doesn't get ravaged.
  • Completely customizable.
  • Works with existing dotfiles!

Install

Requirements: bash, curl, git

Clone and symlink or use handy-dandy installer:

# Manual install
$ git clone https://github.com/ellipsis/ellipsis .ellipsis

# Using installer
$ curl ellipsis.sh | sh

...no you didn't read that wrong, the ellipsis.sh website also doubles as the installer

With the installer you can also specify which packages to install by setting the PACKAGES variable, i.e.:

$ curl https://ellipsis.sh | PACKAGES='vim zsh' sh

Add ~/.ellipsis/bin to your $PATH (or symlink somewhere convenient) and start managing your dotfiles in style :)

As of version 1.7.3 you can also use the init system to automatically setup you environment. As a bonus it will allow you to use the powerful pkg.init hook to do the same for your packages.

Usage

Ellipsis comes with no dotfiles out of the box. To install packages, use ellipsis install. Packages can be specified by github-user/repo or full ssh/git/http(s) urls:

$ ellipsis install ssh://github.com/zeekay/private.git
$ ellipsis install zeekay/vim
$ ellipsis install zsh

...all work. By convention username/package and package are aliases for https://github.com/username/dot-package. (customizable using ELLIPSIS_PREFIX)

For full usage information you can read the docs or ask help from the command line with the -h option.

Configuration

You can customize ellipsis by exporting a few different variables:

Variable Description
GITHUB_USER / ELLIPSIS_USER Customizes whose dotfiles are installed when you ellipsis install without specifying user or a full repo url. Defaults to $(git config github.user) or whoami.
ELLIPSIS_REPO Customize location of ellipsis repo cloned during a curl-based install. Defaults to https://github.com/ellipsis/ellipsis.
ELLIPSIS_PROTO Customizes which protocol new packages are cloned with, you can specify https,ssh, git. Defaults to https.
ELLIPSIS_PREFIX Customizes the prefix of ellipsis configuration packages (default: dot-).
ELLIPSIS_HOME Customize which folder files are symlinked into, defaults to $HOME. (Mostly useful for testing)
ELLIPSIS_PATH Customize where ellipsis lives on your filesystem, defaults to ~/.ellipsis.
ELLIPSIS_PACKAGES Customize where ellipsis installs packages on your filesystem, defaults to ~/.ellipsis/packages.
ELLIPSIS_LOGFILE Customize location of the logfile, defaults to /tmp/ellipsis.log.
export ELLIPSIS_USER="zeekay"
export ELLIPSIS_PROTO="ssh"
export ELLIPSIS_PATH="~/.el"

Packages

A package is any repo with files you want to symlink into $ELLIPSIS_HOME (typically $HOME). By default all of a repository's non-hidden files (read: not beginning with a .) will naively be linked into place, with the exception of a few common text files (README, LICENSE, etc).

You can customize how ellipsis interacts with your package by adding an ellipsis.sh file to the root of your project. Here's an example of a complete ellipsis.sh file:

#!/usr/bin/env bash

Yep, that's it :) If all you want to do is symlink some files into $HOME, adding an ellipsis.sh to your package is completely optional. But what if you need more? That's where hooks come in...

Docs

Please consult the docs for more information.

Specific parts that could be off interest:

Development

Pull requests welcome! New code should follow the existing style (and ideally include tests).

Suggest a feature or report a bug? Create an issue!

License

Ellipsis is open-source software licensed under the MIT license.

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