# Das OS — що зробити далі Стан на 2026-10-19: версія 0.3.0, етапи 1–5 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs, Go-утиліти `das-update` і `das-welcome`). Далі: серверний образ (етап 6). ## Етап 5. Go-утиліти (готово, лишилися перевірки) - [x] `das-update`: вікно, значок у треї (лише коли є оновлення), консольний режим `--cli`, знімок snapper pre/post, встановлення через pkexec, підказка про відкат. - [x] `das-welcome`: вікно першого входу (встановлення в live-сесії, мова, теки, оновлення, налаштування, довідка). - [x] Англійські назви тек: xdg-user-dirs 0.20 шукає переклади лише в першій теці `XDG_DATA_DIRS` з підкаталогом `locale` (порожня `/usr/local/share/locale`). Виправлено в `das-settings` (`/etc/X11/xinit/xinitrc.d/50-das-user-dirs`), уже створені теки перейменовує `das-welcome`. - [x] Тести `go test ./...` (`make test` і під час збирання пакета). - [ ] Перевірити оновлення зі знімком у встановленій системі на Btrfs (у live-сесії перевірено лише гілку без знімків). - [ ] Перевірити вибір мови в `das-welcome` (AccountsService і `~/.dmrc`): у live-образі зібрано лише одну локаль, тому рядок мови не показується. - [ ] Повідомити авторів xdg-user-dirs про помилку з `XDG_DATA_DIRS`. - [ ] Пункт «Профіль розробника» в `das-welcome` (разом з етапом 7). ## Етап 6. Серверний образ Live ISO без графіки з консольним інсталятором: `dasos-server-<версія>-x86_64.iso`. - [ ] Профіль `server/` поруч із `live/` (`packages.x86_64`, `services`, `include/`); параметризувати `scripts/container/build-iso.sh` профілем; ціль `make iso-server`. Kernel cmdline з `console=tty0 console=ttyS0` для серійної консолі. - [ ] Метапакет `das-server`: openssh, chrony, dhcpcd (NetworkManager/nmtui на вибір), das-snapshots, docker (без podman), nftables, fail2ban, python3, lazydocker, lazygit, mc, tmux, htop, socklog-void. - [ ] Налаштування в `das-server`: nftables «закрито все, крім SSH», jail sshd для fail2ban, sshd без входу root за паролем. - [ ] `dsv` (das services): керування службами runit замість systemctl (`list`, `enable`, `disable`, `start`, `stop`, `restart`, `status`, `logs`): посилання `/etc/sv/X` → `/var/service`, логи через socklog/svlogd. Знадобиться й на десктопі. - [ ] `das-server-install`: TUI-інсталятор на `dialog` (диск, ім'я хоста, користувач, SSH-ключ, часовий пояс, розкладка). Розмітка GPT: ESP + Btrfs з тими ж підтомами, що й у Calamares (`@`, `@snapshots`…); копіювання з `live-base` (перевикористати `mount-source`); GRUB для UEFI і BIOS. - [ ] Винести спільну частину `postinstall` (локалі, `/tmp`, гостьові інструменти VM, `das-snapper-setup`, переписування ядер) в окремий скрипт для обох інсталяторів. - [ ] `scripts/run-qemu.sh --serial` (`-nographic`) для перевірки серверного ISO. - [ ] Перевірка: встановлення в QEMU, вхід по SSH, `docker run hello-world`, знімок snapper перед `das-update --cli`. - [ ] Наостанок — розмір ISO: виміряти обидва образи, знайти, що займає найбільше (розміри пакетів через `xbps-query`, прошивки `linux-firmware-*`, локалі, документація, `-devel`-пакети, гостьові інструменти VM, компресія squashfs `xz`/`zstd`), і вирішити, що й як зменшити. ## Етап 7. Профіль розробника - [ ] Метапакет `das-dev`: go, git, docker, podman, vscode. - [ ] Android Studio та JetBrains на вимогу через Flatpak. - [ ] Вибір профілю в інсталяторі (модуль packagechooser) або в `das-welcome`. ## Етап 8. CI - [ ] Збирання пакетів і обох ISO (десктоп і сервер) в контейнері Void (Gitea Actions на git.das.org.ua або GitHub Actions). ## Репозиторій пакетів - [ ] Підпис через `xbps-rindex --sign`, ключ поза репозиторієм. - [ ] Хостинг репозиторію (власний сервер або GitHub Releases/Pages). - [ ] `/etc/xbps.d/das.conf` у встановленій системі, щоб пакети `das-*` оновлювалися. Зараз встановлена система бачить лише репозиторій Void. ## Інсталятор - [ ] Перевірити встановлення на старий BIOS (MBR, `grub-install --target=i386-pc`). - [ ] Перевірити на реальному залізі: видалення гостьових інструментів VM, Wi-Fi, NVIDIA/AMD. - [ ] Шифрування диска (LUKS): `luksbootkeyfile`, crypttab, dracut, `GRUB_ENABLE_CRYPTODISK`. - [ ] Перевірити ручну розмітку з Btrfs (чи створюються підтоми) і встановлення на ext4/XFS (знімки мають вимкнутися без помилок). - [ ] Перевірити вибір автологіну й розкладки, відмінної від `us,ua`. ## Знімки й відкат - [ ] Перевірити, що cron справді робить щогодинні знімки й очищує старі. - [ ] Графічний відкат (у `das-update` або окремою утилітою) замість `sudo snapper-rollback N`. - [ ] Прибирати старі корені `@<дата>`, які лишаються після відкату. ## Оформлення та дрібниці - [ ] Прибрати значки томів live-носія («Том 6,6 ГБ») з робочого столу live-сесії. - [ ] Тема GRUB у встановленій системі (зараз стандартний чорний екран). - [ ] Перевірити меню Whisker вручну. - [ ] Прискорити `make packages`: не перезбирати Calamares, якщо його версія не змінилася. ## Відкладено - [ ] ARM-образ для Raspberry Pi. - [ ] Вбудувати текстовий редактор MultiText. - [ ] Перший стабільний реліз: злиття `dev` → `main`.