| Následující verze | Předchozí verze |
| navody:distribuce:nixos:impermanence [2024/10/22 07:26] – vytvořeno aither | navody:distribuce:nixos:impermanence [2026/03/12 11:18] (aktuální) – nix flakes aither |
|---|
| <page>manuals:distributions:nixos:impermanence</page> | <page>manuals:distributions:nixos:impermanence</page> |
| ====== NixOS Impermanence ====== | ====== NixOS Impermanence ====== |
| |
| <note warning> | |
| Stále na tom pracujeme, impermanence je dostupná pouze na stagingu (node1.stg) | |
| </note> | |
| |
| Tato stránka popisuje použití modulu [[https://github.com/nix-community/impermanence|NixOS Impermanence]] na vpsFree.cz. Podporujeme impermanence s kořenovým souborovým systémem v dočasném ZFS datasetu, který poskytuje naše platforma. Je nutné přesunout Nix store do subdatasetu, což lze automaticky provést [[#pouziti_os_sablony|použitím OS šablony pro impermanence]] nebo to nastavit [[#manualni_konfigurace|manuálně]]. | Tato stránka popisuje použití modulu [[https://github.com/nix-community/impermanence|NixOS Impermanence]] na vpsFree.cz. Podporujeme impermanence s kořenovým souborovým systémem v dočasném ZFS datasetu, který poskytuje naše platforma. Je nutné přesunout Nix store do subdatasetu, což lze automaticky provést [[#pouziti_os_sablony|použitím OS šablony pro impermanence]] nebo to nastavit [[#manualni_konfigurace|manuálně]]. |
| |
| ===== Použití OS šablony ===== | ===== Použití OS šablony ===== |
| vpsAdmin obsahuje OS šablony, kde je modul impermanence předkonfigurován. Při vytváření nové VPS vyberte odpovídající šablonu (v názvu je uvedeno impermanence). Nový VPS bude mít ''/nix'' vyčleněný do subdatasetu. Root dataset bude připojen na ''/persistent'' a počáteční konfigurace impermanence bude nastavena, viz ''/etc/nixos/configuration.nix''. Kopie modulu impermanence je uložena v ''/etc/nixos/impermanence'', můžete ji aktualizovat na nejnovější verzi, např. naklonováním git repozitáře na stejné místo: | vpsAdmin obsahuje OS šablony, kde je impermanence předkonfigurována. Při vytváření nové VPS vyberte odpovídající šablonu (v názvu je uvedeno impermanence). Nová VPS bude mít ''/nix'' vyčleněný do subdatasetu. Root dataset bude připojen na ''/persistent'' a počáteční flake konfigurace NixOS bude nasazena do ''/etc/nixos'', viz ''/etc/nixos/flake.nix'' a ''/etc/nixos/configuration.nix''. Šablona také vytvoří ''/etc/nixos/flake.lock'', takže verze vpsAdminOS, ''nixpkgs'' a impermanence budou připnuté společně. |
| |
| <code> | Impermanence je přidána jako flake input. Pokud ji chcete aktualizovat, aktualizujte lock soubor a systém znovu sestavte: |
| | |
| | <code bash> |
| cd /etc/nixos | cd /etc/nixos |
| rm -rf impermanence | nix flake lock --update-input impermanence |
| git clone https://github.com/nix-community/impermanence | nixos-rebuild switch --flake /etc/nixos#vps |
| </code> | </code> |
| |
| Nyní restartujte VPS, čímž opustíte rescue mód. | Nyní restartujte VPS, čímž opustíte rescue mód. |
| |
| ==== 7. Úprava konfigurace a přidání modulu impermanence ==== | ==== 7. Úprava flake konfigurace a přidání impermanence ==== |
| Naklonujte repozitář modulu impermanence do ''/etc/nixos''. To vyžaduje git, pokud ho nemáte v systému, můžete použít např. ''nix-shell -p git''. | Šablony vpsAdminOS mají flakes zapnuté ve výchozím stavu. Vytvořte ''/etc/nixos/flake.nix'' a své lokální nastavení ponechte v ''/etc/nixos/configuration.nix''. Následující příklad používá stabilní větev ''nixpkgs'', kterou používá vpsAdminOS. Pokud používáte jinou stabilní verzi, zvolte odpovídající větev ''nixos-YY.MM''. Pokud používáte NixOS unstable, nahraďte ''github:NixOS/nixpkgs/nixos-25.11'' za ''github:NixOS/nixpkgs/nixos-unstable'' a v příkladu nahraďte řádek se stabilním modulem kontejneru za ''vpsadminos.nixosModules.containerUnstable''. |
| |
| <code bash> | <file nix /etc/nixos/flake.nix> |
| cd /etc/nixos | { |
| git clone https://github.com/nix-community/impermanence.git | inputs = { |
| </code> | vpsadminos.url = "github:vpsfreecz/vpsadminos"; |
| | nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; |
| | impermanence.url = "github:nix-community/impermanence"; |
| | }; |
| |
| Upravte svou konfiguraci a přidejte modul impermanence: | outputs = { nixpkgs, vpsadminos, impermanence, ... }: |
| | let |
| | containerModule = "container_${builtins.replaceStrings [ "." ] [ "_" ] nixpkgs.lib.trivial.release}"; |
| | in |
| | { |
| | nixosConfigurations.vps = nixpkgs.lib.nixosSystem { |
| | system = "x86_64-linux"; |
| | modules = [ |
| | vpsadminos.nixosModules.${containerModule} |
| | impermanence.nixosModules.impermanence |
| | ./configuration.nix |
| | ]; |
| | }; |
| | }; |
| | } |
| | </file> |
| | |
| | Poté rozšiřte svou konfiguraci a přidejte nastavení persistence: |
| |
| <file nix /etc/nixos/configuration.nix> | <file nix /etc/nixos/configuration.nix> |
| { config, ... }: | { ... }: |
| { | { |
| imports = [ | |
| ./impermanence/nixos.nix | |
| ]; | |
| |
| environment.persistence."/persistent" = { | environment.persistence."/persistent" = { |
| hideMounts = true; | hideMounts = true; |
| } | } |
| </file> | </file> |
| | |
| | Ujistěte se, že jsou flakes povolené, například: |
| | |
| | <code nix> |
| | nix.settings.experimental-features = [ |
| | "nix-command" |
| | "flakes" |
| | ]; |
| | </code> |
| |
| Upozorňujeme, že ''/persistent'' musí odpovídat mountpointu datasetu, ale můžete si zvolit libovolný název. Datasety budou připojeny prostřednictvím vpsAdminOS, takže není nutné konfigurovat položky ''fileSystems''. | Upozorňujeme, že ''/persistent'' musí odpovídat mountpointu datasetu, ale můžete si zvolit libovolný název. Datasety budou připojeny prostřednictvím vpsAdminOS, takže není nutné konfigurovat položky ''fileSystems''. |
| |
| <code bash> | <code bash> |
| nixos-rebuild boot | nixos-rebuild boot --flake /etc/nixos#vps |
| </code> | </code> |
| |
| ==== 8. Zapnutí funkce impermanence ==== | ==== 8. Zapnutí funkce impermanence ==== |
| V detailu VPS ve formuláři **Features** zapněte funkci **NixOS Impermanence**. To nakonfiguruje VPS tak, aby byl spuštěna s čistým, dočasným datasetem. Jeho obsah bude při každém restartu ztracen a není zálohován. Zapnutí této funkce způsobí restart VPS do konfigurace, kterou jsme připravili v kroku **7**. | V detailu VPS ve formuláři **Features** zapněte funkci **NixOS Impermanence**. To nakonfiguruje VPS tak, aby při startu používal čistý, dočasný dataset. Jeho obsah bude při každém restartu ztracen a není zálohován. Zapnutí této funkce způsobí restart VPS do konfigurace, kterou jsme připravili v kroku **7**. |
| |
| Uvnitř VPS můžete zkontrolovat připojené souborové systémy: | Uvnitř VPS můžete zkontrolovat připojené souborové systémy: |
| |
| ''/'' je založeno na dočasném datasetu, ''11327'' se používá pro ''/persistent'' a ''11327/nix'' obsahuje Nix store. | ''/'' je založeno na dočasném datasetu, ''11327'' se používá pro ''/persistent'' a ''11327/nix'' obsahuje Nix store. |
| |