LINUX.ORG.RU

Фичи NixOS

 


1

4

Кто пользует никсос, расскажите что и как. В первую очередь, насколько много софта, конфиг которого перенесли в единый конфиг никсос. Это только конфиги того, что из коробки идет в дистре, или то, что из реп ставишь тоже в общий конфиг идет? И каким образом реализованы откаты на предыдущие версии? Там вроде кеша старых пакетов остается или он их в процессе докачивает из реп? И как в общем дистр для десктопа? Не понятно, он ролинг или поинт релиз? Ваше общее впечатление?
Смотрю на него как на более продвинутую замену дебиана.



Последнее исправление: Larawey (всего исправлений: 1)

В первую очередь, насколько много софта, конфиг которого перенесли в единый конфиг никсос.

По-моему, ты преувеличиваешь важность использования единого конфига для конфигурации софта. Но практически для всего софта, для которого в традиционных линуксах бывает нужно править конфиги в /etc, в никсоси есть опции. На крайний случай есть опция environment.etc, позволяющая в едином конфиге описать произвольные файлы, которые должны быть помещены в /etc.

И каким образом реализованы откаты на предыдущие версии?

Ну по сути вся система набор симлинков, симлинки на системные директории верхнего уровня при загрузке копируются в тмпфс из установленного «пакета» «system», являющегося вершиной графа зависимостей. Любое изменение системы (сборка с изменившимся конфигом и/или множеством выражений для сборки) порождает новый экземпляр пакета «system». Если выбираешь предыдущий снапшот в загрузчике - оно просто в начале загрузки скопирует симлинки из «system» этого снапшота и все будет работать как раньше.

Там вроде кеша старых пакетов остается

Да, все старые пакеты остаются, пока не выполнишь сборку мусора. После того как выполнишь - на предыдущий снапшот переключиться уже не сможешь.

Не понятно, он ролинг или поинт релиз?

Он не очень вписывается в эту дихотомию. Выражения для сборки пакетов и всей системы лежат в гите, там есть нумерованные «стабильные» ветки, но можно чекнуть мастер и собрать систему с него на свой страх и риск. И переключение с одной ветки на другую отличается от простого обновления только количеством пакетов, которые будут установлены (на самом деле возможно такое, что конкретный конфиг с одной ветки собирается, а с другой - нет, но это редко).

shatsky ★★
()
Ответ на: комментарий от anonymous

будете потом резать дург друга в подворотнях и зариновые атаки устраивать.

Тут могла быть известная лоровская шутка, но чтобы не создавать себе потенциальных проблем, воздержусь.

anonymous
()
Ответ на: NixOS от FaraS

Есть 4pda, telegram и почта.

Есть vk, tinder, pornhub

anonymous
()
Ответ на: комментарий от t184256

Иногда лучше жевать, чем говорить.

Ты получаешь пакеты в каком виде? Вот ты записал в configuration.nix список нужных программ, и что же ты получаешь? У тебя они собираются на локальной компьютере или прилетают уже скомпилированные?

Ну так лучше жуй, чем говорить.

anonymous
()
Ответ на: комментарий от eternal_sorrow

А есть ли в nixos аналог глобальных USE-флагов? CFLAGS?

Не такой как ты хочешь но да есть. Тут если что вообще целый ЯП вместо make.conf!!!

init_6 ★★★★★
()
Ответ на: комментарий от anonymous

Это бинарный дистрибутив.

До тех пор пока пакеты не переопределены локально.

init_6 ★★★★★
()
Ответ на: комментарий от anonymous

У тебя они собираются на локальной компьютере или прилетают уже скомпилированные?

Да. В моем случае ещё и на не локальном собираются, смесь трех вариантов. И зависит это от того, есть такие их варианты в бинарном кеше или нет.

Ещё огрызается =)

t184256 ★★★★★
()
Ответ на: комментарий от init_6

я просто прилично порыскал по документации nix и пришёл к выводу, что это либо невозможно либо делается с большими костылями

eternal_sorrow ★★★★★
()
Ответ на: комментарий от anonymous

а вообще, разрабам nixos прикрутить бы всё это к снапшотам btrfs, чтобы оверхед был по минимуму

И стабильность тоже — по минимуму. ☺

Ну не по минимуму, тут половина на Btrfs жалуется, вторая половина хвалит, видимо, от кармы зависит.

mord0d ★★★★★
()
Ответ на: комментарий от balsoft

Критическое отличие от снапшотов в том, что все части системы хранятся отдельно, поэтому апдейты инкрементальные и можно откатывать по частям.

Как это устроено в вопросе зависимостей? Все зависимости пакета идут вместе с пакетом? А если нужно установить именно либу, она будет отдельной либой вне зависимости от того, сколько ещё таких распихано по пакетам?

Я бы почитал официальные доки, но чтобы найти ответ на единственный вопрос, придётся перелопатить немало документации, на что уйдёт время.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Все зависимости пакета идут вместе с пакетом?

Нет.

Все пакеты (и приложения, и либы, и даже конфиги) ставятся каждый в свой «префикс», и находят они друг друга по вшитым в RPATH/PATH/etc (а иногда и прямо в бинарник) указателям на префиксы зависимостей.

balsoft ★★
()
Ответ на: комментарий от eternal_sorrow

Это возможно, но зачем? (в смысле мне правда интересно зачем могут быть нужны глобальные USE-флаги в реалиях современного железа)

balsoft ★★
()
Ответ на: комментарий от balsoft

https://github.com/NixOS/nixpkgs/issues/12877 , https://github.com/NixOS/nixpkgs/issues/36229#issuecomment-370180008

Например, для сборки headless системы без кучи лишних зависимостей. Насколько я понял, пока что ортодоксы ноют «это же гидре придется тестировать собираемость мильена возможных сочетаний», вариант пометить некоторые флаги как не подлежащие проверке пока что не нашел должного отклика.

shatsky ★★
()
Ответ на: комментарий от shatsky

Например, для сборки headless системы без кучи лишних зависимостей. Насколько я понял, пока что ортодоксы ноют «это же гидре придется тестировать собираемость мильена возможных сочетаний»

Че-т не совсем понял. Типа «environment.noXlibs = true; — это норм, но на этом все»? Ну так не собирайте их на гидре, делов-то.

t184256 ★★★★★
()
Ответ на: комментарий от balsoft

Все пакеты (и приложения, и либы, и даже конфиги) ставятся каждый в свой «префикс», и находят они друг друга по вшитым в RPATH/PATH/etc (а иногда и прямо в бинарник) указателям на префиксы зависимостей.

Довольно хрупкая конструкция…

mord0d ★★★★★
()
Ответ на: NixOS от FaraS

Пиши мне в личку, поговорим.

anonymous
()
Ответ на: NixOS от FaraS

Тебе тоже приглянулся этот крепкий мужичок?

Pinkbyte

anonymous
()
Ответ на: комментарий от eternal_sorrow

Как мне казалось, USE-флаги изначально были нужны для сборки оптимизированных по хранилищу, памяти и скорости систем. Когда тредриппер стоит дешевле, чем новый смартфон, а память можно бесплатно найти на помойке, все эти оптимизации становятся не очень актуальными.

Впрочем, nix позволяет их делать с помощью рекурсивных оверрайдов, но не так удобно, как в дженте.

balsoft ★★
()
Ответ на: комментарий от mord0d

Что именно хрупкого? Если в программе нет лютого хардкода FHS (а лютый хардкод FHS плохо даже в традиционных дистрах), то обычно всё работает.

balsoft ★★
()
Ответ на: комментарий от balsoft

Ого, тредтрипер 3999ХХХ дешевле чем новый смартфон! Память на помойках! На каких помойках я смогу всё это найти?

Я вот думал NIX OS попробовать, но что-то меня рассказы о длинных и витиеватых конфигах отпугнули колличеством времени, которое надо убить на это.

OpenMind ★★★★
()
Ответ на: комментарий от eternal_sorrow

Я задал вопрос, для чего тебе оверрайды.

Если бы ты ответил, что (например) хочешь выкинуть какую-нибудь pulseaudio из системы, то это nix позволяет с легкостью, но я не очень понимаю, зачем.

Флаги к gcc передавать сложнее, но тоже возможно, и я опять не очень понимаю, зачем.

balsoft ★★
()

Посмотрел на NixOS в виртуалке, наслушавшись что он лучше генту и вообще идеален для миграции с неё. Лично мне не зашло. Причина в том, что это дистрибутив для программиста, а я не он. Декларативное описание всего, и даже неба, и даже Аллаха, в одном файле и язык программирования вместо конфига слишком хардкорно для меня. Тот функционал, который мне нравятся в Генту, а именно аналог юз флагов, реализуется в NixOS как то слишком сложно для меня. Понравились точки восстановления, действительно удобно, надёжно и радикально. Но это единственный плюс который я увидел. Остальное... странное. Повторюсь, я не программист, для меня это дистрибутив с нечеловеческим лицом. Да, ниасилил. Останусь на Calculate. Ругать и говорить что NixOS «нинужен» не буду. Кому то нужен, но не мне, я явно не его целевая аудитория.

Jameson ★★★★★
()
Ответ на: комментарий от balsoft

а позволяет ли nixos выкинуть cups из десктопной системы? да ещё и сделать это одной простой строчкой в конфиге?

или например после установки видеокарты правка одной строчки в конфиге и обновление системы и вот все нужные драйвера стоят

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

я просто прилично порыскал по документации nix и пришёл к выводу, что это либо невозможно либо делается с большими костылями

Твою в качель! Там целый язык мать его программирования!!! И в нём ты волен делать что и как угодно в рамках синтаксиса этого языка.

init_6 ★★★★★
()
Ответ на: комментарий от eternal_sorrow

По-умолчанию cups и не будет в системе, для его включения необходимо добавить строку в конфиг.

Если ты хочешь сделать так, чтобы все приложения собирались без cups, то это можно сделать:

nixpkgs.overlays = [ (self: super: { cups = null; }) ];

Но придется собирать всё на своей машине и не факт, что все приложения соберутся успешно.

balsoft ★★
()
Последнее исправление: balsoft (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

а позволяет ли nixos выкинуть cups из десктопной системы? да ещё и сделать это одной простой строчкой в конфиге?

services.printing.enable = false;

или например после установки видеокарты правка одной строчки в конфиге и обновление системы и вот все нужные драйвера стоят

Да сменив services.xserver.videoDrivers и если твоё оборудование не требует специфичного конфига иксов.

init_6 ★★★★★
()
Ответ на: комментарий от eternal_sorrow

или например после установки видеокарты правка одной строчки в конфиге и обновление системы и вот все нужные драйвера стоят

Не скажу за все видеокарты, но по идее nixos-generate-config автоматически генерирует hardware-configuration.nix в котором есть драйвера, необходимые для работы системы.

balsoft ★★
()
Ответ на: комментарий от init_6

Твою в качель! Там целый язык мать его программирования!!! И в нём ты волен делать что и как угодно в рамках синтаксиса этого языка.

Ну спасибо. А я не знал. А ещё я могу форкнуть например debian. Там тоже

целый язык мать его программирования!!! И в нём ты волен делать что и как угодно в рамках синтаксиса этого языка.

Например запилить sourсe-based дистрибутив, в котором все пакеты ставятся через apt source и компилируются. Прикрутить туда через какие нибудь костыли аналог USE и CFLAGS… но зачем? Есть gentoo.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Ты не поверишь но оба. Перечитай о чем тебе написал [user]balsoft[/user].

init_6 ★★★★★
()
Ответ на: комментарий от eternal_sorrow

В зависимости от того, что именно ты хочешь добиться. Если ты хочешь, что сервис cups не был запущен, то первое. Если ты хочешь, чтобы пакеты собирались без cups как зависимости, то второе.

balsoft ★★
()
Ответ на: комментарий от balsoft

Но придется собирать всё на своей машине

Вообще не проблема.

и не факт, что все приложения соберутся успешно

ну охренеть теперь

eternal_sorrow ★★★★★
()
Ответ на: комментарий от balsoft

Если ты хочешь, что сервис cups не был запущен

А, вот оно что. Нет уж, спасибо. Таких USE’ов я и в ubuntu наделаю сколько угодно.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Ну да, тоже так подумал. А зачем мне весь этот цирк, когда в обычной системе, тоже самое делается без выкрутасов.

anonymous
()
Ответ на: комментарий от balsoft

такой тредтрипер, что от него одно название. 3600 райзер из той же ценовой категории будет уже быстрее. Да и как-то нечестно сравнивать антикварный тредтрипер и современный смартфон с магазина буржуйской категории.

OpenMind ★★★★
()
Ответ на: комментарий от balsoft

то обычно всё работает

В том-то и дело, что обычно. Не всегда. И это не проблема NixOS или всех дистрибутивов Linux, а UNIX-like вцелом. И всё упирается в libc, который хардкодится.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

libc в Nix ничем не отличается от остальных библиотек. Каждое приложение может запускаться со своей собственной версией libc.

balsoft ★★
()
Ответ на: комментарий от eternal_sorrow

Ты видимо пропускаешь 50% слов при чтении. Сочуствую.

balsoft ★★
()
Ответ на: комментарий от eternal_sorrow

и не факт, что все приложения соберутся успешно

ну охренеть теперь

Ты не поверишь, но у тебя и в дженте никто не гарантирует, что все приложения соберутся со всеми возможными USE-флагами.

balsoft ★★
()
Ответ на: комментарий от balsoft

Каждое приложение может запускаться со своей собственной версией libc.

Это я понял, но оно не может быть не прибито к хэшу-префиксу (как оно там называется) с либой, потому если этот префикс будет сломан (переименован/перенесён/whatever) или удалён, то будет то же самое, не? В рантайме-то всё равно не получится переключить libc, оно захардкожено. Или я чего-то не знаю?

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Это я понял, но оно не может быть не прибито к хэшу-префиксу (как оно там называется) с либой, потому если этот префикс будет сломан (переименован/перенесён/whatever) или удалён, то будет то же самое, не?

Вообще не понял сути предложения. Что «оно» (но оно не может быть не прибито…)? Что «то же самое»?

Отвечу на часть, которую удалось распарсить:

Nix считает, что содержимое «префиксов» не будет меняться после первой сборки, и если ты их руками не будешь корежить, то и «сломаться/перенестись/whatever» сами по себе они не смогут.

В рантайме-то всё равно не получится переключить libc, оно захардкожено

В рантайме приложения? Нет, однозначно не получится, по крайней мере без серьезных таких костылей. Как ты это себе вообще представляешь? Оффсеты вызываемых функций из библиотек являются частью состояния приложения, без изменения этого состояния подменить в рантайме библиотеку не получится.

В рантайме системы – вполне, ну разве что у init версию libc поменять не получится по причине, описанной выше. В случае с nix для этого придется пересобрать (ну или скачать) версии приложений, слинкованных к новой libc, затем убить старые версии и запустить новые.

balsoft ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.