Маленькие скрипты берут на себя рутину: помогают управлять рабочим столом и файлами, а ещё присматривают за домашним сервером. Запускаются из приложений, по сочетаниям клавиш или системными службами
Чтобы отправить изменения huix, запусти syssync; можно передать своё сообщение коммита. Автоматическая синхронизация при входе в систему сама коммиты и отправку не делает
Синхронизация забирает и работу Мии: у huix и у проектов, которые она держит у себя на станции, появляется remote mya, и о её новых коммитах приходит уведомление. syssync идёт дальше: сначала коммитит всё, что Мия оставила в своём клоне huix, под её именем [mya], а потом вливает это в huix и отправляет вместе с твоими изменениями. Что именно пришло от неё, сообщит отдельное уведомление. Если вливать её работу не нужно, есть syssync --no-take
У команды есть полезный режим, если нужно синхронизировать только этот репозиторий:
syssync --no-projectsУ отдельных скриптов есть своя справка — --help подскажет команды и параметры
drive-backup сохраняет незашифрованный холодный архив директории, файл SHA-256 и отметку завершения. Команда сравнивает размер и SHA-256 с данными Drive, а прежний архив удаляет только после проверки нового. Обратное скачивание не требуется. Справка доступна через drive-backup --help; без установки команду можно запустить через nix run .#drive-backup -- --help
Файл .backupignore в корне исходной директории задаёт исключения в формате Git ignore, включая отрицания и привязку к корню. Правила действуют до упаковки; вложенные .backupignore, .gitignore и .ignore автоматически не применяются. Предпросмотр --dry-run показывает состав архива без упаковки или обращения к Drive, но не показывает предыдущий архив: для этого пришлось бы обратиться к Drive. Без .backupignore команда предупреждает об отсутствии исключений, но не ищет секреты по содержимому
Архив сохраняет права, пустые каталоги и символические ссылки, но не читает цели ссылок. Изменение исходных данных во время упаковки прерывает загрузку. Для баз данных сначала нужен согласованный дамп, а не архив живого каталога
При повторном запуске для той же пары "исходная директория → назначение" остаётся один завершённый архив. Другие наборы и посторонние файлы команда не удаляет. Одновременные запуски на одной машине блокируются; общий облачный каталог не следует обновлять одновременно с разных машин
Авторизацию через собственный Google OAuth-клиент выполняют явно под тем пользователем, который будет запускать команду: drive-backup auth. Клиент хранится в sops, а обновляемый токен — в закрытом изменяемом конфиге rclone, вне Git и Nix store. Для переключения между аккаунтами удобно создать отдельные подключения через --remote ИМЯ auth и выбирать их с тем же --remote перед archive. Если повторная авторизация не удалась, прежний токен сохраняется. Для работы без еженедельной повторной авторизации OAuth-приложение не должно оставаться в режиме "Testing"
Токен станции независим от пользовательского. Войди на станцию по SSH и выполни sudo drive-backup --config /var/lib/restic-cloud/rclone.conf auth, выбрав тот аккаунт, который должен хранить автоматическую копию. Ответь rclone, что на станции нет браузера: он покажет команду для машины с браузером и попросит вставить результат в SSH-терминал. Команда и результат содержат секретные данные, поэтому не публикуй их. Затем запусти sudo systemctl start restic-cloud.service и проверь журнал; новый аккаунт получит собственную папку, а прежний не изменится. Возраст последней копии проверяется для выбранного аккаунта и назначения
Удаление на Drive использует обычное поведение rclone: старые объекты попадают в корзину Google Drive. Они могут занимать квоту до очистки корзины
Если хочется проверить скрипты вручную, тесты запускаются так:
nix develop -c bash scripts/tests/run.sh