aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (diff)
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7 git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/default.nix29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/eintr.patch34
2 files changed, 63 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/default.nix
new file mode 100644
index 000000000000..83d82e2b3b34
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pam }:
+
+stdenv.mkDerivation {
+ name = "vlock-2.2.2";
+ src = fetchurl
+ {
+ url = "mirror://debian/pool/main/v/vlock/vlock_2.2.2.orig.tar.gz";
+ sha256 = "1b9gv7hmlb8swda5bn40lp1yki8b8wv29vdnhcjqfl6ir98551za";
+ };
+
+ prePatch = ''
+ sed -i -e '/INSTALL/ {
+ s/-[og] [^ ]*//g; s/4711/755/
+ }' Makefile modules/Makefile
+ '';
+
+ patches = [ ./eintr.patch ];
+
+ configureFlags = [ "VLOCK_GROUP=root" "ROOT_GROUP=root" ];
+
+ buildInputs = [ pam ];
+
+ meta = with stdenv.lib; {
+ description = "Virtual console locking program";
+ license = licenses.gpl2;
+ maintainers = [ maintainers.lethalman ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/eintr.patch b/infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/eintr.patch
new file mode 100644
index 000000000000..64f432434324
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/misc/screensavers/vlock/eintr.patch
@@ -0,0 +1,34 @@
+In systemd I have seen this error, using it as a service:
+
+vlock-start[14567]: vlock-new: could not activate new terminal: Interrupted system call
+
+I think this should fix that.
+
+Also on github: https://github.com/viric/vlock/commit/781a26087f83c7247601b6f82f784cca9266694e
+
+diff --git a/modules/new.c b/modules/new.c
+index e9b15fb..7aed640 100644
+--- a/modules/new.c
++++ b/modules/new.c
+@@ -103,9 +103,19 @@ static char *get_console_name(int n)
+ * file descriptor. */
+ static int activate_console(int consfd, int vtno)
+ {
+- int c = ioctl(consfd, VT_ACTIVATE, vtno);
++ int c;
++ do {
++ c = ioctl(consfd, VT_ACTIVATE, vtno);
++ } while(c != 0 && errno == EINTR);
+
+- return c < 0 ? c : ioctl(consfd, VT_WAITACTIVE, vtno);
++ if (c < 0)
++ return c;
++
++ do {
++ c = ioctl(consfd, VT_WAITACTIVE, vtno);
++ } while(c != 0 && errno == EINTR);
++
++ return c;
+ }
+
+ struct new_console_context {