#+TITLE: Install * Stow all modules Basically get all folders excluding the '.git' and '.' folder, then just stow them. #+BEGIN_SRC sh folders=`find . -maxdepth 1 -type 'd' -not -name '.git' -not -name '.'`; # Symlink profiles for pkg in $folders; do echo "Stowing " $pkg; stow $pkg done #+END_SRC * Emacs support ** Get all modules in Dotfiles The main function used to retrieve all the stowable modules in the Dotfiles directory. #+BEGIN_SRC elisp (defun get-modules () (interactive) (cdr (reverse (split-string (shell-command-to-string "find . -maxdepth 1 -type 'd' -not -name '.git' -not -name '.'") "\n")))) #+END_SRC ** Stow module Little elisp snippet to stow a specific module in the Dotfiles folder using ivy. #+BEGIN_SRC elisp (ivy-read "Stow module: " (get-modules) :require-match t :action (lambda (choice) (async-shell-command (format "stow %s" choice) "*stow-output*" "*stow-error*"))) #+END_SRC ** Delete module #+BEGIN_SRC elisp (ivy-read "Delete module: " (get-modules) :require-match t :action (lambda (choice) (async-shell-command (format "stow -D %s" choice) "*stow-output*" "*stow-error*"))) #+END_SRC * Generate user directories This makes some useful directories that are used by the system and/or by me. I split these into two sections so you can execute the ones you think are useful. ** System folders #+BEGIN_SRC sh mkdir ~/.local; mkdir ~/.local/src; mkdir ~/.local/bin; mkdir ~/.config; #+END_SRC ** User folders Firstly the essentials for a good user experience™ #+BEGIN_SRC sh mkdir ~/Downloads ~/Pictures ~/Music; #+END_SRC Then generate the other stuff that I use (mostly). #+BEGIN_SRC sh mkdir ~/Text; mkdir ~/School; mkdir ~/Code; mkdir ~/Code/Learning; mkdir ~/Code/Projects; mkdir ~/Code/Templates; #+END_SRC * Clone templates These are templates coded by me (MIT licensed) which are basically boilerplate helpers for differing languages. They allow me to quickly start coding up projects as they remove the hassle of setting the build system and source directories up manually. They're cloned into =~/Code/Templates= not only so you can hack on them as you wish but also so you can generate templates even when offline just by copying the template you want and removing/replacing the '.git' directory in it. #+BEGIN_SRC sh declare -a templates=("CTemplate" "CPPTemplate" "PythonTemplate" "NodeTemplate" "ArduinoTemplate"); for template in ${templates[@]}; do git clone https://github.com/odavep/$template ~/Code/Templates/$template; done #+END_SRC