LINUX.ORG.RU

NixOS 22.05

 ,

NixOS 22.05

2

4

30 мая состоялся очередной выпуск дистрибутива NixOS 22.05. Он стал возможен благодаря усилиям 1611 участников в 46727 коммитах.

В этой версии:

  • появилось 9345 новых пакетов, обновлено 10666 уже имеющихся и удалено 5874 (которые ранее были доступны в выпуске 21.11);
  • в системе управления пакетами nixpkgs добавлено 89 новых модулей, удалено 27;
  • версия Nix 2.8 в этом выпуске теперь используется по-умолчанию (включена экспериментальная функция flakes, а так же функция nix-command);
  • графический установщик на основе Calamares: его активация по умолчанию выполняется при запуске GNOME или Plasma ISO, что позволяет упростить проведение настройки новой системы.

NixOS - дистрибутив Linux, созданный на основе менеджера пакетов Nix. Он использует декларативную конфигурацию (предлагаются два основных направления: текущий стабильный выпуск и unstable после последней разработки). Среди особенностей дистрибутива можно отметить следующее:

  • модель конфигурации декларативной системы: в NixOS вся операционная система (ядро, приложения, системные пакеты, файлы конфигурации и т. д.) создаётся менеджером пакетов Nix из описания на функциональном языке сборки, система настраивается путем написания спецификации функций, которые пользователь хочет видеть на своей машине (в глобальном файле конфигурации);
  • надёжные обновления: поскольку файлы Nix являются очищенными и декларативными, их выполнения всегда будут давать одинаковый результат независимо от того, какие пакеты или файлы конфигурации находятся в системе;
  • атомарные обновления: NixOS имеет транзакционный подход к управлению конфигурацией, вносящий изменения в конфигурацию, такие как атомарные обновления;
  • откат: если после обновления системы новая конфигурация нежелательна, её можно откатить с помощью специальной команды nixos-rebuild switch —rollback, и фактически, каждая версия конфигурации системы автоматически появляется в меню загрузки системы;
  • воспроизводимые системные конфигурации: модель декларативной конфигурации NixOS позволяет легко воспроизвести конфигурацию системы на другом компьютере;
  • исходная бинарная модель: язык сборки Nix, используемый NixOS, указывает, как создавать пакеты из исходного кода;
  • согласованность: менеджер пакетов Nix гарантирует, что работающая система «согласована» с логической спецификацией системы, что означает, что она перекомпилирует все пакеты, которые необходимо перекомпилировать.

Некоторые подробности о дистрибутиве можно посмотреть на странице вики.

Ссылки для скачивания:

Скриншот к новости взят с официального сайта NixOS.

>>> Подробности на официальной странице блога NixOS

★★★

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

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

Видеокарта RTX2060, драйвера какие в extra лежат (515.43.04-7). Я работаю в switchable mode чтобы экономить заряд аккума, но чтобы работала регулировка яркости надо сделать GRUB_CMDLINE_LINUX="amdgpu.backlight=0". Надо ли в никсосе туда же лезть?

dnb ★★★★
()
Ответ на: комментарий от alt-tab-let

Это в сборках гнома и кед (верхние две ссылки под новостью), там установщик с гуем. Ставится всё ок, только нельзя выбрать файловую систему, только ext4.

dnb ★★★★
()
Ответ на: комментарий от pac-man

Не хочу потом снова накатывать арч и жалеть о потраченном времени.

dnb ★★★★
()

И ещё вопрос по демонам, допустим мне не нужен постоянно запущенный докер, я в нём только билды делаю. Мне каждый раз надо менять virtualisation.docker.enable = true|false или я могу делать привычный systemctl start docker? Там же системд внутри.

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

Он по идее и не запускается, пока не начнёшь им пользоваться (socket-activated). Как вариант - делаешь virtualisation.docker.enableOnBoot = false; и потом уже можно при необходимости делать systemctl start docker.

Tsukasa
()

Лол. В общем, тщательнейшим образом прогнал конфиг на виртуалке, вроде невидии дрова стали как надо. Схоронил конфиг, накатил рядом с арчем, подсунул конфиг из виртуалки ииииии…

error: cannot download NVIDIA-Linux-x86_64-510.68.02.run from any mirror

Ну ок, думаю, раз 403, значит мой айпи под санкциями и надо впн включать. У меня их два куплено, один нордвпн - который отсутствует в пакетах (из обсуждения на гитхабе стало ясно что в нем захардкожены пути и с этим ничего не сделать, а жаль, ведь nordlynx круче wireguard в разы), второй mullvad присутствует (nix-env -iA mullvad-vpn), но systemctl start mullvad-daemon говорит что нет такого сервиса. Ну и как это подебить?

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

И как? стоит ли попробовать федоровцу это? чем интересно на практике?

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

Я бы посоветовал использовать американский сервер от freeopenvpn.org.

Достаточно скачать оттуда файл конфига и загрузить его через плазмоид настройки сети (у тебя же KDE?). Какой-то сторонний впн клиент не нужен тогда.

Я через него все блокировки и обхожу.

James_Holden ★★★
()
Последнее исправление: James_Holden (всего исправлений: 1)
Ответ на: комментарий от papin-aziat

Да я успокоился. Санитары капельницу с морковной пюрешечкой поставили и стало тепло и мяхка. И место на дисках реально не нашлось. Так и не купил двухтерабайтник.

R_He_Po6oT ★★★★
()

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

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

Ну на один раз может оно и прокатит, хотя я сомневаюсь что на бесплатном дают нормальную скорость. У меня гном. В общем, я переставил с нуля, накатил mullvad и затем уже всё остальное, сейчас пишу с неё и даже регулировка работает :) Теперь стоит вопрос свежести софта в репозиториях. Телега например 3.6.0, когда уже 3.7.4 есть. И если в Арче я могу поправить одну строчку и пересобрать, то как здесь это делает я совершенно не отстреливаю. Сейчас буду переносить хомяк и меня смущает тот факт, что профиль ФФ у меня от developer edition 102, а здесь до сих пор 101b9. Ну и не понятно как быть с демонами, если мне попеременно надо включать/выключать постгрес, докер, ещё какие-то. Вот пришлось кнопкой вырубать потому что вошел в сеанс вэйленда и зависло намертво. Так бы из tty сделал systemctl restart gdm и норм, а здесь какая-то хрень происходит. Я даже не уверен что оно приемлемо на десктопе на каждый день. А для серверов самое то, тут спору нет.

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

Ты на unstable канале? Или на стабильном релизе?

На unstable все довольно свежее.

systemctl никто не отменял, особенно start stop restart. Просто делай как везде.

Теперь стоит вопрос свежести софта в репозиториях. Телега например 3.6.0, когда уже 3.7.4 есть

Делается проще чем где, это де основная фишка nix.

Посмотри выше по треду, там мой пост со списком пакетов. Там как раз qmmp ставится более новой версии чем в репах - именно то что ты хочешь, посмотри как делается.

Если не понятно написал, могу подробнее объяснить, а то сейчас с телефона не удобно.

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

Я на канале по умолчанию, наверное бета. Но и на unstable версия такая же. Копипастнул какой-то конфиг из вики, поставил найтли, пусть хоть так будет. Самое главное это компилятор под виндоус где-то намутить.

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

Интересно, поставить что ли? что там лучше федоры, а что нет?

кстати, а стабильная версия какой размер обновлений имеет? сколько от версии до версии обновляться будет, а в пределах релиза?

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

Делается проще чем где, это де основная фишка nix.

Ты про телегу? Если она в unsteble->master 3.6, то только ручками самому ковырять и компилять, можно ещё какой-нибудь flatpak если оно там есть

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

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

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

Нужен mingw-w64?

Поставь пакет pkgsCross.mingwW64.buildPackages.gcc

Вроде оно. Я делаю:

$ nix-shell -p pkgsCross.mingwW64.buildPackages.gcc
$ x86_64-w64-mingw32-g++ -v
Используются внутренние спецификации.
COLLECT_GCC=/nix/store/irshi3cs1b774mzmhb1qf22lrwidiz6p-x86_64-w64-mingw32-stage-final-gcc-debug-11.3.0/bin/x86_64-w64-mingw32-g++
COLLECT_LTO_WRAPPER=/nix/store/irshi3cs1b774mzmhb1qf22lrwidiz6p-x86_64-w64-mingw32-stage-final-gcc-debug-11.3.0/libexec/gcc/x86_64-w64-mingw32/11.3.0/lto-wrapper
Целевая архитектура: x86_64-w64-mingw32
Параметры конфигурации: 
Модель многопоточности: mcf
Supported LTO compression algorithms: zlib
gcc версия 11.3.0 (GCC)

Как такое искать.

Из-за невероятного user friendly NixOS эти пакеты напрочь не видны в https://search.nixos.org/packages. Поэтому надо использовать nix repl.

Я ввожу:

$ nix repl

>:l <nixpkgs>
>pkgsCross.mingw

и вот сразу - TAB, чтобы выскочило автодополнение. Увидишь, какие именно mingw варианты есть, дальше pkgsCross.mingwW64.

и поставив точку опять нажимаешь TAB. Выскочит список пакетов внутри mingwW64. И так далее, копаясь можно понять что есть и что надо ставить.

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

Не работает chrome-gnome-shell, без расширений гномом пользоваться невозможно, как и невозможно пользоваться кедами или чем-то другим.

Не знаю насчет гнома, но KDE работает ровно как и везде. Я думаю что и с расширениями гнома проблема элементарно решается.

Ну вот из вики:

Gnome Shell extensions

Gnome Shell extensions can be enabled with enableGnomeExtensions = true. It is a mozilla plugin, therefore it does not work currently with Chromium.

Насколько я понял из этого, надо:

nixpkgs.config = {
    firefox = {
      enableGnomeExtensions = true;
    };
  };

и должно работать в firefox. Возможно, если firefox заменить на chromium будет работать тогда в хромиуме. К сожалению, у меня нету гнома и на своем опыте я сказать не могу.

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

Как её поставить оттуда?

Перейди на канал unstable (при помощи nix-channel –add). Поставь пакет tdesktop.

Если не хочешь всю систему переводить на unstable - то так.

В configuration.nix пишем:

let

unstable-pkgs = import (builtins.fetchTarball {
  name = "nixos-unstable";
  url = "https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz";
  sha256 = "0dy2k4vaghbl46gn1jbaykqgv7c9d6d4wif73qywf5qpq9vsbrz5";
  }) {};

in

... здесь вся остальная борода

environment.systemPackages = with pkgs; [

unstable-pkgs.tdesktop

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

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

Просто,

$ nix-channel --update
$ nixos-rebuild switch

Основная проблема - что sha256 сумма будет протухать, и ее придется менять.

Все это удобнее делается при помощи flake, это как раз нововведение текущего релиза, теперь эта фича доступна штатно, не экспериментально. Но я еще не разобрался как это использовать.

Я просто использую unstable каналы везде, и ставится нормальной версии телега без телодвижений.

Я лично не вижу смысла использовать не unstable на системе, которая гарантированно не ломается при обновлении. Это же не Арч.

Если обновление не встанет или что-то отвалится - просто продолжишь работать на необновленной системе.

James_Holden ★★★
()
Последнее исправление: James_Holden (всего исправлений: 1)
Ответ на: комментарий от dnb
Ну и не понятно как быть с демонами, если мне попеременно надо включать/выключать постгрес, докер, ещё какие-то

Выкинь нахрен докер и используй podman

virtualisation.podman.enable = true;
virtualisation.podman.dockerCompat = true;

Если постгрес не на постоянку, то пихай его тоже в podman

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

Я перешел на unstable, cache.nixos.org очень медленно отдаёт :(

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

podman живёт долго уже. Я сам с докера съехал по твоим же причинам + мне демон не нужен.

podman живёт без демона, есть прозрачная cli замена командам докера (ты точно также будешь писать в консоле «docker команда …»). Ты ничего не потеряешь.

animechaos
()
Ответ на: комментарий от dnb
Кроме самого ценного - времени :)

Да, арч с переходом пакетов на zstd стал круто быстро обновляться. И ломаться (немного троллю, но всё же). zfs и btrfs не спасает.

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

Если ты что-то недосказал в исходном посте, то это не моя проблема.

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

Я имел ввиду время на переобучение новым технологиям.

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

Оказывается да, 10 дней как завезли, что всё равно поздновато.

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

Я просто использую unstable каналы везде, и ставится нормальной версии телега без телодвижений.

Я лично не вижу смысла использовать не unstable на системе, которая гарантированно не ломается при обновлении. Это же не Арч.

Я лично использую stable, но всё что касается десктопа у меня завёрнуто в home-manager, и там есть как stable, так и unstable.

Вообще пересобирать систему на каждое изменение конфига с nixos-rebuild switch не очень, по этому home-manager видится правильным решением.

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

Я больше говорю про всякие конфиги sway, vim, пакеты. Конечно если дзен достигнут, то можно и всё в configuration.nix запихнуть. С другой стороны HM кушать не просит.

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

Да не, не работает оно в ФФ. Возможно с путями что-то. Ещё прикол заметил, ставишь допустим тот же ФФ, а иконки нету. Надо перезапустить гном чтобы появилась. Но и это не всегда работает, в одном пакете иконка так и не появилась))

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

А есть те, кто пользуется этим как единственной системой хотя бы несколько лет подряд? Оно работает так же красиво, как и описано?

Я конечно использую не несколько лет а немного, но - да, так и работает.

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

Ну и плюс само управление системой сложнее даже генты, если делать шаг влево, шаг вправо от банального.

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

Интересно, поставить что ли? что там лучше федоры, а что нет?

Отвечу в стиле многобукаф опять, прошу прощения.

Я бы сказал, что NixOS это анти-линукс, во многом он является противоположностью обычного линукса.

В классическом линуксе (пакетная система, например rpm в федоре, без всяких флатпаков) такой принцип - приложение собирается, подстраиваясь под тот набор компонентов, который установлен в системе на момент запуска сборки. То есть оно должно использовать те библиотеки, которые установлены в системе из репозитория, соответствующие текущему релизу Федоры.

При формировании релиза делается некая база библиотек, на которой и собираются все приложения дальше. Это порождает ряд проблем:

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

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

  3. А следовательно, обновление возможно только путем модификации системы - старый пакет удаляется, новый вкорячивается, и так по одному пакету. Такое обновление закономерно приводит к развалу системы. Любая ошибка в процессе обновления - приводит к сломанной системе.

В NixOS все наоборот - не приложение подстраивается под системный набор библиотек, а библиотеки ставятся те, которые нужны каждому конкретному приложению, независимо друг от друга.

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

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

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

Пока на этом остановлюсь, но это - лишь одна двадцатая из того что можно рассказать о возможностях NixOS.

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

Сохраняет часть памяти под дисковый кеш.

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

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

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

Как тут поднять лимиты?

Это

 security.pam.loginLimits = [{
    domain = "*";   
    type = "soft";  
    item = "nofile";
    value = "1004096";
  }                 
  {                 
  domain = "*";        
  type = "hard";       
  item = "nofile";  
  value = "1004096";                                                                                                        
  }];

не даёт результата.

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