Atemu

joined 5 years ago
MODERATOR OF
[–] Atemu@lemmy.ml 1 points 2 years ago

Having options is not the same thing as documenting those options; well outlined documentation doesn’t just dictate how to do something but also points out what you may want to do i.e. filling out unknown-unknowns.

Agreed. The point is however that, with NixOS options, you do not necessarily need such documentation for unknown-knowns.

With many things however, we can simply delegate to the upstream documentation for some thing. See i.e. the paperless extra config example. We don't need to tell users how to configure their paperless, we just tell them that any upstream option goes into this settings option as an attrset.

NixOS options do to a degree fill out unknown-unknowns though, see I.e. the steam-hardware example. I've stumbled upon many handy options by searching for related options.

Just because NixOS makes for an excellent DevOps template doesn’t mean it can’t also be an excellent platform for hacking together random crap.

While the initial "hacking the crap together" phase is indeed harder in most cases, maintaining these hacks is much simpler thanks to overrides/overlays and the additive nature of NixOS options.

That quality can arguably make it "excellent" too.

[–] Atemu@lemmy.ml 1 points 2 years ago (1 children)

32-bit libraries are in pkgs.pkgsi686Linux.* if you need them.

Put the libraries into extraLibraries; it'll add them for both µarches. No need to explicitly use pkgsi686Linux yourself.

[–] Atemu@lemmy.ml 0 points 2 years ago* (last edited 2 years ago)

Nvidia drivers works just fine. Well, as "fine" as they work on any other distro.

Only thing you need to do is add "nvidia" to services.xserver.videoDrivers. You might also need to accept unfree packages but you'll need to do that anyways for Steam.

[–] Atemu@lemmy.ml 5 points 2 years ago

Great, now 4chan can turn search results racist too.

[–] Atemu@lemmy.ml 5 points 2 years ago (1 children)

Great, now 4chan can turn search results racist too.

[–] Atemu@lemmy.ml 5 points 2 years ago (1 children)

Certainly not. Nothing should write to /usr/bin except for the package manager in FHS distros and some distros binary directories aren't writable at all.

[–] Atemu@lemmy.ml 1 points 2 years ago

Naja, das wär ja nur im extremfall, also stromausfall. Da braucht man keine sensoren, das checken die Zubs schnell manuell ab.

[–] Atemu@lemmy.ml 2 points 2 years ago (1 children)

If you're on AMD, all you have to do is programs.steam.enable = true;. Not dozens of lines copied from some wiki. I should know because that's all I do in my config to enable Steam on my AMD system: https://github.com/Atemu/nixos-config/blob/450bf3710c77818436f1459e3ea36bf087b6e56b/configs/HEPHAISTOS/default.nix#L16 (L17-L29 are optional customisation).

What may or may not work is doing everything programs.steam.enable does internally yourself like some outdated wiki entry might suggest you to do. Given you claim to have been manually configuring opengl stuff for instance, there's a good chance that's what you did. You do not have to touch any opengl settings or put steam into environment.systemPackages.

The entire point of NixOS modules is that we have the capability to abstract stuff like this so that you do not have to copy pasta dozens of lines from a possibly outdated unofficial wiki but can simply set one option.

[–] Atemu@lemmy.ml 10 points 2 years ago

FairPhone 4 because it is the only phone with removable battery and LineageOS support.

[–] Atemu@lemmy.ml 1 points 2 years ago (1 children)

Do read past that and you might understand why NixOS options are a type of documentation. They're not "code comments".

[–] Atemu@lemmy.ml 1 points 2 years ago (3 children)

my point was that the Nix package manager has useful enough features and functonality that it was ported to OpenBSD to use for managing OpenBSD software and packages.

My point was that support for BSDs in Nixpkgs (which is the de-facto "standard library") is still in its infancy. Nix without Nixpkgs is like C without a libc.

That’s what porting does, it’s making a program fully functional on a different operating system or different hardware architecture. Compatibility serves a different purpose from porting.

Terminology on this is a bit loosely defined. What I meant was that the packages in Nixpkgs largely haven't been "ported" to BSDs yet.

Many of the packages might already be "ported" and would work if other packages lower down in the tree worked. In Nixpkgs we don't really differentiate between fixing packages so that the package works as upstream intends or making something work that was never intended to work.

[–] Atemu@lemmy.ml 10 points 2 years ago* (last edited 2 years ago)

this distribution allows you to have multiple versions of the same library to work with different programs at the same time, correct?

That is correct. You can even have programs from entirely different releases running on the same system without conflicting with another; one with i.e. glibc 3.34 and one with 3.37 for example. Or even wilder setups with some packages using musl, other glibc and others yet being built statically.

Does this mean that each program downloads all its dependencies independently?

Each program references all of its (exact) dependencies. Nix then looks at the program and its references and builds a tree of dependencies.
Then it tries to "realise" these dependencies (make them, well, real), possibly by substituting (downloading) them from a binary cache or automatically building them on your machine if they're not available in any configured cache.

However, if some package with the same exact version already exists in the Nix store, no action will be taken. Why should it, it's already there.
For example, if you were in an empty world and built an environment with hello and coreutils in it, they'd both depend on glibc. If both came from the same revision of Nixpkgs, chances are that they depend on the exact same version of glibc.
What Nix would do here is fetch 1x glibc, 1x hello and 1x coreutils.

Note however that you don't need to manage any of this. You just say "I want hello and coreutils". Nix takes care of getting the correct dependencies in place but they won't be in your immediate environment. When you then say that your environment should no longer contain hello, it does that. At this point hello will still exist in the Nix store but it won't be in your PATH any longer, so it's not polluting any shared state; it just sits there on disk and the worst it could do is waste disk space. It's not "installed" in the same sense as what it'd mean to have an unused dependencies installed on an FHS system.
In order to reclaim disk space from unused Nix store paths, you can simply run a garbage collection. You don't need to care about that one specific hello store path here though, you just say "remove all unused store paths for me, thanks" and Nix removes it along with all other unnecessary paths. In NixOS, you can even have that ran periodically for you.
(Note that this is distinct from autoremove and the like; those "clean up" the shared state and free up disk space. In NixOS, these are separate processes and dependencies which you don't explicitly declare are never in the shared state to begin with.)

You see, while this could be seen as "bloat", it has none of the negative consequences bloat has on other systems such as more packages for you to manually manage, more binaries in your PATH or weird interactions of other programs. It's just easily managed disk space and disk space is honestly quite cheap.

view more: ‹ prev next ›