Add a section on Nix, Nixos and related tools #30
3 changed files with 30 additions and 9 deletions
BIN
_git.tar.gz
(Stored with Git LFS)
BIN
_git.tar.gz
(Stored with Git LFS)
Binary file not shown.
|
@ -30,4 +30,7 @@ plugins:
|
|||
- git-revision-date-localized:
|
||||
enable_creation_date: true
|
||||
markdown_extensions:
|
||||
- tables
|
||||
- tables
|
||||
- pymdownx.caret
|
||||
- pymdownx.mark
|
||||
- pymdownx.tilde
|
|
@ -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
|
Loading…
Reference in a new issue