Size: a a a

2020 September 25

АБ

Александр Бантьев... in NixOS
Может для этого и статья не нужна :)
источник

VL

Valerii Leontiev in NixOS
я не врубил концепт
Ну есть на входе источники
Окей
Чего там в выходе происходит?
Зачем локфайл нужен?
Как вообще происходит интеграция флейков в никсось? в каком месте должен храниться файл?
источник

VL

Valerii Leontiev in NixOS
в общем слишком много вопросов(
источник

E

EK in NixOS
Александр Бантьев
А чего именно хочется добиться?
Хочу понять как работает и как писать
источник

АБ

Александр Бантьев... in NixOS
Valerii Leontiev
я не врубил концепт
Ну есть на входе источники
Окей
Чего там в выходе происходит?
Зачем локфайл нужен?
Как вообще происходит интеграция флейков в никсось? в каком месте должен храниться файл?
Начну с конца

> Как вообще происходит интеграция флейков в никсось? в каком месте должен храниться файл?
1. В nixpkgs экспортируется lib.nixosSystem, который из модулей собирает готовую систему (как обычную деривацию)
2. В формате outputs есть nixosModules и nixosConfigurations. nixosModules -- это аттрсет модулей (как например твой configuration.nix). nixosConfigurations -- это аттрсет готовых конфигураций (результптов работы nixosSystem, ключи -- хостнеймы.
3. nixos-rebuild --flake /path/to/flake#myHostname switch свичнет на outputs.nixosConfigurations.myHostname из /path/to/flake; nixos-rebuild --flake /path/to/flake switch свичнет на outputs.nixosConfigurations.$(hostname) из /path/to/flake; ну и наконец nixos-rebuild switch свичнет на outputs.nixosConfigurations.$(hostname) из /etc/nixos/flake.nix
источник

1

112 in NixOS
Лучше сначала: что есть флейки?
источник

АБ

Александр Бантьев... in NixOS
Valerii Leontiev
я не врубил концепт
Ну есть на входе источники
Окей
Чего там в выходе происходит?
Зачем локфайл нужен?
Как вообще происходит интеграция флейков в никсось? в каком месте должен храниться файл?
> Чего там в выходе происходит?
outputs -- это функция от inputs, которая возращает (почти) произвольный аттрсет. Внутрь разных команд никса зашиты разные стандартные ключи этого аттрсета с форматами (типами) значений, которые ожидаются по этим ключам. К примеру, от defaultPackage ожидается аттрсет, где ключи -- имена платформ, вроде x86_64-linux или powerpc-darwin, а значения -- деривации. В общем пример outputs:
источник

АБ

Александр Бантьев... in NixOS
{ self, nixpkgs }: {
 defaultPackage.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.hello;
}
источник

АБ

Александр Бантьев... in NixOS
> Зачем локфайл нужен?
Локфайл нужен, чтобы зафиксировать версии inputs, которые nix скачал.
источник

АБ

Александр Бантьев... in NixOS
Предположим, у тебя есть
источник

АБ

Александр Бантьев... in NixOS
{
 inputs.nixpkgs.url = "github:nixos/nixpkgs";
 outputs = { self, nixpkgs }: { /* something */ };
}
источник

АБ

Александр Бантьев... in NixOS
Если ты сделаешь nix eval . (т.е. попросишь nix вычислить все outputs и показать их), то nix должен откуда-то взять nixpkgs, чтобы подставить его как аргумент в outputs. В inputs мы говорим nix, что nixpkgs следует брать из github.com/nixos/nixpkgs/master, и поэтому он скачивает самый свежий коммит оттуда. Но если он будет скачивать самый свежий коммит каждый раз, то герметичности не будет (в зависимости от времени меняется выход), поэтому он в flake.lock записывает revision и sha256 того, что он сейчас скачал.ю
источник

АБ

Александр Бантьев... in NixOS
112
Лучше сначала: что есть флейки?
Флейки -- это новый формат для репозиториев с никсовым кодом; Если быть точнее, то флейк -- это git репозиторий (или тарболл), в root которого есть файл flake.nix.
источник

E

EK in NixOS
Вот самое интересное это *something* потому что нифига не понятен синтаксис что туда писать. Сейчас попробую объяснить. Моя задача: есть программа на питоне, которая требует 3 внешние библиотеки. Но питона в системе нет. Я хочу во флейке написать, что мне нужен питон и poetry2nix. А дальше я так понимаю, модулем мне нужно будет описать сервер на котором все это добро будет хранится, чтобы туда просто из гита склонировать и запустить.
источник

АБ

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

АБ

Александр Бантьев... in NixOS
EK
Вот самое интересное это *something* потому что нифига не понятен синтаксис что туда писать. Сейчас попробую объяснить. Моя задача: есть программа на питоне, которая требует 3 внешние библиотеки. Но питона в системе нет. Я хочу во флейке написать, что мне нужен питон и poetry2nix. А дальше я так понимаю, модулем мне нужно будет описать сервер на котором все это добро будет хранится, чтобы туда просто из гита склонировать и запустить.
Чичас дам пример
источник

E

EK in NixOS
И я пытался понять, как мне писать этот файл. Пролазил ВЕСЬ гитхаб (поиском искал файлы flake,nix)
источник

E

EK in NixOS
И общего у них только description
источник

VL

Valerii Leontiev in NixOS
EK
И я пытался понять, как мне писать этот файл. Пролазил ВЕСЬ гитхаб (поиском искал файлы flake,nix)
у @balsoft есть репа с примером
Точнее, с его готовым конфигом. если тебе это поможет
источник

Т

Тима in NixOS
Вчера был где прям их было куча
источник