Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
c7b5d5a
adding tasks to work on rework
jrock2004 Feb 8, 2026
e38919c
feat: Production-ready installer with cross-platform package manageme…
jrock2004 Feb 8, 2026
c9823d4
feat: add polished UI/UX with gum integration (Phase 4) (#30)
jrock2004 Feb 9, 2026
bdbc7df
feat: add Linux support foundation (Phase 5) (#31)
jrock2004 Feb 9, 2026
80d5f9a
feat: Add WSL support (Phase 6) (#32)
jrock2004 Feb 9, 2026
be0c37b
docs: mark Phases 1-6 as complete in tasks.md
jrock2004 Feb 9, 2026
91597b4
feat: Complete Phase 7 - Modular architecture restructuring
jrock2004 Feb 10, 2026
565e02a
feat: Complete Phase 8 (Additional Features) and Phase 9 (Testing & C…
jrock2004 Feb 12, 2026
a2bfb01
docs: Complete Phase 10 documentation
jrock2004 Feb 12, 2026
20d1942
updating dep
jrock2004 Feb 12, 2026
800a12c
adding helper for vscode
jrock2004 Feb 12, 2026
9a36c02
disabling for now
jrock2004 Feb 13, 2026
ea47749
Merge branch 'main' of https://github.com/jrock2004/dotfiles
jrock2004 Feb 13, 2026
168c778
Fix interactive prompts silently failing when installed via `bash <(c…
Copilot Feb 19, 2026
06d9b42
Fix: curl install cancels immediately after OS selection (#35)
Copilot Feb 20, 2026
10e4bd7
Switch fzf shell integration to modern `fzf --zsh` approach (#36)
Copilot Feb 20, 2026
03a140a
Fix lua-language-server build failure: install ninja (#37)
Copilot Feb 20, 2026
a5d2970
lua: auto-install cmake when missing instead of skipping luaformatter…
Copilot Feb 20, 2026
a4c6262
[WIP] Fix stow installation issue in dotfiles (#39)
Copilot Feb 20, 2026
837e386
Initial plan
Copilot Feb 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .dotfiles.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Dotfiles Configuration File
# Copy to ~/.dotfiles.env and customize

# Installation behavior
FORCE_INSTALL=false
DRY_RUN=false
NON_INTERACTIVE=false

# Component selection (comma-separated)
# SKIP_COMPONENTS="rust,lua"
# ONLY_COMPONENTS="shell,neovim,tmux"

# Backup
BACKUP_DIR="$HOME/.dotfiles.backup.$(date +%Y%m%d_%H%M%S)"

# Package manager override (auto-detected if not set)
# PACKAGE_MANAGER="brew" # brew, apt, pacman, dnf, yum

# Logging
LOG_FILE="$HOME/.dotfiles/.install.log"

# Desktop environment (for Linux)
USE_DESKTOP_ENV=FALSE

# Operating system (usually auto-detected)
# OS="mac" # mac or linux
138 changes: 138 additions & 0 deletions .github/workflows/test-install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
name: Test Installation

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
workflow_dispatch:

jobs:
shellcheck:
name: ShellCheck
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Run ShellCheck
run: |
sudo apt-get update
sudo apt-get install -y shellcheck
chmod +x scripts/test-shellcheck.sh
./scripts/test-shellcheck.sh

test-macos:
name: Test on macOS
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Run installation (dry-run)
run: |
chmod +x install.sh
./install.sh --dry-run --non-interactive

- name: Display system info
run: |
echo "=== System Information ==="
sw_vers
echo "=== Homebrew ==="
which brew || echo "Homebrew not found"
echo "=== Shell ==="
echo $SHELL

test-ubuntu:
name: Test on Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl git

- name: Run installation (dry-run)
run: |
chmod +x install.sh
./install.sh --dry-run --non-interactive

- name: Display system info
run: |
echo "=== System Information ==="
lsb_release -a
echo "=== Shell ==="
echo $SHELL

test-ubuntu-full:
name: Test Full Installation on Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl git stow

- name: Run full installation
run: |
chmod +x install.sh
# Skip components that require user interaction or are macOS-only
./install.sh --non-interactive --skip homebrew,vscode,fonts,macos-defaults

- name: Run integration tests
continue-on-error: true # Don't fail the job on integration test failures for now
run: |
chmod +x scripts/test-integration.sh
./scripts/test-integration.sh

- name: Display installed tools
run: |
echo "=== Installed Tools ==="
which git || echo "git not found"
which zsh || echo "zsh not found"
which stow || echo "stow not found"
which fzf || echo "fzf not found"
which nvim || echo "nvim not found"
which tmux || echo "tmux not found"

validate-packages:
name: Validate Package Files
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Run package validator
run: |
chmod +x scripts/validate-packages.sh
./scripts/validate-packages.sh

test-scripts:
name: Test Scripts
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Test help flags
run: |
chmod +x install.sh uninstall.sh update.sh
./install.sh --help
./uninstall.sh --help
./update.sh --help

- name: Test version flags
run: |
./install.sh --version
./uninstall.sh --version
./update.sh --version

- name: Test list components
run: |
./install.sh --list-components
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,11 @@ files/.config/raycast
files/.config/uv
files/.config/zed
files/.tmux/plugins
.install.log

# Test artifacts
shellcheck-report.txt
.install.log

# cagent files
files/.config/cagent/
11 changes: 11 additions & 0 deletions .shellcheckrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# ShellCheck configuration for dotfiles project
# See: https://www.shellcheck.net/wiki/

# Disable multiple checks - use comma-separated list for compatibility with older versions
# SC2155 - Declare and assign separately (verbose without significant benefit)
# SC1091 - Not following sourced files (verified at runtime)
# SC2034 - Variables appear unused (library definitions for external use)
# SC2086 - Double quote to prevent globbing (intentional in safe contexts)
# SC2059 - Don't use variables in printf (intentional color variables)
# SC2129 - Consider using { cmd1; cmd2; } >> file (style preference)
disable=SC2155,SC1091,SC2034,SC2086,SC2059,SC2129
25 changes: 25 additions & 0 deletions Brewfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
# ============================================================================
# DEPRECATION NOTICE
# ============================================================================
#
# This Brewfile is kept for reference but is NO LONGER USED by install.sh
#
# The dotfiles now use a new cross-platform package management system located
# in the packages/ directory. This provides:
#
# - Cross-platform support (macOS, Linux, WSL)
# - Better organization (common, optional, platform-specific)
# - Package name mappings for different package managers
# - Validation tools to ensure consistency
#
# To see the migration status:
# ./scripts/migrate-brewfile.sh
#
# To install packages:
# ./install.sh (now uses packages/ directory automatically)
#
# For more information:
# See packages/README.md
#
# ============================================================================

brew "mas"
brew "neovim"
brew "noti"
Expand Down
Loading
Loading