لم أعد أرغب في الحفاظ على هذا المستودع ، لذلك سأرشئه.
يتيح لك nix-desktop تحديد تكامل سطح المكتب Linux لمشاريع NIX. باستخدام هذا البرنامج النصي ، يمكنك تحديد إدخالات قائمة سطح المكتب XDG ووحدات SystemD بشكل معني باستخدام NIX وتطبيقه بطريقة غير متوفرة.
أنا مستخدم للمدير المنزلي. يتيح لك إدارة تكوين مستخدم كامل (الصفحة الرئيسية) بما في ذلك البرنامج التنفيذي للبرنامج وملفات التكوين وخدمات النظام والملفات الأخرى ، ولكن طريقة التكوين المركزية. (على ما يبدو) يسمح تكوين واحد فقط لكل دليل منزلي. في بعض الأحيان ، أردت شيئًا لا مركزي قليلاً. على سبيل المثال ، لدي بعض مستودعات GIT الخاصة التي تحتوي على بيانات ، وأريد تثبيت التطبيقات المتعلقة بالمستودعات على الأجهزة ذات الصلة فقط. أريد أن أخفي وجودهم من الجمهور ، وبالتالي لا ينبغي ذكرهم في تكويني العام.
يتيح لك Nix Flakes تحديد الحزم والتطبيقات داخل مستودعات المشروع ، والتي تبدو مريحة. ومع ذلك ، لم أجد طريقة لدمج مثل هذه التطبيقات مع Linux Desktop. لبدءهم دون فتح محطة ، أردت تثبيت إدخالات القائمة لتلك التطبيقات ، المحددة في المشاريع. هذه محاولة لتنفيذها بطريقة متسقة. ملاحظة: هذا لا يعتمد على رقائق NIX.
على عكس التثبيت المخصص الساذج لملفات التكوين باستخدام nix-env ، يقوم nix-desktop بتحديث حالة النظام. يوضح التحديثات على إدخالات قائمة سطح المكتب وتبدأ إعادة التحميل/تمكين/(إعادة) وحدات النظام المثبت (وتتوقف وتعطيل الوحدات غير المثبتة). هذا حل مناسب وموثوق لإعجاب مجموعة من تطبيقات وخدمات سطح المكتب.
تثبيت هذا المستودع باستخدام NIX:
nix-env -if .بدلاً من ذلك ، يمكنك استخدام البرنامج دون تثبيته إذا قمت بالفعل بتمكين رقائق NIX:
nix run ' github:akirak/nix-desktop ' يمكنك تحديد التكوين عن طريق إنشاء ملف يسمى desktop.nix في مستودع. ما يلي مثال:
let
pkgs = import <nixpkgs> { } ;
thisDir = builtins . toString ./. ;
in
{
name = "my-config" ;
# Run Doom Emacs inside a sandboxed nix-shell session.
xdg . menu . applications . doom-emacs = {
Name = "Doom Emacs" ;
Icon = "emacs" ;
TryExec = " ${ builtins . getEnv "HOME" } /.config/doom-runner/emacs/bin/doom" ;
Exec = " ${ pkgs . nix } /bin/nix-shell ${ builtins . toString ./. } /doom/shell.nix --command emacs" ;
StartupWMClass = "Emacs" ;
} ;
# Automatically set up an overlayfs directory in the repository.
systemd . services . overlayfs-repos = {
enable = true ;
start = true ;
restart = false ;
text = ''
[Unit]
Description=Example overlayfs service
ConditionPathIsDirectory= ${ thisDir } /repos-src
ConditionPathIsDirectory= ${ thisDir } /repos-overlay
ConditionPathIsDirectory= ${ thisDir } /.repos-work
ConditionPathIsDirectory= ${ thisDir } /repos
[Service]
Type=oneshot
ExecStart= ${ pkgs . fuse-overlayfs } /bin/fuse-overlayfs -o lowerdir= ${ thisDir } /repos-src,upperdir= ${ thisDir } /repos-overlay,workdir= ${ thisDir } /.repos-work ${ thisDir } /repos
RemainAfterExit=yes
ExecStop= ${ pkgs . fuse } /bin/fusermount -u ${ thisDir } /repos
[Install]
WantedBy=default.target
'' ;
} ;
} يقوم الملف بتصدير مجموعة السمات ، ويجب أن يحتوي على حقل name إلزامي ، يستخدم لتحديد المشاريع بشكل فريد. سيصبح جزءًا من اشتقاق NIX ليتم بناؤه ، لذلك يجب أن يكون اسم الملف آمنًا.
xdg.menu.applications.* تحديد إدخالات قائمة XDG. تحتوي بعض الحقول على افتراضات معقولة ، ولكن عليك تحديد Name Icon Exec و StartupWMClass .
systemd.TYPE.* تحديد خدمات نظام المستخدم. يمكن أن يكون TYPE services timers وغيرها من التجميعات لتمثيل أنواع الوحدات التي تدعمها SystemD.
يجب أن يحتوي على حقل text سيصبح محتوى ملف الوحدة.
كما يدعم الحقول الاختيارية التالية:
enable (Bool): تمكين الوحدة بعد التثبيت.start (Bool): ابدأ الوحدة بعد التثبيت ، إذا لم يتم تثبيته.restart (Bool): إذا تم تغيير وحدة ، أعد تشغيل الوحدة. لن يتم إعادة تشغيل الوحدات غير المتغيرة حتى مع هذا الخيار. يحتوي أمر nix-desktop على الملخص التالي:
nix-desktop [install | uninstall | build] DIRأو مع رقائق nix:
nix run ' github:akirak/nix-desktop ' [install | uninstall | build] DIR DIR هي وسيطة مطلوبة ، ويجب ضبطها على دليل يحتوي على desktop.nix .
يدعم الأمر أنماط العمليات التالية ، والتي ينبغي الإشارة إليها بواسطة الوسيطة الأولى الاختيارية التي تم إعدادها إلى الدليل:
install ، يقوم بتثبيت التطبيقات المحددة في الدليل. هذا الوضع هو الافتراضي ، بحيث يمكنك حذف الأفضل install المفصل الفرعي وتحديد الدليل كوسيطة واحدة.uninstall ، قام بإلغاء تثبيت التطبيقات.build يشبه install ، لكنه يقوم فقط بإنشاء التكوين ولا يقوم بتثبيت ملفات التكوين أو تحديث النظام.يكتشف تعارضات مع التطبيقات المحددة في مشاريع أخرى ، لذا يرجى التحقق من رسائل الخطأ.
يمكنك تصفح قائمة بالمشاريع المثبتة:
nix-desktop list مع --verify العلم ، يتحقق أمر القائمة في حالة وجود أدلة المصدر.
nix-desktop list --verifyيمكنك أيضًا تحديث جميع المشاريع المثبتة بأمر واحد:
nix-desktop update