nix-config/Makefile

54 lines
2.2 KiB
Makefile
Raw Normal View History

# New Start: A modern Arch workflow built with an emphasis on functionality.
# Copyright (C) 2018 Donovan Glover
#
# Usage:
# make Defaults to `make install`
# make install Installs dotfiles
# make uninstall Uninstalls dotfiles
# make prune Removes stale links
verbose ?= 2
NS_CODE_EXTENSIONS := dbaeumer.vscode-eslint EditorConfig.EditorConfig faustinoaq.crystal-lang \
naumovs.color-highlight PKief.material-icon-theme vscodevim.vim
NS_REPO_PATH := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
NS_STOW_OPTIONS := --dir="${NS_REPO_PATH}" --target="${HOME}" --no-folding --verbose=${verbose}
NS_STOW_PACKAGES := $(wildcard */)
NS_SUCCESS := "SUCCESS: Stow command executed succesfully!"
NS_STOW_COMMAND := $(if ${package},ns_stow_package,ns_stow_all)
ns_stow_package = \
echo "STATUS: Found package variable. Stow operation will be performed if it is a valid directory..."; \
test -d ${package} && \
(stow -${1} ${package} ${NS_STOW_OPTIONS} && \
echo ${NS_SUCCESS}) || \
echo "FAILURE: Not a valid package directory."
ns_stow_all = \
echo "STATUS: No package variable given. Performing stow operation on all directories..."; \
$(foreach package,$(NS_STOW_PACKAGES),stow -${1} $(package) ${NS_STOW_OPTIONS} &&) \
echo ${NS_SUCCESS}
.PHONY: install
install:
@$(call ${NS_STOW_COMMAND},S)
.PHONY: uninstall
uninstall:
@$(call ${NS_STOW_COMMAND},D)
.PHONY: prune
prune:
@$(call ${NS_STOW_COMMAND},R)
.PHONY: code-extensions
code-extensions:
@$(foreach extension,${NS_CODE_EXTENSIONS},code --install-extension ${extension} --force;)
.PHONY: enable-mpd
enable-mpd:
@systemctl --user enable --now mpd.service
.PHONY: enable-ssh-agent
enable-ssh-agent:
@systemctl --user enable --now ssh-agent.service