I think you’re spot on. I had the idea the other day of a web based Nix configuration system + native mobile app being a potentially killer combination enabling a lot of unique features people would love including easier installation.
Imagine a system like this:
- Nix(OS) runs a webserver that can be connected to locally via a browser
- This interface acts as a graphical configuration editor. The “app store” portion is essentially just adding/removing packages to an array.
- When the user is done making changes there’s a “make it so” button to apply the config
- The interface offers easy rollback and management of generations
Now that would be useful on its own, but if we take the concept a little further it becomes unique and IMO a highly awesome way anybody manage their system(s) that doesn’t exist elsewhere
- The webapp is also a mobile app (use react-native for a single codebase)
- Offer services via nixos.org (of course also with option to self host). These services would include:
- Allow for easy connection via proxy (for example: https://connect.nixos.org/{identifier} to reach your machines from anywhere as long as it has internet)
- Auto-backup and versioning of configurations
- Sharing of configuration pieces, to make common use cases easier. For example an option for “android development” or “lamp server” or “steam gaming” or “nodejs development” or “kde desktop” IIRC nix modules already enable this, but discoverability and sharing isn’t easy.
- Use the app for installation. Pop installation media into a machine then open the app, auto-detect the installer or scan the displayed QR code (or navigate to the url) to configure and install the machine remotely. Apply your saved configs to do it quickly. Quickly and easily set up multiple or headless machines!
- Notifications. Machine rebooted? Service crashed? The Nix app could be your hub for managing all your nix deployments.
- Expert mode: raw config editing but nice to use via an embedded monaco editor (the editor vscode uses) with nix extension.
- Crazy idea: auto-packaging (or guided packaging) of apps that aren’t in nixpkgs yet. For many apps adding them to nixpkgs seems to be just boilerplate of getting the url and hash then putting them into the standard builder, checking they work, then submitting a PR. Could that be largely automated?
All of this combined would be amazing for day-to-day use of NixOS and for building/managing deployments of multiple NixOS machines.
I love Nix and NixOS but I always find myself back on MacOS after several months of nix-ing because the day to day usage and management of NixOS gets in the way of other things I need to do. Right now there’s a lot of hoops to jump through in order to do “simple” things in NixOS. Most of those things aren’t hard to do, but there are a lot of steps and minutia to remember to get them done. Most of the time I don’t remember that stuff and have to go searching. Most of the time I don’t have time to do that at the moment.
I’m guessing others feel this way as well and that an easier way to manage nix systems would go a long way to easing the most common use cases. I’m a web/react-native dev by trade so I’d love to hack on something like this but unfortunately for the foreseeable future I’m not realistically going to have the time to put together anything of substance.