NixOS

Entornos de desarrollo NixOS

Entornos de desarrollo NixOS
Al desarrollar y ejecutar software, y muchas veces, necesita un conjunto muy particular de bibliotecas en su entorno. Lo logras con entornos virtuales, contenedores y otros trucos. Sin embargo, no necesariamente necesita todo eso. Un caso común es cuando programa en Python, debe elegir entre las dos versiones grandes. Esto ha causado muchos dolores de cabeza a usuarios y desarrolladores por igual. Puede evitar todo esto si sus bibliotecas están designadas, especialmente para una ejecución. Esto puede parecer imposible o innecesario, pero es muy conveniente para casos de uso raros y desarrollo.

Infierno de revisión

Cualquiera que lea esto estará familiarizado con el problema de Python de usar una versión diferente del lenguaje. Ese es solo un ejemplo evidente en el que incluso los usuarios se ven afectados. Esto se debe a viejos proyectos brillantes que han dejado de mantener el software. En muchas otras situaciones, también necesita un gran control sobre lo que se está ejecutando y las bibliotecas disponibles. La programación en C y C ++ usa bibliotecas que a menudo deben tener la versión exacta cuando compila. De lo contrario, volverá a escribir partes del software que nunca tuvo la intención de tocar. Muchos desarrolladores usan un contenedor con todas las bibliotecas, y todos los demás trabajos ocurren en la computadora host.

La solución Nix

¿Cómo se ocupa nix de este problema?? Bueno, tienen todos los archivos en una tienda con hashes para identificar la versión exacta. El entorno que va a usar, luego vincular a la biblioteca o ejecutar, es algo que le gustaría usar para su situación actual. Para un sistema en ejecución, puede usar muchas versiones de una aplicación e incluso bibliotecas. Cuando quieras desarrollar, creas un archivo de configuración que cubre las necesidades de tu proyecto actual.

Archivos de configuración

Cuando tenga NixOS instalado, la configuración.nix controlará su entorno para toda la computadora. Dicho esto, puedes controlarlo en cada instancia de tu caparazón. Independientemente de si tiene NixOS o ejecuta cualquier otra distribución, puede usar otro archivo nix. El archivo se llama predeterminado.nix por defecto. Puede usar esto para crear una estructura de directorio que tenga un entorno particular. El flujo de trabajo es crear el archivo nix predeterminado para reflejar lo que desea que admita su entorno. Luego cambie el directorio y ejecute nix-build, seguido de ejecutar nix-shell. También puede usar cualquier nombre para el archivo si lo especifica en la línea de comando.

$ cd MiProyecto /
$ nix-build # Una vez, cuando hayas cambiado algo.
$ nix-shell predeterminado.nada

El parámetro para nix-shell estará implícito, pero si desea tener varios en un directorio, puede usar el interruptor. Con los valores correctos establecidos, ahora su entorno es el mismo cada vez que inicia nix-shell. Si mueve el archivo nix, podrá obtener lo mismo en cualquier lugar! El gran problema se convierte en; que pongo en los archivos nix?

Los archivos usan el lenguaje de expresión Nix, es casi un lenguaje de programación.

Algunos ejemplos

A continuación, hay algunos ejemplos que pueden ayudarlo. Hay muchas más cosas que puede hacer para modificar su entorno. Este es un viaje largo y emocionante, pero probablemente lo ralentizará desde el principio. Antes de llegar, use el código de otras personas. Esta lista es corta, así que busque ideas en la Web.

Pitón

Cuando desee crear un proyecto de Python, normalmente usaría entornos virtuales. Con Nix, esto no es necesario. En su lugar, puede crear un caparazón.nix archivo que declara qué versión desea. La forma más sencilla de hacer esto es usar python38Full.

paquetes ? importar :
pkgs.mkShell
# nativeBuildInputs es normalmente lo que desea: herramientas que necesita para ejecutar
nativeBuildInputs = [pkgs.buildPackages.python38Full];

Esto compila un entorno con todas las partes de Python 3.8 que viene con NixOS. Si desea minimizar su entorno, puede elegir sus partes particulares. También puede agregar su código fuente de forma remota con funciones de recuperación.

Matraz de Python

Un ejemplo de desarrollo web es un matraz. Es un paquete muy poderoso para hacer páginas web, incluso las realmente complejas, sin mucho esfuerzo. Dado que Flask es un marco popular, hay un paquete NixOS listo para él. El archivo para controlar la compilación para esto se llama predeterminado.nada.

paquetes ? importar :
pkgs.python38 Paquetes.buildPythonApplication
pname = "NixApp";
src = ./.;
versión = "0.1 ";
propagatedBuildInputs = [pkgs.python38 Paquetes.matraz];

Como puede ver, hay paquetes de nixpkgs que cubren el matraz. Si desea usar otra cosa, agréguela dentro de los corchetes. Esto se aplica a todos los tipos de paquetes que se incluyen en el repositorio de NixPkgs. Si el paquete no existe, use un buscador.

Desarrollo de Python

Si desea iniciar un entorno de desarrollo de Python, agregue los paquetes que necesita de acuerdo con la revisión y otros.

con importación ;
con paquetes.python37Packages;
stdenv.mkDerivation
nombre = "python-devel";
req = ./ requisitos.TXT;
constructor = "$ bash / bin / bash";
configuración = ./ setup_venv.sh;
buildInputs = [
python37Full
python37 Paquetes.pepita
];
system = incorporados.sistema actual;
shellHook = "
SOURCE_DATE_EPOCH = $ (fecha +% s)
";

En el shellHook, entre los apóstrofos dobles ("), puede poner los scripts que desee. Nuevamente, piense en lo que podría existir, ya que hay muchas personas inteligentes que ya se están desarrollando con NixOS.

JavaScript

La versión estándar para usar JavaScript, o más precisamente, nodejs, es el script nix a continuación. Nómbralo shell.nix y colóquelo en el directorio de su proyecto, luego comience con el comando nix-shell.

con importación ;
stdenv.mkDerivation
nombre = "nodo";
buildInputs = [
nodejs
];
shellHook = "
export PATH = "$ PWD / node_modules /.bin /: $ PATH "
";

Este es el truco más simple y posible, aunque hay muchos más disponibles. Puede ver cómo agregar un script que de otro modo ejecutaría manualmente. Use esto con cuidado y busque alternativas completas antes de hacer esto.

Jupyter

El siguiente script inicializa un directorio para alojar un lote de funciones donde puede ejecutar Jupyter. Los otros paquetes son para estadísticas y aprendizaje automático. También puede eliminar y agregar según sus necesidades.

con importación ;
(
dejar
en python38.withPackages (ps: con ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env

Configuraciones

Para su IDE, editor o cualquier cosa, en realidad, también puede hornear en su configuración. Para los desarrolladores, vim y Emacs serán los primeros candidatos para esta especialización. Vim tiene su propio conjunto de complementos disponibles como nixpkgs.

Buscadores

La base de los paquetes en NixOS son archivos que apuntan a las fuentes y lo que se necesita para compilar los paquetes. Puede usar esto si le falta un paquete. Siempre que pueda encontrar el paquete fuente, puede usar un buscador para instalarlo. El buscador estándar obtiene archivos tar pero se llama fetchurl.

stdenv, fetchurl:
stdenv.mkDerivation
nombre = "hola";
src = fetchurl
url = "http: // www.ejemplo.org / hola.alquitrán.gz ";
sha256 = "11111111111111111111111111111111111111111111111111";
;

Puede usarlo como está en el código anterior. También tienes fetchgit y otros sistemas de control de versiones. Además de esto, los principales servicios de git están cubiertos con fetchFromGitHub, fetchFromGitLab y más. Con todos estos buscadores, debería poder encontrar cualquier paquete que desee para NixOS.

Conclusión

Usar NixOS requiere un poco más de esfuerzo que otras distribuciones. Dicho esto, si desea desarrollar software, el esfuerzo vale la pena. Mantendrá su sistema principal más limpio y podrá saltar entre proyectos sin crear conflictos problemáticos entre entornos.

WinMouse le permite personalizar y mejorar el movimiento del puntero del mouse en una PC con Windows
Si desea mejorar las funciones predeterminadas del puntero del mouse, use el software gratuito WinMouse. Agrega más funciones para ayudarlo a aprovech...
El botón de clic izquierdo del mouse no funciona en Windows 10
Si está utilizando un mouse dedicado con su computadora portátil o computadora de escritorio, pero el el botón izquierdo del mouse no funciona en Wind...
El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...