Go to file
xeruf 61dd6f1a76 fix: document exit codes and flags 2022-07-04 13:51:24 +02:00
handlers feat: rename managers to handlers and respect environment 2022-02-08 15:57:42 +01:00
packages Update packages & sources 2020-06-21 16:20:30 +02:00
README.md docs: update documentation 2022-02-08 15:46:50 +01:00
handlers.available feat: rename managers to handlers and respect environment 2022-02-08 15:57:42 +01:00
instalee fix: document exit codes and flags 2022-07-04 13:51:24 +02:00
instalee.1 fix: document exit codes and flags 2022-07-04 13:51:24 +02:00
sources Update packages & sources 2020-06-21 16:20:30 +02:00

README.md

instalee

Inspired by pass and the Unix philosophy comes a small POSIX-compliant shell script to aid in setting up and keeping installed packages on machines in sync. Central feature is the modular directory structure that can handle everything from native package managers over installation from source to copying or executing scripts from a URL. Similar as in tldr, creating alternative frontends is easy and appreciated.

Usage

Configuration

All configuration is stored in INSTALEE_HOME which defaults to $XDG_CONFIG_HOME/instalee.

First, customize the handlers available on your system in $INSTALEE_HOME/handlers.available which is a newline-separated list of values that usually correspond to subdirectories of the handlers directory. The order determines the preference in which the handlers are consulted.

The following should be kept in mind when configuring instalee

  • handlers.available is a system-specific file, for sensible syncing across many different machines a mechanism such as yasm alternate files can prove useful.
  • collections are usually personal, but system-agnostic
  • handlers and packages need to be attuned, as the package entry format needs to fit the handler definitions. These may be obtained from a trusted source or configured personally as well.

This repository contains an example configuration as used by the author. See the man page for more details.

Installation

instalee <target>

A target may either be a package or a collection. Instalee first checks for a collections/<target> file. A collection is a newline-separated list of packages to install, which instalee then resolves individually.

When there is no corresponding collection, instalee searches for the first available handler with a corresponding entry at packages/<target>/<handler>, piping it into the handler to install the package. The package definition may be an empty file (thus simply indicating the availability of a package for a handler), in which case the name of the package is passed to the handler.

Note that both collections and package entries can be executable files, in which case instalee will execute them and use their output instead, so watch the file permissions! If an available handler has no definition in handlers, the package file has to be executable, as instalee will then simply execute it. This handler is usually named custom, though that is no requirement.

Handlers

Though not required, a typical handler will accept a newline-separated list of packages to install, enabling batching and the consolidation of interdependent packages into one unit.

What instalee is not

  • a (central) package repository containing package sources
  • a package manager that can inspect or remove packages

Planned

  • detection mechanism for handlers and features (e.g. whether they support batching)
  • helper/hook for adding packages to collections upon install (at least for pacman)