Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion nixos/modules/services/x11/display-managers/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ let
# file provided by services.xserver.displayManager.session.script
xsession = wm: dm: pkgs.writeScript "xsession"
''
#! /bin/sh
#! ${pkgs.bash}/bin/bash

. /etc/profile
cd "$HOME"
Expand Down
15 changes: 11 additions & 4 deletions nixos/modules/services/x11/display-managers/lightdm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,16 @@ let
# lightdm runs with clearenv(), but we need a few things in the enviornment for X to startup
xserverWrapper = writeScript "xserver-wrapper"
''
#! /bin/sh
#! ${pkgs.bash}/bin/bash
${concatMapStrings (n: "export ${n}=\"${getAttr n xEnv}\"\n") (attrNames xEnv)}
exec ${dmcfg.xserverBin} ${dmcfg.xserverArgs}

display=$(echo "$@" | xargs -n 1 | grep -P ^:\\d\$ | head -n 1 | sed s/^://)
if [ -z "$display" ]
then additionalArgs=":0 -logfile /var/log/X.0.log"
else additionalArgs="-logfile /var/log/X.$display.log"
fi

exec ${dmcfg.xserverBin} ${dmcfg.xserverArgs} $additionalArgs "$@"
'';

usersConf = writeText "users.conf"
Expand All @@ -39,7 +46,6 @@ let
greeter-session = ${cfg.greeter.name}
${cfg.extraSeatDefaults}
'';

in
{
# Note: the order in which lightdm greeter modules are imported
Expand Down Expand Up @@ -98,7 +104,6 @@ in
};

config = mkIf cfg.enable {

services.xserver.displayManager.slim.enable = false;

services.xserver.displayManager.job = {
Expand Down Expand Up @@ -149,5 +154,7 @@ in

services.xserver.displayManager.lightdm.background = mkDefault "${pkgs.nixos-artwork}/share/artwork/gnome/Gnome_Dark.png";

services.xserver.tty = null; # We might start multiple X servers so let the tty increment themselves..
services.xserver.display = null; # We specify our own display (and logfile) in xserver-wrapper up there
};
}
11 changes: 6 additions & 5 deletions nixos/modules/services/x11/xserver.nix
Original file line number Diff line number Diff line change
Expand Up @@ -381,13 +381,13 @@ in
};

tty = mkOption {
type = types.int;
type = types.nullOr types.int;
default = 7;
description = "Virtual console for the X server.";
};

display = mkOption {
type = types.int;
type = types.nullOr types.int;
default = 0;
description = "Display number for the X server.";
};
Expand Down Expand Up @@ -517,11 +517,12 @@ in
services.xserver.displayManager.xserverArgs =
[ "-ac"
"-terminate"
"-logfile" "/var/log/X.${toString cfg.display}.log"
"-config ${configFile}"
":${toString cfg.display}" "vt${toString cfg.tty}"
"-xkbdir" "${pkgs.xkeyboard_config}/etc/X11/xkb"
] ++ optional (!cfg.enableTCP) "-nolisten tcp";
] ++ optional (cfg.display != null) ":${tostring cfg.display}"
++ optional (cfg.tty != null) "vt${toString cfg.tty}"
++ optional (cfg.display != null) [ "-logfile" "/var/log/X.${toString cfg.display}.log" ]
++ optional (!cfg.enableTCP) "-nolisten tcp";

services.xserver.modules =
concatLists (catAttrs "modules" cfg.drivers) ++
Expand Down
43 changes: 43 additions & 0 deletions pkgs/misc/screensavers/light-locker/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{ stdenv
, fetchFromGitHub
, which
, xfce
, glib
, pkgconfig
, libX11
, gtk3
, dbus_glib
, systemd
, wrapGAppsHook
}:

stdenv.mkDerivation rec {
name = "${basename}-${version}";
basename = "light-locker";
version = "1.7.0";

src = fetchFromGitHub {
owner = "the-cavalry";
repo = basename;
rev = "v${version}";
sha256 = "0ygkp5vgkx2nfhfql6j2jsfay394gda23ir3sx4f72j4agsirjvj";
};

buildInputs = [ which xfce.xfce4_dev_tools glib pkgconfig libX11 gtk3 dbus_glib systemd wrapGAppsHook ];

preConfigure = ''
./autogen.sh
'';

meta = with stdenv.lib; {
homepage = https://github.com/the-cavalry/light-locker;
description = "light-locker is a simple locker";
longDescription = ''
light-locker is a simple locker (forked from gnome-screensaver) that aims to have simple, sane, secure defaults and be well integrated with the desktop while not carrying any desktop-specific dependencies.
It relies on lightdm for locking and unlocking your session via ConsoleKit/UPower or logind/systemd.
'';
license = licenses.gpl2;
maintainers = with maintainers; [ obadz ];
platforms = platforms.linux;
};
}
2 changes: 2 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7707,6 +7707,8 @@ let

lightning = callPackage ../development/libraries/lightning { };

lightlocker = callPackage ../misc/screensavers/light-locker { };

lirc = callPackage ../development/libraries/lirc { };

liquidfun = callPackage ../development/libraries/liquidfun { };
Expand Down