4 ms·
Yeah absolutely Don't get me wrong, Nix can and should be better in many respects, but: > Second, Nix surfaces all the complexity involved in building softwar
by Ericson2314 5y ago
Yeah absolutely
Don't get me wrong, Nix can and should be better in many respects, but:
> Second, Nix surfaces all the complexity involved in building software and forces you to deal with it.
Yes, and If you can't deal with the simple functional language Nix happens to come with, you will never be able to deal all that surfaced complexity.
The latter is 10x worse more challenging.
So in some sense the language is a decent filter for people who won't like the inevitable rest anyways.
- southerntofu 5y ago> So in some sense the language is a decent filter for people who won't like the inevitable rest anyways. I'm not saying i'd like to package complex systems with nix/guix, but i certainly would use them more to package my own projects if the ecosystem had better docs and error messages in regards to typing/syntax. I'm ready to carefully read through a 20 pages manual if that's what it takes, but i personally find the documentation and diagnostics of both projects to be sub-par compared to my expectations (looks really clear on paper, now why doesn't my declaration work?). Granted, i'm not a skilled engineer so maybe i'm not your target audience, but i believe as an amateur programmer/sysadmin i'm part of the target audience to package anything i find useful and/or my own programs.
- Ericson2314 5y agoYes, we should have types! Yes, we should have better docs! (I think we have a bad mix of authoritative reference and tutorial that fails on both counts.) But if you want types, I daresay you are already understanding the basics of how the functional language works :). I imagine your problems are less: wtf is: ((x: x x) (y: y y)) and more: wtf is stdenv, wtf is mkDerivation, wtf is a setup hook, why are othre build systems hacks on top of the autotools defaults, and not clean alternatives? etc. etc.
- southerntofu 5y ago> wtf is: ((x: x x) (y: y y)) Well to be fair i don't understand this syntax. But i guess i should be able to learn it in under one page of docs. > wtf is stdenv, wtf is mkDerivation, wtf is a setup hook, why are othre build systems hacks on top of the autotools defaults, and not clean alternatives? etc. etc. But yes my problem is that i don't have a list of standard options and their types so i end up doing copy-pasta of what works in another package and adjust until it works. On a higher level, i've found it harder than expected to turn an existing package declaration from nixOS into a source-provided build file to try and build a specific branch. Or to use an existing NixOS declaration to build a reproducible (and installable) liveUSB as there seems to be various tools doing this job but i couldn't get any of them to build successfully. I'm interested if you have good learning resources to share!