commit - b4423212ddf2d4e8102b5ee3ca82230ab4bb91b4
commit + 9e6aa2dfa2b6cd6d22df670d30dd09cde8a4051e
blob - 931a0da548cf67ac244885ca9de11ae03d4768c4
blob + 65e14b7f4a6490051bcb31d7e99a2d3097e1ea35
--- home/ale/home.nix
+++ home/ale/home.nix
};
# --- delta: diffs con resaltado de sintaxis ---
- # Repos migrados de got a git (2026-07-28, ver NOTES.md) -- a diferencia de
- # got, git SÍ invoca un pager propio (core.pager), así que
- # programs.git.delta.enable = true (más abajo, junto a programs.git) alcanza
- # para que `git diff`/`git log -p`/`git show` salgan coloreados solos, sin
- # necesitar las funciones manuales gotd/gotl de antes (sacadas). El alias
- # `gd` del plugin "git" de oh-my-zsh (`git diff`) ya hereda esto gratis.
+ # git invoca su propio pager (core.pager) -- programs.delta.enable = true
+ # (más abajo, junto a programs.git) alcanza para que `git diff`/`git log
+ # -p`/`git show` salgan coloreados solos. El alias `gd` del plugin "git" de
+ # oh-my-zsh (`git diff`) ya hereda esto gratis.
# paquete delta declarado más abajo, junto al resto de home.packages (dos
# asignaciones de home.packages en el mismo archivo chocan -- Nix tira
# "attribute already defined", no las mergea solas como sí hace el sistema
# 2026-07-22) porque no hay NIX_PATH nixos-config. El subshell con
# `set -e` corta en el primer error (ej. build roto) sin aplicar
# switch ni tocar el cwd de la terminal interactiva.
- # /nixdots volvió a ser un repo git normal (2026-07-28, ver NOTES.md --
- # antes fue work tree de got, migración documentada como "Migración a
- # got puro" en NOTES.md 2026-07-22). programs.git.signing.signByDefault
- # ya está en true (más arriba), así que este commit de flake.lock queda
- # firmado con la YubiKey solo, sin nada especial acá.
+ # programs.git.signing.signByDefault ya está en true (más arriba), así
+ # que este commit de flake.lock queda firmado con la YubiKey solo, sin
+ # nada especial acá.
#
# Sin argumentos actualiza TODOS los inputs a la vez (comportamiento
# de siempre). Pasándole nombres de inputs (ej. `nixos-update nixpkgs`)
};
};
- # git (a diferencia de got) invoca su propio pager -- programs.delta acá
- # (NO programs.git.delta, renombrado -- confirmado con build real: "has
- # been renamed to `programs.delta.enable'") alcanza para que
+ # git invoca su propio pager -- programs.delta acá (NO programs.git.delta,
+ # renombrado -- confirmado con build real: "has been renamed to
+ # `programs.delta.enable'") alcanza para que
# `git diff`/`git log -p`/`git show` (y el alias `gd` de oh-my-zsh) salgan
# coloreados con delta solos, sin funciones manuales. enableGitIntegration
# explícito: el auto-enable basado en programs.git.enable quedó deprecado.
blob - 5bba79676cafe218c8cef00159e34f7ce70305e7
blob + 0f72e625e0ab38460ef84da42a24aef86b191db6
--- hosts/ale/configuration.nix
+++ hosts/ale/configuration.nix
# --- Red ---
networking.hostName = "ale";
- # networking.networkmanager.enable ya se activa en modules/desktop.nix (requisito de Noctalia)
+ # networking.networkmanager.enable ya se activa en modules/desktop.nix (lo usa el applet de red de DMS)
# --- Zona horaria / locale ---
time.timeZone = lib.mkDefault "America/Mexico_City"; # AJUSTAR si no es tu zona
blob - 4c5e050b4130b57213c5c47f1049f05ccff1ca00
blob + 73f839becfb9418de31c181fce4d09831db2f06c
--- modules/desktop.nix
+++ modules/desktop.nix
{ config, lib, pkgs, inputs, ... }:
-let
- # DaVinci Resolve es una app X11 y esta sesión usa xwayland-satellite, no
- # XWayland nativo (ver modules/niri.nix). xwayland-satellite NO le reenvía a
- # niri la ventana principal de Resolve ("Organizador de proyectos"): el splash
- # abre, se cierra, y el editor nunca aparece -- el proceso queda vivo sin
- # ventana girando CPU. Diagnosticado en vivo 2026-08-29: la X-window existe
- # (Map State IsViewable, sin override-redirect) pero `niri msg windows` no la
- # lista nunca. Envolver Resolve en gamescope (micro-compositor anidado) le da
- # una raíz X11 limpia y hacia niri sale como UNA ventana Wayland normal --
- # confirmado que así abre el Organizador de proyectos sin crash.
- #
- # Las tres __*_OFFLOAD/__GLX/__VK son para que, en esta Optimus (Intel UHD 630
- # + GTX 1050), tanto gamescope como Resolve usen la Nvidia: sin ellas el
- # GPUDetect de Resolve dentro del compositor anidado no encuentra la GPU y
- # crashea (SIGABRT en libddm, "mutex lock failed"). Con Xwayland directo
- # Resolve ya elegía la Nvidia sin ayuda, pero gamescope por default arranca
- # sobre la Intel.
- #
- # El .desktop de Resolve trae Exec=davinci-resolve (sin path absoluto), así
- # que el lanzador de DMS/fuzzel agarra este wrapper vía PATH. Contra conocida:
- # la ventana queda con app-id "gamescope", no "resolve" -- rompe el
- # StartupWMClass del .desktop y cualquier regla de ventana de niri que apunte
- # a "resolve".
- davinci-resolve-gamescope = pkgs.symlinkJoin {
- name = "davinci-resolve-gamescope";
- paths = [ pkgs.davinci-resolve ];
- nativeBuildInputs = [ pkgs.makeWrapper ];
- postBuild = ''
- rm $out/bin/davinci-resolve
- makeWrapper ${pkgs.gamescope}/bin/gamescope $out/bin/davinci-resolve \
- --set __NV_PRIME_RENDER_OFFLOAD 1 \
- --set __GLX_VENDOR_LIBRARY_NAME nvidia \
- --set __VK_LAYER_NV_optimus NVIDIA_only \
- --add-flags "-w 1920 -h 1080 -f --" \
- --add-flags "${pkgs.davinci-resolve}/bin/davinci-resolve"
- '';
- };
-in
{
# pkexec necesita el wrapper setuid de NixOS para funcionar (el binario
# crudo del store no tiene setuid). Sin esto, el propio módulo de gamemode
# renderizar fórmulas, y julia-bin para el Ctrl+E de bloques
# ```julia; los tres están en home.nix (paquetes de usuario, no del
# sistema), o vía el devShell del propio repo.
- got # VCS de este mismo repo (/nixdots ya es un work tree de got, sin
- # .git -- ver "Migración a got puro" en NOTES.md, 2026-07-22).
- # Reusa ssh-agent para clone/fetch/send por ssh://, igual que git.
- # "got commit" NO soporta firma GPG ni SSH (solo "got tag -S" firma,
- # y solo con SSH) -- los commits de este repo quedan sin firmar
- # desde la migración. El autor de los commits está declarado en
- # got.conf del repo bare (~/nixdots.git/got.conf), NO se resuelve
- # de programs.git/~/.gitconfig -- got solo lee el ~/.gitconfig
- # clásico como último recurso, y este sistema usa el config de git
- # en formato XDG (~/.config/git/config, ver home.nix), que got no
- # mira. programs.git sigue instalado a nivel de sistema solo por
- # otros repos ajenos a /nixdots.
-
mpv # reproductor de video/audio. Verificado con `nix eval`/`nix build`
# contra el nixpkgs real (no de memoria) que el `pkgs.mpv` de acá ya
# trae todo lo necesario para "cualquier tipo de video" sin agregar
# imv), que no traen esa integración automática de tema y
# requerirían configurarla a mano.
- gamescope # micro-compositor -- lo usa el wrapper davinci-resolve-gamescope
- # (ver `let` arriba); también sirve suelto para debug
- davinci-resolve-gamescope # editor de video, reemplaza a kdenlive (removido
- # a pedido explícito). Es pkgs.davinci-resolve envuelto en gamescope (ver
- # el bloque `let` al principio del módulo para el porqué).
- # Paquete de nixpkgs (pkgs/by-name/da/davinci-resolve):
- # es un FOD (fixed-output derivation) que descarga el instalador oficial
- # Linux directo de blackmagicdesign.com durante el build/switch (sin
- # cuenta/login -- la API pública de descargas alcanza), así que el
- # primer `nixos-rebuild switch` con esta línea necesita red y baja unos
- # cuantos GB. Corre en un buildFHSEnv (bubblewrap), no un paquete nativo.
- #
- # GPU: no hace falta tocar modules/graphics.nix. OpenCL (lo que Resolve
- # usa para GPU compute en Linux, junto con CUDA) ya sale solo -- el
- # módulo hardware.nvidia de NixOS mete `nvidia_x11.out` en
- # hardware.graphics.extraPackages automáticamente, y ese output ya trae
- # el ICD de OpenCL (etc/OpenCL/vendors/nvidia.icd, confirmado en
- # builder.sh real de nixpkgs) visible bajo /run/opengl-driver, que es
- # justo donde el loader de ocl-icd (ya en el FHS env del paquete) busca
- # por default. CUDA tampoco necesita cudaPackages.cudatoolkit (que sigue
- # comentado en graphics.nix): addDriverRunpath en postFixup del paquete
- # ya engancha contra libcuda.so del propio driver propietario instalado
- # (legacy_580), el toolkit completo no hace falta solo para correr.
- # Verificar con `clinfo` (agregar temporalmente si hace falta) que
- # aparece la GTX 1050 como plataforma OpenCL antes de asumir que Resolve
- # ya la está usando -- confirmar también dentro de Resolve en
- # Preferences → Memory and GPU → GPU Configuration.
];
# Necesario para que QT_QPA_PLATFORMTHEME=kde (de abajo) resuelva al plugin
blob - 62656591dcce166728dc61f4f0de25bab3cfce71
blob + eca239c29eb4d2a2fd24e59b2456056ad1fcb432
--- modules/niri.nix
+++ modules/niri.nix
# (assets/systemd/dms.service de DMS) trae `Restart = "on-failure"`, que es
# justo lo que faltó cuando se probó en vivo (2026-08-08): un `dms restart`
# mató el proceso y NADA lo relanzó -- pantalla sin barra/dock/wallpaper
- # hasta que se relanzó a mano. Confirmado seguro en ESTE equipo pese a que
- # Hyprland sigue instalado: el unit es wantedBy=graphical-session.target, y
- # ese target NUNCA se activa bajo Hyprland acá (por eso Noctalia necesitaba
- # el loop de shell, ver NOTES.md) -- así que no hay riesgo de que arranquen
- # dos instancias peleando por el bus, la advertencia de upstream sobre
- # combinar systemd+spawn no aplica a este caso. Bajo niri SÍ se activa
- # (niri-session corre dbus-update-activation-environment y arranca
- # niri.service, que es BindsTo=/Before=graphical-session.target --
+ # hasta que se relanzó a mano. El unit es wantedBy=graphical-session.target,
+ # que niri-session activa solo (corre dbus-update-activation-environment y
+ # arranca niri.service, BindsTo=/Before=graphical-session.target --
# confirmado contra resources/niri-session y resources/niri.service reales
- # del proyecto, y en vivo con `systemctl --user is-active graphical-session.target` -> active).
+ # del proyecto, y en vivo con `systemctl --user is-active
+ # graphical-session.target` -> active).
systemd.enable = true;
lockscreen.securityKey.enable = true;