Goal: make Nix more approachable for existing Linux users
Non-goal: make Nix user-friendly
Idea: Provide a UX for creating "profile" and "user" .nix files that can be aggregated into "machine" configs. Streamline sharing of profiles, "backing up" your profiles, and "restoring" your profiles. Support NixOS, Nix, and other possible places where nix can be used (like Docker). Possibly also support basic machine setup for NixOS (like partitioning)
Requirements
Can read basic human-edited files
Have an extension point for things we don't support reading / writing
Integrate with nixos-hardware
Search for any setting in your git repo ("is this already set in a different profile?") including the possible paths to it (since at least nixos-hardware is hierarchical).
Filter settings based on non-default, suggested for type of profile, basic/advanced
Diff with shared profiles
Cross-platform (at least for nixpkg support, maybe not for installation support)
Nice-to-haves
Format preserving
Nix IDE with package / setting auto-complete / tooltips
Help people with secrets management
Out-of-scope
Can do everything
Implementation thoughts
Use web technologies for UX for cross-platform support
Use rust as the backend language with the Legion ECS for data since it more easily integrates with scripting languages.
Goal: make Nix more approachable for existing Linux users
Non-goal: make Nix user-friendly
Idea: Provide a UX for creating "profile" and "user"
.nix
files that can be aggregated into "machine" configs. Streamline sharing of profiles, "backing up" your profiles, and "restoring" your profiles. Support NixOS, Nix, and other possible places where nix can be used (like Docker). Possibly also support basic machine setup forNixOS
(like partitioning)Requirements
nixos-hardware
nixos-hardware
is hierarchical).Nice-to-haves
Out-of-scope
Implementation thoughts
Resources