LINUX.ORG.RU

Лёгкий тупняк по NixOS

 ,


0

1

Решил взглянуть на сего милого зверька. Установил буквально только что по инструкции с офф. сайта. Просто хотел уточнить следующее:

  • Конфиг системы может браться только из /etc/nixos/configuration.nix? Насколько я вижу, (почти) все файлы в /etc - это сим. линки на /etc/static/…, которая в свою очередь является ссылкой на /nix/store/…/etc/… Насколько я понял, в системе все это «на ходу» генерируется из /etc/nixos/configuration.nix (кстати, как и на каком этапе?).
  • Не вполне понимаю часть boot в configuration.nix. Я понимаю, как оно работает с systemd-boot (наверное). Для GrUB был написан какой-то свой сервис для systemd?
  • Я правильно понимаю, что при networking.useDHCP = false; выполняется systemctl disable dhcp…service?
  • Что делает sound.enable?
  • Configuration.nix ответственнен только за создание пользователей?
  • Что такое {config, pkgs, …} в конфиге?
  • Как работает environment.systemPackages? Да и nix в целом, на самом деле. Через минуту 2е февраля, анг. текст уже не воспринимается. Хотелось бы статью про него на русском. Чуть более глубокую чем «там все просто в кучу накинуто, не парься, пакеты ставь такой командой…».
  • Возможно глупый вопрос, но почему fstrim включается через services.fstrim.enable, а не через условный services.timers…enable? В конце концов, под xorg была выделена отдельная категория.
  • Разъясните про часть с Some programs need SUID wrappers... Что там, собственно, происходит?
  • networking.firewall использует iptables? Что если я захочу заменить iptables на что-то другое?
  • Немного не понял, что твориться с /usr. Софт нужно патчить, чтобы он искал нужные файлы через /usr/bin/env? (кстати, он для всех пользователей один, верно?)
  • Не завелся XOrg. ЧТЯДНТ? Судя по логу, sddm даже не запускался, хотя в конфиге активирован. (.config/startkderc поставил значение systemd-boot в true, не помогло)
  • hardware-configuration.nix. На основе этих опций генерируется /etc/fstab. Параметры ядра надо указывать там же? Что делает hardware.cpu.amd.updateMicrocode? (имеется ввиду «на какой стадии оно грузиться?»)

прочитай этот свой поток сознания, подумай, запиши на листочке, потом иди в гугл, не поймешь – возвращайся.

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

Справедливо. Однако, на это все надо время, которое я могу посвятить другому досугу. Если мне ничего не ответят, то я сделаю это. Когда появится время. Знать бы когда оно появится…

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

почитай книгу лучше, больше пользы будет.

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

Потому, что если даже не пытаться думать и изучать новое и интересное

Так изучай. Возьми сначала nix pills, потом nix manual и nixpkgs manual.

theNamelessOne ★★★★★
()

Конфиг системы может браться только из /etc/nixos/configuration.nix?

Если сильно хочется, то может не только оттуда.

Не вполне понимаю часть boot в configuration.nix. Я понимаю, как оно работает с systemd-boot (наверное). Для GrUB был написан какой-то свой сервис для systemd?

На uefi по дефолту используется systemd-boot, grub там не участвует вообще никак.

Я правильно понимаю, что при networking.useDHCP = false; выполняется systemctl disable dhcp…service?

Нет.

Что делает sound.enable?

Какую-то хуйню. Тебе скорее всего нужен hardware.pulseaudio.enable (который в том числе включает sound.enable).

Configuration.nix ответственнен только за создание пользователей?

За всё. То, чего там нет, вероятнее всего проёбётся при следующем sudo nixos-rebuild switch или при перезагрузке. Конкретно пользователей по-умолчанию оно не удаляет, но это тоже можно (users.mutableUsers = false).

Что такое {config, pkgs, …} в конфиге?

Аргументы функции. Советую пройти туториал по языку: https://nixcloud.io/tour/?id=1

Как работает environment.systemPackages?

Всё, что ты туда добавляешь, линкуется в /run/current-system/sw.

Возможно глупый вопрос, но почему fstrim включается через services.fstrim.enable, а не через условный services.timers…enable? В конце концов, под xorg была выделена отдельная категория.

Так исторически сложилось.

Разъясните про часть с Some programs need SUID wrappers… Что там, собственно, происходит?

В /nix/store не может быть суидных файлов, поэтому создаются врапперы в /run/wrappers/bin, которые запускают нужные бинарники.

networking.firewall использует iptables? Что если я захочу заменить iptables на что-то другое?

Выключаешь networking.firewall и пользуешь что нравится.

Немного не понял, что твориться с /usr. Софт нужно патчить, чтобы он искал нужные файлы через /usr/bin/env? (кстати, он для всех пользователей один, верно?)

Ничего не творится, там ничего нет.

$ tree /usr
/usr
└── bin
    └── env -> /nix/store/vizjhz04x6xl57x2vrpqa52j8q6rkjfh-coreutils-9.0/bin/env

1 directory, 1 file

То что в nixpkgs уже всё пропатчили.

Не завелся XOrg. ЧТЯДНТ?

Без полного конфига с логами тебе никто не поможет, а УМВР.

hardware-configuration.nix. На основе этих опций генерируется /etc/fstab. Параметры ядра надо указывать там же? Что делает hardware.cpu.amd.updateMicrocode? (имеется ввиду «на какой стадии оно грузиться?»)

Прочитай что написано в коменте вверху файла.

Советую посмотреть видео из оп поста, может что-то понятнее станет: https://discourse.nixos.org/t/half-a-presentation-i-had-in-my-company-about-nixos/16467

anonymous
()

Параметры ядра надо указывать там же?

Тот файл трогать не нужно, трогай другой. Тебе нужен boot.kernelParams: https://search.nixos.org/options?channel=unstable&show=boot.kernelParams&from=0&size=50&sort=relevance&type=packages&query=boot.kernelParams

Что делает hardware.cpu.amd.updateMicrocode?

Тыкай Declared in для опции: https://search.nixos.org/options?channel=unstable&show=hardware.cpu.amd.updateMicrocode&from=0&size=50&sort=relevance&type=packages&query=hardware.cpu.amd.updateMicrocode

anonymous
()

Что такое {config, pkgs, …} в конфиге?

Объявление функции, которая принимает произвольное число агрументов из которых config и pkgs — обязательные.

https://nixos.org/manual/nix/stable/expressions/language-constructs.html

BceM_IIpuBeT ★★☆☆☆
()
Последнее исправление: BceM_IIpuBeT (всего исправлений: 3)

Как работает environment.systemPackages? Да и nix в целом, на самом деле

Читай доки. https://nixos.org/learn.html Только на англицком, но он простой.

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

Тебе скорее всего нужен hardware.pulseaudio.enable (который в том числе включает sound.enable).

Можно ещё вместо пульсы посмотреть на модный-молодёжный services.pipewire (у меня полгода назад завёлся сразу, каких-то отличий в работе не заметил, но у меня от звуковой подсистемы особых хотелок и нет).

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

который в том числе включает sound.enable

Что кстати нафиг не нужно на самом деле

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