forked from Shinonome/alt-illogical-impulse
ac6d3adeb9
BREAKING CHANGE: Remove external dots-hyprland dependency - Imported all essential configs from dots-hyprland/installer-replication - Added complete configs/ directory with: - hypr/ - Hyprland configuration - quickshell/ - Quickshell widgets and config - applications/ - Application configurations - scripts/ - Utility scripts - matugen/ - Material You theming - Updated flake.nix to use local ./configs instead of external repo - Simplified update-flake script (removed external repo management) - Updated README to reflect self-contained architecture - All builds pass with local configurations Benefits: - No external repository dependencies - Faster builds (no network dependencies) - Version controlled configs in single repo - Easier maintenance and development - Complete installer replication in one place
405 lines
12 KiB
Bash
Executable File
405 lines
12 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Phase 5 Testing Script
|
|
# Tests NixOS-specific adaptations and integration patterns
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
PURPLE='\033[0;35m'
|
|
CYAN='\033[0;36m'
|
|
NC='\033[0m' # No Color
|
|
|
|
log() {
|
|
echo -e "${GREEN}[$(date +'%H:%M:%S')] $1${NC}"
|
|
}
|
|
|
|
warn() {
|
|
echo -e "${YELLOW}[$(date +'%H:%M:%S')] WARNING: $1${NC}"
|
|
}
|
|
|
|
error() {
|
|
echo -e "${RED}[$(date +'%H:%M:%S')] ERROR: $1${NC}"
|
|
}
|
|
|
|
info() {
|
|
echo -e "${BLUE}[$(date +'%H:%M:%S')] $1${NC}"
|
|
}
|
|
|
|
phase5() {
|
|
echo -e "${CYAN}[$(date +'%H:%M:%S')] PHASE 5: $1${NC}"
|
|
}
|
|
|
|
# Test functions
|
|
test_build() {
|
|
log "Testing Phase 5 build..."
|
|
|
|
if nix build "$PROJECT_ROOT#homeConfigurations.example.activationPackage" --no-link; then
|
|
log "✅ Phase 5 build successful"
|
|
return 0
|
|
else
|
|
error "❌ Phase 5 build failed"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
test_nixos_system_integration() {
|
|
phase5 "Testing NixOS System Integration"
|
|
|
|
if [[ -f "$PROJECT_ROOT/modules/nixos-system.nix" ]]; then
|
|
log "✅ NixOS system module exists"
|
|
|
|
# Test module syntax
|
|
if nix-instantiate --parse "$PROJECT_ROOT/modules/nixos-system.nix" >/dev/null 2>&1; then
|
|
log "✅ NixOS system module syntax valid"
|
|
else
|
|
error "❌ NixOS system module syntax invalid"
|
|
return 1
|
|
fi
|
|
else
|
|
error "❌ NixOS system module missing"
|
|
return 1
|
|
fi
|
|
|
|
# Check for key NixOS integration features
|
|
local features=(
|
|
"hardware support"
|
|
"display manager"
|
|
"security integration"
|
|
"network configuration"
|
|
"virtualization support"
|
|
"development tools"
|
|
)
|
|
|
|
for feature in "${features[@]}"; do
|
|
if grep -q "$(echo "$feature" | tr ' ' '.')" "$PROJECT_ROOT/modules/nixos-system.nix"; then
|
|
log "✅ NixOS integration includes: $feature"
|
|
else
|
|
warn "⚠️ NixOS integration missing: $feature"
|
|
fi
|
|
done
|
|
}
|
|
|
|
test_user_customization_system() {
|
|
phase5 "Testing User Customization System"
|
|
|
|
if [[ -f "$PROJECT_ROOT/modules/components/customization.nix" ]]; then
|
|
log "✅ User customization module exists"
|
|
|
|
# Test module syntax
|
|
if nix-instantiate --parse "$PROJECT_ROOT/modules/components/customization.nix" >/dev/null 2>&1; then
|
|
log "✅ User customization module syntax valid"
|
|
else
|
|
error "❌ User customization module syntax invalid"
|
|
return 1
|
|
fi
|
|
else
|
|
error "❌ User customization module missing"
|
|
return 1
|
|
fi
|
|
|
|
# Check for customization features
|
|
local features=(
|
|
"customConfigs"
|
|
"customScripts"
|
|
"environmentVariables"
|
|
"hooks"
|
|
"templateOverrides"
|
|
"keybindOverrides"
|
|
"widgets"
|
|
)
|
|
|
|
for feature in "${features[@]}"; do
|
|
if grep -q "$feature" "$PROJECT_ROOT/modules/components/customization.nix"; then
|
|
log "✅ Customization includes: $feature"
|
|
else
|
|
warn "⚠️ Customization missing: $feature"
|
|
fi
|
|
done
|
|
}
|
|
|
|
test_template_processing() {
|
|
phase5 "Testing Template Processing Framework"
|
|
|
|
if [[ -f "$PROJECT_ROOT/lib/template-processor.nix" ]]; then
|
|
log "✅ Template processor exists"
|
|
|
|
# Test template processor syntax
|
|
if nix-instantiate --parse "$PROJECT_ROOT/lib/template-processor.nix" >/dev/null 2>&1; then
|
|
log "✅ Template processor syntax valid"
|
|
else
|
|
error "❌ Template processor syntax invalid"
|
|
return 1
|
|
fi
|
|
else
|
|
error "❌ Template processor missing"
|
|
return 1
|
|
fi
|
|
|
|
# Check for template processing features
|
|
local features=(
|
|
"processTemplate"
|
|
"generateConfigFromTemplate"
|
|
"applyColorScheme"
|
|
"createTemplateSystem"
|
|
"validateConfig"
|
|
"createHotReloader"
|
|
"processMultiFormat"
|
|
)
|
|
|
|
for feature in "${features[@]}"; do
|
|
if grep -q "$feature" "$PROJECT_ROOT/lib/template-processor.nix"; then
|
|
log "✅ Template processing includes: $feature"
|
|
else
|
|
warn "⚠️ Template processing missing: $feature"
|
|
fi
|
|
done
|
|
}
|
|
|
|
test_service_management() {
|
|
phase5 "Testing Service Management Adaptation"
|
|
|
|
if [[ -f "$PROJECT_ROOT/modules/components/service-management-simple.nix" ]]; then
|
|
log "✅ Service management module exists"
|
|
|
|
# Test module syntax
|
|
if nix-instantiate --parse "$PROJECT_ROOT/modules/components/service-management-simple.nix" >/dev/null 2>&1; then
|
|
log "✅ Service management module syntax valid"
|
|
else
|
|
error "❌ Service management module syntax invalid"
|
|
return 1
|
|
fi
|
|
else
|
|
error "❌ Service management module missing"
|
|
return 1
|
|
fi
|
|
|
|
# Check for service management features
|
|
local features=(
|
|
"session target"
|
|
"core services"
|
|
"quickshell"
|
|
"hypridle"
|
|
)
|
|
|
|
for feature in "${features[@]}"; do
|
|
if grep -q "$(echo "$feature" | tr ' ' '.')" "$PROJECT_ROOT/modules/components/service-management-simple.nix"; then
|
|
log "✅ Service management includes: $feature"
|
|
else
|
|
warn "⚠️ Service management missing: $feature"
|
|
fi
|
|
done
|
|
}
|
|
|
|
test_arch_replacement() {
|
|
phase5 "Testing Arch-Specific Element Replacement"
|
|
|
|
log "Checking for Arch-specific patterns..."
|
|
|
|
# Check that we don't have Arch-specific commands
|
|
local arch_patterns=(
|
|
"pacman"
|
|
"yay"
|
|
"systemctl --user enable"
|
|
"cp -r .config"
|
|
"makepkg"
|
|
"PKGBUILD"
|
|
)
|
|
|
|
local found_arch=false
|
|
for pattern in "${arch_patterns[@]}"; do
|
|
if find "$PROJECT_ROOT" -name "*.nix" -exec grep -l "$pattern" {} \; 2>/dev/null | grep -v test; then
|
|
warn "⚠️ Found Arch-specific pattern: $pattern"
|
|
found_arch=true
|
|
fi
|
|
done
|
|
|
|
if [[ $found_arch == false ]]; then
|
|
log "✅ No Arch-specific patterns found in Nix files"
|
|
fi
|
|
|
|
# Check for NixOS patterns
|
|
local nixos_patterns=(
|
|
"xdg.configFile"
|
|
"home.packages"
|
|
"systemd.user.services"
|
|
"programs\."
|
|
"services\."
|
|
"mkEnableOption"
|
|
"mkOption"
|
|
)
|
|
|
|
local found_nixos=0
|
|
for pattern in "${nixos_patterns[@]}"; do
|
|
if find "$PROJECT_ROOT" -name "*.nix" -exec grep -l "$pattern" {} \; 2>/dev/null | wc -l | grep -q "[1-9]"; then
|
|
log "✅ Found NixOS pattern: $pattern"
|
|
((found_nixos++))
|
|
fi
|
|
done
|
|
|
|
if [[ $found_nixos -ge 5 ]]; then
|
|
log "✅ Strong NixOS integration patterns detected"
|
|
else
|
|
warn "⚠️ Limited NixOS integration patterns found"
|
|
fi
|
|
}
|
|
|
|
test_declarative_configuration() {
|
|
phase5 "Testing Declarative Configuration Management"
|
|
|
|
# Check for declarative patterns
|
|
local declarative_features=(
|
|
"enable.*mkEnableOption"
|
|
"mkOption.*type.*types\."
|
|
"config.*mkIf.*cfg\."
|
|
"home\.packages.*with.*pkgs"
|
|
"systemd\.user\.services"
|
|
"xdg\.configFile"
|
|
)
|
|
|
|
local found_declarative=0
|
|
for feature in "${declarative_features[@]}"; do
|
|
if find "$PROJECT_ROOT" -name "*.nix" -exec grep -l "$feature" {} \; 2>/dev/null | wc -l | grep -q "[1-9]"; then
|
|
log "✅ Found declarative pattern: $feature"
|
|
((found_declarative++))
|
|
fi
|
|
done
|
|
|
|
if [[ $found_declarative -ge 4 ]]; then
|
|
log "✅ Strong declarative configuration patterns"
|
|
else
|
|
warn "⚠️ Limited declarative configuration patterns"
|
|
fi
|
|
}
|
|
|
|
test_development_environment() {
|
|
phase5 "Testing Development Environment"
|
|
|
|
log "Testing development environment..."
|
|
if nix develop "$PROJECT_ROOT" -c bash -c "echo 'Development environment working' && which quickshell" >/dev/null 2>&1; then
|
|
log "✅ Development environment functional"
|
|
else
|
|
error "❌ Development environment issues"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
show_phase5_status() {
|
|
phase5 "Phase 5 Implementation Status"
|
|
echo
|
|
echo "🏗️ NixOS System Integration:"
|
|
echo " - [x] Comprehensive hardware support configuration"
|
|
echo " - [x] Display manager integration (GDM, SDDM, LightDM, Greetd)"
|
|
echo " - [x] Security framework (PolicyKit, AppArmor, Firewall)"
|
|
echo " - [x] Network configuration (NetworkManager, Wireless, VPN)"
|
|
echo " - [x] Virtualization support (Docker, Podman, libvirt)"
|
|
echo " - [x] Development tools with language support"
|
|
echo
|
|
echo "🎨 User Customization System:"
|
|
echo " - [x] Custom configuration file overrides"
|
|
echo " - [x] Custom script management with dependencies"
|
|
echo " - [x] Environment variable customization"
|
|
echo " - [x] Hook system (pre/post-start, color-change, shutdown)"
|
|
echo " - [x] Template and keybind overrides"
|
|
echo " - [x] Widget configuration system"
|
|
echo
|
|
echo "🔧 Template Processing Framework:"
|
|
echo " - [x] Advanced template system with inheritance"
|
|
echo " - [x] Conditional template blocks"
|
|
echo " - [x] Multi-format processing (QML, JSON, CSS)"
|
|
echo " - [x] Color scheme integration"
|
|
echo " - [x] Hot-reloading system"
|
|
echo " - [x] Template validation and debugging"
|
|
echo
|
|
echo "⚙️ Service Management Adaptation:"
|
|
echo " - [x] Declarative systemd user service management"
|
|
echo " - [x] Session target integration"
|
|
echo " - [x] Core and optional service configuration"
|
|
echo " - [x] Custom service definition system"
|
|
echo " - [x] Service monitoring and health checks"
|
|
echo " - [x] Service management CLI tools"
|
|
echo
|
|
echo "🔄 NixOS Pattern Replacements:"
|
|
echo " - [x] Arch package management → Declarative Nix"
|
|
echo " - [x] Manual service management → systemd user services"
|
|
echo " - [x] Direct file copying → xdg.configFile patterns"
|
|
echo " - [x] Imperative configuration → Declarative options"
|
|
echo " - [x] Manual customization → Structured override system"
|
|
echo
|
|
echo "📊 Overall Progress: Phase 5 NixOS Adaptations Complete! 🎉"
|
|
}
|
|
|
|
# Main execution
|
|
main() {
|
|
echo "🔧 Phase 5: NixOS-Specific Adaptations Testing"
|
|
echo "=============================================="
|
|
echo
|
|
|
|
local failed_tests=()
|
|
|
|
# Run all tests
|
|
if ! test_build; then
|
|
failed_tests+=("build")
|
|
fi
|
|
|
|
if ! test_nixos_system_integration; then
|
|
failed_tests+=("nixos_system_integration")
|
|
fi
|
|
|
|
if ! test_user_customization_system; then
|
|
failed_tests+=("user_customization_system")
|
|
fi
|
|
|
|
if ! test_template_processing; then
|
|
failed_tests+=("template_processing")
|
|
fi
|
|
|
|
if ! test_service_management; then
|
|
failed_tests+=("service_management")
|
|
fi
|
|
|
|
if ! test_arch_replacement; then
|
|
failed_tests+=("arch_replacement")
|
|
fi
|
|
|
|
if ! test_declarative_configuration; then
|
|
failed_tests+=("declarative_configuration")
|
|
fi
|
|
|
|
if ! test_development_environment; then
|
|
failed_tests+=("development_environment")
|
|
fi
|
|
|
|
echo
|
|
echo "=============================================="
|
|
|
|
# Show results
|
|
if [[ ${#failed_tests[@]} -eq 0 ]]; then
|
|
log "🎉 All Phase 5 tests passed!"
|
|
show_phase5_status
|
|
echo
|
|
log "🚀 Ready for Phase 6: Testing & Validation!"
|
|
echo
|
|
echo "Next steps:"
|
|
echo "1. Enable advanced components: AI, customization, service management"
|
|
echo "2. Test complete integration in VM environment"
|
|
echo "3. Validate user customization workflows"
|
|
echo "4. Proceed to comprehensive testing phase"
|
|
exit 0
|
|
else
|
|
error "❌ ${#failed_tests[@]} test(s) failed:"
|
|
printf '%s\n' "${failed_tests[@]}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Run tests
|
|
main "$@"
|