2022/10/23
That ARIA stands for Accessible Rich Internet Applications! See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA
That in linux ls(1) uses the environment variable LS_COLORS to determine the colors in which the filenames are to be displayed.
Also, that linux specifies a dir_colors(5) configuration file format for dircolors(1), which exports LS_COLORS
See https://man7.org/linux/man-pages/man5/dir_colors.5.html
That nix is complicated, which is exactly what my prior research told me.
On one hand, it is AWESOME to cd into a project and watch direnv automatically spawn a development shell with all the fixings.
On the other, the nix ecosystem is bewildering.
I read through a few articles:
https://learnxinyminutes.com/docs/nix/ : covered the expression language
https://xeiaso.net/blog/nix-flakes-1-2022-02-21, part of the https://xeiaso.net/blog/series/nix-flakes series : made a great pitch for using flakes:
One of the big annoying parts about getting into Nix is that setting up projects isn’t totally a defined science…Nix flakes helps fix this by doing a few things:
- Defining a
flake.nixas the central “hub” for your project’s dependencies, exposed packages, NixOS configuration modules and more. - Shipping a set of templates so that you can get projects started easily. Think something like Yeoman but built directly into Nix. You can also define your own templates in your
flake.nix.
- Defining a
https://nixos.org/guides/declarative-and-reproducible-developer-environments.html : relied on
shell.nixhttps://nixos.org/guides/towards-reproducibility-pinning-nixpkgs.html introduced
niv, a nix package-management cli that differs fromnix flakehttps://github.com/nix-community/awesome-nix#rust : there are many nix+rust tools, and it’s not at all clear to me which (if any) to use
https://xeiaso.net/talks/nixos-pain-2021-11-10 : talks about some pain I’ve encountered (e.g. the ambiguity of the term “nix”, flakes splitting the ecosystem) and some I haven’t (NixOs, NixOps troubles – I don’t use those yet.)
https://o.librepush.net/solutions/nix/developing-python-rust-projects-on-nixos/ eschewed flakes since the author wanted to install editable python packages (reasonable)
Then there are the reasonable-yet-still-more confusing tools like
- https://github.com/jetpack-io/devbox : provide development shells
- https://www.riff.sh/ : provide external linkable libraries for rust projects
both of which expose tools to use nix (package manager) to provide development environments without requiring devs to write any nix (the language). Since I’m still struggling with the configuration language, I’m sympathetic to anyone wanting to avoid writing nix.
By dint of procrastinating, I now know that
- someone’s rewriting nix-the-language? https://tvl.fyi/blog/tvix-status-september-22
- someone bolted nix-the-build-system onto Bazel? https://www.tweag.io/blog/2018-03-15-bazel-nix/
pantsbuild currently uses absolute paths for linking some tools into its hermetic build environment? https://github.com/pantsbuild/pants/issues/14492- someone’s introducing a new concept, nix cells to make nix flakes easier? https://github.com/divnix/std
I’m still putting off reading up on nix overlays at the time of writing.
I could see someone writing SDKs for nix-the-package-manager in non-nix languages that serialize and deserialize to JSON, just like is happening to infrastructure-as-code languages (pulumi, helm, terraform cloud development kit), etc.
that you can search for nix package names on https://search.nixos.org/packages