NixOS

Środowiska programistyczne NixOS

Środowiska programistyczne NixOS
Podczas tworzenia i uruchamiania oprogramowania, i to wielokrotnie, potrzebujesz bardzo konkretnego zestawu bibliotek w swoim środowisku. Osiągasz to za pomocą środowisk wirtualnych, kontenerów i innych sztuczek. Jednak niekoniecznie potrzebujesz tego wszystkiego. Jednym z powszechnych przypadków jest to, że gdy programujesz w Pythonie, musisz wybrać między dwiema dużymi wersjami. To spowodowało wiele bólów głowy zarówno dla użytkowników, jak i programistów. Możesz tego wszystkiego uniknąć, jeśli twoje biblioteki są wyznaczone, szczególnie na jeden bieg. Może to wydawać się niemożliwe lub niepotrzebne, ale jest bardzo wygodne w przypadku rzadkich przypadków użycia i rozwoju.

Piekło rewizji

Każdy, kto to przeczyta, będzie zaznajomiony z kwestią Pythona dotyczącą używania innej wersji języka. To tylko jeden rażący przykład, na który wpływają nawet użytkownicy. Wynika to ze starych genialnych projektów, które przestały utrzymywać oprogramowanie the. W wielu innych sytuacjach potrzebna jest również duża kontrola nad tym, co jest uruchomione i jakie biblioteki są dostępne. Programowanie w C i C++ wykorzystuje biblioteki, które często muszą być dokładną wersją podczas kompilacji. W przeciwnym razie będziesz ponownie pisać części oprogramowania, których nigdy nie zamierzałeś dotykać. Wielu programistów używa kontenera ze wszystkimi bibliotekami, a wszystkie inne prace odbywają się na komputerze-hoście.

Poprawka Nixa

Jak nix rozwiązuje ten problem? Cóż, mają wszystkie pliki w sklepie z hashami, aby zidentyfikować dokładną wersję. Środowisko, którego zamierzasz użyć, a następnie link do biblioteki lub wykonanie, jest czymś, czego chciałbyś użyć w swojej obecnej sytuacji. W przypadku działającego systemu możesz używać wielu wersji aplikacji, a nawet bibliotek. Kiedy chcesz się rozwijać, tworzysz plik konfiguracyjny, który pokrywa potrzeby Twojego obecnego projektu.

Pliki konfiguracyjne

Gdy masz zainstalowany NixOS, konfiguracja.nix będzie kontrolować twoje środowisko dla całego komputera. Mając to na uwadze, możesz kontrolować to w każdej instancji swojej powłoki. Niezależnie od tego, czy masz NixOS, czy uruchomisz inną dystrybucję, możesz użyć innego pliku nix. Plik nazywa się domyślny.domyślnie nix. Możesz użyć tego do stworzenia struktury katalogów, która ma określone środowisko. Przepływ pracy polega na utworzeniu domyślnego pliku nix, aby odzwierciedlić to, co chcesz obsługiwać w swoim środowisku. Następnie zmień katalog i uruchom nix-build, a następnie uruchom nix-shell. Możesz także użyć dowolnej nazwy pliku, jeśli określisz ją w wierszu poleceń.

$ cd MójProjekt/
$ nix-build # Raz, kiedy coś zmieniłeś.
$ domyślna powłoka nix.nic

Parametr dla powłoki nix będzie implikowany, ale jeśli chcesz mieć kilka w jednym katalogu, możesz użyć przełącznika. Z ustawionymi poprawnymi wartościami masz teraz takie samo środowisko za każdym razem, gdy uruchamiasz nix-shell. Jeśli przeniesiesz plik nix, będziesz mógł dostać to samo w dowolnym miejscu! Wielkim problemem staje się; co mam umieścić w plikach nix?

Pliki używają języka wyrażeń Nix, jest to prawie język programowania.

Kilka przykładów

Poniżej kilka przykładów, które mogą Ci pomóc. Jest wiele innych rzeczy, które możesz zrobić, aby poprawić swoje środowisko. To długa ekscytująca podróż, ale prawdopodobnie spowolni Cię od samego początku. Zanim tam dotrzesz, użyj kodu innych osób. Ta lista jest krótka, więc szukaj pomysłów w sieci.

Pyton

Kiedy chcesz stworzyć projekt w Pythonie, zwykle używasz środowisk wirtualnych. W przypadku Nixa nie jest to konieczne. Zamiast tego możesz stworzyć powłokę.plik nix, który deklaruje, którą wersję chcesz. Najprostszym sposobem na to jest użycie python38Full.

pakiety ? import :
pakiety.mkPowłoka
# nativeBuildInputs jest zwykle tym, czego chcesz -- narzędziami, które musisz uruchomić
nativeBuildInputs = [ pakiety.buildPackages.python38Pełny];

To kompiluje środowisko ze wszystkimi częściami Pythona 3.8, który jest dostarczany z NixOS. Jeśli chcesz zminimalizować swoje środowisko, możesz wybrać poszczególne jego części. Możesz także dodać swój kod źródłowy zdalnie za pomocą funkcji pobierania.

Kolba Pythona

Przykładem tworzenia stron internetowych jest kolba. Jest to bardzo potężny pakiet do tworzenia stron internetowych, nawet bardzo złożonych, bez większego wysiłku. Ponieważ Flask jest popularnym frameworkiem, istnieje dla niego gotowy pakiet NixOS. Plik kontrolujący kompilację w tym celu nosi nazwę default.nic.

pakiety ? import :
pakiety.python38Pakiety.buildPythonAplikacja
pname = "NixApp";
źródło = ./.;
wersja = „0.1";
propagatedBuildInputs = [ pakiety.python38Pakiety.kolba ];

Jak widać, istnieją paczki z nixpkgs, które obejmują kolbę. Jeśli chcesz użyć czegoś innego, dodaj je w nawiasach kwadratowych. Dotyczy to wszystkich typów pakietów zawartych w repozytorium NixPkgs. Jeśli pakiet nie istnieje, użyj modułu pobierania.

Rozwój Pythona

Jeśli chcesz uruchomić środowisko programistyczne Python, dodajesz pakiety, których potrzebujesz zgodnie z wersją i innymi and.

z importem ;
z pakietami.python37Pakiety;
stdenv.mkDerivation
nazwa = "python-devel";
wymagane = ./wymagania.tekst;
budowniczy = "$bash/bin/bash";
konfiguracja = ./setup_venv.sz;
Wejścia kompilacji = [
python37Pełny
python37Pakiety.pypeć
];
system = wbudowane.aktualny system;
shellHak = "
SOURCE_DATE_EPOCH=$(data +%s)
";

W shellHook, pomiędzy podwójnymi apostrofami (”), możesz umieścić dowolne skrypty. Ponownie zastanów się, co może już istnieć, ponieważ jest wielu inteligentnych ludzi, którzy już rozwijają się przy użyciu NixOS.

JavaScript

Standardową wersją do korzystania z JavaScript, a dokładniej nodejs, jest poniższy skrypt nix. Nazwij to powłoką.nix i umieść go w katalogu projektu, a następnie zacznij od polecenia nix-shell.

z importem ;
stdenv.mkDerivation
nazwa = "węzeł";
Wejścia kompilacji = [
nodejs
];
shellHak = "
eksportuj PATH="$PWD/moduły_węzłów/.kosz/:$PATH"
";

To najprostsza, możliwa sztuczka, choć dostępnych jest znacznie więcej. Możesz zobaczyć, jak dodać skrypt, który w przeciwnym razie uruchomiłbyś ręcznie. Używaj tego ostrożnie i poszukaj pełnych alternatyw, zanim to zrobisz.

Jupyter

Poniższy skrypt inicjuje katalog do obsługi partii funkcji, w których można uruchomić Jupyter. Pozostałe pakiety dotyczą statystyk i uczenia maszynowego. Możesz również usuwać i dodawać zgodnie z własnymi potrzebami.

z importem ;
(
pozwolić
w pytonie38.withPackages (ps: with ps; [ geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz ])
).zazdrościć

Konfiguracje

W przypadku swojego IDE, edytora lub czegokolwiek, naprawdę możesz również upiec w swoich ustawieniach. Dla programistów vim i Emacs będą pierwszymi kandydatami do tej specjalizacji. Vim ma własny zestaw wtyczek dostępnych jako nixpkgs.

Aportery

Podstawą pakietów w NixOS są pliki wskazujące źródła i to, co jest potrzebne do kompilacji pakietów. Możesz użyć tego, jeśli brakuje Ci pakietu. Dopóki możesz znaleźć pakiet źródłowy, możesz go zainstalować za pomocą programu pobierającego. Standardowy moduł pobierania pobiera pliki tar, ale nosi nazwę fetchurl.

stdenv, fetchurl :
stdenv.mkDerivation
nazwa = "cześć";
src = pobierz
url = "http://www.przykład.org/witaj.smoła.gz";
sha256 = "1111111111111111111111111111111111111111111111111111";
;

Możesz go użyć tak, jak jest w powyższym kodzie. Masz również fetchgit i inne systemy kontroli wersji. Ponadto główne usługi git są objęte fetchFromGitHub, fetchFromGitLab i innymi. Dzięki tym wszystkim programom pobierania powinieneś być w stanie znaleźć dowolny pakiet dla NixOS.

Wniosek

Korzystanie z NixOS wymaga nieco więcej wysiłku niż w przypadku innych dystrybucji. To powiedziawszy, jeśli chcesz tworzyć oprogramowanie, wysiłek jest tego wart. Utrzymasz swój główny system w czystości i będziesz mógł przeskakiwać między projektami bez powodowania kłopotliwych konfliktów między środowiskami.

Gry Jak przechwytywać i przesyłać strumieniowo sesję gry w systemie Linux
Jak przechwytywać i przesyłać strumieniowo sesję gry w systemie Linux
W przeszłości granie w gry było uważane tylko za hobby, ale z czasem branża gier odnotowała ogromny wzrost pod względem technologii i liczby graczy. P...
Gry Najlepsze gry do grania ze śledzeniem rąk
Najlepsze gry do grania ze śledzeniem rąk
Oculus Quest niedawno wprowadził świetny pomysł śledzenia rąk bez kontrolerów. Przy stale rosnącej liczbie gier i działań, które wspierają zarówno for...
Gry Jak wyświetlić nakładkę OSD w pełnoekranowych aplikacjach i grach dla systemu Linux?
Jak wyświetlić nakładkę OSD w pełnoekranowych aplikacjach i grach dla systemu Linux?
Granie w gry pełnoekranowe lub korzystanie z aplikacji w trybie pełnoekranowym bez rozpraszania uwagi może odciąć Cię od istotnych informacji systemow...