NixOS

Ambientes de desenvolvimento NixOS

Ambientes de desenvolvimento NixOS
Ao desenvolver e executar software, muitas vezes, você precisa de um conjunto muito particular de bibliotecas em seu ambiente. Você consegue isso com ambientes virtuais, contêineres e outros truques. No entanto, você não precisa necessariamente de tudo isso. Um caso comum é quando você programa em Python, você deve escolher entre as duas grandes versões. Isso tem causado muitas dores de cabeça para usuários e desenvolvedores. Você pode evitar tudo isso se suas bibliotecas forem designadas, especialmente para uma execução. Isso pode parecer impossível ou desnecessário, mas é muito conveniente para casos de uso raros e desenvolvimento.

Revision Hell

Qualquer um que ler isto estará familiarizado com o problema do Python de usar uma versão diferente da linguagem. Esse é apenas um exemplo flagrante em que até mesmo os usuários são afetados. Isso se deve a projetos antigos e brilhantes que pararam de manter o software. Em muitas outras situações, você também precisa de grande controle sobre o que está sendo executado e quais bibliotecas estão disponíveis. A programação em C e C ++ usa bibliotecas que muitas vezes precisam ser a versão exata quando você compila. Caso contrário, você estará reescrevendo partes do software que nunca teve a intenção de tocar. Muitos desenvolvedores usam um contêiner com todas as bibliotecas, e todos os outros trabalhos acontecem no computador host.

The Nix Fix

Como o nix cuida desse problema? Bem, eles têm todos os arquivos em uma loja com hashes para identificar a versão exata. O ambiente que você vai usar e, em seguida, vincular à biblioteca ou executar, é algo que você gostaria de usar para sua situação atual. Para um sistema em execução, você pode usar muitas versões de um aplicativo e até mesmo bibliotecas. Quando você deseja desenvolver, você cria um arquivo de configuração que cobre as necessidades do seu projeto atual.

Arquivos de configuração

Quando você tiver o NixOS instalado, a configuração.nix controlará seu ambiente para todo o computador. Com isso dito, você pode controlá-lo em cada instância do seu shell. Independentemente de você ter o NixOS ou executar qualquer outra distribuição, você pode usar outro arquivo nix. O arquivo é chamado de padrão.nix por padrão. Você pode usar isso para fazer uma estrutura de diretório que tem um ambiente particular. O fluxo de trabalho é criar o arquivo nix padrão para refletir o que você deseja que seu ambiente suporte. Em seguida, mude o diretório e execute nix-build, seguido de executar o nix-shell. Você também pode usar qualquer nome para o arquivo se especificá-lo na linha de comando.

$ cd MyProject /
$ nix-build # Uma vez, quando você tiver mudado algo.
$ nix-shell default.nix

O parâmetro para o nix-shell estará implícito, mas se você quiser ter vários em um diretório, você pode usar a opção. Com os valores corretos definidos, agora você tem o mesmo ambiente sempre que iniciar o nix-shell. Se você mover o arquivo nix, poderá obter o mesmo em qualquer lugar! O grande problema torna-se; o que eu coloco nos arquivos nix?

Os arquivos usam a linguagem de expressão Nix, é quase uma linguagem de programação.

Alguns exemplos

Abaixo, há alguns exemplos que podem ajudá-lo. Existem muito mais coisas que você pode fazer para ajustar seu ambiente. Esta é uma jornada longa e emocionante, mas provavelmente irá atrasá-lo desde o início. Antes de chegar lá, use o código de outras pessoas. Esta lista é curta, então procure por ideias na web.

Pitão

Quando você deseja criar um projeto Python, normalmente usa ambientes virtuais. Com Nix, isso não é necessário. Em vez disso, você pode criar um shell.arquivo nix que declara qual versão você deseja. A maneira mais simples de fazer isso é usar o python38Full.

pkgs ? importar :
pkgs.mkShell
# nativeBuildInputs é geralmente o que você deseja - ferramentas que você precisa para executar
nativeBuildInputs = [pkgs.buildPackages.python38Full];

Isso compila um ambiente com todas as partes do Python 3.8 que vem com o NixOS. Se você deseja minimizar seu ambiente, pode escolher suas partes específicas. Você também pode adicionar seu código-fonte remotamente com funções de busca.

Python Flask

Um exemplo de desenvolvimento web é um frasco. É um pacote muito poderoso para fazer páginas web, mesmo as mais complexas, sem muito esforço. Como o Flask é um framework popular, existe um pacote NixOS pronto para ele. O arquivo para controlar a construção para isso é chamado padrão.nix.

pkgs ? importar :
pkgs.python38Packages.buildPythonApplication
pname = "NixApp";
src = ./.;
versão = "0.1 ";
propagatedBuildInputs = [pkgs.python38Packages.frasco ];

Como você pode ver, existem pacotes da nixpkgs que cobrem o frasco. Se você quiser usar outra coisa, adicione-os dentro dos colchetes. Isso vale para todos os tipos de pacotes incluídos no repositório NixPkgs. Se o pacote não existir, use um buscador.

Desenvolvimento Python

Se você deseja iniciar um ambiente de desenvolvimento Python, você adiciona os pacotes necessários de acordo com a revisão e outros.

com importação ;
com pacotes.python37Packages;
Stdenv.mkDerivation
nome = "python-devel";
req = ./ requisitos.TXT;
builder = "$ bash / bin / bash";
setup = ./ setup_venv.sh;
buildInputs = [
python37Full
python37Packages.pip
];
system = builtins.sistema atual;
shellHook = "
SOURCE_DATE_EPOCH = $ (data +% s)
";

No shellHook, entre os apóstrofos duplos (”), você pode colocar os scripts que desejar. Mais uma vez, pense no que já pode existir, pois existem muitas pessoas inteligentes por aí que já estão desenvolvendo usando o NixOS.

JavaScript

A versão padrão para usar JavaScript, ou mais precisamente, nodejs, é o script nix abaixo. Nomeie-o shell.nix e coloque-o no diretório do seu projeto, em seguida, comece com o comando nix-shell.

com importação ;
Stdenv.mkDerivation
nome = "nó";
buildInputs = [
nodejs
];
shellHook = "
export PATH = "$ PWD / node_modules /.bin /: $ PATH "
";

Este é o truque mais simples possível, embora haja muito mais disponíveis. Você pode ver como adicionar um script que, de outra forma, executaria manualmente. Use isso com cuidado e procure alternativas completas antes de fazer isso.

Jupyter

O script abaixo inicializa um diretório para hospedar um lote de funções onde você pode executar o Jupyter. Os outros pacotes são para estatísticas e aprendizado de máquina. Você também pode remover e adicionar de acordo com suas necessidades.

com importação ;
(
deixar
em python38.withPackages (ps: com ps; [geopandas ipython jupyter
jupyterlab matplotlib numpy pandas seaborn toolz])
).env

Configurações

Para o seu IDE, editor ou qualquer coisa, na verdade, você também pode assar em suas configurações. Para desenvolvedores, vim e Emacs serão os primeiros candidatos para esta especialização. O Vim tem seu próprio conjunto de plug-ins disponíveis como nixpkgs.

Buscadores

A base dos pacotes no NixOS são arquivos que apontam para as fontes e o que é necessário para compilar os pacotes. Você pode usar isso se estiver faltando um pacote. Contanto que você possa encontrar o pacote fonte, você pode usar um buscador para instalá-lo. O buscador padrão busca tarballs, mas é denominado fetchurl.

stdenv, fetchurl:
Stdenv.mkDerivation
nome = "olá";
src = fetchurl
url = "http: // www.exemplo.org / olá.alcatrão.gz ";
sha256 = "1111111111111111111111111111111111111111111111111111";
;

Você pode usá-lo da maneira que está no código acima. Você também tem fetchgit e outros sistemas de controle de versão. Além disso, os principais serviços git são cobertos com fetchFromGitHub, fetchFromGitLab e muito mais. Com todos esses buscadores, você deve ser capaz de encontrar qualquer pacote que desejar para o NixOS.

Conclusão

Usar o NixOS requer um pouco mais de esforço do que outras distribuições. Dito isso, se você deseja desenvolver software, o esforço vale a pena. Você manterá seu sistema principal mais limpo e poderá alternar entre projetos sem criar conflitos incômodos entre os ambientes.

Como reverter a direção de rolagem do Mouse e Touchpads no Windows 10
Mouse e Touchpads não apenas torna a computação mais fácil, mas mais eficiente e menos demorada. Não podemos imaginar uma vida sem esses dispositivos,...
Como alterar o ponteiro do mouse e tamanho do cursor, cor e esquema no Windows 10
O ponteiro do mouse e o cursor no Windows 10 são aspectos muito importantes do sistema operacional. Isso também pode ser dito para outros sistemas ope...
Mecanismos de jogos gratuitos e de código aberto para o desenvolvimento de jogos Linux
Este artigo cobrirá uma lista de mecanismos de jogo gratuitos e de código aberto que podem ser usados ​​para desenvolver jogos 2D e 3D no Linux. Exist...