feat(flake.nix): Take nix-workspace as an input instead of carrying it master
The framework is developed in its own repo now, so this tree consumes it the way anyone else does rather than importing a copy of it by path. Its eleven modules come out of the same repo one at a time, each selected with ?dir=modules/<tool>. That was the point of moving it out, and it pays immediately: the two bugs it shipped last week were both ones only an input-consumer could hit, and finding them needed a mock consumer built by hand. This tree is that consumer now. The circularity that kept it here is gone with it. While the framework lived here and was published from here, taking it as an input would have meant publishing a change before this tree could evaluate that change; nothing is published from here that this tree also depends on any more. One flake per project, not two. Each names nix-workspace by URL, which is the same string in tree and in a clone, so the second copy under generated/ and the josh term that mapped it over the first are both gone. Only the lock is still generated, because a lock belongs to the published repo while this tree locks these as path inputs. input-usage now takes the inputs this flake declares from flake.lock's root node rather than from config.inputs. A module hands its pin to the consumer by setting one, so config.inputs holds names nobody declared here - and the file reading system-manager moved to nix-workspace, so grepping this tree for its reader found nothing and the check failed on an input that was never ours. statix.toml joins the other root configs: written in devshell/modules/configs and copied in on shell entry, rather than committed at the root where the ones beside it are ignored. Signed-off-by: Niclas Overby <niclas@overby.me>