Compare commits

...

3 commits

Author SHA1 Message Date
4fc28bfb4f add gpg public key 2026-02-13 11:44:30 +10:00
56e11550fb update github acccount 2026-02-13 11:44:24 +10:00
fc2a575131 add learntocry 2026-02-13 11:44:15 +10:00
3 changed files with 130 additions and 2 deletions

107
docs/learn_to_cry/nix.md Normal file
View file

@ -0,0 +1,107 @@
# The Nix Documentation Situation
The Nix documentation situation is notorious bad. It's difficult to find
a concise answer with detailed justification/explanation. And most people
(myself included) tend resort to the [ArchWiki](https://wiki.archlinux.org).
> [!NOTE]
> The [Nix documentation team](https://nixos.org/community/teams/documentation) has an incredibly difficult job.
Unlike the *centralised* [ArchWiki](https://wiki.archlinux.org), the Nix ecosystem
is incredibly large:
1. **Nix** (the package manager)
2. **Nix/NixLang** (the programming language)
3. **Nixpkgs** (the package repository)
4. **NixOS** (the linux distribution)
5. **Home-Manager** (user environment management)
6. **NUR** (Nix User Repository, like the AUR but Nix!)
7. *and **many** more...*
Often each project has its own website, wiki, styling, etc. There is tonnes
of information available online but its so hard to find it.
**Notable organisations:**
1. NixOS Foundation (*official organisation that maintains Nix/Nixpkgs/NixOS*)
2. Nix Community (*unofficial community providing infrastructure/hosting/visibility for projects*)
## About Me
I love and hate Nix simultaneously.
Originally *(circa 2023)* I used Windows 10/11 exclusively for programming.
But this is tedious and my friend started mentioning Arch Linux. So with their
help I formatted a spare SSD and began my journey.
But I **REALLY** like computers... I have servers, routers, 3 computers
actively powered in my bedroom, and *I believe* 9 laptops *currently* in my posession.
Documenting **every** change I make to a system and spending a week
setting up a device I don't really care about isn't sustainable.
And then *(circa October 2024)* I learnt about NixOS... And now life is "easy".
But learning Nix/NixLang/Nixpkgs/NixOS/Home-Manager/blah-blah-blah was exhausting.
So now I'll try to simplify this learning curve for other newbies **<3**
## Nix/NixOS How To
### NixOS Documentation
Using "the" NixOS wiki is surprisingly confusing (at least it was for me).
Why? Because there are multiple and you probably won't realise the difference.
**Main Wikis:**
> These are visually and structurally identical... And are both community run.
> But they're content does differ. [nixos.wiki] was created
> because ""[wiki.nixos.org] was too limiting with regards to wiki features".
1. [https://wiki.nixos.org] (the **official** NixOS wiki)
2. [https://nixos.wiki] (the **unofficial** user's wiki, community run)
**Other Resources:**
> [!TODO]
### Migrate to a Newer Version of Nixpkgs
```bash
# Determine the channel name you're using
nix-channel --list
nix-channel --remove <OLD_CHANNEL>
nix-channel --add <NEW_CHANNEL> # ie https://nixos.org/channels/nixos-25.05
nix-channel --update
# Now upgrade system profile (log to file in case of failure)
nixos-rebuild boot --upgrade | tee rebuild.log
```
## Security Implications
### NixOS Default Home Permissions
```bash
# Executing from $HOME
>>> mkdir example.d && ls -l example.d
-rw-r--r-- 1 me users 1 Jul 25 10:13 example.d
>>> echo > example.f && ls -l example.f
-rw-r--r-- 1 me users 1 Jul 25 10:15 example.f
## But these ignore facl?
>>> getfacl "$HOME"
# file: home/me
# owner: me
# group: users
user::rwx
group::---
other::---
```
Many commands default to permissions that ignore the file access control listl (file ACLs).
This is not a NixOS specific issue. However this isn't ideal from a security perspective.
The simplest solution is a recursive `chmod -R 600 ~` but there are plenty of files we
intentionally want to be different.
> [!TODO]
> Solution: Make a Nix/Home-Manager package allowing for control over folder permissions.
> SOlution: Also it should warn if any files owned by $USER have a 2
## Further Reading
### Finding New Things to Do
`man 5 configuration.nix` is incredibly useful
similar info can be found at https://mynixos.com/options
### For your curiosity
1. https://wiki.nixos.org/wiki/Firejail

View file

@ -72,7 +72,7 @@ main {
display: grid;
grid-template-areas:
"whoami butterfly"
"socials butterfly"
"socials gpg"
"disclaimer disclaimer"
;
grid-template-columns: 1fr 1fr;
@ -104,6 +104,10 @@ main {
grid-area: butterfly;
}
#gpg {
grid-area: gpg;
}
#disclaimer {
grid-area: disclaimer;
}

View file

@ -176,7 +176,7 @@
</svg>
<div class="socials-name">Github</div>
<a class="socials-link" href="https://github.com/emilelcb" rel="author">@emilelcb</a>
<a class="socials-link" href="https://github.com/cry128" rel="author">@cry128</a>
</li>
</ul>
</div>
@ -219,6 +219,23 @@
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> Y Y </span><span class="theme-tty-warning">--&gt;</span>
<span class="theme-tty-warning">&lt;--</span><span class="theme-icon-off"> ! ! </span><span class="theme-tty-warning">--&gt;</span></pre>
<pre class="centered cryframe" id="gpg">
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaYse6xYJKwYBBAHaRw8BAQdAxk73s6AflhTbz6k5HRbdZk8OAu0w7erFMfJg
uqwmHia0SV9jcnk2NCAoZG8gYnV0dGVyZmxpZXMgY3J5IHdoZW4gdGhleSdyZSBz
YWQ/KSA8dGhlbUBkb2J1dHRlcmZsaWVzY3J5Lm5ldD6IlAQTFgoAPBYhBJ0FKw7r
HMMoPj4yD/aHRag2ygQSBQJpix7rAhsDBQkDwmcABAsJCAcEFQoJCAUWAgMBAAIe
AQIXgAAKCRD2h0WoNsoEEostAP9l52kn0t62o4eh22+/7wM7l85NZ8vxg89kcaBs
++3b/QD+JZup0o0NH2iB1/9I9ozOyUnJytfIXmSkO32xzLV2Rwe4OARpix7rEgor
BgEEAZdVAQUBAQdAu/puxhdUTnNUdyfy2ZzseQCGUBmSkMJxFzN2yZSr0FEDAQgH
iH4EGBYKACYWIQSdBSsO6xzDKD4+Mg/2h0WoNsoEEgUCaYse6wIbDAUJA8JnAAAK
CRD2h0WoNsoEEsnhAQCvyx9mI2fwypGgFHqZt7UlUwLBOO9jDyNoaMVda56QSAEA
yNnm2EikxG/fN2D/OJTMZL+5Pic/vmBstoI4NxRAMQY=
=ldOM
-----END PGP PUBLIC KEY BLOCK-----
</pre>
<p class="cryframe" id="disclaimer" style="margin: auto auto auto 0;">
<span class="theme-tty-warning" style="font-size: 1.2em;">
<b class="theme-tty-error" >NONE</b> of my work has been made with contribution from an LLM.<br/>