commit - 23b19e5166c6e463bb23b4256b486dd3f0aee086
commit + 1b710383efacffcdb1b2c5ef7781ca1690bde4ef
blob - 368aeefca8f1e486cf212056ff5f6c0ff02fa987
blob + 2808f8c3a8cb881793d0d1edab61e4ed400636a6
--- NOTES.md
+++ NOTES.md
imperativa existente (`nix profile remove zola`) -- queda duplicada hasta que
el usuario confirme el `nixos-rebuild switch` y decida si quiere limpiarla.
**Pendiente manual:** `sudo nixos-rebuild switch --flake /nixdots#ale`.
+
+## Migración a got puro (2026-07-22)
+
+A pedido explícito del usuario: `/nixdots` dejó de ser un checkout de `git`
+y pasó a ser un *work tree* de `got` directamente -- ya no hace falta un
+work tree separado (`~/nixdots-got`) ni sincronizar de vuelta como en la
+sección "got (Game of Trees)" de arriba (2026-07-16). Aceptado
+explícitamente el trade-off: **los commits de este repo ya no llevan firma
+GPG** (`got commit` no soporta firma, ni GPG ni SSH -- solo `got tag -S`
+firma, y solo con SSH).
+
+### Validado antes de tocar el repo real
+
+Probado primero en un directorio descartable del scratchpad, para no
+arriesgar el checkout real:
+
+- `git clone --bare ssh://git@pcale.tail32b955.ts.net:2222/Ale/Nix-Dotfiles.git`
+ deja `remote.origin.url` ya configurado en el `config` del bare repo --
+ `got fetch -v origin` lo lee solo, sin necesitar `got.conf` a mano ni
+ tocar nada más. Confirmado con `strace` en la ronda anterior (2026-07-16)
+ que `got` ya sabía leer remotos de `.git/config`; esto confirma que un
+ bare clone fresco (sin working tree) también los trae listos.
+- **Preocupación real, descartada:** `nix flake` filtra por archivos
+ *trackeados por git* cuando el flake vive dentro de un repo git -- sin
+ `.git`, cae al fetcher `path:` (copia el directorio tal cual). Probado
+ `nix flake metadata`/`nix eval` sobre el work tree de prueba (sin `.git`,
+ solo `.got`) y salió limpio, exit 0, sin warnings. Incluso con un symlink
+ `result` de prueba presente (como el que deja `nixos-rebuild build` en
+ `/nixdots` real) -- Nix lo copia sin quejarse, y de paso `got status` ya
+ lo ignora solo (respeta `.gitignore`, que sigue en el repo con
+ `result`/`result-*`/`.direnv/`/`*.swp`).
+
+### Pasos reales sobre `/nixdots`
+
+1. `git clone --bare` del remoto real a `~/nixdots.git` -- repo bare
+ canónico, independiente del checkout viejo (paso aditivo, no tocó
+ `/nixdots` todavía).
+2. `mv /nixdots ~/nixdots-git-backup` -- el `mv` no pudo borrar el propio
+ directorio `/nixdots` de `/` (permiso denegado, `/` no es escribible por
+ `ale`), pero sí alcanzó a copiar y vaciar todo el contenido hacia el
+ backup antes de fallar en ese último paso. Resultado neto: `/nixdots`
+ quedó vacío (backup íntegro en `~/nixdots-git-backup`, confirmado con
+ `diff -rq` sin diferencias) -- justo lo que `got checkout` necesita.
+3. `got checkout ~/nixdots.git /nixdots` -- work tree nuevo, directo en el
+ path real. `diff -rq` contra el backup (excluyendo `.git`/`.got`/
+ `result`) salió vacío.
+4. Confirmado sin residuos: `/nixdots/.git` ya no existe.
+
+### Ajustes de código que dependían de `git`
+
+- **`home/ale/home.nix`, función `nixos-update`:** usaba
+ `git diff --quiet`/`git add`/`git commit` para el commit automático de
+ `flake.lock` tras cada actualización. Cambiado a
+ `got status flake.lock` (vacío si no hay cambios) +
+ `got commit -m "..." flake.lock` -- sin firma, a diferencia de antes.
+- **`modules/desktop.nix`, comentario de `got`:** ya no describe un
+ escenario de coexistencia con `git` en el mismo repo (ronda 2026-07-16,
+ ya obsoleta) -- ahora documenta que `/nixdots` es un work tree de `got`
+ sin `.git`, y que `programs.git` se mantiene a nivel de sistema solo por
+ otros repos y porque `got` resuelve el autor de los commits leyendo
+ `~/.gitconfig` (`programs.git.settings.user.*`) -- confirmado en vivo:
+ `got log` mostró `ale <ale_bnes@tuta.com>` sin declarar autor en ningún
+ `got.conf`.
+
+### Qué NO se tocó
+
+- El paquete `git` sigue en `environment.systemPackages`
+ (`hosts/ale/configuration.nix`) y `programs.git` en `home.nix` -- útiles
+ para otros repos ajenos a `/nixdots` y necesarios para que `got` resuelva
+ el autor de los commits (ver arriba). No se pidió sacar `git` del sistema,
+ solo del flujo de este repo.
+- `~/nixdots-git-backup` se dejó como red de seguridad (historia completa
+ de `git`, por si hace falta consultar algo que `got log` no muestre
+ igual) -- no se borró.
blob - b06140516ba47cd58d7b72741f919e20994fb4e2
blob + e0f6acf6157ae0a7447ad7eb335d564e39af2303
--- README.md
+++ README.md
[Noctalia](https://docs.noctalia.dev/). Desplegada vía flake, sin
gestión de secretos (la clave GPG vive en una YubiKey).
+Versionado con **[got](https://gameoftrees.org/)** (no `git`) — repo
+bare canónico en `~/nixdots.git`, `/nixdots` es su work tree. Los
+commits no llevan firma (`got commit` no soporta GPG/SSH); solo los
+tags pueden firmarse con SSH (`got tag -S`). Detalle de la migración en
+[`NOTES.md`](NOTES.md).
+
## Estructura
```
blob - 18e58616307f35cff14e356c11932514fa4d587e
blob + afc5eac93f88618cd805d72e9df1222336de9fbe
--- home/ale/home.nix
+++ home/ale/home.nix
# 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 es un work tree de got (sin .git, ver "Migración a got
+ # puro" en NOTES.md 2026-07-22) -- got commit no soporta firma, así
+ # que este commit de flake.lock queda sin firmar (a diferencia de los
+ # commits manuales de antes con git commit -S).
nixos-update() {
(
set -e
sudo nix flake update
sudo nixos-rebuild build --flake .#ale
sudo nixos-rebuild switch --flake .#ale
- if ! git diff --quiet -- flake.lock; then
- git add flake.lock
- git commit -m "Actualiza flake.lock"
+ if [ -n "$(got status flake.lock)" ]; then
+ got commit -m "Actualiza flake.lock" flake.lock
fi
)
}
blob - 4687e367ef9d874c6b5665ac3d4bd6262c6110c1
blob + 90821214fdc6efcdfca67570b5c6ce8e83dfe219
--- modules/desktop.nix
+++ modules/desktop.nix
# cliente de música self-hosted (Navidrome), reemplaza a feishin --
# empaquetado vía su propio flake.nix (no está en nixpkgs). Hace
# falta apuntarlo a un servidor la primera vez que se abre.
- got # VCS alternativo a git, mismo formato de repo bare en disco --
- # coexiste con git en el mismo repo (clone/fetch/send por ssh://,
- # reusa ssh-agent). "got commit" NO soporta firma GPG ni SSH (solo
- # "got tag -S" firma, y solo con SSH) -- para mantener los commits
- # firmados con la YubiKey seguir usando "git commit -S".
+ 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; programs.git sigue instalado a nivel de
+ # sistema para otros repos y porque got lee autor/email de
+ # ~/.gitconfig (programs.git.settings.user.*, ver home.nix).
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