4 KiB
4 KiB
bootstrap
как поднять систему с нуля, если nix-config уже есть, но машина новая/сброшена.
что есть в home/
passсpass-otp(зашифрованный password store)gpg-agentс кешированием на 1 часgitсdelta(красивый diff)zshсpureprompt, autosuggestions, syntax highlightingkitty(через import в poppy)dutiдля default apps
step 1: установить nix
# Determinate Nix (рекомендуется)
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/installer | sh
step 2: склонировать nix-config
git clone https://git.iscg.dev/mikl/nix-config.git ~/repos/nix-config
cd ~/repos/nix-config
step 3: импортировать GPG ключ
критичный шаг. без GPG ключа pass не работает.
# если есть приватная репа с зашифрованным 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
если репы нет, генерируем новый:
gpg --full-gen-key
# email: mikl@iscg.dev
# имя: mikl
# passphrase: <strong>
step 4: первый rebuild
# darwin (mac)
sudo darwin-rebuild switch --flake .#poppy
# nixos (linux)
sudo nixos-rebuild switch --flake .#muscari
первый rebuild может долгим — скачает все пакеты.
step 5: настроить pass (ручной шаг)
# если есть существующий 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 <gpg-key-id> # id от gpg --list-secret-keys
pass git init
pass git remote add origin https://git.iscg.dev/mikl/pass.git
после этого работают алиасы:
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+ нужно вручную:
- правый клик на файл → Get Info
- Open with: → выбрать нужное
- Change All... → подтвердить
для каких файлов:
.url,.xhtml→ Chrome.sh→ kitty.pdf→ Skim.txt→ VSCodium
step 7: настроить ~/.gitconfig (вручную)
nix генерирует ~/.config/git/config, но если есть ~/.gitconfig — он перебивает.
# если хочешь глобальные настройки
nano ~/.gitconfig
# пример:
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
[credential]
helper = osxkeychain
или удали ~/.gitconfig чтобы nix-only.
post-bootstrap проверка
# все пакеты установлены?
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) —
masCLI может восстановить - .DS_Store preferences — настраиваются заново