من چند سال است که از لینوکس استفاده میکنم. معرفی اولیهام با کالی لینوکس بود، اما متوجه شدم که نقطه شروع ایدهآلی نیست، بنابراین برای چند سال از این اکوسیستم جدا شدم. وقتی دوباره سعی کردم، زورین OS بود، یکی از زیباترین توزیعهای لینوکس. از آن به بعد، من فدورا، دبیان، آرچ، اوبونتو و مانجارو را استفاده کردهام. امروز، لینوکس مینت رانندهٔ روزانهٔ من است.
من چندین سال است از لینوکس استفاده کردهام. معرفی من با کالی لینوکس بود، اما متوجه شدم که نقطه شروع ایدهآلی نیست، بنابراین چند سال اکوسیستم را ترک کردم. وقتی دوباره امتحان کردم، Zorin OS, one of the most beautiful Linux distributions. از آن به بعد، من فدورا، دبیان، آرچ، اوبونتو و مانجارو استفاده کردهام. امروز، لینوکس مینت رانندهٔ روزانهٔ من است.
با این حال، NixOS محبوب شده است، بهویژه بهدلیل مدل پیکربندی اعلامی آن که امکان سیستمهای قابل بازتولید و بازگردانیهای اتمیک را فراهم میکند. بنابراین برای یک هفتهٔ کامل، تصمیم گرفتم آن را بهعنوان توزیع اصلی خود امتحان کنم. اگر چیز دیگری نباشد، این تغییر نحوهٔ فکر من دربارهٔ لینوکس را ایجاد کرد.
مرگ سیستم برفی
چگونه نصب لینوکس من دیگر یک تصادف تاریخی نیست

در تجربهٔ من از استفادهٔ لینوکس، پس از مدتی، رایانههایم بهتدریج نتیجهٔ تمام کارهایی میشوند که تا به حال روی آنها انجام دادهام. حتی بستههایی که برای وظایف سادهٔ یکبار نصب میکنم، مدت زمان طولانیتری از نیازشان باقی میمانند. بهمرور زمان، فایلهای پیکربندی ویرایش، بازنویسی میشوند و فقط تا نیمه بازگردانده میشوند. بنابراین، حتی وقتی دو نصب از همان توزیع دارم، ممکن است بهطور قابلتوجهی متفاوت باشند.
NixOS این نوع انحراف را بررسی میکند. این توزیع سیستم را بهعنوان چیزی مینگرد که شما آن را تولید میکنید، نه چیزی که مداوم تغییر میدهید. این باعث میشود ریشهٔ فایلسیستم شما در هر زمان از یک پیکربندی بازتولید شود. من از توزیعهایی میآمدم که /etc برایشان مقدس است، بنابراین این در ابتدا احساس ناخوشایندی داشت.

لینوکس سخت نیست— فقط باید از این تلهها عبور کنید.
با این حال، همه چیز زمانی درک شد که متوجه شدم میتوانم سیستم را بازسازی کنم، در حالی که هیچ بخشی از ساخت جدید به اقدامات گذشته وابسته نیست. سیستم بهسادگی به تجربیات یا خطاهای گذشته اهمیتی نمیدهد و فقط آنچه را که صراحتاً توصیف میکنم بازتاب میدهد. این آزمایش یک هفتهای اولین باری بود که من یک توزیع لینوکس را تجربه کردم که بیشتر شبیه یک سیستم تعریفشده است تا یک اثر شخصی.
پیکربندی بهعنوان منطق، نه آئین
یادگیری فکر کردن بهصورت Nix بهجای bash
بزرگترین شوک من، بهخصوص بهعنوان کسی که چندین توزیع لینوکس را امتحان کرده بود، این بود که متوجه شدم غرایز موجودم در لینوکس اغلب اشتباه هستند. من دائماً در حال پژوهش دربارهٔ دستورات برای پچ دستی فایلهای پیکربندی و نصب وابستگیهای گمشده بودم، فقط برای اینکه بفهمم این روش در NixOS مؤثر نیست.
بهعنوان مثال، وقتی سرویسی کار نمیکند، ممکن است دستور sudo nano /etc/nginx/nginx.conf را اجرا کنم، یک خط را تغییر دهم و مشکل برطرف شود. اما در NixOS، هر گونه تغییرات این چنینی یا نادیده گرفته میشوند یا در نهایت پاک میشوند. تنها راهحل واقعی این است که گزینههای services.nginx را در configuration.nix تغییر داده و بازسازی کنید. عملاً من منطق تعریفکنندهٔ سیستم را برای رفع مشکل تغییر میدهم.
در ابتدا این احساس پیچیدهای داشت. من عادت داشتم به ویرایشهای ساده و الگوهای آشنا. اما زبان NixOS روابط، گزینهها و نتایج را توصیف میکند. این زبان دقت میبخشد و پس از چند روز، من شروع به قدردانی از آن کردم. من بهطور عمدی سرویسها را فعال میکردم و وابستگیها را اعلام میکردم بهجای فرض کردن آنها. درک اینکه چرا یک فرآیند کار میکند و رفع آن از طریق پیکربندی وقتی که کار نمیکند، آسانتر است.
شکست سیستم عامل دیگر استرسآور نبود
چگونگی تغییر اضطراب بهروزرسانی توسط نسلها و بازگردانیها

در فقط یک هفته استفاده از NixOS، بیش از یک بار آن را خراب کردم. اما آنچه برایم شگفتانگیز بود این بود که خراب کردن آن اهمیتی نداشت. هیچیک از پیکربندیهای بد یا بازسازیهای ناموفق سیستم را در وضعیت آسیبدیدگی باقی نمیگذاشتند و همیشه نسخهٔ کاری قبلی بهصورت کامل در دسترس و آمادهٔ بوت بود.
نسلها در NixOS بهطور بنیادین نحوهٔ دید و استفاده من از لینوکس را تغییر دادند. یک بازسازی سیستم یک نسخهٔ کامل، قابل بوت از سیستم عامل را ایجاد میکند. میتوانم وقتی مشکلی پیش میآید، به نسخهٔ قبلی بازگردم، بهجای اینکه مجبور به عیبیابی یک سیستم خراب شوم. این شبیه یک نوع پیشرفتهٔ Windows System Restore است، جایی که کل وضعیت سیستم (هسته، درایورها، برنامهها، پیکربندیها) ذخیره میشود و بهصورت ریاضی تضمین میشود که دقیقاً همانطور که بود باقی بماند. نیازی به تنظیم اسنپشاتها نیست و این کار حدسزدگی را از عیبیابی حذف میکند.
این روش نحوهٔ برخورد من با بهروزرسانیها را تغییر داد. آنها دیگر یک تعهد ثابت نبودند، بلکه قابل بازگشت بودند. اما بزرگترین تاثیر این بود که من آمادهتر شدم تا آزمایش کنم، سرویسها را فعال کنم یا هستههای جدید را امتحان کنم. دیگر برای تغییر از دست رفتن پایداری نمیگریستم؛ میتوانستم به راحتی تغییرات را بازگردانم.
محیطهای توسعه بدون آلودگی سیستم
چگونه NixOS جهنم وابستگیها را بدون کانتینرها حل کرد

من شگفتزده شدم که نصبهای سراسری بهنظر غلط میآمدند. اما این فقط منطقی بود چون ابزارها و کتابخانهها در NixOS تنها در جایی که نیاز هستند وجود دارند. دیگر نیازی نیست که بهصورت دائمی روی سیستم باقی بمانند.
عضویت برای نکات NixOS و بینشهای سیستم بازتولیدپذیر
این همچنین به این معنی بود که ابزارها زمانی که به یک پوستهٔ پروژه وارد میشدم وجود داشتند و وقتی خارج میشدم، از بین میرفتند. استفاده از nix-shell یا محیطهای مشابه فوراً احساس متفاوتی نسبت به محیطهای مجازی یا مدیران نسخه ارائه میدهد. هر پروژه واقعیت خود را دارد و هیچچیزی باقی نمیماند یا سیستم را آلوده نمیکند.
با Flakes (قالب بستهٔ بازتولیدپذیر Nix)، توانستم بهصراحت نسخهها را قفل کنم. وقتی این را با کشهای باینری ترکیب کردم، حس عمدی بودن بیشتری ایجاد شد؛ در مقایسه با Docker، این روش سبکتر و یکپارچهتر بود. همچنین نسبت به تنظیمات سنتی تمیزتر بود و سیستم من بارهای توسعهای را جمع نمیکرد.
تصحیح سیستمها با تغییر تعاریف، نه فایلها
در طول تجربهام، /nix/store غیرقابلنادیده گرفتن بود. ابتدا حس میکردم که این مکان میزبان میزبانی خصمانه است زیرا مسیرها طولانی، غیرقابلتغییر و ناآشنا هستند. اما وقتی متوجه شدم که این یک تنظیم عمدی است، همه چیز عوض شد. من نباید چیزی را در این فروشگاه ویرایش کنم. اصلاحات در داخل سیستم فایل رخ نمیدهد. برای عیبیابی، من تعاریف را تنظیم میکنم و بازسازی میکنم.
این تضاد واضح با آنچه در چند توزیع دیگر لینوکس عادت کرده بودم، که من فایلها را ویرایش میکردم، سرویسها را راهاندازی میکردم و امید داشتم تغییرات پابرجا بمانند. برای اولین بار در تجربهٔ لینوکسام، دریافتم که وقتی مشکلات به قصد اعلامشده مرتبط هستند نه به وضعیت مخفی، استدلال آسانتری دارند. پس از این آزمایش، ممکن است دیگر NixOS را بهعنوان رانندهٔ روزانهام انتخاب نکنم، اما توزیعهای سنتی اکنون بهوضوح آشوبناکتر بهنظر میرسند.