# bootstrap как поднять систему с нуля, если nix-config уже есть, но машина новая/сброшена. ## что есть в `home/` - `pass` с `pass-otp` (зашифрованный password store) - `gpg-agent` с кешированием на 1 час - `git` с `delta` (красивый diff) - `zsh` с `pure` prompt, autosuggestions, syntax highlighting - `kitty` (через import в poppy) - `duti` для default apps ## step 1: установить nix ```bash # Determinate Nix (рекомендуется) curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/installer | sh ``` ## step 2: склонировать nix-config ```bash git clone https://git.iscg.dev/mikl/nix-config.git ~/repos/nix-config cd ~/repos/nix-config ``` ## step 3: импортировать GPG ключ **критичный шаг.** без GPG ключа `pass` не работает. ```bash # если есть приватная репа с зашифрованным gpg ключом git clone https://git.iscg.dev/mikl/gpg.git ~/tmp/gpg gpg --import /tmp/gpg/private.asc rm -rf ~/tmp/gpg # проверить gpg --list-secret-keys mikl@iscg.dev ``` если репы нет, генерируем новый: ```bash gpg --full-gen-key # email: mikl@iscg.dev # имя: mikl # passphrase: ``` ## step 4: первый rebuild ```bash # darwin (mac) sudo darwin-rebuild switch --flake .#poppy # nixos (linux) sudo nixos-rebuild switch --flake .#muscari ``` первый rebuild может долгим — скачает все пакеты. ## step 5: настроить pass (ручной шаг) ```bash # если есть существующий password store git clone https://git.iscg.dev/mikl/pass.git ~/.password-store cd ~/.password-store && git remote remove origin && git remote add origin https://git.iscg.dev/mikl/password-store.git # если создаёшь с нуля pass init # id от gpg --list-secret-keys pass git init pass git remote add origin https://git.iscg.dev/mikl/pass.git ``` после этого работают алиасы: ```bash pass-sync # = pass git push pass-pull # = pass git pull pass-status # = pass git status ``` ## step 6: настроить default apps `duti` уже настроен через nix. но **для системных UTI (url, shell-script, pdf, txt)** на macOS Sonoma+ нужно вручную: 1. правый клик на файл → **Get Info** 2. **Open with:** → выбрать нужное 3. **Change All...** → подтвердить для каких файлов: - `.url`, `.xhtml` → Chrome - `.sh` → kitty - `.pdf` → Skim - `.txt` → VSCodium ## step 7: настроить ~/.gitconfig (вручную) nix генерирует `~/.config/git/config`, но если есть `~/.gitconfig` — он **перебивает**. ```bash # если хочешь глобальные настройки nano ~/.gitconfig # пример: [filter "lfs"] clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f [credential] helper = osxkeychain ``` или удали `~/.gitconfig` чтобы nix-only. ## post-bootstrap проверка ```bash # все пакеты установлены? which pass gpg zsh delta duti # kitty на poppy ls /Users/michaotic/Applications/Home\ Manager\ Apps/ | grep kitty # git config git config --get user.name # mikl git config --get user.email # mikl@iscg.dev ``` ## что не восстанавливается автоматически - **Obsidian vault** (если заметки локально) — нужна синхронизация через Obsidian Sync или git - **SSH ключи** — нужны в `~/.ssh/`, копируй со старой машины или генерируй новые - **iCloud** — не в Nix - **App Store apps** (Pages, Keynote, Numbers) — `mas` CLI может восстановить - **.DS_Store preferences** — настраиваются заново