• 2 Posts
  • 221 Comments
Joined 1 year ago
cake
Cake day: June 12th, 2023

help-circle



  • Can we stop referring to the “what color is your function” post for languages it doesn’t apply for? Contrary to Javascript (where it does apply), Rust with tokio has adapters for both async -> sync (Runtime::spawn_blocking) and sync -> async (Runtime::block_on). It probably isn’t a good idea to overuse spawn_blocking but calling an async function from a sync one is literally no problem.










  • Yeah, but it isn’t noticeably “less stable” if at all anymore* unless you mean stable as in “essentially in maintenance mode”, and clearly good enough for SLES to make it the default. Stop spreading outdated FUD and make backups regularly if you care about your documents (ext4 won’t save you from disk failure either which is probably the more likely scenario).

    * not talking about the RAID 5/6 modes, but those are explicitly marked unstable







  • The same argument can be made for any OS. Same packages, same hardware, same configuration, and probably it would be the same.

    Only if we’re talking about 1:1 disk image clones or installing stuff on a fresh system.

    https://nixos.org/

    That is clearly talking about build-time dependencies and the build process given the context (maybe the word “work” here is misleading though, also because some packages don’t even have parts that can “work” or “not work” like wallpaper packages). It is impossible to automatically ensure all runtime dependencies are met, because that would require analyzing what the program actually does. I can write you any number of Nix packages that will only run on my computer (simplest case is because they load a file from a path from my user directory or something), but the thing that Nix ensures is that you can reproduce the package contents on your system as well.

    That said, in a lot of cases, nixpkgs does actually (manually) patch runtime dependencies to use store paths which sets up that dependency relation, but with KDE PIM stuff this would lead to dependency cycles if done the typical way, for example KMail depends on Akonadi to build, but Akonadi loads plugin files from KMail when it is installed. This is not something you can do, so to resolve that cycle, you need another package which depends on both and links them together so they can see each other at runtime. Right now the entire NixOS configuration (or rather, whatever the environment.systemPackages option affects) assumes the role of this third package, but it would be nice if was done in in a more self-contained way, so that you could also reasonably use this stuff outside of NixOS.


  • Not at all, given we’re running probably significantly different configurations. With the same configuration we’d get the same results, and NixOS never claimed to eliminate what is essentially packaging bugs related to runtime dependencies. KDE stuff (and especially anything Akonadi-related) right now needs a lot of plugin path environment variable mess to work with NixOS’s file structure because it loads a bunch of stuff at runtime from other packages, which can break in strange ways like this if you don’t add a specific package to your system packages for example, it’s definitely not ideal the way it is right now but it’s also pretty hard to get right.