NixOS

Persekitaran Pembangunan NixOS

Persekitaran Pembangunan NixOS
Semasa membangun dan menjalankan perisian, dan berkali-kali, anda memerlukan satu set perpustakaan yang sangat khusus di persekitaran anda. Anda mencapainya dengan persekitaran maya, bekas dan muslihat lain. Walau bagaimanapun, anda tidak semestinya memerlukan semua itu. Satu kes yang biasa berlaku ialah semasa anda memprogram di Python, anda mesti memilih antara dua versi besar. Ini telah menyebabkan banyak masalah bagi pengguna dan pemaju. Anda boleh mengelakkan semua ini jika perpustakaan anda dirancang, terutama sekali dijalankan. Ini mungkin terdengar mustahil atau tidak perlu, tetapi sangat sesuai untuk kes penggunaan dan perkembangan yang jarang berlaku.

Neraka Penyemakan

Sesiapa yang membaca ini akan terbiasa dengan isu Python menggunakan versi bahasa yang berbeza. Itu hanya satu contoh yang mencolok di mana pengguna terpengaruh. Ini disebabkan oleh projek-projek cemerlang lama yang tidak lagi mengekalkan perisian. Dalam banyak situasi lain, anda juga memerlukan kawalan yang besar terhadap apa yang sedang berjalan dan perpustakaan apa yang ada. Pengaturcaraan dalam C dan C ++ menggunakan perpustakaan yang selalunya harus menjadi versi yang tepat semasa anda menyusun. Jika tidak, anda akan menulis semula bahagian perisian yang tidak pernah anda sentuh. Banyak pembangun menggunakan wadah dengan semua perpustakaan, dan semua kerja lain berlaku di komputer hos.

Pembaikan Nix

Bagaimana nix mengatasi masalah ini? Nah, mereka mempunyai semua fail di kedai dengan hash untuk mengenal pasti versi yang tepat. Persekitaran yang akan anda gunakan, kemudian pautan ke perpustakaan atau laksanakan, adalah sesuatu yang anda ingin gunakan untuk keadaan semasa anda. Untuk sistem yang berjalan, anda kemudian boleh menggunakan banyak versi aplikasi dan juga perpustakaan. Apabila anda ingin mengembangkan, anda membuat fail konfigurasi yang merangkumi keperluan projek semasa anda.

Fail Konfigurasi

Apabila anda memasang NixOS, konfigurasi.nix akan mengawal persekitaran anda untuk keseluruhan komputer. Dengan itu, anda dapat mengawalnya dalam setiap cengkerang. Tidak kira anda mempunyai NixOS atau menjalankan sebaran lain, anda boleh menggunakan fail nix yang lain. Fail dipanggil lalai.nix secara lalai. Anda dapat menggunakannya untuk membuat struktur direktori yang mempunyai lingkungan tertentu. Alur kerja adalah untuk membuat fail nix lalai untuk menggambarkan apa yang anda mahu persekitaran anda menyokong. Kemudian ubah direktori dan jalankan nix-build, diikuti dengan menjalankan nix-shell. Anda juga dapat menggunakan nama apa pun untuk fail jika anda menentukannya pada baris perintah.

$ cd MyProject /
$ nix-build # Suatu ketika, apabila anda telah menukar sesuatu.
lalai $ nix-shell.nix

Parameter untuk nix-shell akan tersirat, tetapi jika anda ingin memiliki beberapa dalam satu direktori, maka anda boleh menggunakan suis. Dengan nilai yang ditetapkan, anda kini mempunyai persekitaran yang sama setiap kali anda memulakan nix-shell. Sekiranya anda memindahkan fail nix, anda akan dapat memperoleh yang sama di mana sahaja! Isu besar menjadi; apa yang saya masukkan ke dalam fail nix?

Fail menggunakan bahasa ekspresi Nix, ia hampir merupakan bahasa pengaturcaraan.

Beberapa contoh

Di bawah ini, terdapat beberapa contoh yang dapat membantu anda. Terdapat banyak lagi perkara yang boleh anda lakukan untuk mengubah persekitaran anda. Ini adalah perjalanan yang panjang dan menarik, tetapi ia mungkin akan melambatkan anda dari awal. Sebelum anda sampai di sana, gunakan kod orang lain. Senarai ini pendek, jadi cari idea di seluruh web.

Python

Apabila anda ingin membuat projek Python, anda biasanya menggunakan persekitaran maya. Dengan Nix, ini tidak perlu. Sebaliknya, anda boleh membuat shell.fail nix yang menyatakan versi mana yang anda mahukan. Cara termudah untuk melakukan ini adalah dengan menggunakan python38Full.

pkgs ? mengimport :
pkgs.mkShell
# nativeBuildInputs biasanya yang anda mahukan - alat yang perlu anda jalankan
nativeBuildInputs = [pkgs.membinaPakej.python38Full];

Ini menyusun persekitaran dengan semua bahagian Python 3.8 yang disertakan dengan NixOS. Sekiranya anda ingin meminimumkan persekitaran anda, anda boleh memilih bahagiannya. Anda juga dapat menambahkan kod sumber anda dari jauh dengan fungsi pengambilan.

Kelalang Python

Contoh pengembangan web adalah termos. Ini adalah pakej yang sangat hebat untuk membuat laman web, bahkan yang sangat kompleks, tanpa banyak usaha. Oleh kerana Flask adalah rangka kerja yang popular, ada pakej NixOS yang siap untuknya. Fail untuk mengawal binaan untuk ini disebut lalai.nix.

pkgs ? mengimport :
pkgs.python38Pakej.buildPythonApplication
pname = "NixApp";
src = ./.;
versi = "0.1 ";
disebarkanBuildInputs = [pkgs.python38Pakej.termos];

Seperti yang anda lihat, ada pakej dari nixpkgs yang merangkumi termos. Sekiranya anda ingin menggunakan sesuatu yang lain, anda menambahkannya di dalam tanda kurung. Ini berlaku untuk semua jenis pakej yang termasuk dalam repositori NixPkgs. Sekiranya bungkusan tidak ada, gunakan fetcher.

Pembangunan Python

Sekiranya anda ingin memulakan persekitaran pembangunan Python, anda menambah pakej yang anda perlukan mengikut semakan dan lain-lain.

dengan import ;
dengan pkgs.python37Pakej;
stdenv.mkDerivasi
nama = "python-devel";
req = ./ keperluan.txt;
pembina = "$ bash / bin / bash";
persediaan = ./ persediaan_venv.sh;
buildInputs = [
python37Penuh
python37Pakej.pip
];
sistem = builtin.sistem semasa;
shellHook = "
SOURCE_DATE_EPOCH = $ (tarikh +% s)
";

Di shellHook, antara apostrof berganda (”), anda boleh meletakkan skrip yang anda suka. Sekali lagi, fikirkan apa yang mungkin sudah ada, kerana ada banyak orang pintar di luar sana yang sudah berkembang menggunakan NixOS.

JavaScript

Versi standard untuk menggunakan JavaScript, atau lebih tepatnya, nodejs, adalah skrip nix di bawah. Namakan cengkerang.nix dan letakkan di direktori projek anda, kemudian mulakan dengan perintah nix-shell.

dengan import ;
stdenv.mkDerivasi
nama = "nod";
buildInputs = [
nodejs
];
shellHook = "
eksport PATH = "$ PWD / node_modules /.tong /: $ PATH "
";

Ini adalah helah yang paling mudah dan mungkin, walaupun ada banyak lagi yang ada. Anda dapat melihat cara menambahkan skrip yang anda jalankan secara manual. Gunakan ini dengan teliti dan cari alternatif penuh sebelum anda melakukan ini.

Musytari

Skrip di bawah ini menginisialisasi direktori untuk menjadi tuan rumah sekumpulan fungsi di mana anda boleh menjalankan Jupyter. Pakej lain adalah untuk statistik dan pembelajaran mesin. Anda juga boleh membuang dan menambah mengikut keperluan anda.

dengan import ;
(
biarkan
di python38.withPackages (ps: dengan ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env

Konfigurasi

Untuk IDE, editor, atau apa sahaja, anda juga boleh memanggang mengikut tetapan anda. Bagi pembangun, vim dan Emac akan menjadi calon pertama untuk pengkhususan ini. Vim mempunyai set plugin sendiri yang tersedia sebagai nixpkgs.

Pengambil

Asas pakej dalam NixOS adalah fail yang menunjukkan sumber dan apa yang diperlukan untuk menyusun pakej. Anda boleh menggunakan ini jika anda tiada bungkusan. Selagi anda dapat mencari paket sumber, anda boleh menggunakan fetcher untuk memasangnya. Pembawa standard mengambil tarball tetapi dinamakan fetchurl.

stdenv, fetchurl:
stdenv.mkDerivasi
nama = "hello";
src = fetchurl
url = "http: // www.contoh.org / salam.tar.gz ";
sha256 = "1111111111111111111111111111111111111111111111111111";
;

Anda boleh menggunakannya seperti dalam kod di atas. Anda juga mempunyai sistem kawalan versi fetchgit dan lain-lain. Selain itu, perkhidmatan git utama diliputi dengan fetchFromGitHub, fetchFromGitLab, dan banyak lagi. Dengan semua pengambil ini, anda seharusnya dapat mencari pakej yang anda mahukan untuk NixOS.

Kesimpulannya

Menggunakan NixOS memerlukan lebih banyak usaha daripada pengedaran lain. Walaupun begitu, jika anda ingin mengembangkan perisian, usaha itu sia-sia. Anda akan memastikan sistem utama anda lebih bersih dan boleh berpindah di antara projek tanpa menimbulkan konflik yang menyusahkan antara persekitaran.

Tutorial OpenTTD
OpenTTD adalah salah satu permainan simulasi perniagaan yang paling popular di luar sana. Dalam permainan ini, anda perlu membuat perniagaan pengangku...
SuperTuxKart untuk Linux
SuperTuxKart adalah tajuk hebat yang direka untuk membawa anda pengalaman Mario Kart secara percuma pada sistem Linux anda. Ia cukup mencabar dan meny...
Tutorial Battle for Wesnoth
The Battle for Wesnoth adalah salah satu permainan strategi sumber terbuka paling popular yang boleh anda mainkan pada masa ini. Bukan hanya permainan...