From 8ee037ccef4868877a7a94b3f6313f4cc8ae6ea5 Mon Sep 17 00:00:00 2001 From: GarandPLG Date: Mon, 19 Oct 2026 14:32:42 +0200 Subject: [PATCH] Add Nix CI workflow, update docs and cargo hash --- .gitea/workflows/nix.yml | 23 +++++++++++++++++++++++ default.nix | 2 +- docs/AGENTS.md | 2 +- docs/CODE_MAP.md | 1 + docs/PROGRESS.md | 6 ++++++ docs/TESTING.md | 2 ++ flake.nix | 2 -- 7 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 .gitea/workflows/nix.yml diff --git a/.gitea/workflows/nix.yml b/.gitea/workflows/nix.yml new file mode 100644 index 0000000..9d13ce7 --- /dev/null +++ b/.gitea/workflows/nix.yml @@ -0,0 +1,23 @@ +name: Nix package + +on: + push: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + container: node:22-bookworm + steps: + - name: Checkout + uses: https://github.com/actions/checkout@v4 + - name: Install runner prerequisites + run: | + apt-get update + apt-get install -y --no-install-recommends sudo + - name: Install Nix + uses: https://github.com/cachix/install-nix-action@v31 + with: + enable_kvm: false + - name: Build default.nix package + run: nix build .#default --no-update-lock-file --no-link --print-out-paths --print-build-logs diff --git a/default.nix b/default.nix index 74b84c6..5d68553 100644 --- a/default.nix +++ b/default.nix @@ -22,7 +22,7 @@ in # hash = lib.fakeHash; # }; - cargoHash = "sha256-Cv/sUzkiQuQS3ybg2glfXucIu+HtPi2brH/D7tqc3Mc="; + cargoHash = "sha256-cXG/SZxmq/w2CFJiaOYtE6IpShkGY2k0Q+E0QCxgY0I="; nativeBuildInputs = [pkg-config]; buildInputs = [alsa-lib]; diff --git a/docs/AGENTS.md b/docs/AGENTS.md index 4dcf6ef..ee17506 100644 --- a/docs/AGENTS.md +++ b/docs/AGENTS.md @@ -27,7 +27,7 @@ Ostatnie polecenie wymaga interaktywnego terminala. `shellHook` sam wykonuje `ca Stan bazowy po konfiguracji lintów: 45 testów i formatowanie przechodzą; Clippy zgłasza 50 ostrzeżeń dla biblioteki. `clippy::unused_unit` jest dozwolony ze względu na wymagane jawne `-> ()`. Zakres i polecenia opisano w [TESTING.md](TESTING.md). Nie traktuj tego jako potwierdzenia działania pełnej rozgrywki. Nowa nietrywialna logika wymaga małego testu regresji. Nie dodawaj zależności ani warstw abstrakcji bez potrzeby. -`Cargo.toml` wymaga Rust 1.88 lub nowszego, zabrania `unsafe` we własnym kodzie i ignorowania wyników `must_use`, a w release włącza kontrolę przepełnień. CI Gitea w `.gitea/workflows/rust.yml` sprawdza formatowanie, kompilację, testy debug/release i Clippy bez Nix, przez Rust 1.99.1 instalowany rustup; lokalnie nadal używaj Nix. Nie dodawaj `-D warnings` przed uporządkowaniem istniejących ostrzeżeń. +`Cargo.toml` wymaga Rust 1.88 lub nowszego, zabrania `unsafe` we własnym kodzie i ignorowania wyników `must_use`, a w release włącza kontrolę przepełnień. CI Gitea w `.gitea/workflows/rust.yml` sprawdza formatowanie, kompilację, testy debug/release i Clippy bez Nix, przez Rust 1.99.1 instalowany rustup; lokalnie nadal używaj Nix. Oddzielny `.gitea/workflows/nix.yml` buduje `.#default` z `default.nix`, z testami pakietu i kontrolą instalacji. Nie dodawaj `-D warnings` przed uporządkowaniem istniejących ostrzeżeń. Audio wymaga ALSA i urządzenia odtwarzania; do pracy nad TUI używaj `--disable-audio`. `--mute` nadal uruchamia wątek audio. Ścieżki zasobów i pakowanie sprawdzaj osobno przy zmianach audio/Nix. Rozróżniaj lokalny build Cargo, pakiet `.#develop` i domyślny pakiet Nix. diff --git a/docs/CODE_MAP.md b/docs/CODE_MAP.md index 2f90332..c5d9dcb 100644 --- a/docs/CODE_MAP.md +++ b/docs/CODE_MAP.md @@ -23,6 +23,7 @@ Wszystkie ścieżki poniżej są względem katalogu głównego repozytorium. | Środowisko | `Cargo.toml`, `flake.nix`, `default.nix`, `flake.lock` | Zależności, toolchain Fenix, ALSA, pakowanie przez Naersk lub buildRustPackage | | Formatowanie | `rustfmt.toml` | Rustfmt, styl 2024, wcięcia po 2 spacje, docelowo 100 znaków i zakończenia LF | | Kontrole CI | `.gitea/workflows/rust.yml` | Gitea Actions w `node:22-bookworm`: Rust 1.99.1 przez rustup, cache toolchaina i Cargo, formatowanie, kompilacja, testy debug/release i Clippy | +| Budowa paczki Nix | `.gitea/workflows/nix.yml` | Oddzielny workflow buduje `.#default`, czyli `default.nix` przez nixpkgs przypięte w `flake.lock`, z testami i kontrolą instalacji pakietu | | Licencja | `LICENSE`, `Cargo.toml`, `default.nix` | MIT, Copyright (c) 2026 GarandPLG | | Zasoby | `soundtracks/default/`, `ui_draft/` | Dwa pliki OGG i tekstowe szkice ekranów | diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index e5039b3..5f127df 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,5 +1,11 @@ # Dziennik prac +## 2026-10-19 — oddzielny workflow budowania default.nix + +Dodano `.gitea/workflows/nix.yml` dla push i pull request. Workflow w `node:22-bookworm` instaluje sudo i Nix (KVM wyłączone), następnie buduje `.#default` z przypiętym `flake.lock`, bez aktualizacji lockfile i bez devShell. Obejmuje testy buildRustPackage oraz versionCheckHook. Nie zmieniono workflow Rust ani konfiguracji runnera; nie dodano trwałego cache Nix. + +Próbna budowa ujawniła nieaktualny cargoHash w `default.nix`; poprawiono go na hash rzeczywiście pobranych zależności. Ponowne `nix build .#default --no-update-lock-file --no-link --print-out-paths --print-build-logs` zakończyło się sukcesem. Lokalna kontrola `nix develop -c cargo check --all-targets --locked` również przeszła. Zaktualizowano mapę, instrukcje i opis CI. Zachowano zastaną zmianę użytkownika w `flake.nix`. Nowy workflow wymaga jeszcze uruchomienia na Gitea. + ## 2026-10-19 — CI Rust bez Nix Na życzenie użytkownika usunięto instalację Nix i wywołania `nix develop` z workflow. W kontenerze `node:22-bookworm` rustup instaluje Rust 1.99.1 z rustfmt i Clippy. Dodano zależności systemowe ALSA, pkg-config i kompilator C oraz dwa cache `actions/cache@v4`: toolchain i Cargo (registry, git, target). Klucze Cargo uwzględniają wersję Rust, Cargo.lock, manifest i źródła; częściowe trafienia pozwalają wykorzystać wcześniejsze artefakty. Zachowano wszystkie pięć kontroli i `--locked`. Lokalne środowisko Nix pozostaje bez zmian. Zaktualizowano mapę i instrukcje. diff --git a/docs/TESTING.md b/docs/TESTING.md index 7dae53a..667f371 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -45,6 +45,8 @@ nix develop -c cargo clippy --all-targets --locked ## CI i profile kompilacji +Osobny workflow `.gitea/workflows/nix.yml` (push i pull request) instaluje Nix w `node:22-bookworm` i wykonuje `nix build .#default --no-update-lock-file --no-link --print-out-paths --print-build-logs`. Atrybut `.#default` wywołuje `pkgs.callPackage ./default.nix {}` z nixpkgs przypiętym w `flake.lock`; nie buduje wariantu `.#develop` opartego na Fenix. Budowa obejmuje standardową fazę testów `buildRustPackage` i włączony w pakiecie `versionCheckHook`. Nie wymaga devShell ani uruchamiania gry. Instalator potrzebuje sudo; KVM jest wyłączone. Workflow nie konfiguruje trwałego cache magazynu Nix, więc nowy job może ponownie pobierać zależności. Kontrole Rust opisane poniżej pozostają niezależne. + Workflow `.gitea/workflows/rust.yml` uruchamia kontrole po pushu i dla pull requestów. Wymaga włączonych Actions w repozytorium Gitea i runnera Linux x86_64 o etykiecie `ubuntu-latest`, obsługującego akcje Node. Nazwy akcji zawierają pełne adresy GitHub. Konfiguracja nie rejestruje runnera ani nie włącza Actions na serwerze; zobacz [instrukcję Gitea](https://docs.gitea.com/usage/actions/quickstart/). Workflow określa obraz zadania jawnie jako `node:22-bookworm`. Kontener działa jako root i instaluje pakiety potrzebne do budowania: build-essential, pkg-config i libasound2-dev oraz curl, ca-certificates i zstd. Rust 1.99.1 z rustfmt i Clippy jest instalowany przez rustup. CI nie instaluje Nix i nie wykonuje jego shellHook. diff --git a/flake.nix b/flake.nix index 3b9b8ba..ad69741 100644 --- a/flake.nix +++ b/flake.nix @@ -70,8 +70,6 @@ echo " nix run - Run production version" echo " nix build .#develop - Build development version" echo " nix run .#develop - Run development version" - echo "" - cargo run --locked -- -h ''; }; };