NixOS: загрузиться в терминал

Я использую NixOS с XMonad в качестве оконного менеджера, который был включен через файл configurations.nix. Это прекрасно работает.

После загрузки первоначальный вход в систему выполняется через графический интерфейс входа NixOS.

Например, в системе Debian systemd можно настроить для загрузки только в терминал, а не напрямую в среду рабочего стола. Затем можно настроить файл .xinit, чтобы запустить выбранный оконный менеджер или среду рабочего стола без использования какого-либо диспетчера отображения (например, lightdm, kdm...). Затем он запускается вызовом startx.

  1. Как описанный эффект будет реализован в Nix? Я думаю, есть декларативный способ сделать это.
  2. Другой вопрос, частично связанный с этим: после изменения настроек xserver в configurations.nix (например, в services.xserver.synaptics) и пересборки через nixos-rebuild switch/test, что мне нужно сделать, чтобы они вступили в силу?

person Anton Harald    schedule 17.07.2016    source источник
comment
Голосование за переход на привилегированный пользователь. Там тебе, наверное, лучше. :)   -  person Siguza    schedule 17.07.2016


Ответы (2)


Это два отдельных вопроса, поэтому я считаю, что вам было бы гораздо лучше разделить их на 2 вопроса StackOverflow (сейчас гораздо сложнее ответить, например, только на один из них). Это сказало:

  1. Насколько я знаю, люди, создающие NixOS, не знают, как это сделать в systemd. Если вы знаете о таком методе, я полагаю, что может быть интересно узнать о нем!

  2. Я полагаю, вы хотите:

    $ systemctl start display-manager.service   # CAUTION: see NOTE below!!!
    

    ПРИМЕЧАНИЕ: это уничтожит любую открытую сессию X! (Я предполагаю, что это может быть причиной того, что это не выполняется автоматически на переключателе nixos-rebuild...)

    Кстати, вы могли заметить, что после переключения nixos-rebuild появляется сообщение, что-то вроде: "display-manager.service не перезапущен". Вот что побудило меня найти ответ на этот вопрос, когда он мне самому понадобился.

person akavel    schedule 21.07.2016
comment
systemctl start display-manager.service → Суть вопроса в том, чтобы убрать диспетчер отображения. Вот для чего предназначен startx: способ запустить X на текущей консоли, используя текущий сеанс входа в систему. - person phg; 09.02.2017

Один из способов сделать это — включить startx, , который будет рассматриваться как диспетчер отображения:

services.xserver.displayManager.startx.enable = true;

Другой способ сделать это — обойти диспетчер отображения, автоматически войдя в систему из приглашения входа в систему TTY. Диспетчер отображения NixOS по умолчанию lightdm, вы делаете это, добавляя следующие строки в свою конфигурацию:

lightdm = {
  enable = true;
  autoLogin.enable = true;
  autoLogin.user = "username";
};
person nunop    schedule 03.07.2020