Skip to content

feat(nix): habilitar Home Manager y Fish en Linux #58

Description

@barbatdev

Problema y objetivo

El repositorio ya contiene la configuración portable de Fish y Home Manager, pero la flake y el preflight solo admiten macOS. Un host Linux nuevo no puede evaluar ni activar el mismo entorno sin mantener parches locales.

El objetivo es añadir un target x86_64-linux que reutilice los componentes portables, preserve los overrides privados del host y excluya de forma explícita las integraciones exclusivas de macOS.

Relacionado con #4, que cubre los defaults del layout de directorios pero no la activación de Nix, Home Manager y Fish.

Comportamiento esperado

  • La flake expone configuraciones Home Manager separadas para macOS y Linux sin duplicar la lógica portable.
  • Linux instala o declara las herramientas necesarias para iniciar Fish, Starship y el runtime portable.
  • Home Manager conserva ownership explícito por archivo y no reemplaza el directorio completo de Fish ni el override local privado.
  • La activación se realiza desde un checkout limpio y no modifica checkouts con trabajo local.
  • Zsh permanece disponible como rollback hasta validar Fish como shell principal.
  • Los helpers sin backend gráfico reportan estado no soportado de forma clara, sin intentar comandos de macOS.

Criterios de aceptación

  • El target x86_64-linux evalúa con la flake bloqueada y el preflight reconoce Linux.
  • La configuración Linux no importa Yabai, skhd, SketchyBar, Karabiner ni flujos de SIP, Dock o permisos macOS.
  • Fish y Starship funcionan en una shell nueva después de activar Home Manager.
  • Los helpers portables de navegación, Git/worktrees, Herdr/SSH y agentes se cargan sin duplicados.
  • El override privado del host permanece fuera del store, con permisos restrictivos y sin ser leído por tests.
  • Screenshots y clipboard quedan excluidos en esta primera entrega y fallan de forma explícita en un host headless.
  • La activación conserva un rollback mediante la generación anterior y los enlaces existentes.
  • La documentación explica instalación, ownership, validación y rollback para Linux.

Alcance excluido

  • Yabai, scripting addition, SIP, Dock, skhd, SketchyBar y Karabiner.
  • Tmux y Ghostty en esta primera entrega.
  • Screenshots, clipboard y cualquier dependencia de X11 o Wayland.
  • Actualizar o limpiar checkouts remotos con cambios locales.

Activity

  1. barbatdev commented on Aug 23, 2026

    @barbatdev
    OwnerAuthor

    Reabro este issue porque la activación real expuso una brecha de aceptación: Fish funciona por ruta absoluta, pero una sesión SSH nueva no incorpora ~/.nix-profile/bin al PATH. Como consecuencia, el login shell no encuentra Fish ni Starship por nombre.

    Los harnesses existentes inyectan un PATH sintético, por eso no cubrían esta forma de arranque. El rollback a Zsh quedó aplicado. El siguiente cambio será acotado: declarar las rutas Nix estables en el core de Fish y agregar una regresión que reproduzca un login Linux con el PATH base del sistema antes de volver a activar Home Manager.

  2. barbatdev commented on Aug 24, 2026

    @barbatdev
    OwnerAuthor

    Reabro el issue por una segunda brecha del mismo contrato de login Linux: el PATH administrado ya incorpora los perfiles Nix, pero no el directorio estándar ~/.local/bin.

    Esto hace que herramientas ya instaladas allí funcionen en sesiones heredadas y dejen de resolverse en una sesión Fish nueva. No corresponde reinstalarlas. El fix será acotado: incorporar sólo ese directorio cuando exista y ampliar W2 con un ejecutable disponible exclusivamente en la ruta local del usuario.

  3. barbatdev commented on Aug 24, 2026

    @barbatdev
    OwnerAuthor

    Reabro este issue y lo mantengo abierto hasta completar la verificación remota. La auditoría confirmó que OpenCode, Pi, pnpm y sus runtimes ya están instalados, pero una sesión Fish nueva no incorpora los directorios de OpenCode ni los shims de mise.

    No corresponde reinstalar herramientas. El siguiente fix ampliará el PATH Linux existente con esos directorios sólo cuando estén presentes, conservará la precedencia de overrides del usuario y agregará cobertura W2 para resolución y orden. El issue se cerrará recién después de verificar los comandos desde una sesión nueva.

  4. barbatdev commented on Aug 24, 2026

    @barbatdev
    OwnerAuthor

    Validación remota completada después de desplegar PR #62 en una nueva generación Home Manager.

    Una sesión Fish completamente nueva resuelve herdr, opencode, claude, pi, cortex, mise, pnpm, node, npm, corepack y bun. El PATH conserva el orden declarado entre binarios locales, OpenCode, shims de mise y perfiles Nix. Los helpers oc, ocb, cc, ccx, hhere y hremote cargan correctamente; W2, W5b aislado y W6 pasan.

    No se reinstaló ninguna herramienta ni se modificaron credenciales. Con esta evidencia, la aceptación Linux queda completa y el issue puede cerrarse.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions