Add a section on Nix, Nixos and related tools #30

Merged
silver merged 11 commits from #29-nix_nixos-assignment into main 2024-10-18 22:26:26 +00:00
3 changed files with 30 additions and 9 deletions
Showing only changes of commit eef7877d25 - Show all commits

BIN
_git.tar.gz (Stored with Git LFS)

Binary file not shown.

View file

@ -30,4 +30,7 @@ plugins:
- git-revision-date-localized:
enable_creation_date: true
markdown_extensions:
- tables
- tables
- pymdownx.caret
- pymdownx.mark
- pymdownx.tilde

View file

@ -38,8 +38,8 @@ sieve-editor-gui .
#### Language
There are two partially difficult problems in computer science:
1. Off by one errors
2. Caching
3. Naming things
2. Caching
3. Naming things
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.
@ -90,7 +90,7 @@ This is a rough quickstart introduction to Nix.
For more detailed information I recommend these resources.
* [Official Guide][nix_guide_official]
* [Nix Pills][nix_guide_pills]
* [Nix Pills][nix_guide_pills]
### Flakes
A Flake is one of teh best ways of interacting with nix.
@ -137,8 +137,24 @@ For a full explanation of its key features I would like to point you to the [Lix
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}
{Also embracing devops and reduced manpower}
Back in [January 2023 we got disconnected from teh internet][skynet_disconnect].
For the purposes of this document the root cause is not of importance.
What *is* the mad Indian Jones ~~treasure~~ config hunt that it triggered.
![Brendan delving for configs][skynet_disconnect_reenactment]
Additionally ITD require us to update our systems regularly (as they should be).
Technically this config delving is an ongoing effort, the old hard drives are occasionally connected up and raided.
As you would imagine this is not ideal, a exasperating factor was that many programs had changed both the location and format of their configuration over the decades that Skynet has been using them.
This is where teh strengths of NixOS lie.
The config for the entire cluster is located in a singular location.
Using modules which work as a translation layer if the requirements for the programs change this dont impact us.
Not to mention we can fearlessly (and regularly) update our systems it is a match made is heaven.
Currently the Skynet cluster is comprised of 15 servers which have NixOS on them.
A combination of LXC's (Linux Containers) and physical bare metal servers.
Since these systems share a base config (with tehir individual applications layered on top) we are able to efficiently build them, building a package for one will also built it for other servers.
Combine that with teh ability to deploy them via our own selfhosted CI/CD we have a strong foundation to work off of.
## How we use it
### Requirements
@ -165,4 +181,6 @@ We use Lix instead of CppNix as the goals of Lix align with the viewpoints and i
[nix_flake]: https://wiki.nixos.org/wiki/Flakes
[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/
[nix_lix_about]: https://lix.systems/about/
[skynet_disconnect]: https://public.skynet.ie/postmortem/2023-01-12_Loss-of-network-access.html
[skynet_disconnect_reenactment]: https://forgejo.skynet.ie/Computer_Society/presentations_compsoc/media/branch/main/src/slides/skynet/0_intro_img1.png