./features/*.nix
Typed options
Each feature declares its own nixmsp.* options with types. A wrong value fails at evaluation time, not on the client's machine.
~/nixmsp
NixMSP is a declarative way for an MSP to set up and manage client machines on NixOS. Each machine is a short file of option values. Shared behavior lives in typed features, and unsafe settings fail with a clear message.
# same machine, one option different $ nix eval .#nixosConfigurations.example.config.services.fail2ban.enable false $ nix eval .#nixosConfigurations.example-strict.config.services.fail2ban.enable true
Expected output from reading the code. These commands have not been run yet.
01 / the idea
The scaffold has three features and one example host. It is written, and it has not been through Nix yet.
./features/*.nix
Each feature declares its own nixmsp.* options with types. A wrong value fails at evaluation time, not on the client's machine.
./features/ (import-tree)
Add a file to features/ and it is picked up. There is no list to keep in sync.
./hosts/<name>/
A host folder says what is different about one machine. The behavior stays in the features, so it is the same for every client.
./features/security.nix
The strict baseline turns off SSH passwords, and it will not evaluate without at least one authorized key.
02 / one option
The first feature we wrote is a security baseline. It is meant to change a handful of things together.
standard (default)
strict
This comes from reading the code. We will confirm it with a real evaluation before saying it works. Details in the docs.
03 / what is next
The order below is the plan. Every item is planned, and none of it exists today.
04 / follow along
It does not exist yet, so there is nothing to clone today. When the scaffold has passed its first evaluation, the generic parts will be released as a fresh repository.
About FOSSadmin