diff --git a/enlace_final.md b/enlace_final.md new file mode 100644 index 0000000..e08fcf0 --- /dev/null +++ b/enlace_final.md @@ -0,0 +1,16 @@ +# Repositorio +https://git.peprolinbot.com/peprolinbot/charla-gpul-nixos + +# Referencias +- https://nixos-and-flakes.thiscute.world/nixos-with-flakes/start-using-home-manager (**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) diff --git a/flake.nix b/flake.nix index ad32b96..2e2e143 100644 --- a/flake.nix +++ b/flake.nix @@ -3,62 +3,73 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; }; - outputs = { - self, - nixpkgs, - }: let - supportedSystems = [ - "x86_64-linux" - ]; + outputs = + { + self, + nixpkgs, + }: + let + supportedSystems = [ + "x86_64-linux" + ]; - forAllSystems = nixpkgs.lib.genAttrs supportedSystems; + forAllSystems = nixpkgs.lib.genAttrs supportedSystems; - nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;}); - in { - packages = forAllSystems (system: let - pkgs = nixpkgsFor.${system}; - src = ./src; - slides = "${src}/slides.md"; - presenterm_config = ./presenterm_config.yaml; - in rec { - run-presentation = pkgs.writeShellApplication { - name = "run-presentation"; + nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; }); + in + { + packages = forAllSystems ( + system: + let + pkgs = nixpkgsFor.${system}; + src = ./src; + slides = "${src}/slides.md"; + presenterm_config = ./presenterm_config.yaml; + in + rec { + run-presentation = pkgs.writeShellApplication { + name = "run-presentation"; - runtimeInputs = with pkgs; [ - presenterm - nix # For snippet execution - ]; + runtimeInputs = with pkgs; [ + presenterm + nix # For snippet execution + qrencode + ]; - text = '' - presenterm -x ${slides} -c ${presenterm_config} - ''; - }; + text = '' + presenterm -x ${slides} -c ${presenterm_config} + ''; + }; - run-presentation-kitty = pkgs.writeShellApplication { - name = "run-presentation-kitty"; + run-presentation-kitty = pkgs.writeShellApplication { + name = "run-presentation-kitty"; - runtimeInputs = [ - run-presentation - pkgs.kitty - ]; + runtimeInputs = [ + run-presentation + pkgs.kitty + ]; - text = '' - kitty --config=NONE run-presentation - ''; - }; - }); - devShells = forAllSystems ( - system: let - pkgs = nixpkgsFor.${system}; - in { - default = pkgs.mkShell { - buildInputs = with pkgs; [ - presenterm - python3Packages.weasyprint - markdown-oxide - ]; - }; - } - ); - }; + text = '' + kitty --config=NONE run-presentation + ''; + }; + } + ); + devShells = forAllSystems ( + system: + let + pkgs = nixpkgsFor.${system}; + in + { + default = pkgs.mkShell { + buildInputs = with pkgs; [ + presenterm + python3Packages.weasyprint + markdown-oxide + qrencode + ]; + }; + } + ); + }; } diff --git a/src/images/doge.png b/src/images/doge.png deleted file mode 100644 index 1b2d139..0000000 Binary files a/src/images/doge.png and /dev/null differ diff --git a/src/images/nix-onion.png b/src/images/nix-onion.png new file mode 100644 index 0000000..5cb2fb4 Binary files /dev/null and b/src/images/nix-onion.png differ diff --git a/src/images/nix-onion.svg b/src/images/nix-onion.svg new file mode 100644 index 0000000..0c9e106 --- /dev/null +++ b/src/images/nix-onion.svg @@ -0,0 +1,120 @@ + + + + + + + + + + + + Nix language + Nix + Nixpkgs + NixOS + + diff --git a/src/images/repology.png b/src/images/repology.png new file mode 100644 index 0000000..5c46b92 Binary files /dev/null and b/src/images/repology.png differ diff --git a/src/slides.md b/src/slides.md index e2c31a5..06bd572 100644 --- a/src/slides.md +++ b/src/slides.md @@ -29,13 +29,18 @@ La _temida_ curva de aprendizaje de Nix(OS) -![](images/doge.png) +![image:width:50%](images/nix-onion.png) Nix === - + + +```bash +exec +nix run nixpkgs#cowsay -- Soy un paquete de Nix +``` + - Gestor de paquetes - Declarativo - Reproducible @@ -54,7 +59,9 @@ Nix, el lenguaje === -> 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 ``` +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) + + NixOS === ![](images/nixos-logo-25.11-xantusia-lores.png) +_Logo de NixOS 25.11 "Xantusia"_ por _Yohann Boniface_ - Nix como gestor de paquetes @@ -483,6 +502,88 @@ Configurar NixOS con Flakes +Anatomía de un modulo +=== + + +```nix + {lib, config, options, pkgs, ...}: +{ + # Importar otros modulos + imports = [ + # ... + ./xxx.nix + ]; + + for.bar.enable = true; + # Otras declaraciones de opciones + # ... +} +``` + + + +```nix {all|7|8} +{ + config, + pkgs, + ... +}: { + imports = [ + (import ./special-fonts-1.nix {inherit config pkgs;}) + ./special-fonts-2.nix + ]; + + fontconfig.enable = true; +} +``` + + + + +`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; + +# ...... +} +``` + + + + +`lib.mkOrder`, `lib.mkBefore`, and `lib.mkAfter` +=== +```nix +{ +# ...... + +mkOrder = priority: content: + { _type = "order"; + inherit priority content; + }; + +mkBefore = mkOrder 500; +defaultOrderPriority = 1000; +mkAfter = mkOrder 1500; + +# ...... +} +``` + Vamos a probar algunas cosas 🙃 @@ -519,3 +620,27 @@ Tips & tricks Muchas Gracias ❤️ === + + + +# 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) + + +```bash +image +qrencode -t png -m 2 -s 30 -o - "https://git.peprolinbot.com/peprolinbot/charla-gpul-nixos/src/branch/main/enlace_final.md" +```