From 1fcfb84a1c0a25c22286b0c8419a3914840bff26 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 7 Jun 2020 18:43:32 +0300 Subject: [PATCH] wip: more login manager work --- wip/entrance.scm | 28 ++++++++- wip/ly.scm | 150 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 wip/ly.scm diff --git a/wip/entrance.scm b/wip/entrance.scm index 3f96562..40a8ab9 100644 --- a/wip/entrance.scm +++ b/wip/entrance.scm @@ -43,14 +43,18 @@ (build-system meson-build-system) (arguments '(#:tests? #f ; no tests + #:configure-flags '("-Dlogind=true") #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-source - (lambda* (#:key inputs #:allow-other-keys) - (let ((pam (assoc-ref inputs "pam"))) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((pam (assoc-ref inputs "pam")) + (out (assoc-ref outputs "out"))) (substitute* "meson.build" (("/usr/include/security") - (string-append pam "/include/security"))) + (string-append pam "/include/security")) + (("/usr/lib/systemd/system") + (string-append out "/lib/systemd/system"))) #t))) (add-after 'unpack 'set-home-dir (lambda _ @@ -71,3 +75,21 @@ working again for logging into X sessions and eventually Wayland sessions! The project has been resurrected from the dead to live on once again...") (license license:gpl3))) + +(define-public entrance-git + (let ((commit "2c02d1b1d5c7221059f81c5b6c89fe71f23640cc") + (revision "1")) + (package + (inherit entrance) + (name "entrance-git") + (version (git-version (package-version entrance) revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Obsidian-StudiosInc/entrance") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "172wvlw0fkmqw6s72izgi9jnpjfhx8r0n7v1b71n3gj0sddglvma"))))))) diff --git a/wip/ly.scm b/wip/ly.scm new file mode 100644 index 0000000..f7f7ca1 --- /dev/null +++ b/wip/ly.scm @@ -0,0 +1,150 @@ +;;; Copyright © 2020 Efraim Flashner +;;; +;;; This file is an addendum to GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (wip ly) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix git-download) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (guix build-system gnu) + #:use-module (gnu packages linux) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages xorg)) + +(define-public ly + (package + (name "ly") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cylgom/ly") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "04cw5ihr5inaxdwiz1302xvw5d0jibh49sin55i1w19045hil7yy")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:make-flags + (list (string-append "DESTDIR=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-after 'unpack 'unpack-submodules + (lambda* (#:key inputs #:allow-other-keys) + (for-each + (lambda (submodule) + (copy-recursively (assoc-ref inputs submodule) + (string-append "sub/" submodule))) + '("argoat" "configator" "ctypes" "dragonfail" "termbox_next")) + #t)) + (add-after 'unpack 'patch-sources + (lambda* (#:key inputs #:allow-other-keys) + (let ((tput (string-append + (assoc-ref inputs "ncurses") "/bin/tput"))) + (substitute* "makefile" + (("/usr") "")) + (substitute* "src/main.c" + (("tput ") (string-append tput " "))) + #t))) + (replace 'build + (lambda _ + (invoke "make" "final")))))) + (native-inputs + `(;; The following are all submodules for ly: + ("argoat" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cylgom/argoat") + (commit "36c41f09ecc2a10c9acf35e4194e08b6fa10cf45"))) + (file-name "argoat-for-ly") + (sha256 + (base32 + "14v01fwm2bcgqh5b25iqfy4dm8pap8r49r1yfsr5c9j3b3hfn4yg")))) + ("configator" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cylgom/configator") + (commit "8227b3a835bf4c7e50a57e4ad6aff620ba0dc349"))) + (file-name "configator-for-ly") + (sha256 + (base32 + "00vd236x987b9r71mqz877aad9mc4l3hh8fvzwjirsjakj01szkf")))) + ("ctypes" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cylgom/ctypes") + (commit "5dd979d3644ab0c85ca14e72b61e6d3d238d432b"))) + (file-name "ctypes-for-ly") + (sha256 + (base32 + "0faahn2wgckhf3pyn9za594idy9gc5fxdm02ghn6mm3r4fk34xyx")))) + ("dragonfail" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cylgom/dragonfail") + (commit "6b40d1f8b7f6dda9746e688666af623dfbcceb94"))) + (file-name "dragonfail-for-ly") + (sha256 + (base32 + "0slsqw6q859vg0h0w92mmjwwh8m65m09h7pq59p90ixrga5q7jch")))) + ("termbox_next" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cylgom/termbox_next") + (commit "7b85905531bf9e5908c67276dac55d3241361f20"))) + (file-name "termbox_next-for-ly") + (sha256 + (base32 + "0b43453h3w4h6y1xmswbnl9y0vxilnqvsmgqfbpvca3l79678mfq")))))) + (inputs + `(("libxcb" ,libxcb) + ("linux-pam" ,linux-pam) + ("ncurses" ,ncurses))) + (home-page "https://github.com/cylgom/ly") + (synopsis "TUI display manager") + (description "Ly is a lightweight TUI (ncurses-like) display manager for +Linux and BSD. Ly should work with any X desktop environment, and provides +basic wayland support (sway works very well, for example).") + (license license:wtfpl2))) + +(define-public ly-git + (let ((commit "aa25ede8f95127a4e00df7b2752770722ecf5821") + (revision "1")) + (package + (inherit ly) + (name "ly-git") + (version (git-version (package-version ly) revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cylgom/ly") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0xv2zxp60khqrmy6349qywpp4fnn6dadwlp1pvyisq1a9lxzpsmq")))))))