commit - 1d4f429ff464a1ed38a37bc1efd2f08e817863f5
commit + 1fb8baf74f396960c307c6aa6dffc29c348bfa3d
blob - 9ff9a8b93c7968c7281abd182250ad868276976d
blob + 931a0da548cf67ac244885ca9de11ae03d4768c4
--- home/ale/home.nix
+++ home/ale/home.nix
oh-my-zsh = {
enable = true;
plugins = [ "git" "sudo" ];
+ # compinit -u en vez de -i: se salta compfix.zsh + compaudit (~140ms por
+ # arranque). En esta máquina de un solo usuario todos los dirs de
+ # completions son paths del store (root), así que la auditoría de
+ # permisos no aporta nada -- y en NixOS a veces marca el propio store
+ # como "inseguro" y saca un warning al abrir la terminal.
+ extraConfig = ''
+ ZSH_DISABLE_COMPFIX=true
+ '';
};
# fzf-tab -- menú interactivo con fuzzy-search en el Tab (en vez de la
# lista plana de zsh). Va acá (programs.zsh.plugins, no oh-my-zsh.plugins
# Corre después de oh-my-zsh (mismo bloque de initContent, se concatena
# con orden por defecto 1000, y el de oh-my-zsh usa mkOrder 800 -- más
# bajo sale primero) para pisar cualquier prompt que oh-my-zsh hubiera
- # puesto. gitstatus (paquete separado, da el binario gitstatusd) es
- # necesario en PATH para el estado de git rápido -- sin él, el plugin
- # de p10k intentaría bajarlo en runtime, cosa que falla en un sandbox
- # de Nix sin red.
+ # gitstatusd: el plugin gitstatus de p10k NO mira $PATH -- solo usa
+ # $GITSTATUS_DAEMON o su propio usrbin/ vendorizado, que el paquete
+ # zsh-powerlevel10k de nixpkgs deja vacío. Sin esta variable, en cada
+ # arranque de zsh intenta descargar gitstatusd de GitHub (timeout de
+ # red -> "Restart Zsh to retry gitstatus initialization" + ~1.5s de
+ # demora al abrir la terminal). Apuntarla al binario del paquete
+ # pkgs.gitstatus lo arregla.
+ export GITSTATUS_DAEMON=${pkgs.gitstatus}/bin/gitstatusd
source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
# Config generada por `p10k configure` -- copiada al repo
# imprimir nada antes de que el instant prompt se muestre -- si igual
# sale una advertencia de "console output during initialization" (el
# wizard eligió modo Verbose), es solo informativa, no rompe nada.
+ #
+ # PF_INFO sin "pkgs": contar los paquetes de Nix tarda ~0.95s (el resto
+ # de módulos juntos, ~25ms) y era el grueso de la demora al abrir la
+ # terminal. Sin ese módulo pfetch corre casi instantáneo.
+ export PF_INFO="ascii title os host kernel uptime memory"
pfetch
# herdr YA NO se auto-lanza al abrir kitty (2026-07-28, a pedido del
obsidian # notas locales en Markdown -- paquete directo de nixpkgs, sin
# módulo declarativo propio (guarda su config/vaults dentro de cada
# vault, no hay nada que declarar acá).
- libreoffice-fresh # suite completa (Writer/Calc/Impress/Draw/Base/Math) --
- # "fresh" (26.2.x, última rama) en vez de "still" (25.8.x, LTS): sin
- # motivo para preferir la rama LTS acá.
+ libreoffice-stable # suite completa (Writer/Calc/Impress/Draw/Base/Math).
+ # Antes `libreoffice-fresh`: upstream unificó el versionado "still"/"fresh"
+ # en uno solo y nixpkgs colapsó ambos atributos en `libreoffice-stable`
+ # (mismo paquete, 26.2.x). Los nombres viejos siguen andando como alias
+ # pero tiran `evaluation warning: LibreOffice upstream has changed the
+ # versioning, please use libreoffice-stable` en cada nixos-rebuild.
hunspellDicts.es_MX # diccionario ortográfico español de México, para que
# LibreOffice lo detecte al corregir. No hace falta wiring extra: el
# wrapper real de libreoffice (pkgs/applications/office/libreoffice/
systemd.user.services.librepods = {
Unit = {
Description = "LibrePods (control de AirPods) en segundo plano";
- After = [ "graphical-session-pre.target" ];
+ # Antes ordenado tras graphical-session-pre.target: arrancaba antes de
+ # que el shell (DMS/quickshell) reclamara org.kde.StatusNotifierWatcher
+ # en el bus de sesión y LibrePods hace `.unwrap()` sobre ese watcher
+ # (src/main.rs:148) -> panic/SIGABRT en bucle hasta agotar el
+ # start-limit (7 core-dumps por boot). Ordenarlo tras dms.service +
+ # RestartSec da tiempo a que el watcher exista.
+ After = [ "graphical-session.target" "dms.service" ];
+ Wants = [ "dms.service" ];
PartOf = [ "graphical-session.target" ];
+ # el watcher puede tardar unos segundos tras dms.service; sin esto los
+ # reintentos rápidos agotan el rate-limit por defecto (5/10s).
+ StartLimitIntervalSec = 120;
+ StartLimitBurst = 10;
};
Service = {
# XLOCALEDIR explícito acá (no solo el environment.sessionVariables
Environment = "XLOCALEDIR=${pkgs.libx11}/share/X11/locale";
ExecStart = "${librepodsPkg}/bin/librepods --start-minimized";
Restart = "on-failure";
+ RestartSec = 5;
};
Install.WantedBy = [ "graphical-session.target" ];
};
blob - 3de6b8e0356b61ac681f27145fdf9a956047d76d
blob + e11aa365eb61044f2c4abf042a6a646cb75f5e11
--- pkgs/x-minecraft-launcher.nix
+++ pkgs/x-minecraft-launcher.nix
#
# appimageTools.wrapType2 arma el FHS env (libs de Electron/Chromium) y
# extrae el binario real -- confirmado en vivo contra el contenido
-# desempaquetado del AppImage (appimageTools.extractType2):
+# desempaquetado del AppImage (appimageTools.extract):
# - Exec real del .desktop upstream: "AppRun --no-sandbox %U" (AppRun solo
# exportaba LD_LIBRARY_PATH/XDG_DATA_DIRS y ejecutaba el binario `xmcl`)
# - Icono: xmcl.png en usr/share/icons/hicolor/512x512/apps/
hash = "sha256-t1+JT9OEJSLPnoEfCLo7b7ai9aLYdAaz8gxdqLfTIUw=";
};
- appimageContents = appimageTools.extractType2 { inherit pname version src; };
+ appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;