nvim-config
This commit is contained in:
parent
3338d39206
commit
ad5d34530f
14 changed files with 563 additions and 33 deletions
104
Makefile
Normal file
104
Makefile
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
.PHONY: install update clean backup install-fonts install-brew link help
|
||||
|
||||
NVIM_DIR := $(HOME)/.config/nvim
|
||||
BACKUP_DIR := $(HOME)/.config/nvim-backup-$(shell date +%Y%m%d-%H%M%S)
|
||||
|
||||
# Detect OS
|
||||
UNAME_S := $(shell uname -s)
|
||||
|
||||
# Default Nerd Fonts to install (can be overridden)
|
||||
NERD_FONTS ?= font-jetbrains-mono-nerd-font font-fira-code-nerd-font font-hack-nerd-font font-meslo-lg-nerd-font
|
||||
|
||||
help:
|
||||
@echo "Neovim Configuration Management"
|
||||
@echo "================================"
|
||||
@echo "install - Install/sync all plugins via lazy.nvim"
|
||||
@echo "update - Update all plugins to latest versions"
|
||||
@echo "clean - Clean plugin cache and unused plugins"
|
||||
@echo "backup - Backup current configuration"
|
||||
@echo "link - Create symlink from current directory to ~/.config/nvim"
|
||||
@echo "install-fonts - Install Nerd Fonts (macOS: via brew)"
|
||||
@echo "install-brew - Install Homebrew (macOS only)"
|
||||
@echo ""
|
||||
@echo "Environment Variables:"
|
||||
@echo " NERD_FONTS - Space-separated list of fonts to install"
|
||||
@echo " Default: JetBrains Mono, Fira Code, Hack, Meslo LG"
|
||||
|
||||
install:
|
||||
@echo "Installing/syncing Neovim plugins..."
|
||||
nvim --headless "+Lazy! sync" +qa
|
||||
@echo "✓ Plugins installed successfully"
|
||||
|
||||
update:
|
||||
@echo "Updating Neovim plugins..."
|
||||
nvim --headless "+Lazy! update" +qa
|
||||
@echo "✓ Plugins updated successfully"
|
||||
|
||||
clean:
|
||||
@echo "Cleaning plugin cache..."
|
||||
nvim --headless "+Lazy! clean" +qa
|
||||
@echo "✓ Cache cleaned successfully"
|
||||
|
||||
backup:
|
||||
@echo "Backing up configuration to $(BACKUP_DIR)..."
|
||||
@cp -r $(NVIM_DIR) $(BACKUP_DIR)
|
||||
@echo "✓ Backup created at $(BACKUP_DIR)"
|
||||
|
||||
link:
|
||||
@echo "Creating symlink to ~/.config/nvim..."
|
||||
@if [ -e $(NVIM_DIR) ] || [ -L $(NVIM_DIR) ]; then \
|
||||
if [ -L $(NVIM_DIR) ]; then \
|
||||
current_target=$$(readlink $(NVIM_DIR)); \
|
||||
if [ "$$current_target" = "$(CURDIR)" ]; then \
|
||||
echo "✓ Symlink already points to $(CURDIR)"; \
|
||||
exit 0; \
|
||||
fi; \
|
||||
fi; \
|
||||
echo "⚠ $(NVIM_DIR) already exists"; \
|
||||
backup_dir=$(HOME)/.config/nvim-backup-$$(date +%Y%m%d-%H%M%S); \
|
||||
echo "Creating backup at $$backup_dir..."; \
|
||||
mv $(NVIM_DIR) $$backup_dir; \
|
||||
echo "✓ Backup created at $$backup_dir"; \
|
||||
fi
|
||||
@mkdir -p $(HOME)/.config
|
||||
@ln -s $(CURDIR) $(NVIM_DIR)
|
||||
@echo "✓ Symlink created: $(NVIM_DIR) -> $(CURDIR)"
|
||||
|
||||
install-brew:
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
@if ! command -v brew >/dev/null 2>&1; then \
|
||||
echo "Installing Homebrew..."; \
|
||||
/bin/bash -c "$$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"; \
|
||||
echo "✓ Homebrew installed successfully"; \
|
||||
else \
|
||||
echo "✓ Homebrew already installed"; \
|
||||
fi
|
||||
else
|
||||
@echo "⚠ Homebrew installation is only supported on macOS"
|
||||
endif
|
||||
|
||||
install-fonts: install-brew
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
@echo "Installing Nerd Fonts on macOS..."
|
||||
@for font in $(NERD_FONTS); do \
|
||||
echo "Installing $$font..."; \
|
||||
brew install --cask $$font || echo "⚠ Failed to install $$font"; \
|
||||
done
|
||||
@echo "✓ Nerd Fonts installation complete"
|
||||
else ifeq ($(UNAME_S),Linux)
|
||||
@echo "Installing Nerd Fonts on Linux..."
|
||||
@mkdir -p $(HOME)/.local/share/fonts
|
||||
@for font in $(NERD_FONTS); do \
|
||||
font_name=$$(echo $$font | sed 's/font-//;s/-nerd-font//;s/-/ /g'); \
|
||||
echo "Downloading $$font_name..."; \
|
||||
curl -fLo "$(HOME)/.local/share/fonts/$$font.zip" \
|
||||
"https://github.com/ryanoasis/nerd-fonts/releases/latest/download/$$font_name.zip" || \
|
||||
echo "⚠ Failed to download $$font"; \
|
||||
unzip -o "$(HOME)/.local/share/fonts/$$font.zip" -d "$(HOME)/.local/share/fonts/" 2>/dev/null || true; \
|
||||
rm -f "$(HOME)/.local/share/fonts/$$font.zip"; \
|
||||
done
|
||||
@fc-cache -fv
|
||||
@echo "✓ Nerd Fonts installation complete"
|
||||
else
|
||||
@echo "⚠ Unsupported OS: $(UNAME_S)"
|
||||
endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue