mirror of
https://github.com/celesrenata/end-4-flakes.git
synced 2026-06-10 20:19:27 -05:00
fix: add wayland dev headers and scanner for pywayland build on NixOS
This commit is contained in:
Executable
+404
@@ -0,0 +1,404 @@
|
||||
#!/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 "$@"
|
||||
Reference in New Issue
Block a user