I was just testing some other distributions and all seem to have a GUI tool to:
- install new packages
- search for packages by name/description
- remove packages
- update the system
Is anyone working on this for NixOS?
I’d imagine at the very least this could be a little frontend for
nix-env -i and
nixos-rebuild. Ideally, you’d want to modify some of the declarative configuration, too.
Wouldn’t this be fairly difficult? There are so many ways to install software declaratively both implicitly and explicitly. On top of that
configuration.nix can be a web of imports.
It seems like it would be fairly easy to to put a graphical tool on top of ad-hoc package management. On the other hand, in my limited experience, the power of nixos comes from the repeatability created by declarative configuration.
You’re totally right. On top of what you mentioned, the tool would ideally parse and interpret/serialize Nix, so as not to randomly break your config (because you’re using text replacements or something horrendous like that ).
However, at least installation/removal of packages could be “solved” by assuming a
gui-installed-packages.nix exists which contains a list of packages managed by the tool.
Edit: Just to clarify, I’m not talking about a tool that replaces all the nice things you can do with the Nix language. It’s more from the perspective of a casual Nix user where installing, updating and maybe enabling services is all that’s needed.
There has just been a thread about one such project few days ago: Nix42b: User-friendly interface for the Nix package manager
And few more attempts and discussions from the past:
Hi, Regarding a GUI tool for Nix, I think we may consider Nix and NixOS separately.
Considering NixOS, graphical tools can be interesting for beginners but this can be difficult to implement: we have to define a more standard way to install packages, implement a graphical installer for NixOS, implement a graphical package manager or integrate Nix in existing package managers (such as gnome-software-manager)… In addition, this should be compatible with our current workflow based on editing Nix files. Finally, it would also be nice to have a graphical tool for “per-project” configurations, which is, in my opinion, a killer feature of Nix for “normal” users (for example, to create a working Python environment without having to use virtualenv/conda/whatever).
On the other hand, I think it would be very beneficial to have a graphical tool for using Nix on other distributions than NixOS because it can solve widespread problems: let a normal user install software, install applications that are not in the distribution software repository. In fact, I’m quite tired of reading forum/chat/blog posts presenting snap/flatpak as a good solution while Nix is better on almost all points: more mature, more packages, better isolation/sharing, etc. The main drawback of Nix seems to be advertising…
Disclaimer: I’m the author of nix42b.
Have you had a chance to take a look at flox yet? Introducing flox - Nix for simplicity and scale
It’s got some of what you’re looking for. We provide a web app for:
- Installing new packages to globally synchronized profiles
- Searching for packages by name description
- Remove packages from profiles
Right now, we don’t have support for updating NixOS configurations or other declarative config directly in the GUI because at this stage, flox is mainly designed for making Nix packages easier to use, instead of making NixOS easier.
We’d love to hear what you think if you have a chance to take a look or play with it.
Looks like you might have solved your own problem for NixOS over here : Nixos-manager — manage your NixOS configuration graphically
Between nixos-manager, nix42b, nix-gui, and possibly other candidates, does anyone care to share their personal opinion on the best of the bunch, for NixOS newbies?