I've realized most of my blog post is not really about NixOS, it's just about this particular TUXEDO laptop requiring special tweaks to work properly. I've set up Debian 13 with Nix (plus Home Manager) in a VM to try it out and have realized that on the real laptop I would need to perform the same tweaks: install special drivers, install the TUXEDO Control Center (albeit using a supported .deb), and add those same kernel params. The only "care-free" option would be using TUXEDO OS, which I could explore. I've run NixOS on e.g. an AMD ThinkPad T14 and it was seamless, with no tweaks needed.
I suppose using something other than NixOS would indeed make some things easier (in my case Vanta, `pinentry` programs, Playwright and Cypress) and would perhaps let me live a more hands-off experience. I currently run `nix flake update` on my system way too often... but other than that, NixOS is not really getting in the way, at least as far as using this laptop goes.
Interesting to see someone writing a blog post and explaining issues they've encountered with their laptop, I participate in the official repository of Nix configurations covering these kinds of hardware quirks [1].
I also have a InfinityBook Pro 14 Gen 9 (Intel Version) and began adding support for this laptop in NixOS Hardware in early March of this year, including settings sane defaults, loading drivers, and even refactoring/backporting modules for other InfinityBook versions.
Great work! I love that NixOS makes encoding these settings so easy. 'Sadly', my T14 Gen 5 AMD worked out of the box with NixOS, so nothing to contribute :). (I see that this model is in the repo with minimal configuration.)
A lot of people say this, but honestly this kind of sounds like someone who doesn't understand the ethos around NixOS. NixOS isn't just a vanilla Linux distro with Nix preinstalled
The whole point of NixOS is that the entire system is managed by Nix. The entirety of everything is declarative in your configuration file(s) and the entire system can consistently be rebuilt from the configuration. The root system is immutable after being built and as such it is trivial to snapshot.
This isn't just a trivial implementation detail, it changes the entire way that you use the computer. Boot parameters, drivers, installed programs, everything is done via configuration, as opposed to installing Nix on Ubuntu where most stuff is still managed haphazardly and mutably.
You might not think that's good or worth it, but I dispute the notion that installing Nix on a non-NixOS distro gives you the "best of both worlds". They're very different things.
OP had a situation where software he wanted to run didn't work with NixOS.
If OP wanted the benefits of the Nix package manager (e.g. per-project development environments, using Nix to build container images, etc.), and didn't want the friction of "how do I run this software on NixOS", I think it's straightforward that using Nix on a non-NixOS distro is a practical choice.
Using nix on non-NixOS definitely has benefits, I don't think that's disputed. But it's not "the best of both worlds" as the things NixOS gives are immense and not at all fully provided by just using nix on another OS.
One would think so but then you find out even more issues crop up with certain software.. Maybe things have changed but I found that anything that relied on opengl and such would need special workarounds to run on non-NixOS when I tried.
This was perhaps only an issue with launching from nix shell.. but it caused enough friction for me that I ended up switching. It's much easier to use, e.g., steam-run/appimage-run/nix-alien/plain-ole-npx for all special cases on NixOS than the vice-versa issues on non-NixOS imho.
The whole point of NixOS is to make packages a special case of configuration. Running nix elsewhere doesn't do that and for configuration there are more mature tools. It would be like using Ansible(/Salt/Puppet or other similar tools) without any of the upside those have. Don't be afraid to use those tools though, they're great.
That is the whole point of NixOS, but NixOS is not the whole point of Nix.
I personally think these issues sound one-off to me, and sticking with NixOS should be fine. But other OS + home manager is completely valid and a great way to use Nix more casually.
> You'd avoid the friction of having to deal with software that doesn't 'just work' on NixOS
I'm not sure what type of software you're talking about, but Linux native software usually works with 'steam-run', which is really the "pretend to be Ubuntu" command.
Another good tip mentioned on the NixOS wiki FAQ is nix-ldd with the dependencies from steam-run.
Still. The benefit of having a declared system configuration does come with the cost of having to put in that effort up front; and a steeper learning curve for knowing how to get around those difficulties compared to more typical distros.
Software that has only dynamically linked binaries available for it (and no source) are one such example. The main Azure CLI tool is built in Python but it downloads binaries for certain actions on the fly if it needs them. These are a major PITA (or impossible) to get working correctly on NixOS.
I agree it's annoying, though if you need dynamically linked stuff, there's always the FHS environments [1]. You can also do an FHS shell if you don't want to make a package.
There's also nix-ld [2], which allows you to directly run unpatched binaries.
I feel like the Atomic Linux approach is already a better fit for desktop usage. Flatpaks for most user software along with other options to install packages with different methods if there are special/legacy requirements.
I think the only negative aspect of the approach is the sheer quantity [1] of package installation options available.
Flatpaks are a potential security disaster where people learn to install software of questionable provenance, not much different from other desktop operating systems where users learn to click past the warning to install binaries found on random web pages.
People will do that anyways if not from 3rd party repos like incredibly popular AURs or PPAs then good old curl | sh.
Flatpaks at least have a sandbox that can be easily configured to protect the user, does not require elevated privileges and get some limited vetting on flathub. Not to mention additional security feature like portals.
I feel like flathub and many App Store-like programs that install flatpaks do a good job showing app permissions, whether the apps are OSS, and whether the developer is verified.
I don’t see how it’s significantly different than the status quo on Windows/Mac.
For one thing, barrier to entry is not a security feature. Malware has made its way into paid app stores.
I think someone running Linux wants low barrier to entry as a reason to use the system. They want a system built by communities and not by corporations with walled garden toll booth business models.
But this point is extremely weak either way when you compare to the Windows barrier to entry which is effectively zero. Or you can compare flatpak to Mac users installing software with Homebrew.
I think if you look at flathub there are very good explanations on each piece of software regarding whether the author is verified, what the license and code availability status of the package is, and which permissions are being used when installed. It seems
to use relatively strong language to describe permissions features as potentially unsafe.
Flathub is VERY transparent which packages are not verified and unlike system packages they come with sanboxing which if correctly configured (also transparently displayed) can mitigate malicious access.
Does it allow you to install/run graphical apps that require GPU access? That's my biggest annoyance right now with using Nix packages on my Debian (stable) system, they just don't work for everything.
I'm traveling for the next couple weeks and don't want to take my home or work laptop, so I'm setting up a nice, old Chromebook with NixOS. I've dabbled with NixOS before. But this time I have been using Claude Code to set it up, and it's really good at it. Makes it painless, even without being very experienced with NixOS.
This is why I stopped caring about Linux brand laptops, in the end they are simply white brands where Linux mostly works, not everything, not everything out of the box as any laptop I might buy on the shopping mall computer center.
If I were designing a laptop specifically for Linux it’s hard to image going for anything but Intel for networking, but it’s possible Tuxedo’s ODM doesn’t give them the choice.
Dell XPS and Asus netbooks supposedly were designed with Linux in mind, and I had my share of wlan adventures.
On Asus netbook, only the original proprietary driver from Asus worked properly, the open source replacement, always kept dying when under load, regardless of how many improvements were made to it.
Something like updating Rust, instead of seconds, took minutes with all the network reconnection happening, or I had to pull the lan cable instead.
I guess my point is that brands like Lenovo use bog-standard Realtek and Intel NICs and they just work well out of the box. Somewhat similar with WiFi chipsets - my ThinkPad uses a standard Qualcomm chipset and it works without any issues.
It seems like these small Linux laptop vendors do not have enough clout to ask ODMs for devices with better-supported hardware. On the other hand, there must be ODMs that use more standard hardware, no?
At any rate, it creates the weird situation that it is better to purchase something like a ThinkPad if you want good Linux support. But if the Linux laptop vendors do not become large enough, they will not have enough sway over ODMs.
Ironically that driver I was talking about was the Qualcomm driver, Ubuntu the distribution Asus was using on the netbook I had, decided to replace the proprietary blob with the open source on, back then in its early days.
Not only did we had to endure it getting feature complete, or rollback kernel updates as means to be able to use the proprietary one, it was never as stable during the last decade.
Point being if not even Dell and Asus, with their might care enough for a flawless Linux experience, how can we expect better from small shops doing Linux installations on random asian models?
Last year I got burned with 300 euros, buying something that was supposed to work with Linux, but only did so when using external storage via USB, booting never worked from the internal SSD drive, pity that forgot to mention that anywhere.
It's rather bleak that these special "Linux computers" require this much fiddling. None of my laptops are sold as running Linux but all of them were easier to set up than this (only the MacBook Air 2013 required anything at all other than running the Ubuntu installer and clicking "yes").
The challenge here is installing NixOS. The ease of installing Linux on the laptops you've used is because someone else has already done this kind of work.
I have installed NixOS on mainstream hardware and it doesn't involve any of the faffing discussed here. The HW-specific aspect of setup is normally completely automatic.
My experience with Linux since the 1990s has been that bleeding edge hardware is never a great choice. I've had the best experience with slightly older laptops (typically bought 2nd hand).
I wonder if Nix is finally OK to use with LLMs. Used to be such a pain and just hours of googling to make simple things work. I think even ChatGPT didn't work well at the time for me, but now at least the try-and-fail can be done by the LLM itself.
Did the switch to NixOS a few months ago on my Thinkpad and ChatGPT worked wonders. I'm not very experienced with Linux distros and have been an Ubuntu user for a long time. I don't think I'll be switching away from NixOS anytime soon, it's great.
The learning curve is still extremely steep but after the initial 10 hours of googling it just all falls into place.
I’ve found much success using the most recent LLMs (mostly ones trained on 2024 data) for configuring nixos. It’s even pretty good at flake workflows as well!
I would be a bit careful, it generates piles of Nix code that may work, but are not great. E.g. it often likes to generate imperative hacks (like setting LD_LIBRARY_PATH, etc.) that break things down the line.
Use it as a teacher to learn to understand Nix deeply yourself. I would absolutely recommend everyone to start with the Nix Pills though, it's a great way to learn the language and understand the basic building blocks.
I've been running NixOS as a daily driver for about 5 years so I'm somewhat comfortable with it. So far, I haven't seen many odd configurations as you suggest, but I'll keep my eye out.
Author here, posting a self-review.
I've realized most of my blog post is not really about NixOS, it's just about this particular TUXEDO laptop requiring special tweaks to work properly. I've set up Debian 13 with Nix (plus Home Manager) in a VM to try it out and have realized that on the real laptop I would need to perform the same tweaks: install special drivers, install the TUXEDO Control Center (albeit using a supported .deb), and add those same kernel params. The only "care-free" option would be using TUXEDO OS, which I could explore. I've run NixOS on e.g. an AMD ThinkPad T14 and it was seamless, with no tweaks needed.
I suppose using something other than NixOS would indeed make some things easier (in my case Vanta, `pinentry` programs, Playwright and Cypress) and would perhaps let me live a more hands-off experience. I currently run `nix flake update` on my system way too often... but other than that, NixOS is not really getting in the way, at least as far as using this laptop goes.
Excellent write up and great real world review. You mentioned wanting to become a generalist.
The missing applet for tuxedo-rs would be a great opportunity to "scratch an itch" and learn some new technology.
You have some options on the language you write the applet in if you're not ready to jump in to Rust or C.
Might be a great way to learn some stuff outside of web development.
Good luck.
Interesting to see someone writing a blog post and explaining issues they've encountered with their laptop, I participate in the official repository of Nix configurations covering these kinds of hardware quirks [1].
I also have a InfinityBook Pro 14 Gen 9 (Intel Version) and began adding support for this laptop in NixOS Hardware in early March of this year, including settings sane defaults, loading drivers, and even refactoring/backporting modules for other InfinityBook versions.
[1]: https://github.com/NixOS/nixos-hardware/tree/master/tuxedo/i...
Great work! I love that NixOS makes encoding these settings so easy. 'Sadly', my T14 Gen 5 AMD worked out of the box with NixOS, so nothing to contribute :). (I see that this model is in the repo with minimal configuration.)
The author mentions it in the conclusion, but I think "nix package manager on non-NixOS Linux" would be the best of both worlds.
You'd avoid the friction of having to deal with software that doesn't 'just work' on NixOS, but still be able to make use of things like devenv.
Though, an understated benefit from using NixOS is that the specific fixes taken are now available "as code".
A lot of people say this, but honestly this kind of sounds like someone who doesn't understand the ethos around NixOS. NixOS isn't just a vanilla Linux distro with Nix preinstalled
The whole point of NixOS is that the entire system is managed by Nix. The entirety of everything is declarative in your configuration file(s) and the entire system can consistently be rebuilt from the configuration. The root system is immutable after being built and as such it is trivial to snapshot.
This isn't just a trivial implementation detail, it changes the entire way that you use the computer. Boot parameters, drivers, installed programs, everything is done via configuration, as opposed to installing Nix on Ubuntu where most stuff is still managed haphazardly and mutably.
You might not think that's good or worth it, but I dispute the notion that installing Nix on a non-NixOS distro gives you the "best of both worlds". They're very different things.
OP had a situation where software he wanted to run didn't work with NixOS.
If OP wanted the benefits of the Nix package manager (e.g. per-project development environments, using Nix to build container images, etc.), and didn't want the friction of "how do I run this software on NixOS", I think it's straightforward that using Nix on a non-NixOS distro is a practical choice.
Using nix on non-NixOS definitely has benefits, I don't think that's disputed. But it's not "the best of both worlds" as the things NixOS gives are immense and not at all fully provided by just using nix on another OS.
One would think so but then you find out even more issues crop up with certain software.. Maybe things have changed but I found that anything that relied on opengl and such would need special workarounds to run on non-NixOS when I tried.
This was perhaps only an issue with launching from nix shell.. but it caused enough friction for me that I ended up switching. It's much easier to use, e.g., steam-run/appimage-run/nix-alien/plain-ole-npx for all special cases on NixOS than the vice-versa issues on non-NixOS imho.
The whole point of NixOS is to make packages a special case of configuration. Running nix elsewhere doesn't do that and for configuration there are more mature tools. It would be like using Ansible(/Salt/Puppet or other similar tools) without any of the upside those have. Don't be afraid to use those tools though, they're great.
That is the whole point of NixOS, but NixOS is not the whole point of Nix.
I personally think these issues sound one-off to me, and sticking with NixOS should be fine. But other OS + home manager is completely valid and a great way to use Nix more casually.
> You'd avoid the friction of having to deal with software that doesn't 'just work' on NixOS
I'm not sure what type of software you're talking about, but Linux native software usually works with 'steam-run', which is really the "pretend to be Ubuntu" command.
> I'm not sure what type of software you're talking about...
The original post mentions several examples where he ran into friction. (Monitoring/tracking software, pinentry-kwallet, playwright, tableplus).
A popular escape hatch for NixOS (or other immutable distros) for commandline tools is distrobox. https://github.com/89luca89/distrobox
Another good tip mentioned on the NixOS wiki FAQ is nix-ldd with the dependencies from steam-run.
Still. The benefit of having a declared system configuration does come with the cost of having to put in that effort up front; and a steeper learning curve for knowing how to get around those difficulties compared to more typical distros.
Software that has only dynamically linked binaries available for it (and no source) are one such example. The main Azure CLI tool is built in Python but it downloads binaries for certain actions on the fly if it needs them. These are a major PITA (or impossible) to get working correctly on NixOS.
I agree it's annoying, though if you need dynamically linked stuff, there's always the FHS environments [1]. You can also do an FHS shell if you don't want to make a package.
There's also nix-ld [2], which allows you to directly run unpatched binaries.
[1] https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/bi...
[2] https://search.nixos.org/options?channel=unstable&show=progr...
I feel like the Atomic Linux approach is already a better fit for desktop usage. Flatpaks for most user software along with other options to install packages with different methods if there are special/legacy requirements.
I think the only negative aspect of the approach is the sheer quantity [1] of package installation options available.
[1] https://docs.bazzite.gg/Installing_and_Managing_Software/
Flatpaks are a potential security disaster where people learn to install software of questionable provenance, not much different from other desktop operating systems where users learn to click past the warning to install binaries found on random web pages.
People will do that anyways if not from 3rd party repos like incredibly popular AURs or PPAs then good old curl | sh.
Flatpaks at least have a sandbox that can be easily configured to protect the user, does not require elevated privileges and get some limited vetting on flathub. Not to mention additional security feature like portals.
I feel like flathub and many App Store-like programs that install flatpaks do a good job showing app permissions, whether the apps are OSS, and whether the developer is verified.
I don’t see how it’s significantly different than the status quo on Windows/Mac.
Flatpak makes it very hard to see who packages what. There are apps that look official, buy are built in third-party repositories.
With distributions packages, there's a bigger barrier to entry which is at least better in avoiding sneaky malware from easily creeping in.
For one thing, barrier to entry is not a security feature. Malware has made its way into paid app stores.
I think someone running Linux wants low barrier to entry as a reason to use the system. They want a system built by communities and not by corporations with walled garden toll booth business models.
But this point is extremely weak either way when you compare to the Windows barrier to entry which is effectively zero. Or you can compare flatpak to Mac users installing software with Homebrew.
I think if you look at flathub there are very good explanations on each piece of software regarding whether the author is verified, what the license and code availability status of the package is, and which permissions are being used when installed. It seems to use relatively strong language to describe permissions features as potentially unsafe.
But its used to create the illusion that linux can be used by typing handymen.
Flathub is VERY transparent which packages are not verified and unlike system packages they come with sanboxing which if correctly configured (also transparently displayed) can mitigate malicious access.
You could take a look at guix [1], it's very much like nix, but is available as a package manager for other distros.
[1] https://guix.gnu.org/
Guix is also a great project and I don't want to dissuade anyone from using it, but Nix can also be used as a package manager only.
Does it allow you to install/run graphical apps that require GPU access? That's my biggest annoyance right now with using Nix packages on my Debian (stable) system, they just don't work for everything.
You can often set up /run/opengl-driver to mirror NixOS and it will work. For instance for CUDA:
https://danieldk.eu/Nix-CUDA-on-non-NixOS-systems#make-runop...
Nobody switched to Guix for easier driver support lol
I'm traveling for the next couple weeks and don't want to take my home or work laptop, so I'm setting up a nice, old Chromebook with NixOS. I've dabbled with NixOS before. But this time I have been using Claude Code to set it up, and it's really good at it. Makes it painless, even without being very experienced with NixOS.
Motorcomm YT6801 LAN drivers
Why does a Linux laptop brand ship with an Ethernet NIC (Motorcomm YT6801) that requires an out-of-tree driver? (And a hack to fix ACPI issues.)
I think I know the answer, but...
This is why I stopped caring about Linux brand laptops, in the end they are simply white brands where Linux mostly works, not everything, not everything out of the box as any laptop I might buy on the shopping mall computer center.
Maybe when they get System 76 devices on display.
If I were designing a laptop specifically for Linux it’s hard to image going for anything but Intel for networking, but it’s possible Tuxedo’s ODM doesn’t give them the choice.
Dell XPS and Asus netbooks supposedly were designed with Linux in mind, and I had my share of wlan adventures.
On Asus netbook, only the original proprietary driver from Asus worked properly, the open source replacement, always kept dying when under load, regardless of how many improvements were made to it.
Something like updating Rust, instead of seconds, took minutes with all the network reconnection happening, or I had to pull the lan cable instead.
I guess my point is that brands like Lenovo use bog-standard Realtek and Intel NICs and they just work well out of the box. Somewhat similar with WiFi chipsets - my ThinkPad uses a standard Qualcomm chipset and it works without any issues.
It seems like these small Linux laptop vendors do not have enough clout to ask ODMs for devices with better-supported hardware. On the other hand, there must be ODMs that use more standard hardware, no?
At any rate, it creates the weird situation that it is better to purchase something like a ThinkPad if you want good Linux support. But if the Linux laptop vendors do not become large enough, they will not have enough sway over ODMs.
Ironically that driver I was talking about was the Qualcomm driver, Ubuntu the distribution Asus was using on the netbook I had, decided to replace the proprietary blob with the open source on, back then in its early days.
Not only did we had to endure it getting feature complete, or rollback kernel updates as means to be able to use the proprietary one, it was never as stable during the last decade.
Point being if not even Dell and Asus, with their might care enough for a flawless Linux experience, how can we expect better from small shops doing Linux installations on random asian models?
Last year I got burned with 300 euros, buying something that was supposed to work with Linux, but only did so when using external storage via USB, booting never worked from the internal SSD drive, pity that forgot to mention that anywhere.
It's rather bleak that these special "Linux computers" require this much fiddling. None of my laptops are sold as running Linux but all of them were easier to set up than this (only the MacBook Air 2013 required anything at all other than running the Ubuntu installer and clicking "yes").
The challenge here is installing NixOS. The ease of installing Linux on the laptops you've used is because someone else has already done this kind of work.
I have installed NixOS on mainstream hardware and it doesn't involve any of the faffing discussed here. The HW-specific aspect of setup is normally completely automatic.
Again, that's because the work has already been done to support mainstream hardware.
My experience with Linux since the 1990s has been that bleeding edge hardware is never a great choice. I've had the best experience with slightly older laptops (typically bought 2nd hand).
I too enjoy torturing myself with NixOS
I wonder if Nix is finally OK to use with LLMs. Used to be such a pain and just hours of googling to make simple things work. I think even ChatGPT didn't work well at the time for me, but now at least the try-and-fail can be done by the LLM itself.
Did the switch to NixOS a few months ago on my Thinkpad and ChatGPT worked wonders. I'm not very experienced with Linux distros and have been an Ubuntu user for a long time. I don't think I'll be switching away from NixOS anytime soon, it's great.
The learning curve is still extremely steep but after the initial 10 hours of googling it just all falls into place.
I’ve found much success using the most recent LLMs (mostly ones trained on 2024 data) for configuring nixos. It’s even pretty good at flake workflows as well!
Nix is fantastic with Claude Sonnet.
I would be a bit careful, it generates piles of Nix code that may work, but are not great. E.g. it often likes to generate imperative hacks (like setting LD_LIBRARY_PATH, etc.) that break things down the line.
Use it as a teacher to learn to understand Nix deeply yourself. I would absolutely recommend everyone to start with the Nix Pills though, it's a great way to learn the language and understand the basic building blocks.
Heard!
I've been running NixOS as a daily driver for about 5 years so I'm somewhat comfortable with it. So far, I haven't seen many odd configurations as you suggest, but I'll keep my eye out.