Pakiet HPM dla COSMIC — natywnego dla Wayland środowiska graficznego
tworzonego przez System76 (projekt "Epoch"), budowanego ze źródeł upstream
github.com/pop-os/cosmic-epoch.
To repozytorium (folder cosmic/) jest samodzielnym pakietem HPM w formacie
opisanym w głównym README projektu HackerOS-Package-Manager — to znaczy: żeby
działało z hpm install cosmic, ten folder musi być swoim własnym
repozytorium git (np. https://github.com/<ty>/hpm-cosmic), zarejestrowanym
w repo-list.json / repo.json:
{ "packages": { "cosmic": "/<ty>/hpm-cosmic" } }Do czasu wypchnięcia jako osobne repo możesz testować lokalnie bez rejestracji w indeksie:
hpm dev ./cosmic
hpm dev ./cosmic run cosmic-sessionbuild.toml klonuje cosmic-epoch na tagu epoch-1.4.0 (aktualne stabilne
wydanie w chwili tworzenia tego pakietu — podbij tag gdy System76 wyda
kolejną wersję) i buduje je komendami just build / just install
udokumentowanymi w justfile tego projektu. Wynik trafia w całości do
~/.hackeros/hpm/store/cosmic/<wersja>/:
bin/cosmic-session,bin/cosmic-comp,bin/cosmic-panel,bin/cosmic-launcher,bin/cosmic-files,bin/cosmic-settings,bin/cosmic-app-library,bin/cosmic-bg,bin/cosmic-notifications,bin/cosmic-osd,bin/cosmic-workspaces(deklarowane winfo.hkjako osobnebins.*, więc każdy jest widoczny dlahpm run cosmic <bin>)share/...— pliki.desktop, schematy GSettings, ikony poszczególnych komponentów, tak jak instaluje je oficjalnyjust install.
Budowa to ~27 crate'ów Rust — licz się z 30-90+ minutami i kilkoma GB miejsca
przy pierwszym hpm install cosmic, zależnie od sprzętu.
Wszystkie inne przykładowe pakiety w tym repo (sysforge, glyph-editor...) są
uruchamiane w standardowym sandboxie hpm (namespaces + seccomp + Landlock).
COSMIC jest kompozytorem Wayland — musi mieć bezpośredni dostęp do
/dev/dri, przejąć sesję przez logind/seatd, otwierać gniazda
Wayland/DBus systemowe itd. Odizolowanie tego w namespace'ach w praktyce
uniemożliwiłoby mu narysowanie czegokolwiek na ekranie, więc pakiet jawnie
wyłącza sandbox — to świadomy wyjątek, nie przeoczenie, i jest udokumentowany
tutaj oraz w info.hk.
sandbox.network => true jest potrzebne niezależnie od tego, bo sam krok
budowania (git clone submodułów + pobieranie crate'ów przez cargo)
wymaga sieci.
hpm z założenia nigdy nie dotyka ścieżek systemowych bez sudo (patrz
główne README: jedyny wyjątek to hpm upgrade samego hpm). Rejestracja
sesji Wayland dla menedżerów logowania (GDM/SDDM/LightDM) normalnie wymaga
pliku w /usr/share/wayland-sessions/, do którego hpm jako user nie ma
dostępu — więc:
- Hook
post-installzapisujecosmic.desktoplokalnie w~/.local/share/wayland-sessions/i wypisuje gotową komendę. - Ty jednorazowo odpalasz:
sudo cp ~/.local/share/wayland-sessions/cosmic.desktop /usr/share/wayland-sessions/ - Od tego momentu COSMIC pojawia się jako opcja sesji na ekranie logowania.
Hook pre-remove sprząta lokalny plik automatycznie i przypomina o ręcznym
usunięciu systemowej kopii, jeśli ją zrobiłeś/aś.
- Tagi wydań
cosmic-epoch(epoch-X.Y.Z) trzeba ręcznie podbijać wbuild.tomlprzy nowych wersjach upstream — nie ma tu automatycznego śledzenia najnowszego tagu. - Nazwy recept
just build/just installpochodzą z justfile projektu w chwili pisania tego pakietu; jeśli upstream je zmieni, zaktualizujbuild.toml. - To pierwsza, ręcznie utworzona wersja pakietu — nie testowana na realnym
sprzęcie w tym środowisku (brak dostępu do sieci/GPU tutaj), więc przed
użyciem produkcyjnym warto przejść przez
hpm dev ./cosmicna docelowej maszynie i dopasować listydeb_depsdo swojej dystrybucji.