#+TITLE: Manafiles #+AUTHOR: Riyyi #+LANGUAGE: en #+OPTIONS: toc:nil Config file and package tracking utility. - Manage dotfiles and system config files. - Selectively comment and uncomment depending on machine configuration. - Store a list of all installed packages. - Install packages from a stored list. ** Installation This package is available through the AUR, linked here [[https://aur.archlinux.org/packages/manafiles-git/][manafiles-git]]. ** Building *** Build requirements + ~gcc-libs~ + (make) ~cmake~ + (make) ~git~ + (make) ~gzip~ + (make) ~nlohmann-json~ [[https://archlinux.org/packages/community/any/nlohmann-json/][arch]], [[https://packages.debian.org/search?keywords=nlohmann-json][debian]], [[https://packages.ubuntu.com/search?keywords=nlohmann-json][ubuntu]] + (optional) ~grep~ + (optional) ~pacman-contrib~ + (optional) ~apt-cache~, ~apt-mark~, ~dpkg-query~ The optional requirements are for the package tracking functionality. *** Build instructions #+BEGIN_SRC shell-script $ mkdir build $ cd build $ cmake .. $ make #+END_SRC *** Build installation #+BEGIN_SRC shell-script $ sudo make install #+END_SRC ** Usage *** Selectively comment and uncomment Config files can be pushed from the working directory to the system like so: #+BEGIN_SRC shell-script $ manafiles -Fs #+END_SRC When pushing files to the system, manafiles recognizes special blocks and comments or uncomments them depending on the machine's configuration. Such a block looks like this: #+BEGIN_SRC shell-script # >>> distro=arch hostname=arch-desktop user=anon export PATH="$PATH:$HOME/.local/bin" # <<< #+END_SRC This block uses all of the supported configurations, ~distro~, ~hostname~ and ~user~. These can be used in any combination and order. If *all* of the given configurations match, manafiles will make sure that the contents of the block are uncommented. If *any* of them do *not* match, then manafiles will make sure that the contents of the block are commented. *** COMMENT System config files *** COMMENT Exclude paths