From 7239ddf173f547e3659e2923e7a7f029d639e1df Mon Sep 17 00:00:00 2001 From: figsoda Date: Sun, 22 Aug 2021 13:44:29 -0400 Subject: [PATCH] nixos/sx: init --- .../from_md/release-notes/rl-2111.section.xml | 10 ++++- .../manual/release-notes/rl-2111.section.md | 2 + nixos/modules/module-list.nix | 1 + .../services/x11/display-managers/sx.nix | 37 +++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 nixos/modules/services/x11/display-managers/sx.nix diff --git a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml index a138d4c8780c..b422c3cf058b 100644 --- a/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml +++ b/nixos/doc/manual/from_md/release-notes/rl-2111.section.xml @@ -182,7 +182,7 @@ - + fluidd, a @@ -191,6 +191,14 @@ fluidd. + + + sx, + a simple alternative to both xinit and startx for starting a + Xorg server. Available as + services.xserver.displayManager.sx + +
diff --git a/nixos/doc/manual/release-notes/rl-2111.section.md b/nixos/doc/manual/release-notes/rl-2111.section.md index 35d65dc43cf3..548008fe24bc 100644 --- a/nixos/doc/manual/release-notes/rl-2111.section.md +++ b/nixos/doc/manual/release-notes/rl-2111.section.md @@ -58,6 +58,8 @@ subsonic-compatible api. Available as [navidrome](#opt-services.navidrome.enable - [fluidd](https://docs.fluidd.xyz/), a Klipper web interface for managing 3d printers using moonraker. Available as [fluidd](#opt-services.fluidd.enable). +- [sx](https://github.com/earnestly/sx), a simple alternative to both xinit and startx for starting a Xorg server. Available as [services.xserver.displayManager.sx](#opt-services.xserver.displayManager.sx.enable) + ## Backward Incompatibilities {#sec-release-21.11-incompatibilities} - The `paperless` module and package have been removed. All users should migrate to the diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 2473bf2f55fb..2fbab4a68739 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1036,6 +1036,7 @@ ./services/x11/display-managers/sddm.nix ./services/x11/display-managers/slim.nix ./services/x11/display-managers/startx.nix + ./services/x11/display-managers/sx.nix ./services/x11/display-managers/xpra.nix ./services/x11/fractalart.nix ./services/x11/hardware/libinput.nix diff --git a/nixos/modules/services/x11/display-managers/sx.nix b/nixos/modules/services/x11/display-managers/sx.nix new file mode 100644 index 000000000000..132531c0ddc0 --- /dev/null +++ b/nixos/modules/services/x11/display-managers/sx.nix @@ -0,0 +1,37 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.services.xserver.displayManager.sx; + +in { + options = { + services.xserver.displayManager.sx = { + enable = mkEnableOption "sx pseudo-display manager" // { + description = '' + Whether to enable the "sx" pseudo-display manager, which allows users + to start manually via the "sx" command from a vt shell. The X server + runs under the user's id, not as root. The user must provide a + ~/.config/sx/sxrc file containing session startup commands, see + sx(1). This is not automatically generated from the desktopManager + and windowManager settings. sx doesn't have a way to directly set + X server flags, but it can be done by overriding its xorgserver + dependency. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.sx ]; + services.xserver = { + exportConfiguration = true; + displayManager = { + job.execCmd = ""; + lightdm.enable = mkForce false; + }; + logFile = mkDefault null; + }; + systemd.services.display-manager.enable = false; + }; +}