/learn-nix

I learn nix and share.

Primary LanguageNix

Nix and NixOS

دو مفهوم کلیدی در دنیای مدیریت بسته‌ها و سیستم عامل‌ها هستند که با رویکردهای منحصربه‌فرد خود توانسته‌اند توجه بسیاری از توسعه‌دهندگان و مدیران سیستم را جلب کنند. در این مقاله، با هر دو آشنا خواهیم شد و به ویژگی‌ها و کاربردهای آنها می‌پردازیم.

Nix

یک ابزار مدیریت بسته عملکردی است که به توسعه‌دهندگان این امکان را می‌دهد تا محیط‌های نرم‌افزاری قابل تکرار، ایزوله و دقیقاً قابل پیش‌بینی ایجاد کنند.

ویژگی ها

ایزوله‌سازی بسته‌ها: هر بسته در مسیر جداگانه‌ای نصب می‌شود، از بروز تضاد میان نسخه‌ها جلوگیری می‌کند.

پشتیبانی از بازگشت: به‌سادگی می‌توانید به نسخه‌های قبلی بسته‌ها بازگردید.

پیکربندی اعلامی: تمام وابستگی‌ها و تنظیمات یک پروژه در یک فایل مشخص تعریف می‌شود.

نمونه

نمونه با زبان Go version 1.23.0

{
  pkgs ? import <nixpkgs> {}
}:

pkgs.mkShell {
  buildInputs = [
    pkgs.go_1_23
  ];

  shellHook = ''
     echo "به محیط توسعه خوش آمدید!"
  '';
}

بریم داخل پوشه ها مثال هارو ببینیم :)

NixOs

یک توزیع لینوکسی است که بر پایه Nix ساخته شده است. این سیستم عامل به طور کامل قابل تنظیم و ویرایش است و تمام تنظیمات آن در فایل‌های پیکربندی تعریف می‌شود. این رویکرد، مدیریت سیستم‌ها را ساده می‌کند.

ویژگی‌های کلیدی

سیستم اعلامی: تمام جنبه‌های سیستم، از نصب بسته‌ها گرفته تا تنظیمات شبکه، در فایل‌های پیکربندی تعریف می‌شود.

ایزوله‌سازی کامل: بسته‌ها و تنظیمات از یکدیگر کاملاً جدا هستند.

به‌روزرسانی و بازگشت ساده: می‌توانید سیستم را بدون ریسک ارتقا دهید و در صورت نیاز به وضعیت قبلی بازگردید.

خوراک DevOps : ابزار مناسبی برای ایجاد و مدیریت محیط‌های یکسان برای توسعه، آزمایش و تولید.

نمونه

فایل زیر یک سیستم NixOS را با سرور SSH و یک کاربر جدید پیکربندی می‌کند

{
  config, pkgs, ... }:
{
  users.users.john = {
    isNormalUser = true;
    home = "/home/john";
    shell = pkgs.bash;
  };

  services.openssh.enable = true;

  system.stateVersion = "23.05"; # مطابق با نسخه NixOS
}

تنظیم نوع Desktop در NixOS

در NixOS، نوع محیط دسکتاپ (مثل GNOME، KDE، XFCE و غیره) به راحتی از طریق فایل پیکربندی قابل تغییر است. مراحل زیر را می‌توانید برای تنظیم محیط دسکتاپ دنبال کنید:

  1. فایل پیکربندی NixOS که معمولاً در مسیر /etc/nixos/configuration.nix قرار دارد را باز کنید.

  2. ویرایش تنظیمات برای مثال

GNOME

{ config, pkgs, ... }:

{
  services.xserver.enable = true;
  services.xserver.displayManager.gdm.enable = true;
  services.xserver.desktopManager.gnome.enable = true;
}

KDE Plasma

{ config, pkgs, ... }:

{
  services.xserver.enable = true;
  services.xserver.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;
}
  1. ذخیره کنید
sudo nixos-rebuild switch
  1. سیستم را ری‌استارت کنید تا تغییرات اعمال شوند.

System Profiles

System Profiles یکی از ویژگی‌های مهم NixOS است که به کاربران اجازه می‌دهد بین نسخه‌های مختلف سیستم سوئیچ کنند یا به تنظیمات قبلی بازگردند.

با دستور زیر می‌توانید تمام نسل‌های ذخیره‌شده (Generations) را ببینید

nix-env --list-generations

خروجی

1   2024-12-24 18:45:12   Initial system
2   2024-12-25 10:12:08   Updated Nginx configuration
3   2024-12-26 14:30:25   Installed Docker and tools

برگشت به نسخه ها و تغییرات

nix-env --rollback

مزایای استفاده از Nix و NixOS

پایداری و قابلیت تکرار: اطمینان از عملکرد یکسان نرم‌افزارها در تمام مراحل توسعه تا تولید.

مدیریت ساده: ارتقا، حذف و بازگشت به وضعیت‌های قبلی سیستم به آسانی.

صرفه‌جویی در زمان: خودکارسازی فرایندهای پیچیده و کاهش خطاهای انسانی.

مناسب برای تیم‌های بزرگ: ایجاد محیط‌های مشابه برای تمام اعضای تیم.

منابع دیگه