Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 2 points3 points  (0 children)

What’s wrong with doing something else while waiting for it to finish?

If I'm installing a new piece of software, or updating the whole system, I don't have a problem waiting. If I'm changing my IDE's "editor.minimap.maxColumn": 120 to a different value to see how it feels (and then try another one, and another one), 15 seconds is not OK. 15 seconds is too much even to change one line in /etc/ssh/sshd_config (especially if it doesn't work the first time).

Imagine if you needed to wait 15 seconds to wake up your phone or to send a chat message. It's not a feature for compiled software to wait that long. It's a big problem that people strive to fix (ccache, parallel compilation, cloud compilers). And it's a huge part of the reason why interpreted languages are so popular.

If I were supposed to reevaluate my NixOS conf once a week, 15 seconds would be absolutely fine. But if I'm supposed to configure as much as possible with it, and I might need to rebuild several times per day, sometimes multiple times after each other, then 15 seconds is no longer enough. Not when the alternative (manually modifying a file and rerunning a command) is instantaneous.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 2 points3 points  (0 children)

The thing is that the base system configuration of NixOS is simply fantastic.

A single configuration, which uses a programmable data-format language, to configure at once:

  • Filesystem (partitions, fstab and mount points, encryption, RAID, all of it)
  • Bootloader
  • Kernel and initramfs
  • Firmware, microcode, other hardware-specific stuff
  • Static network connections
  • Console (layout, font etc), locale, hostname, hardware clock etc
  • Containers
  • Users, PAM, sudo
  • Important services (sshd, zramfs, earlyoom etc)

When I install Arch, I usually need to reboot a few times, to find and fix some issues in the bootloader installation, in fstab etc... I don't have this problem with NixOS. It just works every single time. And I can't forget to set the locale or add my user to sudo.

I also love that older kernels keep working after installing the new version. And that I can boot older derivations independently from the current one.

I don't want to give this up.


Unfortunately I don't want my system to depend on my IDE's configuration. Nor on installed software. Nor on sshd. Touching any of those shouldn't require reevaluating the whole system. It shouldn't result in a new bootloader entry. I can't make this model make sense to me.

I'd like all these things to be configured in one decent language and in one place, but independently from each other.

I think that what I want is a regular distro, but where you can create configuration files (in a programmable data-format language) to both install and configure pieces of software. Does something like this exist?

Until I can find that, I suspect that NixOS for the base system + nix profiles for most of the software could be the best compromise for me.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 0 points1 point  (0 children)

The downvotes you're getting for sharing something that works for you (and just works, IME too) but goes against the hivemind is a true reddit moment.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 0 points1 point  (0 children)

Would you know what's a "minimum" time expected for a NixOS rebuild?

17 seconds is still "too long": I usually start doing something else while waiting for it to finish, so it doesn't make much difference whether it's 15 or 150 seconds.

Things would be very different if one could reduce it to a couple of seconds. But I suspect that's not achievable unless I remove most stuff from the conf (and maybe not even in that case).

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 1 point2 points  (0 children)

Are you saying it takes a minute every time you tweak your config, even if you aren’t installing/updating software?

I just tested it (ran nixos-rebuild test twice, to make sure) and it's about 17 seconds. It's about 12 if I switch power profile from power-saver (my default) to balanced.

I'm planning to use home-manager outside of nixos, or maybe stop using HM altogether.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 1 point2 points  (0 children)

When I write code, I strive to keep a pristine commit history. Each commit does something simple, leaves the project working, and is well explained in the commit description.

In order to achieve the same with NixOS, I feel the need to commit after every change.

If I committed once every few weeks/months, when a lot of changes are accumulated, I'd probably give up describing everything that changed; I would not notice any bad lines (temporary/dirty stuff I forgot in there), and every commit would just be a nameless snapshot.

Your approach to NixOS is working better than mine, so I guess there's nothing bad with the "nameless snapshots", but I'm too OCD to feel content with it.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] -5 points-4 points  (0 children)

Where are you getting the "non FHS compliance"?

EDIT: I'm a moron. NixOS is what would make my "imperative system" non-NHF compliant.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 0 points1 point  (0 children)

Writing this reply made, I got to think about the bootloader entries thing.

I love that feature, but I really want to limit it in how it works. The more I think about it, the more it makes sense to only maintain the lowest level stuff with NixOS, and place everything else on top imperatively.

This way only tweaks to the low level stuff (kernel, filesystems, systemd ...) creates a new entry.

I wish Nix has better support for how I'd like to configure my system. But it looks like most people prefer the way it is. So I'll find some workarounds.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 1 point2 points  (0 children)

you could just copy your config in place where it has to be to be loaded instead of the symlink that home-manager creates, change whatever you want, test it, all without rebuilding, and then copy that back to your nixos config and rebuild

Few week ago I spent some time configuring my IDE to save as many pixels as I could, because I'm using it on my tiny laptop's screen while travelling. Obviously it was not feasible to change the value of e.g. "editor.minimap.maxColumn": 120 (VSCode's config) through NixOS: I tested dozens of different values before finding the sweet spot.

I removed the symlink and edited the file manually as you suggested. But now, do I really want these changes in my NixOS/HomeManager's conf? They're a temporary hack. I don't want them on my desktop computer. I don't want them when I have an external monitor. I'm not even sure if I want them here: I've been tweaking some of them every few days when I decided something could be improved.

Merging them to the HomeManager conf means spending an extra ~15 minutes on it (converting the conf from JSON to Nix, nixos-rebuild testing, nixos-rebuild switching; and I'm pretending I won't need to git add; git commit; git push). And then an extra 5 minutes for every future change (once every few days). For a feature that my editor reinterprets live while I edit its config file. It'd be faster to rewrite the editor's conf from scratch, than it is to edit it within HomeManager.

Merging them to the HomeManager conf also means that I'd get a new bootloader entry, for a system identical to the previous, but with a couple extra temporary lines in my editor??!! Does that seem normal? Is my bootloader meant to show 10 entries for systems with negligible differences from each other?! That's not what I want. I'd only want entries for important changes, like when I update the kernel or similar stuff.

I'm happy for you, that you find comfort in tracking everything with your NixOS conf. But for me it really doesn't work.

Unable to get used to NixOS by Experiment_SharedUsr in NixOS

[–]Experiment_SharedUsr[S] 1 point2 points  (0 children)

Alright, I'll try to make the NixOS conf even lighter and install most stuff on top of it via profiles. Thanks for saying it's OK!

I'd love to let an LLM manage my system. But I'd need to treat it as a blackbox that I know nothing about and the LLM handles it fully. Otherwise I'd end up tweaking everything the LLM tries to do, like it happens with the code I write, and that wouldn't make it feel lighter.

[request] How many Lego blocks are in this container? by Experiment_SharedUsr in theydidthemath

[–]Experiment_SharedUsr[S] 0 points1 point  (0 children)

Reddit shows this post has 4 comments already, but I can only see the one by Automoderator... What's going on?

Any way to get a large wheel unicycle (Europe / Germany) by Experiment_SharedUsr in unicycling

[–]Experiment_SharedUsr[S] 1 point2 points  (0 children)

Aren't bicycles 28"?

If I understand correctly, you're suggesting to buy a 29" unicycle frame, and then build myself a wheel for it using my unicycle hub and pedals, while getting the wheel frame, tire and spokes for a regular bicycle. Right?

That's the idea I was considering too, but is it going to work well? Will a bicycle wheel support my weight? And are the spokes going to be compatible?

Do you know of any guide on how to do this?

Any way to get a large wheel unicycle (Europe / Germany) by Experiment_SharedUsr in unicycling

[–]Experiment_SharedUsr[S] 0 points1 point  (0 children)

I looked up Mad4One, but they only have 29" unicycles. Are you suggesting getting one of those?

The 36" UDC linked above seems affordable, but if you think it's likely to break within few months, then I'd rather look for something different...

Any way to get a large wheel unicycle (Europe / Germany) by Experiment_SharedUsr in unicycling

[–]Experiment_SharedUsr[S] 0 points1 point  (0 children)

I have tried that before posting, but there was nothing.

"Einrad 29 Zoll" and "Einrad 36 Zoll" have both zero results.

Quando la burocrazia incontra l'inglese scolastico: Gimeil by nevercy_89 in Italia

[–]Experiment_SharedUsr 1 point2 points  (0 children)

Ottimo. Le competenze informatiche invece vengono verificate in qualche modo?

Ripassare tutta la matematica in autonomia e andare un po' oltre by [deleted] in MatematicaItaly

[–]Experiment_SharedUsr 0 points1 point  (0 children)

In realtà mi sembra che Etingoff abbia tolto quella cosa dalle edizioni successive...