summaryrefslogtreecommitdiff
path: root/modules/ryan-packages
diff options
context:
space:
mode:
Diffstat (limited to 'modules/ryan-packages')
-rw-r--r--modules/ryan-packages/login.scm102
1 files changed, 102 insertions, 0 deletions
diff --git a/modules/ryan-packages/login.scm b/modules/ryan-packages/login.scm
new file mode 100644
index 0000000..e3856a5
--- /dev/null
+++ b/modules/ryan-packages/login.scm
@@ -0,0 +1,102 @@
1(define-module (ryan-packages login)
2 #:use-module (guix gexp)
3 #:use-module (guix packages)
4 #:use-module (guix download)
5 #:use-module (guix git-download)
6 #:use-module (guix build-system zig)
7 #:use-module ((guix licenses) #:prefix license:)
8 #:use-module (gnu packages)
9 #:use-module (gnu packages base)
10 #:use-module (gnu packages curl)
11 #:use-module (gnu packages linux)
12 #:use-module (gnu packages nss)
13 #:use-module (gnu packages version-control)
14 #:use-module (gnu packages zig)
15 #:use-module (gnu packages zig-xyz)
16 #:use-module (guix utils))
17
18(define ly-source
19 (let ((commit "1b9286166e2b49fb11823a0f02baa6c42e66fe61")
20 (revision "1")
21 (name "ly")
22 (version "1.3.2"))
23 (origin
24 (method git-fetch)
25 (uri (git-reference
26 (url "https://codeberg.org/fairyglade/ly")
27 (commit commit)))
28 (file-name (git-file-name name version))
29 (sha256
30 (base32 "1dwx0ri61p16n1kpcv57g7xf3rgwysnfijw7i76b1l802a4qnk1z")))))
31
32(define ly-zig-cache
33 (computed-file
34 "ly-zig-cache"
35 (with-imported-modules '((guix build utils))
36 #~(begin
37 (use-modules (guix build utils))
38 (let ((cert-dir (string-append #$nss-certs "/etc/ssl/certs"))
39 (certs "/tmp/ca-certificates.crt")
40 (zig-bin (string-append #$zig-0.15 "/bin"))
41 (git-bin (string-append #$git-minimal "/bin"))
42 (curl-bin (string-append #$curl "/bin"))
43 (proot-bin (string-append #$proot "/bin"))
44 (coreutils-bin (string-append #$(@ (gnu packages base) coreutils) "/bin")))
45 (call-with-output-file certs
46 (lambda (out)
47 (for-each (lambda (file)
48 (call-with-input-file file
49 (lambda (p)
50 (dump-port p out)
51 (display "\n" out))))
52 (find-files cert-dir "\\.pem$"))))
53 (setenv "HOME" "/tmp")
54 (setenv "PATH" (string-append zig-bin ":" curl-bin ":" proot-bin ":" git-bin ":" coreutils-bin))
55 (setenv "ZIG_GLOBAL_CACHE_DIR" "/tmp/zcache")
56 (setenv "SSL_CERT_FILE" certs)
57 (setenv "GIT_SSL_CAINFO" certs)
58 (setenv "CURL_CA_BUNDLE" certs)
59 (mkdir-p "/tmp/zcache")
60 (mkdir-p "/tmp/src")
61 (copy-recursively #$ly-source "/tmp/src")
62 (chmod "/tmp/src" #o755)
63 (with-directory-excursion "/tmp/src"
64 (invoke "proot" "-b" (string-append certs ":/etc/ssl/certs/ca-certificates.crt")
65 "zig" "build" "--fetch=all"))
66 (copy-recursively "/tmp/zcache/p" #$output))))
67 #:options (list
68 #:hash-algo 'sha256
69 #:hash (base32 "1qmj0ysynvyfvwc68apy3lxqccrv3rxak5a21ij6y0c2dw3yzl64")
70 #:recursive? #t)))
71
72(define-public ly
73 (package
74 (name "ly")
75 (version "1.3.2")
76 (source ly-source)
77 (build-system zig-build-system)
78 (arguments
79 (list
80 #:zig-release-type "small"
81 #:zig-build-flags #~(list "-Denable_x11_support=false"
82 "--search-prefix"
83 #$(this-package-input "linux-pam"))
84 #:zig zig-0.15
85 #:tests? #f
86 #:phases
87 #~(modify-phases %standard-phases
88 (add-before 'configure 'seed-zig-cache
89 (lambda _
90 (let ((cache-dir "/tmp/zig-cache"))
91 (mkdir-p cache-dir)
92 (symlink #$ly-zig-cache (string-append cache-dir "/p"))
93 (setenv "ZIG_GLOBAL_CACHE_DIR" cache-dir)))))))
94 (native-inputs (list
95 ly-zig-cache))
96 (inputs (list linux-pam))
97 (home-page "https://codeberg.org/fairyglade/ly")
98 (synopsis "TTY-based login manager written in Zig.")
99 (description "Zig-based login manager that can launch X Server and Wayland based compositors.")
100 (license license:expat)))
101
102ly