From 4389f2a3fa12279faf393322462a05b3d0eb72a8 Mon Sep 17 00:00:00 2001 From: Brendan Golden Date: Fri, 18 Oct 2024 00:00:23 +0100 Subject: [PATCH] assignment: added section on Lix --- _git.tar.gz | 4 ++-- src/skynet/nix.md | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/_git.tar.gz b/_git.tar.gz index eaf503f..f1e0d7b 100644 --- a/_git.tar.gz +++ b/_git.tar.gz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38d0593fccaba86da9f3c2cdfbdccc261e70e9194b3951772dd63932309f9bac -size 357908 +oid sha256:8fb0159b7b034f4ef4096ba21efd5ac101a00b739f593fadd1c79f7911480602 +size 363383 diff --git a/src/skynet/nix.md b/src/skynet/nix.md index 67e2771..23ae6a2 100644 --- a/src/skynet/nix.md +++ b/src/skynet/nix.md @@ -43,7 +43,8 @@ There are two partially difficult problems in computer science: Nix falls into this last pitfall. The programming language used by teh Nix package manager is called Nix, not Nixlang (as like Erlang) but rather the same name as primary tool that uses it. -For clarity for teh remainder of this subsection we are only talking about Nix the language. +For clarity for teh remainder of this subsection we are only talking about Nix the language. +The Nix Package manager is sometimes known as CppNix for reasons we will get into later. Nix is a lazily evaluated functional language which al has REPL (Read, Evaluate, Print, and Loop) capability like what you would see in Python. As a whole it takes strong influences from OCaml and other ML derived languages. @@ -118,6 +119,22 @@ For example [this file][nix_dns] turns a list of attributes. Into a config usable by the BIND DNS server. ### Lix +Nix is an old enough project now, and as such has accumulated crust over the years. +This is a combination of technical and societal/governance. + +On the technical side nix is built using c++ and a max of build systems that make it hard to expand it. +For a good long time the nix binary used in the package manager was locked at v2.18 due to issues. +It took most of a year for a higher version to be used on an official basis. + +Regarding governance there has been several attempts to make it better for folks to contribute and to decouple everything from requiring Eelco to have an input. +Those attempts did not succeed. +The final straw for some of the more technical core contributors was Eelco's forming a company, hiding it from the community and trying to get military sponsorship. +This did not vibe well with folks. + +Due to all of this many core maintainers forked Nix at 2.18 and started working to apply fixes for both code and organisational. +The result of their efforts is [Lix][nix_lix]. +For a full explanation of its key features I would like to point you to the [Lix About page][nix_lix_about]. +We use Lix instead of CppNix as the goals of Lix align with the viewpoints and ideologies that our members hold and what we want to represent as a (computer) society. ## Why we use it {Details of how the config was ascattered and hard to find} @@ -146,4 +163,6 @@ Into a config usable by the BIND DNS server. [nix_guide_pills]: https://nixos.org/guides/nix-pills/# [nix_pkgs_sieve]: https://github.com/NixOS/nixpkgs/blob/a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c/pkgs/by-name/si/sieve-editor-gui/package.nix [nix_flake]: https://wiki.nixos.org/wiki/Flakes -[nix_dns]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/dns/dns.nix \ No newline at end of file +[nix_dns]: https://forgejo.skynet.ie/Skynet/nixos/src/branch/main/applications/dns/dns.nix +[nix_lix]: https://lix.systems/ +[nix_lix_about]: https://lix.systems/about/ \ No newline at end of file