6 ms·
I've never used Nix, but this looks like hell'a of an unreadable config file (compared to docker)? How do you manage these files?
by chrisandchris 3y ago
I've never used Nix, but this looks like hell'a of an unreadable config file (compared to docker)? How do you manage these files?
- elbear 3y agoWhat do you mean by manage? I agree with your assertion regarding the language though. I think nix-lang makes it harder to get into Nix.
- whateveracct 3y agoIt's not actually unreadable - you just have to learn convention on top of the Nix language. For instance, what mkDerivation does. Actually, the Nix language usage here is somewhat minimal. Mostly let bindings (aka lambda calculus). I wouldn't expect a layman to be able to grok that file. That's fine though - it's not for laymen.
- guitarbill 3y ago> It's not actually unreadable - you just have to learn convention on top of the Nix language. For instance, what mkDerivation does. Actually, the Nix language usage here is somewhat minimal. Mostly let bindings (aka lambda calculus). > I wouldn't expect a layman to be able to grok that file. That's fine though - it's not for laymen. This is the kind of comment that makes me want to stay far, far away from Nix and the Nix "community".
- whateveracct 3y agoWhy? Saying that Nix is complicated and isn't trivial to use or read without learning prerequisite knowledge is bad now? I actually pointed out that mkDerivation is something helpful to learn - that's one thing I wish someone made me sit and learn when I first got exposed to Nix. It unlocks a lot.
- chrisandchris 3y agoI wouldn't state it's _bad_. It just adds another layer of complexity (by, for sure, also giving something back) and as someone not working in Fortune 500 (but rather in a SME with <20 people), another layer of conplexity & another language is sonetimes just not feasable.
- takeda 3y agoI think whateveracct was referring to is this link: https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/compilers/zulu/common.nix https://github.com/NixOS/nixpkgs/blob/master/pkgs/developmen... What that file is doing, is building a package, and it essentially is a combination of what Makefile and what RPM spec file does. I don't know if you're familiar with those tools, but if you aren't it takes some time to know them enough to understand what is happening. So why would be different here?
- takeda 3y agoThis does far more than Dockerfile though. - it contains information how to actually build the application - how to set up a dev environment - how to build application with musl - how to build application with glibc - how to build python with only with expat, libffi, openssl, zlib packages - how to take botocore and patch it up to only have cloudformation, dynamodb, ec2, elbv2, ssm, sso, sts clients Try to get all of that into a single Dockerfile and see how complicated mess you end up with. The actual docker configuration is here: https://gist.github.com/takeda/17b6b645ad4758d5aaf472b84447bb7c#file-project-nix-L66-L113 https://gist.github.com/takeda/17b6b645ad4758d5aaf472b84447b... It might be still confusing to you at first, as you're used to list of incremental steps how to get to the final result, while this description instead is declarative (you're describing not the steps to do, but what the final image should be). It's basically comparing bash script with bunch of "aws" CLI invocations to a terraform or cloudformation file.