commit 9e6aa2dfa2b6cd6d22df670d30dd09cde8a4051e from: ale date: Sun Sep 13 02:53:45 2026 UTC Quita DaVinci Resolve y limpia documentación obsoleta de got/Hyprland/Noctalia DaVinci Resolve (FOD que descarga el instalador de Blackmagic) se sacó de modules/desktop.nix junto con su wrapper gamescope -- la descarga de ~4GB se resetea seguido contra el servidor de Blackmagic y rompe el build. gamescope también se quitó al quedar sin otro uso. Aprovechando la revisión: sacado el paquete got (sin uso real desde que todos los repos volvieron a git, 2026-07-28) y corregidos comentarios que ya no describían el estado actual del sistema (got como VCS de /nixdots, Noctalia como motivo de networkmanager, Hyprland como sesión instalada). Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_018i8mTJe9K8rDBZrZarT4FB commit - b4423212ddf2d4e8102b5ee3ca82230ab4bb91b4 commit + 9e6aa2dfa2b6cd6d22df670d30dd09cde8a4051e blob - 931a0da548cf67ac244885ca9de11ae03d4768c4 blob + 65e14b7f4a6490051bcb31d7e99a2d3097e1ea35 --- home/ale/home.nix +++ home/ale/home.nix @@ -245,12 +245,10 @@ in }; # --- 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 @@ -381,11 +379,9 @@ in # 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`) @@ -472,9 +468,9 @@ in }; }; - # 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 @@ -48,7 +48,7 @@ # --- 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 @@ -1,43 +1,5 @@ { 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 @@ -296,19 +258,6 @@ in # 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 @@ -331,33 +280,6 @@ in # 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 @@ -128,16 +128,12 @@ # (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;