Flakes/ru: Difference between revisions
Created page with "== Установка пакетов с помощью `nix-profile` ==" |
Created page with "=== Входная схема ===" |
||
(30 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<languages /> | <languages /> | ||
'''Nix flakes''' это [https://nixos.org/manual/nix/stable/contributing/experimental-Features.html экспериментальная особенность] которая была представлена с Nix 2.4 ([https://nixos.org/manual/nix/unstable/release-notes/rl-2.4.html см. Примечания к выпуску]). | |||
'''Nix flakes''' | |||
< | <span id="Introduction"></span> | ||
==== | ==== Введение ==== | ||
Nix flakes обеспечивают единую структуру для Nix-проектов, фиксируют версии зависимостей в лок-файле и делают более удобным написание воспроизводимых Nix-выражений. | |||
Nix flakes | |||
* [https://nixos.org/manual/nix/unstable/command-ref/new-cli/nix3-flake.html#description flake] это файловая структура, корневая директория которой содержит спецификацию Nix в файле <code>flake.nix</code>. | |||
* | |||
* Содержимое файла <code>flake.nix</code> следует единой схеме наименования для объявления пакетов и их зависимостей на языке Nix. | |||
* | |||
Флейки вводят [https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-references синтаксис, похожий на URL] для указания удалённых источников. | |||
* Чтобы упростить длинный синтаксис URL с помощью более коротких названий, [https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-registry.html флейки используют реестр] символических идентификаторов. | |||
* | |||
* Флейки также позволяют фиксировать ссылки и версии, которые затем могут быть запрошены и обновлены программно. | |||
* | |||
[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix.html Экспериментальный интерфейс командной строки] принимает ссылки на флейки для выражений, которые создают, запускают и развёртывают пакеты. | |||
< | <span id="Enable_flakes_temporarily"></span> | ||
==== | ==== Временно включить поддержку Flakes ==== | ||
При использовании любой команды <code>nix</code> добавьте следующие параметры командной строки: | |||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
--experimental-features 'nix-command flakes' | --experimental-features 'nix-command flakes' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
< | <span id="Enable_flakes_permanently_in_NixOS"></span> | ||
==== | ====Включить flakes на постоянной основе в NixOS==== | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 59: | Line 38: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
< | <span id="Other_Distros,_with_Home-Manager"></span> | ||
===== | ===== В других Дистрибутивах, с Home-Manager ===== | ||
Добавьте следующее в свою конфигурацию Home-Manager: | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 71: | Line 47: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
< | <span id="Other_Distros,_without_Home-Manager"></span> | ||
===== | =====Другие Дистрибутивы, без Home-Manager===== | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 79: | Line 54: | ||
</div> | </div> | ||
Добавьте следующее в <code>~/.config/nix/nix.conf</code> или <code>/etc/nix/nix.conf</code>: | |||
<syntaxHighlight lang=text> | <syntaxHighlight lang=text> | ||
Line 87: | Line 60: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
< | <span id="Basic_Usage_of_Flake"></span> | ||
=== | === Основное Использование Flake === | ||
Прежде чем выполнять какие-либо команды nix на этом этапе, обратите внимание на два предупреждения ниже: одно для шифрования, другое для git. | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 103: | Line 73: | ||
</div> | </div> | ||
< | <span id="Git_WARNING"></span> | ||
====Git | ==== Предупреждение Git ==== | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 119: | Line 88: | ||
</div> | </div> | ||
< | <span id="Generate_flake.nix_file"></span> | ||
==== | ====Создание файла flake.nix==== | ||
Чтобы начать базовое использование Flakes, выполните команду flake в каталоге проекта: | |||
<syntaxHighlight lang=text> | <syntaxHighlight lang=text> | ||
Line 143: | Line 109: | ||
</div> | </div> | ||
* <code>description</code> это строка описывающая flake. | |||
* <code>description</code> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 159: | Line 123: | ||
</div> | </div> | ||
< | <span id="Input_schema"></span> | ||
=== | === Входная схема === | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 223: | Line 186: | ||
</div> | </div> | ||
В которой: | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 295: | Line 256: | ||
</div> | </div> | ||
< | <span id="nix_run"></span> | ||
==== nix run ==== | ==== `nix run` ==== | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 406: | Line 366: | ||
== Установка пакетов с помощью `nix-profile` == | == Установка пакетов с помощью `nix-profile` == | ||
[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-profile-install.html <code>nix profile install</code> в документации] | |||
[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-profile-install.html <code>nix profile install</code> | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 537: | Line 495: | ||
</div> | </div> | ||
Допустим, в вашем проекте есть файл <code>shell.nix</code>, который выглядит следующим образом: | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 652: | Line 608: | ||
</div> | </div> | ||
< | <span id="Importing_packages_from_multiple_nixpkgs_branches"></span> | ||
== | == Импорт пакетов из нескольких веток nixpkgs == | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> |