Ah, brilliant - Balena has improved my life a fair bit, but it does have some annoyances … if nothing else, having customized docker daemon running all the time takes a big chunk of the memory of smaller devices!
vcsode uses json, which is simple key-value pairs.
nix is a turing-complete programming language, so these GUIs will never work for it.
nixos is a distro for people who want to write code to configure their system(s), simple as.
that will never be beginner-friendly because most people do not want to write code - and that is okay, there’s so much else out there for them to try should they so desire.
We’ve just made an announcement post in this discourse: Introducing Thymis: Web-Based Dashboard and Device Provisioning for NixOS
Elm Lang is a Haskell-like language and frontend web platform with strict Algebraic Data Types and a compiler better than anything else on the planet. Maybe there is some interesting parallels and valuable lessons in Elm?
The compiler can walk the programmer through their code until it compiles — at which point “if it compiles it works!”
With Elm the developer doesn’t have to create a Type Signature and the compiler does a legendary job of inference and guides the developer.
If writing Nix was like writing Elm it would explode in usability and adoption. One could argue that Elm’s philosophy and DX is better suited to a DSL like Nix than to the Web due to similarity. Elm is nothing like JavaScript and very much like Haskell.
@Raikiri I’ll go in on a digression here, though I believe on on related to the original post.
I think there’s an awful lot of merit in your original post. I definitely subscribe to the premise, that Nix and the nix package manager are the best / most feasible way to manage a desktop operating system currently, and that friendly end-user aimed tools are lacking.
I’ve been doing little work, but doing an awful lot of thinking on this in the past year or so. On the surface, it looks like the end goal is one good software center app and one settings app away. But I think the reality is harsher of one wants to make something as good - or better - than MacOS and Windows, and be able to market it as such, and make it gain traction. There’s the state and quality of default apps to think about, state of hardware compatibility, the battery life experience on laptops, and so on, and so forth … I think making a NixOS-based thing usable by my mom might not be a too hard goal, but if you extend this to its logical extreme of making something which can threaten the hegemony of Microsoft, it suddenly becomes a multiple man-years project, and such a project is going to need money.
I think though, such a project might be becoming economically feasible because of the current geo-political climate, as statespeople in the EU start to realise that our moms having an alternative to Microsoft is, funnily enough, a matter of state security. This means funding is going to follow, and such projects will emerge. It’s a matter of passion (and expertise) to be able to build a successful one.
I plan on working on this at least part time in the upcoming couple of years. I don’t have much to show (yet), but I definitely have thoughts. Feel free to contact me at dimitar.georgiev.bg@gmail.com if you wish to collaborate - which would consist of just chatting at this point.
Getting back to my original post, after using NixOS for a couple years as my daily driver, I’m only getting more and more convinced that the entire experience is two UI dialogs away from being usable by my mom. And it doesn’t take a genius visionaire or a techno-mage to implement a front end like that, it just requires a dedicated enough person with some technical skills of designing a user-facing UI and a substantial amount of dedication.
However, as a fan of accelerationism, I keep thinking about accelerating this in a different direction: there is a way to make this project even simpler. I imagine a world where my mom chooses one of 3 basic configuration.nix presets during the GUI installation process. Every configuration comes with a generated config for her GPU, a user, some basic system-wide packages like DE, and… a preinstalled flathub. From that point onwards, her system is immutable unless she updates and she exclusively installs all programs into her home directory via flathub.
I know you’ve already raised your pitchforks after reading “flathub”, but hear me out: what’s actually important for the end-user? It’s important for simple things to be simple and for complex things to be possible. 95% of normal user operations don’t even require any system-wide config changes, they just require pressing a button in flathub. However, if you want to use the open source nvidia kernel module on your mom’s machine, you can trivially do so by modifying her config and rebuilding the system.
Declarability/Reproducibility of an operating system isn’t even something that the end users fundamentally care about: they want it to “just work” and they don’t actually care how it’s accomplished. But the matter of fact is: under the hood the easiest way to create a system that “just works” is to pre-configure it, and the easiest way to configure a system to be used by an end user is to make the config declarative and reproducible.
So the idea that I keep returning is that fundamentally the problem isn’t even technical. It doesn’t even require any technical solutions at all. Practically everything that needs to be implemented for my mom to use NixOS is already implemented. It’s sort of a different way of putting priorities when selling a system to a non-technical user. Actually, a surprisingly relevant example comes to mind is how they advertised the game Shapez 2. Since everybody here likely played factorio anyway, I hope the example will be relateable:
Note how the salespitch for the same exact product is completely different for the 3 groups of users that they have identified. I think that just by having a trivial explainer why NixOS is better for an arch user and for a windows 11 user would already be a huge step forward, and they’d have almost no overlap. Then, next step would be to preplan the journey that each of those users would need to take to start using NixOS. Spoiler alert: those journeys don’t have to involve home-manager or flakes at all. In fact, ideally they shouldn’t involve typing anything in nix.
Sorry I feel like I’m jumping all over the place a little bit, it’s just I can’t help but keep returning to the idea that maybe the thing that NixOS needs isn’t even one app away, it’s like one[more] landing page redesign + realizing that yes, many people will use the system if it’s declarative and funcitonally pure. But there’s 100x more people that can use a system that’s under the hood declarative and functionally pure, if it’s nice to interact with.
I think Clan had some interesting ideas around what design metaphors to use for a nix UI, it’s more systems focused than desktop focused though. Honestly sounds like you BlueFin achieves what you want today. I agree that it would be neat to see more UI options for NixOS, not that I have any use for them but it’s a neat idea.
Not sure what this has to do with anything, accelerationism means something very different than “change in a positive direction” in the year 2025.
This looks a lot like a GUI for enabling/disabling simple modules. I quite like this idea. It reminds me of how some CMSs handle content creation. Something like Quiqr has a system where you write your templates (modules) but also some extra metadata that describes how to that content is displayed for editing, you could do something similar with Nix. The “IT Support” could build out the UI for their users (or family) and provide the tools for their users to customize it a little while still being tuned for their usecase.
I actually love flathub with NixOS. I think there’s an important distinction between user programs which can be managed mutably with Flatpaks, home-manager, or homebrew, and system programs which benefit most from immutability, which can be managed by NixOS or ostree.
This, to me, sounds like an excellent argument for something like SnowFlake OS. Nobody’s going to get to those nice interactions if they need to enable them in a complicated way. It’s good to have a UI that can be layered on top of stock NixOS, but that won’t reach the people you’re trying to reach if it’s not baked into an image somewhere.
But at this point why not Fedora SilverBlue? Why NixOS? NixOS is a programmable OS, it offers almost nothing to you over a regular linux distro if you don’t want to program it. I don’t think there is anything wrong with the use-case, I just don’t see NixOS as a good solution.
It’s very simple: why have a bad system as your back-end, when you can have a good one?
What’s bad about fedora silverblue? It has considerable funding, provides your proposal out of the box (atomic immutable base system + flathub) in a package far more polished than NixOS.
If you want a frontend like this, then I recommend seeing if you can help to develop it! People can spend all their time talking about what NixOS might need or not need, but the best way for a solution like this to be created is for people to work together on it. SnowflakeOS is the primary example that comes to mind, but I know Clan has an initiative for this, and I’m sure there’s other projects that attempt similar things. And, if none of the projects suit your needs, create your own!
For posterity I want to say that evaluating as of today, both SnowflakeOS and GitHub - snowfallorg/nix-software-center: A simple gtk4/libadwaita software center to easily install and manage nix packages appear to be abandonware.
SnowflakeOS could not install (using virtual machine manager)
error: path '/nix/store/khmqqhgyn0m3rh8bri3w4gwm78plmljq-linux-6.9.7-modules-shrunk/lib' is not in the Nix store
(Gave the above a couple of tries)
And software center, from my quick evaluation, cannot even install on mondern nixos using GitHub - snowfallorg/nix-software-center: A simple gtk4/libadwaita software center to easily install and manage nix packages , because of gnome.adwaita-icon-theme is renamed to adwaita-icon-theme · Issue #77 · snowfallorg/nix-software-center · GitHub
There’s a fork that works cited in that issue. I took it for a spin.
The app seems to add software using nix profile
imperatively, as far as I can tell - I was hoping it would be able to add stuff to my nix configuration instead. It’s still maybe a step forward from using flatpak, since it appears to be using the flake inputs of your system when configured correctly.
From what I can tell, it’s very nice, but unfinished business. Ostensibly it’s nowhere near ready for mainstream use - that’s apparent by the state of the repo and the issue tracker as well. I’m not taking a swing at anybody kindly providing us with FOSS software. Just noticing that, to me, these things look more like a proof of concept than anything else.