#config-file #install #configure #packages #link #dst #src

bin+lib ipa

Another dotfiles manager that can install and configure your packages

1 unstable release

0.3.0 Jan 1, 2021

#605 in Configuration

Custom license

29KB
777 lines

ipa

GitHub Workflow Status License Lastest Version

Ipa is another dotfiles manager, that can be used to install and configure (only to Arch Linux installation for now) programs using a configuration file.

Motivation

The principal motivation with this project is to learn about Rust development and create a tool that can be used.

Installation

You can install ipa using prebuilt binaries from GitHub release page. Make sure that glibc is installed

Configuration

Ipa use a yaml configuration file that you can describe all packages and config files that you want to install. The configuration file is divided between groups, so you can create groups of configs and setup them individually latter.

Example

gui: # group gui
  - link:
      src: ~/.dotfiles/config/i3blocks/config
      dst: ~/.config/i3blocks/config

  - package:
      name: i3
    link:
      src: ~/.dotfiles/config/i3/config
      dst: ~/.config/i3/config

  - shell:
      command: git clone https://github.com/vivien/i3blocks-contrib ~/.config/i3blocks/

dev: # group dev
  - link:
      src: ~/.dotfiles/config/git/gitconfig
      dst: ~/.gitconfig
      relink: true

  - package:
      name: neovim
    link:
      src: ~/.dotfiles/config/nvim
      dst: ~/.config/nvim/
      relink: true

    - package:
        name: tmux
      link:
          src: ~/.dotfiles/tmux/tmux.conf
          dst: ~/.tmux.conf
      shell:
          command: git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Ipa will search for file called dotfiles.yml on the root of directory, so you can just call ipa, but, you can use the flag -f too specify a custom file name.

Options

You can configure ipa to install packages and create symbolic links of your config files.

The link is responsible for creating symbolically links. If necessary, items can be configured to be relinked, overwriting the current files. Environment variables are automatically expanded if used. If the directory of destination file does not exists, ipa will create automatically, if you want disable this behaviour you can disable with create: false

Format

Parameter Description
src Source of config file to create a symbolically link.
dst Destination config file to be created.
relink Force overwriting file if allready exists (Default false).
create Create sub directory in dst path if not exists (Default true).

Example

some_group:
    link:
        - src: ~/.dotfiles/config/ # Will link all files into ~/.config
          dst: ~/.config
          relink: true

Package

The package is responsible for installing the programs.

Format

Parameter Description
name Name of the package.

Example

some_group:
    package:
        - name: neovim

Shell

The shell is responsible to execute bash scripts

Format

Parameter Description
command Bash command to execute.

Example

some_group:
    shell:
        - command: nvim +PlugInstall +qall

Usage

Install all sessions of config file.

$ ipa -f config.yml

Install only packages/links that have group dev

$ ipa -f config.yml --only dev

Install only packages/links that dont't have group dev

$ ipa -f config.yml --except dev

License

MIT

Dependencies

~3–11MB
~110K SLoC