working stowing for system drives and user space
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
HOME_TARGET := $(HOME)
|
||||
HOME_TARGET ?= $(HOME)
|
||||
SYSTEM_DIRS := etc usr var opt boot
|
||||
PACKAGES := $(patsubst %/,%,$(wildcard */))
|
||||
|
||||
.PHONY: check-stow pull-updates unlink link
|
||||
|
||||
.PHONY: check-stow
|
||||
check-stow:
|
||||
@command -v stow >/dev/null 2>&1 && { \
|
||||
echo "✅ stow already installed"; \
|
||||
@@ -35,23 +38,103 @@ check-stow:
|
||||
;; \
|
||||
esac
|
||||
|
||||
.PHONY: pull-updates
|
||||
pull-updates:
|
||||
@echo "Pulling all recent updates"
|
||||
@git pull origin main
|
||||
@git submodule update --recursive --remote
|
||||
|
||||
.PHONY: link
|
||||
unlink:
|
||||
@echo "Unlinking dotfiles to machine"
|
||||
@for pkg in $(PACKAGES); do \
|
||||
echo ">>> Unstowing package: $$pkg"; \
|
||||
for subdir in "$$pkg"/* "$$pkg"/.[!.]*; do \
|
||||
[ -d "$$subdir" ] || continue; \
|
||||
sub="$${subdir##*/}"; \
|
||||
is_sys=0; \
|
||||
for sys in $(SYSTEM_DIRS); do \
|
||||
[ "$$sub" = "$$sys" ] && is_sys=1 && break; \
|
||||
done; \
|
||||
if [ "$$is_sys" -eq 1 ]; then \
|
||||
echo " [SYSTEM] Unstowing $$pkg/$$sub from $$sub"; \
|
||||
sudo stow -D -d "$$pkg" -t "/$$sub" "$$sub"; \
|
||||
else \
|
||||
echo " [USER] Unstowing $$pkg/$$sub from $(HOME_TARGET)/$$sub"; \
|
||||
stow -D -d "$$pkg" -t "$(HOME_TARGET)/$$sub" "$$sub"; \
|
||||
fi; \
|
||||
done; \
|
||||
done
|
||||
|
||||
link: check-stow
|
||||
@echo "Linking dotfiles to machine"
|
||||
@for pkg in *; do \
|
||||
[ -d "$$pkg" ] || continue; \
|
||||
echo "📦 stowing $$pkg"; \
|
||||
if [ -d "$$pkg/etc" ] || [ -d "$$pkg/usr" ] || [ -d "$$pkg/mnt" ]; then \
|
||||
echo "[System] Stowing '$$pkg' to /..."; \
|
||||
sudo stow -R "$$pkg" -t / --adopt; \
|
||||
else \
|
||||
echo "[User] Stowing '$$pkg' to $(HOME_TARGET)..."; \
|
||||
stow -R "$$pkg" -t "$(HOME_TARGET)" --adopt; \
|
||||
fi; \
|
||||
@for pkg in $(PACKAGES); do \
|
||||
echo ">>> Processing package: $$pkg"; \
|
||||
for subdir in "$$pkg"/* "$$pkg"/.[!.]*; do \
|
||||
[ -d "$$subdir" ] || continue; \
|
||||
sub="$${subdir##*/}"; \
|
||||
is_sys=0; \
|
||||
for sys in $(SYSTEM_DIRS); do \
|
||||
[ "$$sub" == "$$sys" ] && is_sys=1 && break; \
|
||||
done; \
|
||||
if [ "$$is_sys" -eq 1 ]; then \
|
||||
echo " [System] Stowing $$pkg/$$sub to $$sub"; \
|
||||
sudo stow -d "$$pkg" -t "/$$sub" "$$sub"; \
|
||||
else \
|
||||
echo " [USER] Stowing $$pkg/$$sub to $(HOME_TARGET)/$$sub"; \
|
||||
stow -d "$$pkg" -t "$(HOME_TARGET)/$$sub" "$$sub"; \
|
||||
fi; \
|
||||
done; \
|
||||
done
|
||||
|
||||
# # Define variables
|
||||
# HOME_TARGET ?= $(HOME)
|
||||
# # Space-separated list of directories that should go to the system root
|
||||
# SYSTEM_DIRS := etc usr var opt boot
|
||||
#
|
||||
# # Find all top-level directories in your dotfiles repo (e.g., 'systemd', 'nvim')
|
||||
# PACKAGES := $(patsubst %/,%,$(wildcard */))
|
||||
#
|
||||
# .PHONY: all stow unstow
|
||||
#
|
||||
# all: stow
|
||||
#
|
||||
# stow:
|
||||
# @for pkg in $(PACKAGES); do \
|
||||
# echo ">>> Processing package: $$pkg"; \
|
||||
# for subdir in "$$pkg"/* "$$pkg"/.[!.]*; do \
|
||||
# [ -d "$$subdir" ] || continue; \
|
||||
# sub="$${subdir##*/}"; \
|
||||
# is_sys=0; \
|
||||
# for sys in $(SYSTEM_DIRS); do \
|
||||
# [ "$$sub" = "$$sys" ] && is_sys=1 && break; \
|
||||
# done; \
|
||||
# if [ "$$is_sys" -eq 1 ]; then \
|
||||
# echo " [System] Stowing $$pkg/$$sub to /$$sub"; \
|
||||
# sudo mkdir -p "/$$sub"; \
|
||||
# sudo stow -d "$$pkg" -t "/$$sub" "$$sub"; \
|
||||
# else \
|
||||
# echo " [User] Stowing $$pkg/$$sub to $(HOME_TARGET)/$$sub"; \
|
||||
# mkdir -p "$(HOME_TARGET)/$$sub"; \
|
||||
# stow -d "$$pkg" -t "$(HOME_TARGET)/$$sub" "$$sub"; \
|
||||
# fi; \
|
||||
# done; \
|
||||
# done
|
||||
#
|
||||
# unstow:
|
||||
# @for pkg in $(PACKAGES); do \
|
||||
# echo ">>> Unstowing package: $$pkg"; \
|
||||
# for subdir in "$$pkg"/* "$$pkg"/.[!.]*; do \
|
||||
# [ -d "$$subdir" ] || continue; \
|
||||
# sub="$${subdir##*/}"; \
|
||||
# is_sys=0; \
|
||||
# for sys in $(SYSTEM_DIRS); do \
|
||||
# [ "$$sub" = "$$sys" ] && is_sys=1 && break; \
|
||||
# done; \
|
||||
# if [ "$$is_sys" -eq 1 ]; then \
|
||||
# echo " [System] Unstowing $$pkg/$$sub from /$$sub"; \
|
||||
# sudo stow -D -d "$$pkg" -t "/$$sub" "$$sub"; \
|
||||
# else \
|
||||
# echo " [User] Unstowing $$pkg/$$sub from $(HOME_TARGET)/$$sub"; \
|
||||
# stow -D -d "$$pkg" -t "$(HOME_TARGET)/$$sub" "$$sub"; \
|
||||
# fi; \
|
||||
# done; \
|
||||
# done
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[Unit]
|
||||
Description=Fetch NAS credentials from 1Password
|
||||
After=graphical-session.target
|
||||
After=op-cli-signin.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
|
||||
Reference in New Issue
Block a user