diff --git a/TODO.md b/TODO.md index 6aa7683..188fe48 100644 --- a/TODO.md +++ b/TODO.md @@ -1,20 +1,33 @@ # Das OS — що зробити далі -Стан на 2026-10-19: версія 0.2.0, етапи 1–4 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs). +Стан на 2026-10-19: версія 0.2.0, етапи 1–4 готові (live ISO, власний репозиторій, оформлення, інсталятор Calamares зі знімками Btrfs). Далі: етап 5, потім серверний образ (етап 6). ## Етап 5. Go-утиліти - [ ] `das-update`: значок у треї, знімок snapper перед оновленням (`snapper create -t pre/post`), потім `xbps-install -Su` через pkexec; підказка про відкат, якщо щось зламалося. +- [ ] `das-update` одразу з консольним режимом (`das-update --cli`, без треї): він потрібен серверному образу. - [ ] `das-welcome`: вікно першого входу (мова, оновлення, профіль розробника, посилання на довідку). - [ ] У `das-welcome` виправити назви тек у домашньому каталозі: xdg-user-dirs 0.20 створює `Desktop`, `Documents`… англійською навіть з `LANG=uk_UA` (переклади є, але не застосовуються). З'ясувати причину або перейменовувати теки самим. - [ ] Тести `go test ./...` для утиліт. -## Етап 6. Профіль розробника +## Етап 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 за паролем. +- [ ] `das-sv`: керування службами 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`. -## Етап 7. CI -- [ ] Збирання пакетів і ISO в контейнері Void (Gitea Actions на git.das.org.ua або GitHub Actions). +## Етап 8. CI +- [ ] Збирання пакетів і обох ISO (десктоп і сервер) в контейнері Void (Gitea Actions на git.das.org.ua або GitHub Actions). ## Репозиторій пакетів - [ ] Підпис через `xbps-rindex --sign`, ключ поза репозиторієм.