تجربتي مع NixOS: الجيدة و السيئة

بسم الله الرحمن الرحيم

أود مشاركة تجربتي مع نظام تشغيل NixOS خلال الأسبوعين الماضيين و أوضح من خلالها الأمور الجيدة و السيئة فيه

بدايةً NixOS هو نظام تشغيل يستخدم نواة لينكس و يستخدم مدير حزم Nix لإدارة جميع اعدادات نظام التشغيل من أبسط الأمور في .config حتى تكوين خدمات مؤتمتة و استخدامها بطريقة قابلة لإعادة الانشاء (reproducible).

يمكن إنشاء نسخة مخصصة و قابلة لإعادة الانشاء من NixOS عبر ملف واحد موجود في

/etc/nixos/configuration.nix

يمكن من خلال هذا الملف تعيين البرامج المثبتة بالنسبة للنظام و المستخدم بالإضافة لتفعيل الخدمات و البرامج و تخصيص اعداداتها حسب ما يطلبه المستخدم و يمكن بعدها استخدام

nixos-rebuild switch

يبدو الأمر جميل، و هو كذلك و أنا معجب بفكرة أن يكون لديك نظام تشغيل مستقر بإمكانك تعديله بشكل كامل عبر تغير ملف واحد بدل التعديل على العديد من الملفات في توزيعات لينكس الأخرى أو حتى BSD

هناك ما يقارب ال120 ألف حزمة و يزيد في nixpkgs منصة حزم نيكس و هذا كم كبير من الحزم!

لذلك أراها جيدة… إلا اذا تكلمنا عن جانب التطوير

معضلة التطوير أو محاولة الانتقال لشيء جديد صعب جدا، NixOS لا يتمتع بشكل افتراضي بFHS و الذي يعود أصله لأيام UNIX من الثمانينات

بمعنى آخر افتراضيا NixOS لايمتلك سوى

/var لتخزين متغيرات بعض البرامج (مثلا برمجيات فلاتباك او سجلات البرامج الدائمة)
/nix والذي يتضمن /nix/store يحتوي على جميع البرامج الذي تم تثبيتها
/etc و الذي يتضمن إعدادات NixOS

فقط ولا يوجد شيء آخر

هذا الاختلاف الجذري يسبب مشاكل لجميع البرامج المبنية ديناميكيا (كما في جميع نظم التشغيل الأخرى تقريبا) و يتطلب منك الأمر اصلاح هذه البرامج إما يدويا أو عبر أدوات مختلفة كnix-ld او steam-run

من الممكن أن تتفادى هذه المشاكل عبر استخدام المكتبة الواسعة من البرمجيات في nixpkgs لكن هذا لن يحل مشكلتك في حال أردت استخدام برنامج مختلف أو كتبت برنامج بنفسك في منصة أخرى

خلاصة الحديث، إذا أردت أن تستخدم NixOS في مجال ثابت كتطبيقات مكتبية،او مشاهدة يوتيوب، او تثبيت بعض الألعاب، او الاعتماد جزئيا أو كليا على flatpak كمنصة لاستخدام البرامج ولا تقوم بتعديل النظام بشكل مستمر فلن تواجه الكثير من المشاكل، أما بالنسبة لمطور أو شخص يستخدم أدوات التطوير بشكل مستمر سيواجه مشاكل بين الحين و الآخر و اﻷفضل الاعتماد على مدير الحزم Nix بشكل ثانوي بتوزيعة لينكس عادية كأرتش و فيدورا و ديبيان و غيرها

و من تجربتي: فأنصح بعدم تثبيتها طالما انه ليس لديك الوقت للتعامل مع لغة برمجة جديدة لإدارة تخصيصاتك للبرامج، وطالما أنه لا يمكن لك الاستغناء عن النظام القديم للتعامل مع الحزم.

و من رأيي الشخصي المتواضع فإن NixOS لها مستقبل جيد، لكن ليس في الوقت الحالي حيث أنه لا يزال يعتبر Nix Niche و لم يتم ترك أمور مثل automake make ninja etc…

التوزيعة تستحق الزيارة، لكن لا ترتكب خطأي و تثبتها مباشرة على حاسوبك و تنصدم :slight_smile:

5 إعجابات

نظام NixOS ممتاز، مثبت على جهازي لعدة سنين، كمستخدم لسطح المكتب

النظام يُستهدف ايضا من مطوري البرمجيات او الخوادم.

السيء فيه هو وقت التعلم المطلوب للعمل مع النظام بسلاسة.

إعجاب واحد (1)

كنت اتمنى لو كان عندي الوقت لتجربتها كما كنت قبل سنين … الان ثابت على لينكس منت الدبيانية لاني لا املك رفاهيه الوقت للتبديل بين التوزيعات :slight_smile:

مازلت عالق بين دبيان و فويد، دبيان يوفر الكثير لي في تخصيص خوادمي و فويد للإستخدام اليومي، في الوقت الحالي أحاول تعلم طريقة لتخصيص النواة على freeBSD كوني أريد تعلم نظام واحد لا يُشكل لي تهديد في التحزيم أو مشاكل في التحديث.
فويد رائعة بما تحملها الكلمة من معنى ولكنها ينقصها التوثيق و التحزيم، بما أن 90% من التحزيم تم معالجته الا أنني أتخوف من المشاكل التي ستطرأ في المستقبل.
بينما دبيان رائعة في الخوادم لكنها تستعمل سيستم دي، وكونها تستخدم سيستم دي فهي تجبرني على تحميل أدوات على الرامات مما يكلفني دفع أكثر للسحابات الإلكترونية.
في freeBSD كل شيء أحتاجه إلا انه لا يدعم كل التعريفات مما سيصعب عليه تثبيته في جهازي اليومي.
أحدهم نصحني بـ nixOS و أحاول قراءة مقالات حولها لان الكلام يخيفني بعض الشيء مثل قولك:

أشعر بأنها هي توزيعتي التالية. شكراً لك على مشركتك لتجربتك.

إعجابَين (2)

بما أنك تستخدم سحابيا، ما رأيك في توزيعة Alpine ؟ خفيفة، رشيقة، لا تستعمل لا جنو ولا sysd.

إعجاب واحد (1)

من الأفضل عدم التسرع و تثبيت NixOS قبل أخذ تجربة مطولة عليها بنظام افتراضي و التدرب عليه و بناء ملف configuration.nix الخاص بك

إن أعجبتك يمكنك الانتقال بسهولة عبر تثبيت NixOS بشكل افتراضي و نقل ملف configuration.nix و اعادة بنائها و سيصبح لديك نظام نسخة طبق اﻷصل عن النظام الافتراضي الذي قمت بإنشاءه مسبقاً

التجربة تختلف من شخص لآخر و أحث على دراسة عميقة للنظام قبل الانتقال الكامل له

و كما ذكرت سابقا NixOS يفرض عليك تعلم شيء جديد كليا و ترك كل ما تعلمته من توزيعة اللينكس العادية لذلك عليك الاعتياد على الأمر كفترة أولى

إعجابَين (2)

هذا الموقع يقدم لك جل التوزيعات التي لا تعتمد سيستمدي
https://nosystemd.org/
و بما أنك مستخدم لديبيان فهذا أكبر مشروع منشق عنها يعتمد sysvinit

إعجابَين (2)

Alpine تستخدم musl libc وتجعل طريقة ترجمة الحزم مختلفة كلياً عن الحزم التي تستخدم glibc. وهذا يقودنا ايضاً صعوبة في ايجاد حلول اذا تعطل برنامج ما او ترجمة برنامج ما.

وشيء اخر حتى حزم المستودع الرسمي قد لاتعمل اصلا تحتاج لاصلاحها بنفسك وهذا كثر حتى في الاشياء التي يكثر استخدامها

ما هي مزايا Void على Debian غير نظام التحزيم والاعتماد على runit؟

فويد لينكس توزيعة متدحرجة ومستقرة إلى حد ما، هناك من الحزم التي تحدث فيها أخطاء بسيطة ولكن يتم حلها بسرعة كون يوجد برامج على برامج إعتمادية تنتهي صلاحيتها بسرعة. ماهي المزايا:
1- خفيفة جداً. كون النظام كله لا يتجاوز 18 جيجا ولا يستهلك أكثر من 250 ميجا من الذاكرة العشوائية ولأنها لا تستعمل SystemD فإنك لن تحتاج لرفع برامج لا داعي لها على الرام. انظر الصورة

2- تحتوي على خاصية تثبيت الحزم من الوصلات الخارجية من خلال xbps-src التي تشبه إلى حد كبير freeBSD Ports.
3- هناك مكتبتين Glibc و musl لتنفيذ التطبيقات.
4- تدعم معماريات مختلفة x86_64 و i686 و arm و arm platforms و containers بعكس التوزيعات المتدحرجة الأخرى مثل أرش لينكس.
5- تتشابه فويد لينكس مع دبيان أنهما ليستا مبنيتين على توزيعة أخرى، أي أنهما تم كتابتهما من الصفر ولن تنتظر حل المشاكل في توزيعة أخرى مثلما يحصل في PopOS و شبيهاتها.
6- أداة xbps-reconfigure على تكوين أو إعادة تكوين الحزم في دليل الجذر المستهدف.

ماذا بعد؟ … يبدو أنني قد نسيت :sweat_smile:

إعجابَين (2)

رائع.
كفيت ووفيت!
سلمت يداك.

إعجاب واحد (1)

Nixos أكثر من رائع قمت بتحميل waydroid عليه ولكن الصعبوبه وجدتها عندم اردت تحميل خدمات جوجل بلاى …وايضا عند تحمل اضافه pvr لكودى