15 ms·
Nix-GUI: Make NixOS usable for non-technical users through settings / GUI
- GordonS 5y agoI've never used Nix, but it sounds interesting. I get the impression it's more used on desktop, but I'm curious if anyone has used it on servers?
- xyzzy_plugh 5y agoYes. I know Shopify does (or at least did), I believe Target was a relatively early adopter. I think Tailscale dabbled with the idea. Everything feels quite stable from a server admin perspective, though there are still various competing methods to actually administer fleets of machines. Nix Ops is a bit opinionated but works okay. I just build locally or in CI and push to hosts remotely.
- ElonMuskrat 5y agoFWIW Shopify used nix-shell for the developer environment. If all they need to do is import standard packages - it's actually quiet a good solution for multi-platform dev environments.
- fesc 5y agoI'm using it for some internal systems at work and I feel there's nothing like it. NixOS gives a level of reproducability that other tools like Ansible won't ever be able to give you. This reproducability means it makes debugging problems very easy: E.g. uncomment a line in the config and see if something starts working again. You can nearly undo everything cleanly in NixOS by just doing that. On the other hand the learning curve really is pretty steep. Took me about half a year to get to a point where I understood it enough to be able to debug most errors.
- tinco 5y agoI would say it's more convenient and useful for servers, but it could also be used for desktop. In theory it's the perfect server operating system, but in practice many sysadmins balk at having to learn the configuration language which has some design flaws that make it awkward and they stick with old fashioned stuff like Ansible.
- ElonMuskrat 5y agoYeah. We've used it on servers. It's good in a small setting where a handful of Nix experts can run the infrastructure show. Getting it to scale to an organisation of hundreds wasn't feasible. As soon as we needed to start expanding "infrastructure" beyond just one team, and rapidly hiring new engineers in the context of rapid growth. Training and learning curve was intractable. And we cannot just easily hire NixOS experts like traditional Ubuntu OS. Nix made complicated things possible but simple things complicated. Pretty much every new feature request could only be processed by a handful of Nix experts, and it was obvious that wouldn't scale with the growth of the company. Frankly, Nix solves problems that the industry has already solved or knows how to live. Its lack of adoption from software vendors makes the economical cost/benefit unatractive.
- throwaway894345 5y ago> Frankly, Nix solves problems that the industry has already solved or knows how to live Agreed. Nix solves really important problems, but the problems it introduces tend to be worse. My instinct is that Nix is on the right path, but there doesn’t seem to be much awareness or concern for tackling these problems. Of course, this is the contributors’ prerogative—if they’re really just interested in making Nix work for the existing Nix community (rather than broadening it into the world of mainstream software development and operations), then that’s all well and good. But if they want to appeal broadly they need to make some significant changes.
- exdsq 5y agoHaving worked in a large Nix dev environment, the difficulty in understanding what was going on meant devops were needed for the simplest changes. Ended up being a blocker for every project I was on. Love the idea but really really dislike it in practice. NixOS is cool though.
- Ericson2314 5y agoThis is the type of costs-and-benefits "it's not for me" I can get behind. (I left another comment about as a Nix user I don't mind it not being popular, but I do mind people complaining about the costs and ignoring whatever benefits might lie on the other side, as if all technology is reducible to its learning curves.)
- ElonMuskrat 5y agoThis matches my experience.
- abathur 5y agoWith the naivety of someone who's never worked in _any_ large dev environment: I would guess for that to work (at this point, at least) every team would need either someone who knows Nix on the team, or at least on-demand access to someone floating? I feel like ~proficiency with Nix has is a bit of a superpower as a developer. It's an incredible lever. But I have no delusions about how hard some "easy" things are, especially around language ecosystems with their own package managers. And learning it is a good bit of work.
- exdsq 5y agoYeah the env I worked in was managed by some of the core Nix devs so they went in 100% and used all of the cutting edge features. It ended up being utter magic to me and most others I know. Tens of thousands of lines of Nix code so trying to add a library to the build was practically impossible, some of the code was hidden in private repos because it was confidential etc but other repos imported it… gah!
- 5y ago
- dmitriid 5y agoThis will sound rude, but I'm more and more convinced that people immersed in nix have never seen a real person in real life. defined boolean expression reference true. wat. I'm a technical person, and I have no idea what this is. And for technical people? Literally everyone says that "nix is really hard to get started with". nix and nix-related developers, please, please find some real people and talk to them.
- roblabla 5y agoI'm a nix fan and have been using nixos for years now, packaging stuff and writing my own nix-based libraries, but I still find the language to be painful. The problem is, documentation is sparse to non-existant, error messages are poor and often far from the actual problem, and it makes use of concept that lots of people are not familiar with (like lazy evaluation) without ever explaining them, resulting in surprising semantics. But as far as I can tell, the nix devs are fully aware of these issues - they are affected by it too! The problem is, solving each of those issues is hard, and requires a lot of focused efforts.
- dmitriid 5y agonix has been around for 18 years. If the documentation is still sparse after all these years, it's not a problem that will be fixed, ever. Same for explaining concepts. Proper errors are a huge and poorly understood problem, so I'm inclined not to judge those too harshly.
- m45t3r 5y agoI don't think it is fair to judge a project for the number of years its been around, specially for something that is really novel and innovative. Nix/NixOS is not a new web framework that most of concepts are really clear for everyone working with Web. It is a brand new concept for Operating Systems, however most people don't have a clue about system immutability and reproducibility and why this is so hard. Of course, this doesn't excuse the state of the documentation that should be better. It is just that nobody ever documented this kinda of things before, so it is difficult to do it better. Nix and NixOS just started to get more known and become popular from the last ~5 years or so, and I think this made the whole community aware that documentation is an issue and it is getting better and better (but maybe not at the pace most people wanted).
- BiteCode_dev 5y agoLooking at the GUI, I have no idea what it does. I'm guessing that you actually need to know Nix to be able to use it, which kinda defeats the "usable for non-technical users" goal. I can see the value of it, if I ever learn Nix, and want a quick way to make modifications without having to google every possibilities.
- whateveracct 5y agoIt literally says what each field does.. Just because it doesn't have an obvious minimal modern UI doesn't mean it doesn't do its job. Gotta read I guess .. but then again Nix also in general has a prerequisite of "calm down and read." But then again, so does Linux! The only thing you need to do to be Nix-competent is not flip the table and blame the tool when you get an error you don't understand. (Same goes for Haskell.) That said, my years of industry experience has shown that that is a rare attribute - doubly so amongst those with experience and therefore egos. People in this thread act like Nix users are out of touch. Maybe, but I'd rather be out of touch and learning than grumpy that I had to read.
- dmitriid 5y ago> Make NixOS usable for non-technical users through a settings / package management GUI. ^ emphasis mine. What exactly does a non-techical user have to read to understand whatever's on the screenshot? Forget non-techincal, explain this to a technical person. Apparently this has something to do with sound? Have you or any nix-person ever seen a sound configuration screen for non-technical users? I mean this one is by no means perfect, but do compare: https://www.techrepublic.com/a/hub/i/r/2016/10/05/a7dba7dd-32a0-4e48-aaec-ab97f219e753/resize/1200x/061ddf8281dfbdd21c7ac03e0381d40e/macsoundeckel092016.jpg https://www.techrepublic.com/a/hub/i/r/2016/10/05/a7dba7dd-3...
- whateveracct 5y agoKDE provides that already in NixOS. So yeah .. we do see it all the time :) This config is for a different layer - one a non-technical user probably wouldn't ever modify in most OSes. Hence, the value.
- vegai_ 5y agoAs usual, those who have learned Nix have completely forgotten what was difficult about it in the first place. And those who haven't are so confused that are unable to ask good questions.
- solarkraft 5y agoSounds like a concise description. All Nix people I met say „bro it’s so simple“ while the docs throw around 20 different concepts, multiple of which seem to be the same thing, but not really, but really you may want X in case you want to do Y but sometimes not except usually you do but well actually it’ll be replaced in a few months (...)
- 3np 5y agoHey, just go through this 20-page tutorial series and by the end you may be able to transfer that experience to that one ruby package with a particular native dependency you just want to build right now. https://nixos.org/guides/nix-pills/ https://nixos.org/guides/nix-pills/
- throwaway894345 5y agoAnother aspect is that the Nix experience varies widely between languages, in part because of different levels of support for different languages but also because different languages’ build and runtime systems vary with respect to how easily they map to Nix. So your friend who heartily recommends Nix might have had a decent experience with his Haskell projects, but you and I working in the trenches with Python or Ruby are having a miserable time and everyone who told us Nix was great just kind of shrugs and chuckles as they tell us they don’t know how to solve our problems with Nix.
- abathur 5y agoIan Henry has, thankfully memorialized the learning process so that we can all readily rediscover it. https://ianthehenry.com/posts/how-to-learn-nix/introduction/ https://ianthehenry.com/posts/how-to-learn-nix/introduction/
- TeMPOraL 5y agoWhat a coincidence. I was just asking about NixOS on Mastodon. Reposting (I'm on a mobile, little time to type): " a question on dev environment isolation. Is either #NixOS or #GUIX usable as an OS for day-to-day use (coding, browsing, occasional gaming)? Or is it better to just use their respective package managers on top of regular Linux? Also, anyone here doing desktop #virtualization? Is there a sense of running a #VM per project? Is that a viable alternative to dual-booing Windows when I want to do some Windows dev or play a game? I'm planning to overhaul my desktop and am exploring options."
- lillecarl 5y agoI have a Windows VM on a NixOS host for gaming, was really quite convenient to set it up, I set it up on a separate drive to be able to boot native too but I ended up never really doing it, so I will reconfigure my 2 drives as a Zraid and have windows on a Zvol instead. NVIDIA works great, but if I were to buy new hardware I'd go AMD (maybe Intel when the time comes)
- depressedpanda 5y ago> I have a Windows VM on a NixOS host for gaming, was really quite convenient to set it up, I set it up on a separate drive to be able to boot native too I've been planning on doing exactly this, but haven't had the time to figure out the best way of going about it. Is there a good guide/write up you'd recommend? (I already have a Windows 10 install on a separate SSD, but I rarely boot it because I can't stand the OS)
- gallexme 5y agoI use https://github.com/danielfullmer/nixos-nvidia-vgpu https://github.com/danielfullmer/nixos-nvidia-vgpu + https://looking-glass.io/ https://looking-glass.io/ very successfully Can theoretically game on Linux and windows at same time with just a single gpu (2080 ti), mainly use it cause I only have single gpu and I don't want to loose hardware acceleration on Linux, the nixos module both applies a the vgpu unlocker for consumer graphic cards (so u can split a gpu in multiple virtual gpus) https://github.com/DualCoder/vgpu_unlock https://github.com/DualCoder/vgpu_unlock And merges it with the GeForce drivers so the host gpu does not stop having display output And I just passthrough the vgpu and Xbox controllers to the vm with qemu and my main windows nvme disk (windows naturally just works inside and outside a vm for me, dual boot)
- xyzzy_plugh 5y agoA lot of odd Nix hate in here, or at least extreme dislike. NixOS is so very usable. There are a lot of foot-guns but that's true of Linux systems. It takes some time to get comfortable with all the different ways to configure stuff. There's a new language, a new build system, a new Linux distribution. I've spent very little time relative to say, figuring out dpkg or systemd, or learning Bash or C or Perl, or learning the Linux FHS. NixOS makes running deterministic systems driven from a single configuration incredibly easy. Nix the language and tools allow you to build software deterministically and create environments where that software is available (e.g. on $PATH). Nix Flakes is an experimental feature aimed at bringing reproducible and hermetic configurations of dependencies into the fold (i.e. lock files, ala Gem or Cargo or Go Modules). Nix-the-tool's interactive "package manager" should be deprecated, as it's a huge pitfall for most developers. But it works and is frankly a good first step for folks coming from Apt or Homebrew. Learning to write modules is probably the steepest learning curve, but compared to learning how to build RPMs or Dpkg or Brew recipes, it's really not bad at all. I actually find it easier and I've been at this for less than a year. Sure, if you're trying to get something working no one has figured out yet you may be in for a pickle, but that feels like it's always been true. The difference is a lot of software breaks and bends the rules and boundaries constructed to keep things and people sane. Nix does not allow that, generally, which is a very good thing. Fixing other people's garbage is the bane of any package system maintainer, it's no different here.
- throwaway894345 5y agoI haven’t used full-on NixOS yet, but I’ve used the Nix package manager quite a lot, and literally all of my forays have been miserable for a variety of different reasons. To be clear, I love what Nix aspires to be, but it doesn’t deliver on its promises IMO. As a package author, the Nix language has lots of rough edges, it’s absurdly tedious to figure out how to call various functions (what type of argument does it expect?) because it’s untyped and nixpkgs is poorly documented. There are too many other issues here to unpack. As a consumer of packages, it’s often unclear what I need to do to install anything but the simplest packages. E.g., installing vs code with some plugins (note that this differs between NixOS and other systems). Further, the CLI interfaces are confusing from a UX perspective IMO, and it’s often unclear what I actually need to use Nix well (homemanager? flakes?) the guidance is confusing and contradictory. So I don’t hate Nix, but I do have a lot of constructive criticism.
- jbverschoor 5y agoBetter skip the "non-technical": Nix-GUI: Make NixOS usable for technical users through settings / GUI
- tarkin2 5y agoI should try to look at the documentation again. But apart from the using the package manager, the rest of the documentation submerged you in a deep theoretical understanding of nix, going deeper and deeper, until the only thing that made sense anymore was the respect you gained from the technies who went further and somehow managed to use nix.
- pxc 5y agoDo you feel that way about the wiki, too?
- astral303 5y agoTo call this an interface for “ non-technical” users is an utter delusion.
- Ericson2314 5y agoIt should be said it is for technical but non-programmer users, "power users". I don't think it is more scary than dconf-editor or regedit :D. After this foundation is laid, there's no reason we can't add more "tutorial/wizard" flows, just as Microsoft kept revamping the Windows "control panel" but kept the old version. What we can't do is simply drop config options like Apple. The Nix ecosystem aspires to be all mechanism minimal policy. If upstream exposes the knob, we ought to somehow expose it, at least via a free-form textual "extraConfig".
- lappa 5y ago>After this foundation is laid, there's no reason we can't add more "tutorial/wizard" flows, just as Microsoft kept revamping the Windows "control panel" but kept the old version. Well put, this is exactly the goal. https://github.com/nix-gui/nix-gui/issues/77 https://github.com/nix-gui/nix-gui/issues/77
- teitoklien 5y agoPeople who will even approach tools like this , are never as “non-technical” as youre referring to. Dev has made a great implementation for people who fear the terminal. Thanks to this now i can bring more of my friends to try tools like these. I dont think the creator is delusional at all, The non-technical in this market is just different.
- suchar 5y agoI think NixOS would benefit from easily accessible collection of opinionated modules/profiles/configurations with minimal set of options. Something like gnome-desktop / sway-desktop / etc. Gnome actually does pretty good job here. The point is: currently my NixOS and Home Manager configurations have over 2k LOC total. When you search for configurations on GitHub/Google you are likely to find complex ones. For example, quick search for "nixos gnome" (Google) gives me link to NixOS Wiki (which describes only Gnome part) and blog post (https://gvolpe.com/blog/gnome3-on-nixos/ https://gvolpe.com/blog/gnome3-on-nixos/) which is useful but links to really huge configuration (https://github.com/gvolpe/nix-config https://github.com/gvolpe/nix-config) that is overwhelming to any beginner. Great example of such approach is nixos-hardware (https://github.com/NixOS/nixos-hardware https://github.com/NixOS/nixos-hardware) which provides one-line configuration covering hardware quirks.
- Kiboneu 5y agoYes, that's how I learned nixos -- moderately on the sparse documentation, highly on other people's code. I was shy on the #nixos channel. Now I have a working setup which spans all of my computers and servers (I also have autodeployment scripts for aws and netboot). I use the devos flake as a template, check this out: https://github.com/divnix/devos https://github.com/divnix/devos
- easygenes 5y agoThe NixOS wiki has a good comparison page for templates like devos: https://nixos.wiki/wiki/Comparison_of_NixOS_setups https://nixos.wiki/wiki/Comparison_of_NixOS_setups This is the other big one (most stars): https://github.com/hlissner/dotfiles https://github.com/hlissner/dotfiles
- Apaec 5y agoHome Manager always seems like a unnecessary layer though. Why is it needed if you already control everything with NixOS?
- opan 5y ago
- deleted 5y ago[deleted]
- zzzeek 5y agoI keep going to the NixOS website to understand what NixOS is. it says it's an "OS". I've been in the computer thing for a long time and in my experience, an "OS" is the thing that runs when your machine first boots up. From this it follows that you can't run an "OS" without rebooting a machine (or running it in a VM, or whatever). Yet I go to nixos.org, click "Learn" (let's assume I'm the supposed "non technical user") click "install nix". And what we see is two lines of shell that seems to be starting some kind of daemon. I just ran that locally, and it even states, it's going to move things around and start a daemon: - set up the "default profile" by creating some Nix-related files in /root - back up /etc/bashrc to /etc/bashrc.backup-before-nix - update /etc/bashrc to include some Nix configuration - back up /etc/zshrc to /etc/zshrc.backup-before-nix - update /etc/zshrc to include some Nix configuration - load and start a service (at /etc/systemd/system/nix-daemon.service and /etc/systemd/system/nix-daemon.socket) for nix-daemon is nixos an "OS"? Can I install it on a machine with no pre-existing OS booting from a USB stick? would be great if their docs could explain if nixos is an "OS" or some kind of runtime modification of linux / OSX. (Edit: wikipediaing / googling, it looks like you can in fact install it from an ISO, and that Nix is basically a linux distribution. I guess it has some kind of installer that can "morph" an existing distro into nix? their site should be less cagey about basic details like this). I think if the NixOS site / docs could do a better job, or any job at all, of answering this question it would make it more clear what exactly it is because I only have a vague idea that it's a package manager that rides on top of existing OSes, which is great, but the site doesn't make it look like that.
- Nullabillity 5y agoIt's a bit confusing (and the old site did a better job explaining this), but basically, you have two separate projects: Nix (a package manager/build system) and NixOS (a standalone Linux distribution that uses the Nix package manager).
- zzzeek 5y agocan i use the nix package manager without using nixos? is that what the "install" link I referred towards is setting up ? my original impression of nix years ago was that oh it's a package manager, maybe like the old BSD packagesource thing, great. but then "NixOS" came in and seemed to confuse things. all good stuff but wow that website needs to be reorganized.
- trenchgun 5y agoExellent! I was thinking of maybe doing this at some point. Happy that somebody else is alrady doing it. I might contribute to it.
- bionhoward 5y agonix is awesome and would make a great addition to windows and mac as well, if we all standardize on something like this, we could have more reproducible computing environments across dev, prod, and fun. also improves security a lot due to software supply chain management w/ immutable builds, and could make rebuilds + updates far easier and faster it's a bit esoteric though, the syntax and docs can both improve a lot. my dream machine is qubes host running nixos guests but that's a lot to set up and learn!
- lappa 5y agoThanks for posting this. This is a work in progress and definitely isn't at the point where, for example, a Ubuntu user with little technical background could switch over easily. As many commenters have pointed out, users will still be questioning which options they should change to accomplish a goal and will need to use a search engine. To alleviate these problems, our next major step is "Guided Configuration"[0]. This will allow users to select a task (e.g. add a user, add a group, configure your desktop environment, configure sound, configure bluetooth, etc) and be provided a list of options relevant to the task. Additionally "Recommended Options"[1] will inform users of options relevant to their current configuration which they have yet to define. There are a few other smaller changes in the works to help with usability, and I'm open to suggestions for how we might continue to improve UX and make configuring NixOS intuitive. Also, if you've used Nix-Gui, please consider filling out the UX Survey: https://github.com/nix-gui/nix-gui/issues/129 https://github.com/nix-gui/nix-gui/issues/129 [0] https://github.com/nix-gui/nix-gui/issues/77 https://github.com/nix-gui/nix-gui/issues/77 [1] https://github.com/nix-gui/nix-gui/issues/21 https://github.com/nix-gui/nix-gui/issues/21