NixOS

NixOS Geliştirme Ortamları

NixOS Geliştirme Ortamları
Yazılım geliştirirken ve çalıştırırken ve çoğu zaman ortamınızda çok özel bir kitaplık kümesine ihtiyacınız vardır. Bunu sanal ortamlar, kapsayıcılar ve diğer püf noktaları ile başarırsınız. Ancak, tüm bunlara mutlaka ihtiyacınız yok. Yaygın bir durum, Python'da programladığınızda, iki büyük sürüm arasında seçim yapmanız gerektiğidir. Bu, hem kullanıcılar hem de geliştiriciler için birçok baş ağrısına neden oldu. Kitaplıklarınız belirlenmişse, özellikle bir çalıştırma için tüm bunlardan kaçınabilirsiniz. Bu imkansız veya gereksiz gelebilir, ancak nadir kullanım durumları ve geliştirme için çok uygundur.

Revizyon Cehennemi

Bunu okuyan herkes Python'un dilin farklı bir sürümünü kullanma sorununa aşina olacaktır. Bu, kullanıcıların bile etkilendiği göze batan bir örnek. Bu, yazılımın bakımını durduran eski parlak projelerden kaynaklanmaktadır. Diğer birçok durumda, neyin çalıştığı ve hangi kitaplıkların mevcut olduğu üzerinde de büyük kontrole ihtiyacınız vardır. C ve C++'da programlama, derlerken genellikle tam sürüm olması gereken kitaplıkları kullanır. Aksi takdirde, yazılımın asla dokunmak istemediğiniz kısımlarını yeniden yazacaksınız. Pek çok geliştirici, tüm kitaplıkları içeren bir kapsayıcı kullanır ve diğer tüm işler ana bilgisayarda gerçekleşir.

Nix Düzeltmesi

nix bu sorunla nasıl ilgilenir?? Tam sürümü belirlemek için karmaları olan bir mağazadaki tüm dosyalara sahipler. Kullanacağınız ortam, daha sonra kütüphaneye bağlanın veya yürütün, mevcut durumunuz için kullanmak isteyeceğiniz bir şeydir. Çalışan bir sistem için, bir uygulamanın birçok sürümünü ve hatta kitaplıkları kullanabilirsiniz. Geliştirmek istediğinizde mevcut projenizin ihtiyaçlarını karşılayan bir konfigürasyon dosyası oluşturursunuz.

Yapılandırma Dosyaları

NixOS yüklediğinizde, yapılandırma.nix tüm bilgisayar için ortamınızı kontrol edecek. Bununla birlikte, kabuğunuzun her örneğinde kontrol edebilirsiniz. NixOS'unuz varsa veya başka bir dağıtım çalıştırıyorsanız, başka bir nix dosyası kullanabilirsiniz. Dosya varsayılan olarak adlandırılır.varsayılan olarak nix. Bunu, belirli bir ortama sahip bir dizin yapısı yapmak için kullanabilirsiniz. İş akışı, ortamınızın desteklemesini istediğiniz şeyi yansıtmak için varsayılan nix dosyasını oluşturmaktır. Ardından dizini değiştirin ve nix-build'i çalıştırın, ardından nix-shell'i çalıştırın. Komut satırında belirtirseniz dosya için herhangi bir ad da kullanabilirsiniz.

$ cd Projem/
$ nix-build # Bir kez, bir şeyi değiştirdiğinizde.
$ nix-kabuk varsayılanı.nix

Nix-shell için parametre ima edilecektir, ancak bir dizinde birkaç tane olmasını istiyorsanız, anahtarı kullanabilirsiniz. Doğru değerler ayarlandığında, artık nix-shell'i her başlattığınızda ortamınız aynı olur. Nix dosyasını taşırsanız, aynısını her yerde elde edebilirsiniz! Büyük sorun olur; nix dosyalarına ne koyarım?

Dosyalar Nix ifade dilini kullanır, neredeyse bir programlama dilidir.

birkaç örnek

Aşağıda, size yardımcı olabilecek birkaç örnek var. Ortamınızı değiştirmek için yapabileceğiniz daha birçok şey var. Bu uzun ve heyecan verici bir yolculuk ama muhtemelen sizi en başından yavaşlatacak. Oraya varmadan önce başkalarının kodunu kullanın. Bu liste kısadır, bu nedenle web'de fikir arayın.

piton

Bir Python projesi oluşturmak istediğinizde normalde sanal ortamları kullanırsınız. Nix ile bu gerekli değil. Bunun yerine bir kabuk oluşturabilirsiniz.hangi sürümü istediğinizi bildiren nix dosyası. Bunu yapmanın en basit yolu python38Full kullanmaktır.

pkgs ? ithalat :
pkgs.mkShell
# nativeBuildInputs genellikle istediğiniz şeydir -- çalıştırmanız gereken araçlar
nativeBuildInputs = [ pkgs.paketler.python38Tam];

Bu, Python 3'ün tüm bölümleriyle bir ortamı derler.NixOS ile birlikte gelen 8. Ortamınızı en aza indirmek istiyorsanız, belirli bölümlerini seçebilirsiniz. Getirme işlevleriyle kaynak kodunuzu uzaktan da ekleyebilirsiniz.

piton şişesi

Bir web geliştirme örneği bir şişedir. Web sayfalarını, hatta gerçekten karmaşık olanları bile, fazla çaba harcamadan yapmak için çok güçlü bir pakettir. Flask popüler bir çerçeve olduğundan, bunun için hazır bir NixOS paketi var. Bunun için yapıyı kontrol eden dosyaya varsayılan denir.nix.

pkgs ? ithalat :
pkgs.python38Paketler.buildPythonApplication
pname = "NixApp";
kaynak = ./.;
sürüm = "0.1";
propagatedBuildInputs = [ pkgs.python38Paketler.şişe ];

Gördüğünüz gibi, nixpkgs'den şişeyi kaplayan paketler var. Başka bir şey kullanmak istiyorsanız, bunları köşeli parantez içine eklersiniz. Bu, NixPkgs deposunda bulunan tüm paket türleri için geçerlidir. Paket yoksa, bir alıcı kullanın.

Python Geliştirme

Bir Python geliştirme ortamı başlatmak istiyorsanız, revizyona ve diğerlerine göre ihtiyacınız olan paketleri eklersiniz.

ithalat ile ;
pkgs ile.python37Paketler;
stdenv.mkTürev
isim = "python-devel";
istek = ./Gereksinimler.Txt;
oluşturucu = "$bash/bin/bash";
kurulum = ./setup_venv.ş;
buildInputs = [
python37Tam
python37Paketler.pip
];
sistem = yerleşikler.mevcut sistem;
shellHook = "
SOURCE_DATE_EPOCH=$(tarih +%s)
";

ShellHook'ta, çift kesme işareti (”) arasına istediğiniz herhangi bir komut dosyasını koyabilirsiniz. Halihazırda NixOS kullanarak gelişmekte olan birçok akıllı insan olduğu için, halihazırda var olabilecekleri bir kez daha düşünün.

JavaScript

JavaScript'i veya daha doğrusu nodejs'yi kullanmak için standart sürüm, aşağıdaki nix betiğidir. Kabuk olarak adlandırın.nix'i seçin ve proje dizininize yerleştirin, ardından nix-shell komutuyla başlayın.

ithalat ile ;
stdenv.mkTürev
isim = "düğüm";
buildInputs = [
düğümler
];
shellHook = "
dışa aktar PATH="$PWD/node_modules/.bin/:$YOL"
";

Bu en basit, olası numaradır, ancak çok daha fazlası mevcuttur. Aksi takdirde manuel olarak çalıştıracağınız bir komut dosyasını nasıl ekleyeceğinizi görebilirsiniz. Bunu dikkatli bir şekilde kullanın ve bunu yapmadan önce tam alternatifler arayın.

Jüpiter

Aşağıdaki komut dosyası, Jupyter'ı çalıştırabileceğiniz bir dizi işlevi barındırmak için bir dizini başlatır. Diğer paketler istatistik ve makine öğrenimi içindir. Ayrıca ihtiyaçlarınıza göre kaldırabilir ve ekleyebilirsiniz.

ithalat ile ;
(
İzin Vermek
piton38'de.withPackages (ps: ps ile; [ geopandas ipython jupyter
jupyterlab matplotlib numpy pandalar seaborn toolz ])
).ortam

Yapılandırmalar

IDE'niz, düzenleyiciniz veya herhangi bir şey için, gerçekten, ayarlarınızda da pişirebilirsiniz. Geliştiriciler için bu uzmanlık için ilk adaylar vim ve Emacs olacak. Vim, nixpkgs olarak kullanılabilen kendi eklenti setine sahiptir.

alıcılar

NixOS'taki paketlerin temeli, kaynaklara işaret eden dosyalar ve paketleri derlemek için gerekli olanlardır. Bir paketiniz eksikse bunu kullanabilirsiniz. Kaynak paketi bulabildiğiniz sürece, onu yüklemek için bir alıcı kullanabilirsiniz. Standart alıcı tarball'ları getirir ancak fechurl olarak adlandırılır.

stdenv, getirme :
stdenv.mkTürev
isim = "merhaba";
kaynak = getir
url="http://www.misal.kuruluş/merhaba.katran.gz";
sha256 = "111111111111111111111111111111111111111111111111111111";
;

Yukarıdaki kodda olduğu gibi kullanabilirsiniz. Ayrıca fetchgit ve diğer sürüm kontrol sistemleriniz var. Bunun da ötesinde, büyük git hizmetleri fetchFromGitHub, fetchFromGitLab ve daha fazlasıyla kapsanmaktadır. Tüm bu alıcılarla NixOS için istediğiniz herhangi bir paketi bulabilmelisiniz.

Sonuç

NixOS'u kullanmak, diğer dağıtımlardan biraz daha fazla çaba gerektirir. Bunu söyledikten sonra, yazılım geliştirmek istiyorsanız, çabaya değer. Ana sisteminizi daha temiz tutacak ve ortamlar arasında zahmetli çatışmalar yaratmadan projeler arasında geçiş yapabileceksiniz.

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...