NixOS

Lingkungan Pengembangan NixOS

Lingkungan Pengembangan NixOS
Saat mengembangkan dan menjalankan perangkat lunak, dan sering kali, Anda memerlukan kumpulan pustaka yang sangat khusus di lingkungan Anda. Anda mencapai ini dengan lingkungan virtual, wadah, dan trik lainnya. Namun, Anda tidak perlu semua itu. Satu kasus umum adalah ketika Anda memprogram dengan Python, Anda harus memilih di antara dua versi besar. Ini telah menyebabkan banyak sakit kepala bagi pengguna dan pengembang. Anda dapat menghindari semua ini jika perpustakaan Anda ditunjuk, terutama untuk sekali jalan. Ini mungkin terdengar tidak mungkin atau tidak perlu, tetapi sangat nyaman untuk kasus penggunaan dan pengembangan yang jarang terjadi.

Revisi Neraka

Siapa pun yang membaca ini akan terbiasa dengan masalah Python menggunakan versi bahasa yang berbeda. Itu hanya satu contoh mencolok di mana bahkan pengguna terpengaruh. Ini karena proyek brilian lama yang berhenti memelihara perangkat lunak. Dalam banyak situasi lain, Anda juga memerlukan kontrol besar atas apa yang sedang berjalan dan perpustakaan apa yang tersedia. Pemrograman dalam C dan C++ menggunakan pustaka yang seringkali membutuhkan versi yang tepat saat Anda mengompilasi. Jika tidak, Anda akan menulis ulang bagian dari perangkat lunak yang tidak pernah ingin Anda sentuh. Banyak pengembang menggunakan wadah dengan semua perpustakaan, dan semua pekerjaan lain terjadi di komputer host.

Perbaikan Nix

Bagaimana nix menangani masalah ini?? Yah, mereka memiliki semua file di toko dengan hash untuk mengidentifikasi versi yang tepat. Lingkungan yang akan Anda gunakan, lalu tautkan ke perpustakaan atau jalankan, adalah sesuatu yang ingin Anda gunakan untuk situasi Anda saat ini. Untuk sistem yang berjalan, Anda kemudian dapat menggunakan banyak versi aplikasi dan bahkan perpustakaan. Saat Anda ingin mengembangkan, Anda membuat file konfigurasi yang mencakup kebutuhan proyek Anda saat ini.

File Konfigurasi

Ketika Anda menginstal NixOS, konfigurasinya.nix akan mengontrol lingkungan Anda untuk seluruh komputer. Dengan itu, Anda dapat mengontrolnya di setiap instance shell Anda. Terlepas dari apakah Anda memiliki NixOS atau menjalankan distribusi lain, Anda dapat menggunakan file nix lain. File ini disebut default.nix secara default. Anda dapat menggunakan ini untuk membuat struktur direktori yang memiliki lingkungan tertentu. Alur kerjanya adalah membuat file nix default untuk mencerminkan apa yang Anda ingin lingkungan Anda dukung. Kemudian ubah direktori dan jalankan nix-build, diikuti dengan menjalankan nix-Shell. Anda juga dapat menggunakan nama apa pun untuk file jika Anda menentukannya di baris perintah.

$ cd Proyek Saya/
$ nix-build # Sekali, ketika Anda telah mengubah sesuatu.
$ nix-shell default.nix

Parameter untuk nix-Shell akan tersirat, tetapi jika Anda ingin memiliki beberapa dalam satu direktori, maka Anda dapat menggunakan sakelar. Dengan set nilai yang benar, Anda sekarang memiliki lingkungan yang sama setiap kali Anda memulai nix-shell. Jika Anda memindahkan file nix, Anda akan bisa mendapatkan yang sama di mana saja! Masalah besar menjadi; apa yang saya masukkan ke dalam file nixx?

File menggunakan bahasa ekspresi Nix, hampir seperti bahasa pemrograman.

Beberapa contoh

Di bawah ini, ada beberapa contoh yang dapat membantu Anda. Ada banyak hal lagi yang dapat Anda lakukan untuk mengubah lingkungan Anda. Ini adalah perjalanan panjang yang mengasyikkan, tetapi mungkin akan memperlambat Anda sejak awal. Sebelum Anda sampai di sana, gunakan kode orang lain. Daftar ini singkat, jadi carilah ide di seluruh web.

Python

Saat Anda ingin membuat proyek Python, Anda biasanya menggunakan lingkungan virtual. Dengan Nix, ini tidak perlu. Sebagai gantinya, Anda dapat membuat shell.nix yang menyatakan versi mana yang Anda inginkan. Cara paling sederhana untuk melakukannya adalah dengan menggunakan python38Full.

pkgs ? impor :
pkgs.mkShell
# nativeBuildInputs biasanya yang Anda inginkan -- alat yang perlu Anda jalankan
nativeBuildInputs = [ pkgs.membangunPaket.python38Penuh];

Ini mengkompilasi lingkungan dengan semua bagian dari Python 3.8 yang datang dengan NixOS. Jika Anda ingin meminimalkan lingkungan Anda, Anda dapat memilih bagian-bagian tertentu. Anda juga dapat menambahkan kode sumber Anda dari jarak jauh dengan fungsi pengambilan.

Python Flask

Contoh pengembangan web adalah labu. Ini adalah paket yang sangat kuat untuk membuat halaman web, bahkan yang sangat kompleks, tanpa banyak usaha. Karena Flask adalah kerangka kerja yang populer, ada paket NixOS yang siap untuk itu. File untuk mengontrol build untuk ini disebut default.nix.

pkgs ? impor :
pkgs.python38Paket.buildPythonApplication
pname = "NixApp";
src = ./.;
versi = "0.1";
propagatedBuildInputs = [ pkgs.python38Paket.termos];

Seperti yang Anda lihat, ada paket dari nixpkgs yang menutupi labu. Jika Anda ingin menggunakan sesuatu yang lain, Anda menambahkannya di dalam tanda kurung siku. Ini berlaku untuk semua jenis paket yang disertakan dalam repositori NixPkgs. Jika paket tidak ada, gunakan fetcher.

Pengembangan Python

Jika Anda ingin memulai lingkungan pengembangan Python, Anda menambahkan paket yang Anda butuhkan sesuai dengan revisi dan lainnya.

dengan impor ;
dengan pkgs.python37Paket;
stdenv.mkDerivasi
nama = "python-devel";
permintaan = ./Persyaratan.txt;
pembangun = "$bash/bin/bash";
pengaturan = ./setup_venv.SH;
buildInput = [
python37Penuh
python37Paket.pip
];
sistem = bawaan.sistem saat ini;
shellHook = "
SOURCE_DATE_EPOCH=$(tanggal +%s)
";

Di shellHook, di antara tanda kutip ganda ("), Anda dapat meletakkan skrip apa pun yang Anda suka. Sekali lagi, pikirkan tentang apa yang mungkin sudah ada, karena ada banyak orang pintar di luar sana yang sudah berkembang menggunakan NixOS.

JavaScript

Versi standar untuk menggunakan JavaScript, atau lebih tepatnya, nodejs, adalah skrip nix di bawah ini. Beri nama shell.nix dan letakkan di direktori proyek Anda, lalu mulai dengan perintah nix-shell.

dengan impor ;
stdenv.mkDerivasi
nama = "simpul";
buildInput = [
nodejs
];
shellHook = "
ekspor PATH="$PWD/node_modules/.bin/:$PATH"
";

Ini adalah trik yang paling sederhana dan mungkin, meskipun ada lebih banyak lagi yang tersedia. Anda dapat melihat cara menambahkan skrip yang seharusnya Anda jalankan secara manual. Gunakan ini dengan hati-hati dan cari alternatif lengkap sebelum Anda melakukan ini.

Jupyter

Skrip di bawah ini menginisialisasi direktori untuk menampung sekumpulan fungsi tempat Anda dapat menjalankan Jupyter. Paket lainnya adalah untuk statistik dan pembelajaran mesin. Anda juga dapat menghapus dan menambahkan sesuai dengan kebutuhan Anda.

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

Konfigurasi

Untuk IDE Anda, editor, atau apa pun, sungguh, Anda juga dapat memanggang di pengaturan Anda. Untuk pengembang, vim dan Emacs akan menjadi kandidat pertama untuk spesialisasi ini. Vim memiliki set plugin sendiri yang tersedia sebagai nixpkgs.

Pengambil

Dasar dari paket di NixOS adalah file yang menunjuk ke sumber dan apa yang dibutuhkan untuk mengkompilasi paket. Anda dapat menggunakan ini jika Anda kehilangan paket. Selama Anda dapat menemukan paket sumber, Anda dapat menggunakan fetcher untuk menginstalnya. Pengambil standar mengambil tarbal tetapi diberi nama fetchurl.

stdenv, fetchurl :
stdenv.mkDerivasi
nama = "halo";
src = fetchurl
url = "http://www.contoh.org/halo.ter.gz";
sha256 = "111111111111111111111111111111111111111111111111111";
;

Anda dapat menggunakannya seperti pada kode di atas. Anda juga memiliki fetchgit dan sistem kontrol versi lainnya. Selain itu, layanan git utama ditutupi dengan fetchFromGitHub, fetchFromGitLab, dan banyak lagi. Dengan semua pengambil ini, Anda seharusnya dapat menemukan paket apa pun yang Anda inginkan untuk NixOS.

Kesimpulan

Menggunakan NixOS membutuhkan sedikit lebih banyak usaha daripada distribusi lain. Karena itu, jika Anda ingin mengembangkan perangkat lunak, usaha itu sepadan. Anda akan menjaga sistem utama Anda lebih bersih dan dapat berpindah antar proyek tanpa menciptakan konflik yang merepotkan antar lingkungan.

Game Lab Aplikasi Oculus Teratas
Jika Anda adalah pemilik headset Oculus maka Anda harus tahu tentang sideloading. Sideloading adalah proses menginstal konten non-toko di headset Anda...
10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...
5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...