With local only config testing is trivial. When local config files are changed or dependencies (like nixpkgs, or nixos-hardware) a user can simply rebuild and try the system. If there is any errors they can easily boot an earlier config and revert there changes. This gives the user quick and focused feedback on what changes caused issues.
When we split out the common config to its own repo this presents some challenges to testing. Because the common config becomes a dependency of the local config, locally a user can only test if there local config works with there dependencies, but there dependencies can not work with each other. So if a user updates to a new common config and it has an issues with the latest nixpkgs they could mistake any issues in the system they build as coming from an incompatibility between there local config and the common config, where it could actually come from an incompatibility between the common config and nixpkgs.
Issues
Build tests against common config with a particular nixpkgs using sample local config, for functionality that I want to always work on my machines.
Good
Bad
Require that main branch of common always passes tests against a version of nixpkgs tacked in the repo. Keep a version of nixpkgs tacked in the repo and make it easy to run tests with that version of nixpkgs.
Good
Bad
Instead of just testing with just one version of nixpkgs, track a channel/branch of nixpkgs and when there is a new version of nixpkgs published to the channel/branch open a new PR against main replacing the version of nixpkgs for testing with latest version for that channel/branch of nixpkgs. Automatically merge the PR if it passes all the tests.
Good
Bad
Main is only changed with a PR and all PR to main get tested automatically.
Good
Provide easy way to use always use the latest versions of nixpkgs that passed tests with common, when build local system.
Good