Although WinHome is an "Infrastructure-as-Code tool for Windows," it is built using modern .NET 10, allowing developers on Linux and macOS to contribute to the project effectively.
- .NET 10 SDK: Required for building and running unit tests.
- VS Code: With the C# Dev Kit extension.
You can compile the solution normally on any platform:
dotnet build WinHome.slnOur unit tests are designed with abstractions and mocks. This means you can run the logic-heavy unit tests (like config parsing, state management logic, and plugin discovery) without being on Windows:
dotnet test tests/WinHome.Tests/WinHome.Tests.csprojWinHome is a Windows-native engine. While the code compiles on other OSs, the core
reconciliation logic (Engine.cs) contains platform guards:
- Registry/Services/WSL: These modules will be skipped or throw errors if run natively on Linux/macOS.
- Dry-Run: You can run
dotnet run -- --dry-runto test configuration parsing and plugin loading, but many modules will log "Skipping: Platform not supported."
If you are modifying Windows-specific logic (e.g., the Registry Service) and need to verify it:
Push your branch to your fork. Our GitHub Actions CI (test.yaml) runs on windows-latest VMs.
It will execute the full suite, including E2E tests, on a real Windows environment.
Use the VS Code Remote - SSH extension to connect to a Windows machine or VM and develop/debug directly in that environment.
If you have a local Windows machine, you can use the scripts in test-data/ to run acceptance tests
inside a clean Windows Sandbox.