MODULES=xmodmap emacs xdg shepherd STOW = stow EMACS = emacs SCHEME_IMPLEMENTATION = guile define tangle = @echo -e "\e[35mOBT\e[0m" $< @$(EMACS) -quick -batch \ -eval "(package-initialize)" \ -load ob-tangle \ -eval "(setq sh-make-vars-local nil)" \ -eval "(setq geiser-default-implementation '$(SCHEME_IMPLEMENTATION))" \ -eval "(org-babel-tangle-file \"$<\" \"$(PWD)/$@\" \"$(1)\")" endef .PHONY: all clean $(MODULES) zsh all: $(MODULES) install: cp --recursive --verbose build/. ~/ clean: rm -r build zsh: $(MAKE) -C $@ before-%-install: # Dummy recipe @true %-stow: % before-%-install $(STOW) $< %-install: %-stow # Dummy recipe @true %-uninstall: $(STOW) -D $(subst -uninstall,,$@) # Picom picom: picom/.config/picom.conf picom/.config/picom.conf: picom/.config/picom.org $(call tangle,conf) picom-clean: rm -f picom/.config/picom.conf ######### # Emacs # ######### emacs: build/.config/shepherd/init.d/ build/.config/shepherd/init.d/emacs.scm \ emacs/.config/emacs/init.elc build/.config/shepherd/init.d/emacs.scm: emacs/.config/shepherd/init.d/emacs.org $(call tangle) ########### # Xmodmap # ########### xmodmap: build/ build/.Xmodmap build/.Xmodmap: xmodmap/Xmodmap.org $(call tangle,fundamental) xmodmap-clean: rm -f build/.Xmodmap ######### # Cower # ######### cower: cower/.config/cower/config cower/.config/cower/config: cower/.config/cower/config.org $(call tangle,conf-unix) cower-clean: rm -f cower/.config/cower/config ############# # Mowedline # ############# mowedline: mowedline/.config/mowedline/init.scm mowedline/.config/mowedline/init.scm: SCHEME_IMPLEMENTATION = chicken mowedline/.config/mowedline/init.scm: mowedline/.config/mowedline/init.org $(call tangle,scheme) mowedline-clean: rm -f mowedline/.config/mowedline/init.scm ######### # Dunst # ######### dunst: dunst/.config/dunst/dunstrc dunst/.config/dunst/dunstrc: dunst/.config/dunst/dunstrc.org $(call tangle,conf-unix) dunst-clean: rm -f dunst/.config/dunst/dunstrc # X11 x11-install: lib-install x11/dot-x11-0-1-any.pkg.tar.xz x11/dot-x11-0-1-any.pkg.tar.xz: x11/PKGBUILD cd x11 && makepkg -sicf ####### # XDG # ####### xdg: build/.config/ build/.config/mimeapps.list build/.config/user-dirs.dirs \ build/.config/user-dirs.locale build/.config/mimeapps.list: xdg/.config/mimeapps.list.org $(call tangle) build/.config/user-dirs.dirs: xdg/.config/user-dirs.dirs.org $(call tangle) build/.config/user-dirs.locale: xdg/.config/user-dirs.locale.org $(call tangle) # Shepherd shepherd: build/.config/shepherd/ build/.config/shepherd/init.scm build/.config/shepherd/init.scm: shepherd/.config/shepherd/init.org $(call tangle) # Helper %.el: %.org $(call tangle,emacs-lisp) %.elc: %.el @echo -e "\e[36mELC\e[0m" $< $(EMACS) -batch -f batch-byte-compile $< %: %.org $(call tangle) %/: mkdir -p $@