This commit is contained in:
Pedro Rey Anca 2025-12-15 23:39:39 +01:00
parent 1d48a2a77d
commit a70e52388c
Signed by: peprolinbot
GPG key ID: 053EA6E00116533A
7 changed files with 326 additions and 54 deletions

View file

@ -29,13 +29,18 @@ La _temida_ curva de aprendizaje de Nix(OS)
<!-- pause -->
![](images/doge.png)
![image:width:50%](images/nix-onion.png)
<!-- end_slide -->
Nix
===
<!-- column_layout: [2, 3] -->
<!-- column: 1 -->
```bash +exec
nix run nixpkgs#cowsay -- Soy un paquete de Nix
```
<!-- column: 0 -->
- Gestor de paquetes
- Declarativo
- Reproducible
@ -54,7 +59,9 @@ Nix, el lenguaje
===
<!-- column_layout: [3, 2] -->
<!-- column: 0 -->
> Sólo existe por y para Nix, el gestor de paquetes: para describir paquetes y configuraciones, así como sus variantes y composiciones. **No está pensado para casos de uso generales**.
> Sólo existe por y para Nix, el gestor de paquetes:
> para describir paquetes y configuraciones, así como sus variantes y composiciones.
> **No está pensado para casos de uso generales**.
- Sencillo
- Funcional
@ -76,11 +83,23 @@ in
```
<!-- end_slide -->
Nixpkgs
===
- Repositorio de paquetes en Nix (y módulos de NixOS)
- Incluye tests, funciones de ayuda, etc.
- Compilado y probado con Hydra
- Subido a `cache.nixos.org`
![](images/repology.png)
[De repology.org](https://repology.org)
<!-- end_slide -->
NixOS
===
<!-- column_layout: [1, 4] -->
<!-- column: 0 -->
![](images/nixos-logo-25.11-xantusia-lores.png)
_Logo de NixOS 25.11 "Xantusia"_ por _Yohann Boniface_
<!-- column: 1 -->
- Nix como gestor de paquetes
@ -483,6 +502,88 @@ Configurar NixOS con Flakes
<!-- end_slide -->
Anatomía de un modulo
===
<!-- column_layout: [2, 3] -->
<!-- column: 0 -->
```nix
{lib, config, options, pkgs, ...}:
{
# Importar otros modulos
imports = [
# ...
./xxx.nix
];
for.bar.enable = true;
# Otras declaraciones de opciones
# ...
}
```
<!-- pause -->
<!-- column: 1 -->
```nix {all|7|8}
{
config,
pkgs,
...
}: {
imports = [
(import ./special-fonts-1.nix {inherit config pkgs;})
./special-fonts-2.nix
];
fontconfig.enable = true;
}
```
<!-- end_slide -->
<!-- column_layout: [1, 1] -->
<!-- column: 0 -->
`lib.mkOverride`, `lib.mkDefault`, and `lib.mkForce`
===
```nix {4-7|10|12|all}
{
# ......
mkOverride = priority: content:
{ _type = "override";
inherit priority content;
};
mkOptionDefault = mkOverride 1500;
mkDefault = mkOverride 1000;
mkImageMediaOverride = mkOverride 60;
mkForce = mkOverride 50;
mkVMOverride = mkOverride 10;
# ......
}
```
<!-- column: 1 -->
<!-- pause -->
`lib.mkOrder`, `lib.mkBefore`, and `lib.mkAfter`
===
```nix
{
# ......
mkOrder = priority: content:
{ _type = "order";
inherit priority content;
};
mkBefore = mkOrder 500;
defaultOrderPriority = 1000;
mkAfter = mkOrder 1500;
# ......
}
```
<!-- end_slide -->
<!-- jump_to_middle -->
Vamos a probar algunas cosas 🙃
@ -519,3 +620,27 @@ Tips & tricks
Muchas Gracias ❤️
===
<!-- end_slide -->
<!-- column_layout: [3, 2] -->
<!-- column: 0 -->
# Repositorio
https://git.peprolinbot.com/peprolinbot/charla-gpul-nixos
# Referencias
- https://nixos-and-flakes.thiscute.world/ (**recomendado** como guia general a seguir)
- https://nix.dev/tutorials/nix-language (documentación oficial)
- https://bmcgee.ie/posts/2023/01/nix-and-nixos-a-retrospective/
- https://medium.com/@Erik_Krieg/what-is-nix-nixos-aab5610f0d7f
# Otras recomendaciones
- [Manual de Nix](https://nix.dev/manual/nix/2.28/)
- [Manual de Nixpkgs](https://nixos.org/manual/nixpkgs/stable/)
- [Manual de NixOs](https://nixos.org/manual/nixos/stable/)
- [nixos.wiki](https://nixos.wiki/)
- [Wiki Oficial](https://wiki.nixos.org/)
- [awesome-nix](https://github.com/nix-community/awesome-nix)
<!-- column: 1 -->
```bash +image
qrencode -t png -m 2 -s 30 -o - "https://git.peprolinbot.com/peprolinbot/charla-gpul-nixos/src/branch/main/enlace_final.md"
```