commit 24efbb6297e2c0aa48a38c06f738bb2559cbfdfd from: ale date: Sun Aug 30 02:05:02 2026 UTC nix: 2 generaciones + GC de emergencia; slides -> d24927d commit - 4c07d2e644f0c2d3212fb565219cc1adc7280793 commit + 24efbb6297e2c0aa48a38c06f738bb2559cbfdfd blob - 8913b087ca4f733ae7a7fa80c416e9195729f88c blob + 5aae2a29ddb2c5207d9205ac9ea7b37b17c018bb --- flake.lock +++ flake.lock @@ -174,6 +174,22 @@ "type": "github" } }, + "nix-flatpak": { + "locked": { + "lastModified": 1767983141, + "narHash": "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "440818969ac2cbd77bfe025e884d0aa528991374", + "type": "github" + }, + "original": { + "owner": "gmodena", + "ref": "v0.7.0", + "repo": "nix-flatpak", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1787360063, @@ -217,6 +233,7 @@ "gruvbox-wallpapers": "gruvbox-wallpapers", "home-manager": "home-manager", "nezzontli-ctl": "nezzontli-ctl", + "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs", "psysonic": "psysonic", "slides": "slides", @@ -231,11 +248,11 @@ ] }, "locked": { - "lastModified": 1785563576, - "narHash": "sha256-H6NHD30duMb/sidZmUITR5dZhMopBUtsdRFG9b3CClw=", + "lastModified": 1788052089, + "narHash": "sha256-i7AUk5p2C4cP7W5BdEXOfVn8pwCtNRR+9efzvRuROII=", "owner": "Richard7987", "repo": "slide", - "rev": "fc21959a0c4481b5f9725702e9e24df6458a7c46", + "rev": "d24927d6aacc10158c3a1ce30082852c5e5ea884", "type": "github" }, "original": { blob - 22def91c423d6030363fced109891875278294cf blob + e385197148325e0a765041e29781dc141b9f6663 --- hosts/ale/configuration.nix +++ hosts/ale/configuration.nix @@ -18,7 +18,9 @@ # boot.loader.grub.device = "/dev/sdX"; # disco completo, no partición # y quita las dos líneas de systemd-boot/efi de abajo. boot.loader.systemd-boot.enable = true; - boot.loader.systemd-boot.configurationLimit = 5; + # 2 = generación actual + la anterior en el menú de arranque, para poder + # volver si un rebuild deja el sistema roto. + boot.loader.systemd-boot.configurationLimit = 2; boot.loader.efi.canTouchEfiVariables = true; # Sin esto no hay swap en absoluto (hardware-configuration.nix trae @@ -65,16 +67,22 @@ "psysonic.cachix.org-1:M9cQyQ7tgvUWOQ5Pyt8ozlMoPLtOZir6MfRuTH9/VYA=" ]; - # Sin esto /nix/store solo crece: no había ningún GC programado, y - # boot.loader.systemd-boot.configurationLimit (ver más abajo) solo recorta - # el menú de arranque, no el store. Semanal + 14 días de margen para poder - # hacer rollback a una generación reciente si un rebuild sale mal. + # GC diario, conservando solo lo de los últimos 3 días -- con rebuilds ~1/día + # eso deja la generación actual y la anterior (las que muestra + # configurationLimit = 2), suficiente para hacer rollback si algo sale mal, + # sin dejar que el store se acumule como antes. nix.gc = { automatic = true; - dates = "weekly"; - options = "--delete-older-than 14d"; + dates = "daily"; + options = "--delete-older-than 3d"; }; + # GC de emergencia DURANTE un build: si el espacio libre baja de min-free, + # Nix recolecta basura hasta llegar a max-free antes de seguir -- evita que + # `nixos-rebuild` reviente con "No space left on device" a mitad de camino. + nix.settings.min-free = 3 * 1024 * 1024 * 1024; # 3 GiB + nix.settings.max-free = 15 * 1024 * 1024 * 1024; # 15 GiB + # nix-ld: provee un linker dinámico genérico (+ libs comunes) para poder # correr binarios prebuilt de terceros sin patchear -- sin esto, cualquier # binario dinámicamente enlazado que un tool descargue por su cuenta (VSCode @@ -94,6 +102,8 @@ ffmpeg # kinocut llama a los binarios ffmpeg/ffprobe por PATH -- mpv (modules/desktop.nix) # linkea libav* como librería interna, pero no expone esos binarios sueltos. appimage-run # ejecuta el AppImage de idevice_pair (pairing con iPhone para SideStore) + wineWow64Packages.stable # Wine 64/32-bit -- para correr el instalador de PASCO Capstone (PEC forense) + winetricks # configura dependencias/componentes dentro del prefix de Wine ]; # usbmuxd: demonio que expone el iPhone conectado por USB como socket local