NixOS

Середовища розробки NixOS

Середовища розробки NixOS
При розробці та запуску програмного забезпечення, і багато разів, вам потрібен дуже конкретний набір бібліотек у вашому середовищі. Ви досягаєте цього за допомогою віртуальних середовищ, контейнерів та інших хитрощів. Однак вам не обов’язково потрібно все це. Один із поширених випадків - коли ви програмуєте на Python, ви повинні вибрати між двома великими версіями. Це спричинило багато головного болю як для користувачів, так і для розробників. Ви можете уникнути всього цього, якщо ваші бібліотеки призначені, особливо для одного запуску. Це може здатися неможливим або непотрібним, але це дуже зручно для рідкісних випадків використання та розробки.

Пекло ревізії

Кожен, хто прочитає це, буде знайомий з проблемою використання Python іншої версії мови. Це лише один яскравий приклад, коли страждають навіть користувачі. Це пов’язано зі старими геніальними проектами, які перестали підтримувати програмне забезпечення. У багатьох інших ситуаціях вам також потрібен великий контроль над тим, що працює і які бібліотеки доступні. Програмування на C та C ++ використовує бібліотеки, які часто повинні бути точною версією під час компіляції. В іншому випадку ви будете переписувати частини програмного забезпечення, до яких ви ніколи не збиралися торкатися. Багато розробників використовують контейнер з усіма бібліотеками, а всі інші роботи відбуваються на головному комп'ютері.

Виправлення Nix

Як nix піклується про цю проблему? Ну, у них є всі файли в магазині з хешами, щоб визначити точну версію. Середовище, яке ви збираєтесь використовувати, а потім посилаєтесь на бібліотеку або виконуєте, - це те, що ви хотіли б використовувати для своєї поточної ситуації. Тоді для запущеної системи ви можете використовувати багато версій програми та навіть бібліотеки. Коли ви хочете розробити, ви створюєте файл конфігурації, який відповідає потребам вашого поточного проекту.

Файли конфігурації

Коли у вас встановлений NixOS, конфігурація.nix буде керувати вашим середовищем для всього комп’ютера. З огляду на це, ви можете керувати ним у кожному екземплярі вашої оболонки. Незалежно від того, чи маєте ви NixOS або запускаєте будь-який інший дистрибутив, ви можете використовувати інший файл nix. Файл називається за замовчуванням.nix за замовчуванням. Ви можете використовувати це для створення структури каталогів, що має певне середовище. Робочий процес полягає у створенні файлу nix за замовчуванням, щоб відображати те, що ви хочете, щоб ваше середовище підтримувало. Потім змініть каталог і запустіть nix-build, після чого запустіть оболонку nix. Ви також можете використовувати будь-яке ім'я для файлу, якщо вказати його в командному рядку.

$ cd MyProject /
$ nix-build # Одного разу, коли ви щось змінили.
$ nix-shell за замовчуванням.нікс

Буде матися на увазі параметр для оболонки nix, але якщо ви хочете мати кілька в одному каталозі, тоді ви можете використовувати перемикач. З правильно встановленими значеннями ваше середовище тепер однакове при кожному запуску nix-shell. Якщо ви перемістите файл nix, ви зможете отримати той самий де завгодно! Великою проблемою стає; що я вкладаю у файли nix?

Файли використовують мову виразів Nix, це майже мова програмування.

Кілька прикладів

Нижче є кілька прикладів, які можуть вам допомогти. Є ще багато речей, які ви можете зробити, щоб змінити своє оточення. Це довга захоплююча подорож, але, мабуть, вона сповільнить вас із самого початку. Перш ніж потрапити туди, скористайтеся чужим кодом. Цей список короткий, тому шукайте ідеї в Інтернеті.

Python

Коли ви хочете створити проект Python, ви зазвичай використовуєте віртуальне середовище. З Nix це не потрібно. Натомість ви можете створити оболонку.файл nix, який визначає, яку версію ви хочете. Найпростіший спосіб зробити це - використовувати python38Full.

pkgs ? імпорт :
пкг.mkShell
# nativeBuildInputs - це зазвичай те, що ви хочете - інструменти, необхідні для запуску
nativeBuildInputs = [pkgs.buildPackages.python38Full];

Це компілює середовище з усіма частинами Python 3.8, який постачається з NixOS. Якщо ви хочете мінімізувати своє середовище, ви можете вибрати його конкретні частини. Ви також можете віддалено додавати свій вихідний код за допомогою функцій отримання.

Python Flask

Прикладом веб-розробки є колба. Це дуже потужний пакет для створення веб-сторінок, навіть дуже складних, без особливих зусиль. Оскільки Flask є популярним фреймворком, для нього існує готовий пакет NixOS. Файл для управління збіркою для цього називається за замовчуванням.нікс.

pkgs ? імпорт :
пкг.python38 Пакети.buildPythonApplication
pname = "NixApp";
src = ./.;
версія = "0.1 ";
propagatedBuildInputs = [pkgs.python38 Пакети.колба];

Як бачите, є пакети від nixpkgs, які закривають колбу. Якщо ви хочете використати щось інше, додайте їх у квадратні дужки. Це стосується всіх типів пакетів, що входять до сховища NixPkgs. Якщо пакет не існує, використовуйте завантажувач.

Розробка Python

Якщо ви хочете запустити середовище розробки Python, ви додаєте необхідні пакунки відповідно до версії та інших.

з імпортом ;
з пкг.python37Пакети;
стденв.mkDerivation
name = "python-devel";
req = ./ вимоги.txt;
будівельник = "$ bash / bin / bash";
налаштування = ./ setup_venv.ш;
buildInputs = [
python37Повна
python37 Пакети.піп
];
система = вбудовані.currentSystem;
shellHook = "
SOURCE_DATE_EPOCH = $ (дата +% s)
";

У shellHook, між подвійними апострофами (”), ви можете помістити будь-які вподобані вам сценарії. Знову ж, подумайте про те, що може вже існувати, оскільки там є багато розумних людей, які вже розробляють за допомогою NixOS.

JavaScript

Стандартною версією для використання JavaScript, а точніше, nodejs, є сценарій nix нижче. Назвіть його оболонкою.nix та розмістіть його у своєму каталозі проекту, а потім починайте з команди nix-shell.

з імпортом ;
стденв.mkDerivation
name = "вузол";
buildInputs = [
nodejs
];
shellHook = "
експортувати PATH = "$ PWD / node_modules /.bin /: $ PATH "
";

Це найпростіший, можливий прийом, хоча доступних набагато більше. Ви можете побачити, як додати скрипт, який ви б запустили вручну. Використовуйте це обережно та шукайте повні альтернативи, перш ніж це зробити.

Юпітер

Наведений нижче сценарій ініціалізує каталог для розміщення набору функцій, де ви можете запустити Jupyter. Інші пакети призначені для статистики та машинного навчання. Ви також можете видалити та додати відповідно до своїх потреб.

з імпортом ;
(
дозволяє
в python38.withPackages (ps: з ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env

Конфігурації

Для вашого IDE, редактора чи чогось іншого, насправді, ви також можете випікати у своїх налаштуваннях. Для розробників vim та Emacs будуть першими кандидатами на цю спеціалізацію. Vim має власний набір плагінів, доступних як nixpkgs.

Витягувачі

Основою пакетів у NixOS є файли, які вказують на джерела та те, що потрібно для компіляції пакетів. Ви можете використовувати це, якщо вам не вистачає пакету. Поки ви можете знайти вихідний пакет, ви можете скористатися завантажувачем, щоб встановити його. Стандартний завантажувач отримує tarballs, але називається fetchurl.

stdenv, fetchurl:
стденв.mkDerivation
name = "привіт";
src = fetchurl
url = "http: // www.приклад.орг / привіт.дьоготь.gz ";
sha256 = "11111111111111111111111111111111111111111111111111111111";
;

Ви можете використовувати його таким, яким він є у наведеному вище коді. У вас також є fetchgit та інші системи контролю версій. Крім того, основні служби git покриті fetchFromGitHub, fetchFromGitLab та ін. З усіма цими програмами ви зможете знайти будь-який пакет, який ви хочете для NixOS.

Висновок

Використання NixOS вимагає трохи більше зусиль, ніж інші дистрибутиви. Сказавши це, якщо ви хочете розробляти програмне забезпечення, зусилля того варті. Ви будете тримати основну систему чистою і можете переходити між проектами, не створюючи проблемних конфліктів між середовищами.

Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...
Встановіть найновіший емулятор Dolphin для Gamecube & Wii на Linux
Емулятор Dolphin дозволяє грати у вибрані вами ігри Gamecube та Wii на персональних комп’ютерах Linux (ПК). Будучи вільно доступним і відкритим ігров...
Як використовувати GameConqueror Cheat Engine в Linux
Стаття висвітлює посібник із використання механізму читів GameConqueror в Linux. Багато користувачів, які грають у ігри в Windows, часто використовуют...