در بخش پایانی دو قطعهی آخر را کنار هم میگذاریم. اول home-manager برای اینکه محیط شخصی کاربر (ابزارها، تنظیمات git، aliasها و ...) را هم مثل خود سیستم اعلانی کنیم. سپس همان مدل flake را برای استقرار از راه دور روی یک ماشین دیگر بهکار میبریم؛ درست مثل اینکه از روی لپتاپ خودتان یک سرور را بسازید.
محیط کاربر با home-manager
تا اینجا سیستم را اعلانی کردیم، اما محیط شخصی کاربر (dotfiles) هنوز دستی بود. home-manager همان مدل را به سطح کاربر میآورد: packageهای کاربر، تنظیمات git، پیکربندی shell و aliasها همه در یک فایل توصیف میشوند و با همان nixos-rebuild switch اعمال میشوند:
home-manager: packageها، تنظیمات git و aliasها. پس از rebuild همهچیز سرجایش است؛ dotfiles هم بازتولیدپذیر میشوند.استقرار از راه دور روی یک ماشین دیگر
حالا نکتهی نهایی: اگر کل یک سیستم یک nixosConfiguration در یک flake است، میتوانیم آن را روی یک ماشین دیگر از راه دور بسازیم و فعال کنیم؛ بدون اینکه دستی وارد آن سرور شویم. یک flake با یک ورودی برای هر ماشین («ناوگان») تعریف میکنیم و با یک دستور، پیکربندی ماشین web01 را روی میزبان راه دور مستقر میکنیم:
nixosConfiguration دارد، و استقرار از راه دور با nixos-rebuild switch --target-host. سیستم برای ماشین راه دور ساخته، به آن کپی و فعال میشود؛ همه از روی همین ماشین.روی ماشین مقصد بررسی میکنیم: نسل فعال حالا web01 است، نام میزبان تغییر کرده و سرویس nginx فعال است و همان صفحهای را که در پیکربندی توصیف کردیم سرو میکند:
nixos-system-web01 است، /etc/hostname برابر web01، و nginx همان صفحهی توصیفشده در flake را سرو میکند. استقرار کاملاً از راه دور و اعلانی انجام شد.جمعبندی مجموعه
در این مجموعهی ششبخشی مسیر کامل را طی کردیم: از مفاهیم Nix و /nix/store، زبان Nix و اولین derivation، flakes و محیطهای بازتولیدپذیر، تا NixOS اعلانی، سرویسها و secretها، و در نهایت home-manager و استقرار از راه دور. نتیجه یک زیرساخت است که در آن همهچیز کد است: قابلبازبینی، بازتولیدپذیر و با یک دستور قابلبازگشت.
همهی کدها و پیکربندیهای این مجموعه روی GitHub در دسترس است: github.com/obsernetics/nixos-lab
بخشهای این مجموعه
- بخش ۱: مفاهیم Nix، نصب و Nix store
- بخش ۲: زبان Nix و کار با Nixpkgs
- بخش ۳: Flakes و محیطهای توسعهی بازتولیدپذیر
- بخش ۴: نصب و پیکربندی اعلانی NixOS
- بخش ۵: NixOS در عمل؛ سرویسها، کاربران و شبکه
- بخش ۶: home-manager و استقرار از راه دور (همین بخش)