LINUX.ORG.RU

Выпущена NixOS 20.09 «Nightingale»

 ,


1

7

NixOS — это чисто функциональный дистрибутив Linux, который черпает вдохновение из функционального программирования. Он основан на диспетчере пакетов Nixpkgs, что делает конфигурацию системы декларативной, воспроизводимой, атомарной и пр.. NixOS известен как самый современный дистрибутив и входит в тройку лидеров по общему количеству пакетов.

Помимо 7349 новых, 14442 обновленных и 8181 удаленных пакетов, в этом выпуске есть следующие изменения:

Настольные среды:

  • plasma5: 5.17.5 -> 5.18.5
  • kdeApplications: 19.12.3 -> 20.08.1
  • gnome3: 3.34 -> 3.36
  • cinnamon: 4.6
  • NixOS теперь распространяет GNOME ISO

Ядро системы:

  • gcc: 9.2.0 -> 9.3.0
  • glibc: 2.30 -> 2.31
  • linux: по умолчанию по-прежнему 5.4.x, но доступны все поддерживаемые ядра
  • mesa: 19.3.5 -> 20.1.7

Языки программирования и фреймворки:

  • Agda экосистема была сильно переработана
  • PHP 7.4 теперь по умолчанию, PHP 7.2 больше не поддерживается
  • Python 3 теперь по умолчанию использует Python 3.8, Python 3.5 был удален из списка доступных пакетов

Базы данных и мониторинг сервисов:

  • MariaDB обновлен до 10.4, MariaDB Galera до 26.4.
  • Zabbix теперь по умолчанию 5.0

Загрузить NixOS можно по адресу: https://nixos.org/download.html

>>> Подробности

★★

Проверено: Shaman007 ()

Ответ на: комментарий от theNamelessOne

Сложно сказать. Почитай статьи Eelco про флейки (начиная с https://www.tweag.io/posts/2020-05-25-flakes.html/), если они решают твои насущные проблемы – то ничего особо сложного в переходе нет уже сейчас. Если нет – то лучше подождать пока починят пару проблем с nix 3.0pre.

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

Только тем, что развязал руки вебоклёпам, которые пишут фреймворки, которые разваливаются от номера версии питона.

Столкнулся с этим при сборке хромиума, возможно проблема все же в питоне

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

Смысл есть. В новые версии попадают в первую очередь обновления и багфиксы, а в старую они могут вообще не попадать. Смысла фапать на заморозку версий - 0, так делают только в Debian и NixOS. Но NixOS исторически как попытка решения проблем дебиана возник, но видимо часть их унаследовал.

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

Но в самом никсе, как я понимаю, нужда в докере отпадает.

Нет. Это разные инструменты для разных целей.

Там можно накрутить изолированых <..> окружений штатными средствами?

Нельзя.

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

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

Хахахахаха! Охохохох! Уаахахахахахаха! Вот это наивность! Простите.

В лялексовом софте куча библиотек тащатся через dlopen(). И иногда получается так, что если зависимости нет, то вроде всё работает, но иногда может отвалиться. И Nix это никак не решает.

Отличным примером будет libdbusmenu. Если эту либу не ставить, то всё будет тоже работать, но глобальные меню почему-то не пашут.

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

хорошо зделол в общем

Парадигмы разные. Результат тоже. Но твоя поделка тоже неплохая, имеет место быть.

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

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

Сначала покажись, потом перечисли, а то мы заждались уже.

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

А ты всё на ней (NixOS)?

Последние пару лет, да.

И как оно? Какие впечатления? Расскажи бабушке.

Двояко. С одной стороны, для лялекса – очень годно, если за пределы nixpkgs не вылезать. Из минусов, если у какого-то жирного пакета пересобралась одна маленькая зависимость, весь пакет будет стянут заново и обновлён. Поэтому каждое обновление системы в Unstable выливается в сожранные 20-30 гигабайт места, которые надо потом не забыть почистить через nix-collect-garbage.

С другой стороны, если нужен софт, которого нет в nixpkgs, то тут начинаются дикий ад и холокост. Особенно если это софт на электроне. Он в nixpkgs пакуется в бинарном виде вместо сборки из сырцов, потому что собирать софт на электроне через nix – это практически нереальная задача. Другие стандартные штуки тоже часто не работает. Для запуска AppImage нужен враппер, который немного бывает глючным. С нативными играми в Steam тоже бывают проблемы и проще виндовые версии через Proton запускать.

Короче, если ты программист и задрот, то NixOS – твой путь. Если тебе браузер и игрульки, лучше не париться и взять Ubuntu.

Можно выкинуть systemD?

Из контейнера – да. Из системы – нет.

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

без проблем можно держать несколько версий одной либы и не жить без головной боли

Чётко анон выражает мысль. Я даже слегка удивилась на старости лет, что на ЛОРе кто-то что-то понимает.

BaBa_Galya ()
Ответ на: комментарий от quantum-troll

Можно: https://nixos.org/manual/nixos/stable/#ch-containers

Ну ты сам-то это читал?

Warning: Currently, NixOS containers are not perfectly isolated from the host system. This means that a user with root access to the container can do things that affect the host. So you should not give container root access to untrusted users.

NixOS containers – это просто скрипт на пердле, который создаёт папочку в /var/lib/containers, суёт туда систему и дёргает systemd-nspawn.

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

Не, я не про строгую изоляцию, я про разные версии библиотек. Меня именно это интересует.

Тогда да. Локальные окружения через nix shell – вообще офигенная тема. Для разработки на C/C++ дико удобно.

hateyoufeel ★★★★★ ()

Какая же несусветная тупизна - смешивать прог.парадигму и дистрибутив! Не позорьтесь, просто скажите, что больше некуда прикладывать ваши убогие ФП-скилы.

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

софт, которого нет в nixpkgs, то тут начинаются дикий ад и холокост

По этой причине на рабочей машине бабушка отказалась. Но идею пошшупала.

если ты программист и задрот, то NixOS – твой путь

Бабуся всегда была с красными глазами, есть такое… Но путь не её, Идея нормальная, супер даже, реализация так себе. Я считаю, это связано с ограниченностью реализаторов. Надо же думать, что делать с зоопарком, пока не придумали нормального концепта (плюс кровавый бизнес везде хочет калитку для управления).

BaBa_Galya ()
Ответ на: комментарий от matumba

Это ты зря. Раншье бабушка считала обезьянку умнее, а она лдальше своего носа не видит. Жалко бабушке обезьянку.

BaBa_Galya ()
Ответ на: комментарий от hateyoufeel

В NixOS это сломается у всех, потому что сделать dlopen, не добавив зависимость, просто не получится (если, конечно, не захардкодить полный абсолютный путь до /nix/store/HASH-pkgname-version/soname).

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

Можно 1 2, но не нужно. Декларативность systemd отлично сочетается с декларативностью NixOS.

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

Guix – это идейный (и технический) последователь. Там вроде до последнего времени бэкенд с никсом был общий, и формат store по-прежнему совместим.

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

Но в самом никсе, как я понимаю, нужда в докере отпадает.

Нет. Это разные инструменты для разных целей.

Ну некоторые используют докер чисто как пакетный менеджер, чтобы несколько версий софта иметь. Тогда да, Nix заменяет докер (и во многом превосходит). Как менеджер контейнеров – нет.

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

В NixOS это сломается у всех, потому что сделать dlopen, не добавив зависимость, просто не получится

Получится. Смотри как opengl сделан. Другой вопрос, что всякие libdbus таким способом действительно не принято делать.

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

А тебе компьютер нужен для чего-то или для работы?

Ну сабж явно не про второе. Да и вообще…

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

А тебе компьютер нужен для маструбации на циферки версий пакетов, или для работы?

Ты, небось, на Slackware 1.0 сидишь до сих пор?

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

nix можно поставить в ту же убанту и использовать его для отдельных вещей.

Я примерно так и сделал, только guix вместо nix. И теперь на древней убунте (лень обновлять) могу иметь свежие версии каких-нибудь нужных пакетиков.

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

Это так птица называется/переводится, положил пулемёт обратно

Правильно понимаю, что этот дистр умеет хранить и запускать несколько версий ПО, так что они не пересекаются? Это же открывает возможность создания автономным пакетов для переноса на флэшке?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Правильно понимаю, что этот дистр умеет хранить и запускать несколько версий ПО, так что они не пересекаются?

Да. Например: nix-shell -p python36 --run "python3 ./main.py"; nix-shell -p python37 --run "python3 ./main.py"

Это же открывает возможность создания автономным пакетов для переноса на флэшке?

Да. nix-store --export $(nix-store -qR $(nix-build "<nixpkgs>" -A hello)) /mnt/hello.bin и на другой машине nix-store --import /mnt/hello.bin

(в Nix 3.0 можно nix bundle nixpkgs#hello; cp -Lr ./result /mnt и потом просто запускать /mnt/result/bin/hello на другой машине)

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

NixOS реально превносит совершенно новый уровень управления контентом операционки.

Я не хочу тебя обижать, но это предложение напомнило мне тексты, генерируемые GPT-3.

Перечислять достоинства этого дистра будет слишком долго

Ну хотя бы кратко, а то твой пост ничем не отличается от постов «ораторов».

хотелось бы попросить сначала чуть ближе познакомиться с ним

Ты же понимаешь, что на более близкое знакомство уйдет, как минимум (вот я оптимист!), пару дней.

В тексте новости меня, откровенно говоря, смущает 3 вещи:

«чисто функциональный дистрибутив» (What?), перечисление языков программирования: PHP, Python (и все? хе, хе, а я ожидал в списке увидеть Haskell), Agda экосистема - что это за хрень?

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

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

и все

Очевидно нет, я вообще не знаю зачем в новости про PHP и Python упомянули. Из языков хорошо поддерживаются python, haskell, rust, lisp, go, ocaml, очевидно C/C++, наверняка что-то забыл, и очень много языков поддерживаются не так хорошо (в смысле в nixpkgs есть компилятор, но нет инфраструктуры для сборки пакетов с помощью nix).

хотя бы кратко, в чем его основные фишки.

Основная фишка – вся система (кроме «состояния» (/var и /home), которое мейнтейнеры пытаются минимизировать) собирается и управляется через Nix. Из этого следуют преимущества и недостатки.

Начну с недостатков:

  1. По сравнению со всякими убунтами гораздо больше шероховатостей и есть некоторый софт, который запускается с большим трудом (например всякие .deb устанавливать и запускать будет сложно).
  2. Для управления и пользования системой нужно хотя бы на базовом уровне разбираться в Nix
  3. Делать ad-hoc решения сложнее

Преимущества (про которые уже миллион раз перетиралось в предыдущих тредах, ну да ладно)

  1. Легко раскатывать систему на несколько хостов, т.к. она вся описана в конфиге.
  2. Меньше поверхность для бэкапа – конфиг и /var. Можно сделать вот так: https://grahamc.com/blog/erase-your-darlings и тогда бэкап будет проверяться при каждой загрузке
  3. Система хранит предудыщие версии себя (но не состояния) пока ты их руками не удалишь. Значит, что эксперементировать можно гораздо свободнее, т.к. запороть систему до негрузящегося состояния случайно почти невозможно, разве что загрузчик сломать. Если загрузчик работает, то всегда можно загрузиться в предыдущее поколение.
  4. Можно легко смешивать пакеты из нескольких версий nixpkgs, а ещё софт, который мейнтейнеры не опакетили, гораздо натуральнее ставится в систему, т.к. опакечивать его обычно легко.
  5. С точки зрения разработки Nix просто офигенный, т.к. фактически убирает dependency hell (но это преимущество никса, а не NixOS)
  6. Ну и субъективно – управлять системой с помощью NixOS лично мне удобнее и гораздо спокойнее, т.к. я знаю, что если бэкапить стейт, то все ошибки можно легко исправить откатом.
balsoft ★★ ()
Ответ на: комментарий от balsoft

А, забыл, ещё неплохо поддерживается perl, nodejs, ruby, erlang/elixir, всякие coq/agda/idris, ну и условно приемлимо семейство JVM и .NET (но там много боли).

balsoft ★★ ()

Возликуем!

Сижу на 20.09 уже с полмесяца точно, полет нормальный. Теперь надо будет Nix-on-Droid обновить.

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

Guix это пакетный менеджер, который может быть установлен на любой дистрибутив. Дистрибутив линукса Guix работает на своей системе инициализации GNU Shepherd, вместо systemd в NixOS.

В guix используется реализация языка программирования Scheme под названием gnu guile, в отличие от nixpkg, где свой наколеночный DSL.

Однако есть свои проблемы, а конкретно с проприетарным софтом, фирмварями в ядре(используется ядро libre), потому что дистрибутив и система идёт под эгидой GNU. Поставить несвободное ПО можно, но вы не найдёте его в базовом репозитории.

По моему перспективнее будет использовать Guix, но надо понимать для чего вы его используете и применять в соответствующей области. Разработчики заморачиваются на воспроизводимые сборки, уменьшение начального образа и скорости сборки, такое больше подойдёт для разворачивания систем в контролируемой среде, чем для обычного пользователя. Хотя если вы такой же отчаянный, как те, кто устанавливает *bsd на рабочий компьютер, то можете попробовать.

kodx ()

Осилил на минимальном уровне для работы на локалхосте, перешёл с 5 летнего рача. Доволен, жить можно.

Слышал тут пуки на счёт генты, для меня гента больше попаболи вызывала. В генте усилия прилагаются больше к сопровождению, чем к осиливанию, в nixos наоборот, сопровождение околонулевое.

shpinog ★★★ ()

особой любви к функциональному программированию не питаю, но идея зачот

anonymous ()

установил:

services.xserver = {
  ...
  xkbLayout = "us,ru"
  xkbOptions = "grp:alt_sh_toggle,caps:escape"
  ...
};

капс работает правильно, раскладка не переключается. Что я делаю не так?

ЗЫ пользую startx

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

Что я делаю не так?

services.xserver.xkbOptions = "grp:alt_shift_toggle,grp_led:scroll,caps:escape";
ddidwyll ★★★ ()
Ответ на: комментарий от anti_win

Если версия меняется просто так, то да. Если же при этом в код ещё и изменения добавляют, то нет.

Версия пакетов в дистрибутиве как минимум отображает, насколько дистрибутив находится в актуальном состоянии и как хорошо за ним следят. В Debian, например, всё очень плохо, и это сразу видно по версиям софта.

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.