Commit Diff


commit - 5bb6e64c96c7048307561ceee1920d85199b6ee9
commit + 8853bc49abe9711f8b8d4ae139c131f7681a19bf
blob - f3cbca1771539c9a804c98acdb09ee4208b46be0
blob + 83ce305dd1378ec46d8f22a941d345bfee3cf676
--- NOTES.md
+++ NOTES.md
@@ -1595,3 +1595,59 @@ corre 0.18.0"*, *"agregue configuracion para openBSD y
 - No había instalación imperativa de `zola` en `nix profile list` (la
   duplicación que había quedado pendiente el 2026-07-17 ya no está) -- no
   hizo falta limpiar nada ahí.
+
+## Bootstrap en una PC nueva, con got puro (2026-07-22)
+
+A pedido del usuario: documentado cómo llevar `/nixdots` a una máquina
+recién instalada, dado que el repo real vive en un Forgejo solo accesible
+por Tailscale (`pcale.tail32b955.ts.net`), y ahora el repo local es un
+work tree de `got`, no de `git`. Probadas tres rutas reales, en orden:
+
+### Ruta 1, descartada: `got clone` por SSH al Forgejo real + Tailscale
+
+Funciona (`got clone`/`got checkout` nativos, probado end-to-end en un
+directorio descartable), pero exige levantar Tailscale a mano *antes* del
+primer switch (huevo y gallina: Tailscale lo configura este mismo repo) --
+más pasos de los necesarios si hay una alternativa más simple.
+
+### Ruta 2, descartada: `got clone` por HTTPS o SSH al espejo de GitHub
+
+- **HTTPS falla, bug real de `got` 0.126:** `got clone
+  https://github.com/Richard7987/Nix-Dotfiles.git` da
+  `got-fetch-http: bufio_starttls` / `unexpected end of file`,
+  reproducido dos veces. Descartado que sea de red: `curl`/`openssl
+  s_client` contra github.com funcionan perfecto (TLS y HTTP/2 sanos). Es
+  el cliente HTTP(S) minimalista propio de `got` (no usa libcurl como
+  `git`), que no tolera bien cómo GitHub sirve el protocolo smart HTTP
+  (HTTP/2, chunked encoding, etc.) -- no encontrado como bug documentado
+  en búsquedas, pero 100% reproducible en esta máquina.
+- **SSH sí funciona:** `got clone git@github.com:Richard7987/Nix-Dotfiles.git`
+  probado end-to-end con éxito (`got.conf` con el remote armado solo, HEAD
+  del checkout `5bb6e64...` idéntico al del Forgejo real -- confirma que
+  el espejo está al día). Requiere que la llave SSH de la YubiKey esté
+  agregada a la cuenta de GitHub -- confirmado que ya lo está
+  (`ssh -T git@github.com` → "Hi Richard7987!"). El host key de GitHub se
+  agregó a `known_hosts` tras verificar el fingerprint ED25519
+  (`SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU`) contra la
+  documentación oficial de GitHub, no a ciegas.
+- Descartada de todos modos porque exige el bootstrap manual de
+  gpg-agent/YubiKey-SSH *antes* del primer switch (mismo problema de
+  huevo y gallina que la ruta 1, aunque sin depender de Tailscale).
+
+### Ruta 3, elegida: `git clone --bare` (una sola vez) + `got` para todo lo demás
+
+El espejo de GitHub (`https://github.com/Richard7987/Nix-Dotfiles.git`)
+es **público** -- `git clone --bare` funciona sin ninguna autenticación,
+sin YubiKey, sin Tailscale (probado real, HEAD `5bb6e64...` idéntico al
+Forgejo). `git` tolera sin problema lo mismo que rompe a `got` por HTTPS,
+así que se usa una sola vez, solo para bajar los objetos -- desde el
+`got checkout` en adelante todo el flujo es 100% `got`, igual que el
+resto de este repo.
+
+**Detalle importante:** el remote que dejó `git clone` en el `config` del
+bare repo apunta a `https://github.com/...` -- el mismo protocolo que
+falla en `got`. Hay que sobreescribir `got.conf` con el remote real
+(`ssh://git@pcale.tail32b955.ts.net:2222/...`) antes de usar `got
+fetch`/`got send`, o quedaría sirviendo solo para lectura vía checkout
+inicial. Procedimiento completo documentado en el README, sección
+"Bootstrap en una PC nueva".
blob - e0f6acf6157ae0a7447ad7eb335d564e39af2303
blob + 73e5dfac8f254765209fefc3ed87108b945f07fa
--- README.md
+++ README.md
@@ -46,6 +46,38 @@ pkgs/
   highlighting.
 - Theming Qt coherente (Kleopatra, pinentry-qt) vía `plasma-integration`.
 
+## Bootstrap en una PC nueva
+
+`got` no puede clonar por HTTPS desde GitHub (bug real, confirmado:
+`bufio_starttls` / `unexpected end of file` -- ver `NOTES.md`). Por eso el
+clone inicial se hace con `git` (una sola vez, contra el espejo público en
+GitHub, sin autenticación) y `got` toma el relevo desde el checkout:
+
+```sh
+# 1. clone inicial con git (repo público, sin YubiKey ni Tailscale)
+nix-shell -p git
+git clone --bare https://github.com/Richard7987/Nix-Dotfiles.git ~/nixdots.git
+
+# 2. got toma el relevo -- autor + remote real (SSH al Forgejo, no el
+#    espejo de GitHub, que got no puede fetch/send igual)
+nix-shell -p got
+cat > ~/nixdots.git/got.conf <<'EOF'
+author "ale <ale_bnes@tuta.com>"
+remote "origin" {
+	server git@pcale.tail32b955.ts.net
+	protocol ssh
+	port 2222
+	repository "/Ale/Nix-Dotfiles.git"
+	fetch { branch { "main" } }
+}
+EOF
+got checkout ~/nixdots.git /nixdots
+```
+
+Después: ajustar los placeholders de hardware (`hosts/ale/hardware-configuration.nix`,
+bus IDs en `modules/graphics.nix`, nombre de monitor en `home/ale/hyprland.lua`)
+y recién ahí el primer despliegue.
+
 ## Uso
 
 Primer despliegue: