Add a BSD Makefile to set up dotfiles
This commit is contained in:
parent
8cdb396b82
commit
c1fb9721bf
1 changed files with 146 additions and 0 deletions
146
Makefile
Normal file
146
Makefile
Normal file
|
|
@ -0,0 +1,146 @@
|
|||
# Makefile
|
||||
# Eryn Wells <eryn@erynwells.me>
|
||||
#
|
||||
|
||||
.MAIN : essentials
|
||||
essentials : git-dotfiles nvim-dotfiles tmux-dotfiles zsh-dotfiles
|
||||
extras : emacs-dotfiles fish-dotfiles hg-dotfiles mutt-dotfiles nethack-dotfiles
|
||||
all : essentials extras
|
||||
|
||||
DOTFILES_ROOT ?= $(.PARSEDIR)
|
||||
|
||||
INSTALL != which install
|
||||
INSTALL_FLAGS := -ls
|
||||
|
||||
XDG_BIN_HOME ?= $(HOME)/.local/bin
|
||||
XDG_CONFIG_HOME ?= $(HOME)/.config
|
||||
XDG_STATE_HOME ?= $(HOME)/.local/state
|
||||
|
||||
# Colors
|
||||
BLUE = \\x1b[1;34m
|
||||
WHITE = \\x1b[1;37m
|
||||
RESET = \\x1b[0m
|
||||
|
||||
|
||||
link-dotfile : .USE
|
||||
@echo " [Linking] $(.TARGET)"
|
||||
$(INSTALL) $(INSTALL_FLAGS) $(.ALLSRC) $(.TARGET)
|
||||
|
||||
link-config-dir : .USE
|
||||
@echo " [Linking] $(.TARGET)"
|
||||
$(INSTALL) $(INSTALL_FLAGS) $(.ALLSRC) $(.TARGET)
|
||||
|
||||
mk-state-dir : .USE
|
||||
@echo " [Making] $(.TARGET)"
|
||||
$(INSTALL) -d $(.TARGET)
|
||||
|
||||
dotfile-group : .USE
|
||||
|
||||
missing-binary : .USE
|
||||
@echo "$(BLUE)==> $(WHITE)$(.TARGET:S/-dotfiles//)$(RESET)"
|
||||
@echo "binary not found"
|
||||
|
||||
|
||||
#
|
||||
# Essentials
|
||||
#
|
||||
# This are always linked because they're core utilities for my daily terminal
|
||||
# use.
|
||||
#
|
||||
|
||||
GIT_HOME := $(XDG_CONFIG_HOME)/git
|
||||
git-config-home : $(GIT_HOME)
|
||||
$(GIT_HOME) : link-config-dir $(DOTFILES_ROOT)/git
|
||||
|
||||
|
||||
$(HOME)/.nethackrc : link-dotfile $(DOTFILES_ROOT)/nethackrc
|
||||
|
||||
|
||||
NVIM_HOME := $(XDG_CONFIG_HOME)/nvim
|
||||
nvim-config-home : $(NVIM_HOME)
|
||||
$(NVIM_HOME) : link-config-dir $(DOTFILES_ROOT)/nvim
|
||||
|
||||
NVIM_STATE_DIR := $(XDG_STATE_HOME)/nvim
|
||||
NVIM_STATE_DIRS := \
|
||||
$(NVIM_STATE_DIR)/backup \
|
||||
$(NVIM_STATE_DIR)/shada \
|
||||
$(NVIM_STATE_DIR)/swap \
|
||||
$(NVIM_STATE_DIR)/undo
|
||||
|
||||
$(NVIM_STATE_DIRS) : mk-state-dir
|
||||
nvim-state-dirs : $(NVIM_STATE_DIRS)
|
||||
|
||||
|
||||
TMUX_HOME := $(XDG_CONFIG_HOME)/tmux
|
||||
tmux-config-home : $(TMUX_HOME)
|
||||
$(TMUX_HOME) : link-config-dir $(DOTFILES_ROOT)/tmux
|
||||
|
||||
|
||||
ZSH_CONFIG_FILES := $(HOME)/.zshenv $(HOME)/.zshrc $(HOME)/.zprofile
|
||||
$(HOME)/.zshenv : link-dotfile $(DOTFILES_ROOT)/zsh/zshenv
|
||||
$(HOME)/.zshrc : link-dotfile $(DOTFILES_ROOT)/zsh/zshrc
|
||||
$(HOME)/.zprofile : link-dotfile $(DOTFILES_ROOT)/zsh/zprofile
|
||||
|
||||
|
||||
git-dotfiles : dotfile-group git-config-home
|
||||
nvim-dotfiles : dotfile-group nvim-config-home nvim-state-dirs
|
||||
tmux-dotfiles : dotfile-group tmux-config-home
|
||||
zsh-dotfiles : dotfile-group $(ZSH_CONFIG_FILES)
|
||||
|
||||
|
||||
#
|
||||
# Extras
|
||||
#
|
||||
# These are only installed if the binaries already exist on the system.
|
||||
#
|
||||
|
||||
HAS_EMACS != which emacs >/dev/null && echo YES || echo NO
|
||||
HAS_FISH != which fish >/dev/null && echo YES || echo NO
|
||||
HAS_HG != which hg >/dev/null && echo YES || echo NO
|
||||
HAS_MUTT != which mutt >/dev/null && echo YES || echo NO
|
||||
HAS_NETHACK != which nethack >/dev/null && echo YES || echo NO
|
||||
|
||||
|
||||
.if $(HAS_EMACS) == "YES"
|
||||
EMACS_HOME := $(XDG_CONFIG_HOME)/emacs
|
||||
emacs-config-home : $(EMACS_HOME)
|
||||
$(EMACS_HOME) : link-config-dir $(DOTFILES_ROOT)/emacs
|
||||
emacs-dotfiles : dotfile-group emacs-config-home
|
||||
.else
|
||||
emacs-dotfiles : missing-binary
|
||||
.endif
|
||||
|
||||
|
||||
.if $(HAS_FISH) == "YES"
|
||||
FISH_HOME := $(XDG_CONFIG_HOME)/fish
|
||||
fish-config-home : $(FISH_HOME)
|
||||
$(FISH_HOME) : link-config-dir $(DOTFILES_ROOT)/fish
|
||||
fish-dotfiles : dotfile-group fish-config-home
|
||||
.else
|
||||
fish-dotfiles : missing-binary
|
||||
.endif
|
||||
|
||||
|
||||
.if $(HAS_HG) == "YES"
|
||||
$(HOME)/.hgrc : link-dotfile $(DOTFILES_ROOT)/hgrc
|
||||
hg-dotfiles : dotfile-group $(HOME)/.hgrc
|
||||
.else
|
||||
hg-dotfiles : missing-binary
|
||||
.endif
|
||||
|
||||
|
||||
.if $(HAS_MUTT) == "YES"
|
||||
MUTT_HOME := $(XDG_CONFIG_HOME)/mutt
|
||||
mutt-config-home : $(MUTT_HOME)
|
||||
$(MUTT_HOME) : link-config-dir $(DOTFILES_ROOT)/mutt
|
||||
mutt-dotfiles : dotfile-group mutt-config-home
|
||||
.else
|
||||
mutt-dotfiles : missing-binary
|
||||
.endif
|
||||
|
||||
|
||||
.if $(HAS_NETHACK) == "YES"
|
||||
nethack-dotfiles : print-heading $(HOME)/.nethackrc
|
||||
.else
|
||||
nethack-dotfiles : missing-binary
|
||||
.endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue