Size: a a a

2020 September 25

VL

Valerii Leontiev in NixOS
Александр Бантьев
Чтобы понять, как работает, нужно исходники читать :) А на самом деле всё весьма просто -- есть inputs, которые nix скачивает и пинит во flake.lock, и outputs, которые принимают все inputs и выдают аттрсет <чего-угодно> (но чаще всего пакетов)
flake.lock автоматом что ли пишется?
источник

АБ

Александр Бантьев... in NixOS
Valerii Leontiev
flake.lock автоматом что ли пишется?
Да
источник

E

EK in NixOS
Valerii Leontiev
flake.lock автоматом что ли пишется?
Да, после команды, на основе файла flake.nux
источник

АБ

Александр Бантьев... in NixOS
Тебе о нем не нужно думать, просто добавляй в гитовый индекс для "юзверьских" флейков (там, где есть на выходе пакеты) и добавляй в gitignore для "библиотечных" флейков (там, где на выходе только функции). Но даже и это не обязательно, nix обрабатывает все возможные комбинации правильно.
источник

E

EK in NixOS
Valerii Leontiev
flake.lock автоматом что ли пишется?
источник

АБ

Александр Бантьев... in NixOS
Valerii Leontiev
у @balsoft есть репа с примером
Точнее, с его готовым конфигом. если тебе это поможет
Ну там сам flake.nix не очень интересный
источник

E

EK in NixOS
Я смотрел даже стрим от Andrew Tropin и там он пишет бота на питоне + poetry + во флейке конфиг для aws
источник

E

EK in NixOS
Но четкого понимания все равно не пришло, а быть обезьянкой и просто куски кода таскать я не хочу. Цель - разобраться как это делать для разных ситуаций
источник

АБ

Александр Бантьев... in NixOS
{
 # На самом деле некоторые inputs (те, которые указаны во flake registry) можно явно не указывать, но здесь для ясности это сделаем
 inputs.nixpkgs.url = github:nixos/nixpkgs;
 outputs = { self, nixpkgs }: {
   # На самом деле хардкодить x86_64-linux не обязательно, но для наглядности не будем заморачиваться
   defaultPackage.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.poetry2nix.mkPoetryApplication rec {
     src = ./.;
     projectDir = ./.;
     name = "my-python-application";
   };
   # Это тоже не обязательно, по-умолчанию nix develop и так кинет в шелл со всеми зависимостями defaultPackage
   devShell.x86_64-linux = self.defaultPackage.x86_64-linux.dependencyEnv;
 };
}
источник

АБ

Александр Бантьев... in NixOS
А, тебе ещё конфиг для сервера нужен?
источник

E

EK in NixOS
Александр Бантьев
А, тебе ещё конфиг для сервера нужен?
Можно я тебя подзадолбаю сейчас вопросами по этому скрипту?)
источник

АБ

Александр Бантьев... in NixOS
EK
Можно я тебя подзадолбаю сейчас вопросами по этому скрипту?)
Можно канеш
источник

E

EK in NixOS
defaultPackage.x86_64-linux = nixpkgs.poetry2nix.mkPoetryApplication rec {
     src = ./.;
     projectDir = ./.;
     name = "my-python-application";
источник

E

EK in NixOS
Это ты устанавливаешь Poetry?
источник

E

EK in NixOS
можно ли по аналогии ставить любую софтину? например сам питон?
источник

АБ

Александр Бантьев... in NixOS
EK
Это ты устанавливаешь Poetry?
Это я использую встроенный в poetry2nix IFD механизм для того, чтобы "налету" сгенерировать деривацию для твоего приложения (оно должно быть рядом с flake.nix)
источник

АБ

Александр Бантьев... in NixOS
Т.е. outputs.defaultPackage.x86_64-linux -- это уже готовая деривация, которую может собрать скажем nix build
источник

АБ

Александр Бантьев... in NixOS
Сам poetry2nix тебе уже не нужен
источник

E

EK in NixOS
Стало еще непонятнее.
источник

АБ

Александр Бантьев... in NixOS
Могу понятнее переписать, конечно
источник