4

我正在使用带有 XMonad 的 NixOS 作为窗口管理器,它是通过configurations.nix 启用的。这工作正常。

启动后,初始登录是通过 NixOS 登录 gui 完成的。

例如,在 Debian 系统上,systemd 可以配置为仅引导到终端,而不是直接引导到桌面环境。可以设置一个.xinit文件,然后启动所选的窗口管理器或桌面环境,而无需使用任何显示管理器(如 lightdm、kdm ...)。然后通过调用startx.

  1. 如何在 Nix 中完成所描述的效果?我想有一种声明方式可以做到这一点。
  2. 另一个与此部分相关的问题是:在更改了configurations.nix 中的xserver 设置(例如在services.xserver.synaptics 中)并通过重建nixos-rebuild switch/test后,我需要做什么才能使它们生效?
4

2 回答 2

1

这些是 2 个独立的问题,因此我相信您最好将它们分成 2 个 StackOverflow 问题(现在要回答其中一个问题要困难得多)。那说:

  1. AFAIK,构建 NixOS 的人不知道在 systemd 中执行此操作的方法。如果你知道这种方法,相信有兴趣了解一下吧

  2. 我想你想要:

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

    注意:这将杀死任何打开的 X 会话!(我想这可能是它没有在nixos-rebuild 开关上自动完成的原因......)

    顺便说一句,您可能已经注意到,在nixos-rebuild switch之后,会显示一条消息,例如:“display-manager.service is not restarted”。这就是让我在自己需要的时候找到这个问题的答案的原因。

于 2016-07-21T19:54:16.423 回答
0

一种方法是启用startx它将被视为显示管理器

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

完成此操作的另一种方法是通过从 TTY 登录提示符自动登录来绕过显示管理器。NixOS 默认显示管理器是lightdm,您可以通过在配置中添加以下行来实现:

lightdm = {
  enable = true;
  autoLogin.enable = true;
  autoLogin.user = "username";
};
于 2020-07-03T16:05:07.373 回答