Compare commits

...

284 commits

Author SHA1 Message Date
5627fe1a21
Put in earplugs 2024-10-29 11:47:54 +01:00
197d20e981
Put in earplugs 2024-08-02 11:17:40 +02:00
05f88e0273
Put in earplugs 2024-07-29 13:25:07 +02:00
344be0f4c2
Put in earplugs 2024-06-19 10:27:51 +02:00
4f651f22a6
Put in earplugs 2024-06-19 10:23:54 +02:00
d6d26f810f
Put in earplugs 2024-06-18 12:53:59 +02:00
82b6bd2412
Put in earplugs 2024-05-08 11:09:51 +02:00
daa79e5418
Put in earplugs 2024-05-08 11:06:55 +02:00
5f790fbf9d
Put in earplugs 2024-05-08 10:55:19 +02:00
19d24e4da4
Put in earplugs 2024-04-25 10:51:21 +02:00
0d3f4ae15c
Put in earplugs 2024-04-25 10:27:49 +02:00
7905db91ff
Put in earplugs 2024-04-25 10:23:01 +02:00
ac6bed56eb
Put in earplugs 2024-04-25 09:47:16 +02:00
b36b4f64e4
Put in earplugs 2024-04-15 11:09:59 +02:00
8034116f2b
Put in earplugs 2024-04-15 11:00:23 +02:00
a07988d269
Put in earplugs 2024-04-15 10:50:18 +02:00
c1848bc3fe
Put in earplugs 2024-04-15 10:42:41 +02:00
cebb99fda0
Put in earplugs 2024-04-14 16:19:54 +02:00
c24ecaae83
Put in earplugs 2024-04-14 15:47:37 +02:00
f703baafe4
Put in earplugs 2024-04-14 15:43:05 +02:00
ff9e92d892
Put in earplugs 2024-04-14 15:00:04 +02:00
d22a11448e
Put in earplugs 2024-04-14 13:48:11 +02:00
6e65d33a8d
Put in earplugs 2024-03-19 23:04:32 +01:00
02cdb79828
Put in earplugs 2024-03-19 15:14:46 +01:00
bf9e3febd5
Put in earplugs 2024-03-19 12:11:01 +01:00
698ace461f
Put in earplugs 2024-03-19 11:58:06 +01:00
54977e7c49
Put in earplugs 2024-03-19 11:47:15 +01:00
2449dd718f
Put in earplugs 2024-03-19 11:43:38 +01:00
751efe177f
Put in earplugs 2024-03-19 11:40:52 +01:00
e4eb6a4f6b
Put in earplugs 2024-03-19 11:33:01 +01:00
cef818c70a
Put in earplugs 2024-03-19 11:14:37 +01:00
e6de651812
Put in earplugs 2024-03-19 11:05:09 +01:00
cfb0066554
Put in earplugs 2024-03-19 10:47:52 +01:00
f8ebd62550
Put in earplugs 2024-03-15 13:51:33 +01:00
bd3c0acdbb
Put in earplugs 2024-03-15 13:48:08 +01:00
468c7fddf2
Put in earplugs 2024-03-15 13:43:23 +01:00
543913d4e3
Put in earplugs 2024-03-15 13:38:49 +01:00
7dddca83c4
Put in earplugs 2024-03-15 13:33:57 +01:00
c859008d64
Put in earplugs 2024-03-15 13:17:17 +01:00
8932f0d139
Put in earplugs 2024-03-15 13:04:26 +01:00
58d4fb00ae
Put in earplugs 2024-03-15 12:52:32 +01:00
8f6a21e923
Put in earplugs 2024-03-15 12:45:03 +01:00
59ef755a01
Put in earplugs 2024-03-15 12:41:19 +01:00
1e25b7b70c
Put in earplugs 2024-03-15 12:39:08 +01:00
311b0a228c
Put in earplugs 2024-03-15 12:35:23 +01:00
13906a4942
Put in earplugs 2024-03-15 12:31:46 +01:00
191ef4b0e2
Put in earplugs 2024-03-15 12:28:46 +01:00
603a72be31
Put in earplugs 2024-03-15 12:15:34 +01:00
f030ac9a48
Put in earplugs 2024-03-14 12:02:46 +01:00
064fc3e69a
Put in earplugs 2024-03-14 11:39:24 +01:00
1b78f05175
Put in earplugs 2024-03-14 11:35:32 +01:00
c293945e17
Put in earplugs 2024-03-14 11:25:41 +01:00
0d267dd87c
Put in earplugs 2024-03-14 11:02:41 +01:00
db9f5d74b1
Put in earplugs 2024-03-14 10:48:40 +01:00
463c24a307
Put in earplugs 2024-03-14 10:38:49 +01:00
f2980fbfa5
Put in earplugs 2024-03-14 10:20:20 +01:00
8b1d0122d8
Put in earplugs 2024-03-14 10:08:49 +01:00
8907da56e0
Put in earplugs 2024-03-14 09:55:51 +01:00
d076662545
Put in earplugs 2024-03-14 09:41:21 +01:00
a1f634322e
Put in earplugs 2024-03-14 09:10:04 +01:00
5b33845121
Put in earplugs 2024-03-13 11:09:40 +01:00
9ca3ecbe27
Put in earplugs 2024-03-13 11:07:13 +01:00
5340295499
Put in earplugs 2024-03-13 11:03:41 +01:00
717da2a77e
Put in earplugs 2024-03-09 13:14:17 +01:00
e8ddeb1934
Put in earplugs 2024-03-09 13:06:30 +01:00
2d7a88bda2
Put in earplugs 2024-03-09 12:57:22 +01:00
220fb53e71
Put in earplugs 2024-03-09 12:47:42 +01:00
44160e8880
Put in earplugs 2024-03-09 12:40:00 +01:00
3275edd531
Put in earplugs 2024-03-09 12:37:35 +01:00
354e6ec5b5
Put in earplugs 2024-03-09 12:29:33 +01:00
298c8394a2
Put in earplugs 2024-03-09 11:52:35 +01:00
9ae67228a0
Put in earplugs 2024-03-09 09:05:05 +01:00
9cf8264ca5
Put in earplugs 2024-03-09 09:00:44 +01:00
fc8431afe4
Put in earplugs 2024-03-08 12:34:42 +01:00
3fd22e973e
Put in earplugs 2024-03-08 12:13:47 +01:00
2810d0a7eb
Put in earplugs 2024-03-07 16:38:55 +01:00
9e516388ba
Put in earplugs 2024-03-07 15:41:42 +01:00
1ec24b52f9
Put in earplugs 2024-03-07 15:30:20 +01:00
43bc72cc66
Put in earplugs 2024-03-07 14:44:12 +01:00
e448625fd8
Put in earplugs 2024-03-07 12:38:15 +01:00
36aef216f5
Put in earplugs 2024-03-07 12:23:58 +01:00
3c29e13c15
Put in earplugs 2024-03-07 12:18:03 +01:00
7ad9dc60c7
Put in earplugs 2024-03-07 12:15:09 +01:00
619074a034
Put in earplugs 2024-03-07 12:12:17 +01:00
e9ab173831
Put in earplugs 2024-03-07 12:06:25 +01:00
c2730721bb
Put in earplugs 2024-03-06 14:33:16 +01:00
76e6eb62f2
Put in earplugs 2024-03-06 14:30:17 +01:00
c66e02d82d
Put in earplugs 2024-03-06 14:25:39 +01:00
c71714725c
Put in earplugs 2024-03-06 14:21:18 +01:00
03bf2bf0f3
Put in earplugs 2024-03-06 14:11:49 +01:00
44affb83f5
Put in earplugs 2024-03-06 13:19:18 +01:00
eb05a0fc43
Put in earplugs 2024-03-06 13:14:27 +01:00
54a3f496b7
Put in earplugs 2024-03-06 12:37:23 +01:00
373ca8f79b
Put in earplugs 2024-03-06 08:33:01 +01:00
2e71b0bd5f
Put in earplugs 2024-03-05 16:55:47 +01:00
f13ea23498
Put in earplugs 2024-03-04 22:54:13 +01:00
bbf678feae
Put in earplugs 2024-03-04 18:08:50 +01:00
39c1ca0d37
Put in earplugs 2024-03-04 17:54:25 +01:00
8cd5b3609d
Put in earplugs 2024-03-04 17:52:40 +01:00
b9318e6601
Put in earplugs 2024-03-04 16:04:03 +01:00
539d8c3880
Put in earplugs 2024-03-04 15:47:39 +01:00
e91f49a2b9
Put in earplugs 2024-03-04 14:54:03 +01:00
3896336e3f
Put in earplugs 2024-03-04 14:51:08 +01:00
78a42d61bd
Put in earplugs 2024-03-04 14:35:02 +01:00
e13c0d6cac
Put in earplugs 2024-03-04 14:31:04 +01:00
ac36f19198
Put in earplugs 2024-03-04 14:14:02 +01:00
5025b9d3c6
Put in earplugs 2024-03-04 14:08:10 +01:00
9c0960d41c
Put in earplugs 2024-03-04 14:05:02 +01:00
2be91579fc
Put in earplugs 2024-03-04 13:45:59 +01:00
6bfd066760
Put in earplugs 2024-03-04 13:42:40 +01:00
2318efc56d
Put in earplugs 2024-02-23 13:09:11 +01:00
20a18d7b07
Put in earplugs 2024-02-17 23:11:41 +01:00
5b8359f6ba
Put in earplugs 2024-02-10 17:02:20 +01:00
7d442a62a1
Put in earplugs 2024-02-10 16:59:21 +01:00
dfb18a5dbb
Put in earplugs 2024-02-09 23:26:29 +01:00
ed7b3254db
Put in earplugs 2024-02-09 23:06:37 +01:00
ccb4c4c1c5
Put in earplugs 2024-02-09 22:55:48 +01:00
dda06b8fcc
Put in earplugs 2024-02-09 22:26:19 +01:00
4134d627aa
Put in earplugs 2024-02-09 22:22:31 +01:00
be7d68b400
Put in earplugs 2024-02-09 17:06:00 +01:00
20402aff26
Put in earplugs 2024-02-09 16:52:04 +01:00
4d65f4b931
Put in earplugs 2024-02-09 16:48:29 +01:00
1b40c72399
Put in earplugs 2024-02-09 16:43:21 +01:00
a2282d49a1
Put in earplugs 2024-02-09 15:49:07 +01:00
854ee0310a
Put in earplugs 2024-02-09 15:45:31 +01:00
c6383900ab
Put in earplugs 2024-02-09 15:43:21 +01:00
1147a12f66
Put in earplugs 2024-02-09 15:38:50 +01:00
f3b37519de
Put in earplugs 2024-02-09 15:32:36 +01:00
0d556a04fc
Put in earplugs 2024-02-09 15:26:10 +01:00
0b7a2c14a3
Put in earplugs 2024-02-09 15:18:19 +01:00
76b83b91f6
Put in earplugs 2024-02-09 14:17:59 +01:00
6367074e85
Put in earplugs 2024-02-09 14:12:42 +01:00
a0c890944c
Put in earplugs 2024-02-09 14:01:22 +01:00
39d37509d8
Put in earplugs 2024-02-08 14:07:46 +01:00
bb38c513d5
Put in earplugs 2024-02-08 11:13:13 +01:00
ef9a4cdeb9
Put in earplugs 2024-02-07 19:16:54 +01:00
e45f9c850f
Put in earplugs 2024-02-07 18:42:27 +01:00
09d8efeb13
Put in earplugs 2024-02-07 18:24:32 +01:00
ef1868ed9b
Put in earplugs 2024-02-06 13:09:24 +01:00
e65ee0c8c7
Put in earplugs 2024-02-06 12:58:36 +01:00
0958674300
Put in earplugs 2024-02-01 12:22:52 +01:00
92f3da225c
Put in earplugs 2024-02-01 09:08:20 +01:00
e88fee8178
Put in earplugs 2024-01-31 11:19:56 +01:00
99ffa1c345
Put in earplugs 2024-01-31 11:16:06 +01:00
635ed1f88b
Put in earplugs 2024-01-31 09:22:05 +01:00
1360013743
Put in earplugs 2024-01-30 11:42:51 +01:00
5e4dff2586
Put in earplugs 2024-01-30 11:23:44 +01:00
8a7d1a938f
Put in earplugs 2024-01-30 11:21:14 +01:00
7beb2563f2
Put in earplugs 2024-01-30 11:13:51 +01:00
bd14fef053
Put in earplugs 2024-01-26 10:53:38 +01:00
08336dab4b
Put in earplugs 2024-01-24 22:30:06 +01:00
711ac1b07e
Put in earplugs 2024-01-24 18:56:08 +01:00
b5b218d71b
Put in earplugs 2024-01-24 18:50:53 +01:00
bf71b596e5
Put in earplugs 2024-01-24 16:44:22 +01:00
22b47669f3
Put in earplugs 2024-01-24 15:52:06 +01:00
7840392f0d
Put in earplugs 2024-01-24 15:26:34 +01:00
26bafa406a
Put in earplugs 2024-01-23 20:36:25 +01:00
5490a8950b
Put in earplugs 2024-01-23 17:38:27 +01:00
570d8fffb5
Put in earplugs 2024-01-23 17:18:56 +01:00
f3475b656a
Put in earplugs 2024-01-22 22:16:07 +01:00
b1c47a12a3
Put in earplugs 2024-01-22 22:14:41 +01:00
8388cbfd6c
Put in earplugs 2024-01-22 16:39:36 +01:00
a45c9f8831
Put in earplugs 2024-01-22 15:56:59 +01:00
d0742ec9a2
Put in earplugs 2024-01-22 15:35:34 +01:00
66eadf56e6
Put in earplugs 2024-01-22 15:34:36 +01:00
df9d1afea5
Put in earplugs 2024-01-22 15:34:11 +01:00
5f05e6ec7d
Put in earplugs 2024-01-22 15:29:47 +01:00
b35c80baef
Put in earplugs 2024-01-22 11:12:25 +01:00
a2cece1eab
Put in earplugs 2024-01-22 10:56:39 +01:00
112c88a6a7
Put in earplugs 2024-01-21 12:27:48 +01:00
f89df17bb5
Put in earplugs 2024-01-21 11:58:16 +01:00
830c8e5e2a
Put in earplugs 2024-01-21 11:54:35 +01:00
0522dc65ca
Put in earplugs 2024-01-21 11:43:17 +01:00
9d037d4c95
Put in earplugs 2024-01-21 11:01:27 +01:00
50552c1af0
Put in earplugs 2024-01-20 17:18:05 +01:00
d6d7ba0bae
Put in earplugs 2024-01-20 13:38:57 +01:00
372ae4f5b5
Put in earplugs 2024-01-20 12:41:24 +01:00
9306428873
Put in earplugs 2024-01-20 12:05:40 +01:00
491de444e3
Put in earplugs 2024-01-20 12:02:53 +01:00
55ea3e9ed0
Put in earplugs 2024-01-20 11:49:14 +01:00
a4d5433804
Put in earplugs 2024-01-20 11:16:35 +01:00
c727173913
Put in earplugs 2024-01-20 11:11:57 +01:00
bef5aade07
Put in earplugs 2024-01-20 10:54:19 +01:00
4bc0ceb67a
Put in earplugs 2024-01-20 10:21:59 +01:00
fa18ea8415
Put in earplugs 2024-01-20 10:18:48 +01:00
fc0ada85de
Put in earplugs 2024-01-20 09:48:12 +01:00
99813635b3
Put in earplugs 2024-01-20 09:25:41 +01:00
3d5a029e19
Put in earplugs 2024-01-20 08:43:54 +01:00
8f0d740459
Put in earplugs 2024-01-19 11:54:35 +01:00
7d614d9a0e
Put in earplugs 2024-01-18 17:57:28 +01:00
7fe6c4f741
Put in earplugs 2024-01-18 17:44:19 +01:00
3c294e1182
Put in earplugs 2024-01-18 17:30:14 +01:00
a619447f75
Put in earplugs 2024-01-18 17:26:51 +01:00
3966609741
Put in earplugs 2024-01-18 16:02:28 +01:00
194a735ef5
Put in earplugs 2024-01-18 15:44:52 +01:00
c3d63abd9b
Put in earplugs 2024-01-18 15:30:54 +01:00
a911219419
Put in earplugs 2024-01-18 15:13:25 +01:00
ec9f659b54 Put in earplugs 2024-01-18 15:07:55 +01:00
71dcc61290
Put in earplugs 2024-01-18 14:58:01 +01:00
e52b1742b3
Put in earplugs 2024-01-18 14:43:18 +01:00
5c59175a3e
Put in earplugs 2024-01-18 14:28:17 +01:00
b17d27a801
Put in earplugs 2024-01-18 14:19:35 +01:00
b175074dfc
Put in earplugs 2024-01-18 14:09:03 +01:00
c7548de883
Put in earplugs 2024-01-18 12:22:10 +01:00
4ee0a242c6
Put in earplugs 2024-01-18 12:06:27 +01:00
3e5a5708d7
Put in earplugs 2024-01-18 11:57:55 +01:00
0e340af553
Put in earplugs 2024-01-18 11:46:58 +01:00
05f9b0fe5f
Put in earplugs 2024-01-18 11:42:53 +01:00
455aae16b4
Put in earplugs 2024-01-18 09:25:03 +01:00
1445ea0871
Put in earplugs 2024-01-18 09:23:19 +01:00
b09748df9c
Put in earplugs 2024-01-18 09:22:32 +01:00
b6ecd71d2a
Put in earplugs 2024-01-18 08:51:21 +01:00
913fbb20b2
Put in earplugs 2024-01-18 08:45:54 +01:00
805a4b85cd
Put in earplugs 2024-01-17 19:22:58 +01:00
ec5d1a5f16
Put in earplugs 2024-01-17 19:20:10 +01:00
564418cdbc
Put in earplugs 2024-01-17 19:19:15 +01:00
1244cdf246
Put in earplugs 2024-01-17 19:17:54 +01:00
aa9c83f62f
Put in earplugs 2024-01-17 18:58:49 +01:00
8c90eabe27
Put in earplugs 2024-01-17 17:57:56 +01:00
4ad76f91c6
Put in earplugs 2024-01-17 16:59:59 +01:00
54d9955126
Put in earplugs 2024-01-17 16:18:45 +01:00
cff429f351
Put in earplugs 2024-01-17 15:41:36 +01:00
9c8d3817ad
Put in earplugs 2024-01-17 15:36:03 +01:00
f7a4c002d5
Put in earplugs 2024-01-17 14:20:15 +01:00
078fd33e00
Put in earplugs 2024-01-17 11:30:27 +01:00
afc1c0b76a
Put in earplugs 2024-01-16 17:02:58 +01:00
12599959d0
Put in earplugs 2024-01-16 16:49:46 +01:00
7c168f753f
Put in earplugs 2024-01-16 14:18:37 +01:00
8126ca493b
Put in earplugs 2024-01-16 14:08:05 +01:00
8e8fa9d4e2
Put in earplugs 2024-01-16 13:51:34 +01:00
64b2310791
Put in earplugs 2024-01-16 13:44:49 +01:00
962fc67311
Put in earplugs 2024-01-16 13:42:40 +01:00
d4cfbdd1af
Put in earplugs 2024-01-16 13:25:32 +01:00
bd3ad6ca39
Put in earplugs 2024-01-16 13:03:51 +01:00
da396b8a0f
Put in earplugs 2024-01-16 12:47:30 +01:00
31fe2315cf
Put in earplugs 2024-01-16 12:44:02 +01:00
399aa65501
Put in earplugs 2024-01-15 08:57:16 +01:00
d49d947159
Put in earplugs 2024-01-14 21:04:20 +01:00
65ef9c64ae
Put in earplugs 2024-01-14 20:45:05 +01:00
5bb0c0c16d
Put in earplugs 2024-01-14 20:33:45 +01:00
0c881213bb
Put in earplugs 2024-01-14 17:31:55 +01:00
311ca35c7e
Put in earplugs 2024-01-14 17:24:25 +01:00
169948d534
Put in earplugs 2024-01-14 17:17:26 +01:00
71653f82b3
Put in earplugs 2024-01-14 17:06:36 +01:00
1f63f61945
Put in earplugs 2024-01-14 17:00:03 +01:00
de465a73ec
Put in earplugs 2024-01-14 16:55:56 +01:00
e55eb23617
Put in earplugs 2024-01-14 16:42:01 +01:00
d668e5aa54
Put in earplugs 2024-01-14 16:35:08 +01:00
2ac0b68995
Put in earplugs 2024-01-14 16:29:01 +01:00
88fee6d783
Put in earplugs 2024-01-14 16:13:17 +01:00
f6b57a2e0b
Put in earplugs 2024-01-14 16:08:47 +01:00
871921cc09
Put in earplugs 2024-01-14 16:02:21 +01:00
9828d6c4d4
Put in earplugs 2024-01-14 15:54:31 +01:00
8029f158f6
Put in earplugs 2024-01-14 15:36:57 +01:00
2ae2edadd2
Put in earplugs 2024-01-14 15:31:53 +01:00
8a2d4dbbfc
Put in earplugs 2024-01-14 15:24:07 +01:00
15eadaad14
Put in earplugs 2024-01-14 15:03:42 +01:00
fb8298b62a
Put in earplugs 2024-01-14 14:59:08 +01:00
5fbe6c54d4
Put in earplugs 2024-01-14 14:46:04 +01:00
a98eaa7f6b
Put in earplugs 2024-01-14 14:29:21 +01:00
41563470ad
Put in earplugs 2024-01-14 14:13:30 +01:00
db2b818bfc
Put in earplugs 2024-01-14 13:35:29 +01:00
86fcf94af4
Put in earplugs 2024-01-14 13:02:57 +01:00
ac55b19754
Put in earplugs 2024-01-14 12:53:57 +01:00
385d75d803
Put in earplugs 2024-01-14 12:46:32 +01:00
deca3f8be2
Put in earplugs 2024-01-14 12:41:17 +01:00
a3c997cd7f
Put in earplugs 2024-01-14 12:33:52 +01:00
5f21ab8048
Put in earplugs 2024-01-14 12:27:02 +01:00
c991c3a728
Put in earplugs 2024-01-14 12:21:12 +01:00
a1e3971bcb
Put in earplugs 2024-01-14 12:14:21 +01:00
730131bb03
Put in earplugs 2024-01-14 09:34:24 +01:00
3bfdd6cab7
Put in earplugs 2024-01-13 16:14:27 +01:00
3f952e148d
Put in earplugs 2024-01-13 16:08:24 +01:00
c96eb684ff
Put in earplugs 2024-01-13 15:57:13 +01:00
dbb49dd2c6
Put in earplugs 2024-01-13 13:50:09 +01:00
b4c4749e51
Put in earplugs 2024-01-13 12:54:04 +01:00
b6b245201d
Put in earplugs 2024-01-04 20:53:40 +01:00
d802e10cad
Put in earplugs 2024-01-04 20:36:08 +01:00
1f23f6bff1
Put in earplugs 2024-01-04 20:11:27 +01:00
e2ed32fdd4
Put in earplugs 2024-01-04 19:56:06 +01:00
d63fe7cdeb
Put in earplugs 2024-01-04 19:40:35 +01:00
506b6d0b62
Put in earplugs 2024-01-04 19:30:24 +01:00
e15b686973
Put in earplugs 2024-01-04 19:22:53 +01:00
09722ebe66
Put in earplugs 2024-01-04 18:56:41 +01:00
34 changed files with 7469 additions and 74 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/config/zzk_rsa.pub

8
.guix-authorizations Normal file
View file

@ -0,0 +1,8 @@
;; -*- mode: scheme; -*-
(authorizations
(version 0)
;; OpenPGP keys currently authorized to sign commits in this repository.
(("24A7 4604 91E6 A60F 5BB4 A00F 989F 5E6E DB47 8160"
(name "nik gaffney"))))

9
.guix-channel Normal file
View file

@ -0,0 +1,9 @@
;; -*- mode: scheme; -*-
(channel
(version 0)
(name 'zzkt)
(news-file "news.scm")
(directory "channel")
(url "https://gitlab.com/zzkt/guix")
(branch "endless"))

674
LICENSE Normal file
View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program 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.
This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

44
README.org Normal file
View file

@ -0,0 +1,44 @@
* A system configuration
A semi-literate [[file:config/framework13-system.org][system config]] specifically for Guix on the Framework 13 Laptop (AMD Ryzen 7040 Series)
* A (non)guix channel
** packages
design & publishing
- fonts & type collections from [[http://osp.kitchen/][OSP]] and [[https://velvetyne.fr/][velvetyne]] in particular with selections from [[https://usemodify.com/][usemodify]] (curated by Raphaël Bastide.)
- [[https://www.scribus.net/][scribus]] (release version 1.6.1 and =scribus-next= development branch)
- [[https://soupault.app/][soupault]] static site generator and robotic webmaster (version 4.6.0 and dependencies not currently in guix)
- [[https://www.zotero.org/][zotero]] (via guix-science)
- supercollider (GUI and TUI versions)
- pipeworld for arcan
- frameworkinfo
various and sundry
- [[https://gephi.org][gephi]] (release version 0.10.1 installed as binary. not currently building from source)
- [[https://tidalcycles.org/][tidal]] (release version 1.9.4 and dependencies not currently in guix)
- plugdata (incomplete)
- sbcl-osc (testing [[https://github.com/zzkt/osc][cl-osc]])
** services
- [[https://grafana.com][grafana]] open observability platform (via OCI with devolutions)
** setup
add to =~/.config/guix/channels.scm= (or wherever local channel declarations are kept)
#+BEGIN_SRC scheme
(channel
(name 'zzkt)
(url "https://gitlab.com/zzkt/guix")
(branch "endless")
(commit "c24ecaae83f67d495a3951f372c69c2682c090a9")
(introduction
(make-channel-introduction
"c24ecaae83f67d495a3951f372c69c2682c090a9"
(openpgp-fingerprint
"24A7 4604 91E6 A60F 5BB4 A00F 989F 5E6E DB47 8160"))))
#+END_SRC
* Channel surfing
further guix channels, package and symbols with https://toys.whereis.みんな/

View file

@ -0,0 +1,645 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; https://github.com/muesli/duf
(define-module (zzkt packages duf)
#:use-module (guix)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (guix build-system go)
#:use-module (guix git-download)
#:use-module (gnu packages golang)
#:use-module (gnu packages golang-xyz)
#:use-module (gnu packages golang-check)
#:use-module (gnu packages golang-build))
(define-public duf
(package
(name "duf")
(version "git")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/muesli/duf")
(commit "ae480f3d59342a8963ffb7b4a5070a32086314fb")))
(file-name (git-file-name name version))
(sha256 (base32 "0kznsn94ar45y1la91slgvh8iv64vxp3pmwj744alsxckw846x92"))))
(inputs
(list go-github-com-iglou-eu-go-wildcard
go-github-com-mattn-go-runewidth
go-github-com-jedib0t-go-pretty-v6
go-github-com-muesli-mango
go-github-com-muesli-roff
go-github-com-muesli-termenv
go-golang-org-x-sys
go-golang-org-x-term
))
;; require (
;; github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
;; github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
;; github.com/mattn/go-isatty v0.0.17 // indirect
;; github.com/rivo/uniseg v0.2.0 // indirect
;; )
(arguments
(list
#:import-path "https://github.com/muesli/duf"))
(build-system go-build-system)
(home-page "https://www.gnu.org/software/hello/")
(synopsis "Disk Usage/Free Utility. A better 'df' alternative")
(description "Disk Usage/Free Utility. Features include; User-friendly, colorful output; Adjusts to your terminal's theme & width; Sort the results according to your needs; Groups & filters devices; Can conveniently output JSON.")
(license license:expat)))
;; dependencies
(define-public go-github-com-iglou-eu-go-wildcard
(package
(name "go-github-com-iglou-eu-go-wildcard")
(version "1.0.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/IGLOU-EU/go-wildcard")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1navfgv8k4lk0ajd8xib75qzjiingbh9xfhrh1qdxin5cycrn1al"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/IGLOU-EU/go-wildcard"))
(home-page "https://github.com/IGLOU-EU/go-wildcard")
(synopsis "Go-wildcard")
(description
"This part of Minio project is a very cool, fast and light wildcard pattern
matching.")
(license license:asl2.0)))
;; guix import go --recursive github.com/jedib0t/go-pretty/v6
(define-public go-github-com-chromedp-sysutil
(package
(name "go-github-com-chromedp-sysutil")
(version "1.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/chromedp/sysutil")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0vczhxgnvfkw1h12rbyyllcgwa1rmhn5x4iq20sm7dld26rglh5b"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/chromedp/sysutil"))
(home-page "https://github.com/chromedp/sysutil")
(synopsis "About sysutil")
(description
"Package sysutil provides some utilities for working with cross platform systems.")
(license license:expat)))
(define-public go-github-com-chromedp-cdproto
(package
(name "go-github-com-chromedp-cdproto")
(version "0.0.0-20240312231614-1e5096e63154")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/chromedp/cdproto")
(commit (go-version->git-ref version))))
(file-name (git-file-name name version))
(sha256
(base32 "0pqnp6203qavmnpj2rxl58mipfmkz493pcl3440bkvqm0jwkkc99"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/chromedp/cdproto"))
(propagated-inputs `(("go-github-com-mailru-easyjson" ,go-github-com-mailru-easyjson)
("go-github-com-chromedp-sysutil" ,go-github-com-chromedp-sysutil)))
(home-page "https://github.com/chromedp/cdproto")
(synopsis "About cdproto")
(description
"Package cdproto provides the Chrome @code{DevTools} Protocol commands, types,
and events for the cdproto domain.")
(license license:expat)))
(define-public go-github-com-gobwas-httphead
(package
(name "go-github-com-gobwas-httphead")
(version "0.1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gobwas/httphead")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "106l8ml5yihld3rrf45q5fhlsx64hrpj2dsvnnm62av4ya5nf0gb"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/gobwas/httphead"))
(home-page "https://github.com/gobwas/httphead")
(synopsis "httphead.")
(description
"Package httphead contains utils for parsing HTTP and HTTP-grammar compatible
text protocols headers.")
(license license:expat)))
(define-public go-github-com-gobwas-pool
(package
(name "go-github-com-gobwas-pool")
(version "0.2.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gobwas/pool")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0imipsf8nslc78in78wcri2ir2zzajp2h543dp2cshrrdbwkybx7"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/gobwas/pool"))
(home-page "https://github.com/gobwas/pool")
(synopsis "pool")
(description
"Package pool contains helpers for pooling structures distinguishable by size.")
(license license:expat)))
(define-public go-github-com-gobwas-ws
(package
(name "go-github-com-gobwas-ws")
(version "1.3.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gobwas/ws")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1fdx14lqzjin18n604b9mmr1dq7s19yz13zk7vrbvj7inwcjqzy6"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/gobwas/ws"))
(propagated-inputs `(("go-github-com-gobwas-pool" ,go-github-com-gobwas-pool)
("go-github-com-gobwas-httphead" ,go-github-com-gobwas-httphead)))
(home-page "https://github.com/gobwas/ws")
(synopsis "ws")
(description
"Package ws implements a client and server for the @code{WebSocket} protocol as
specified in @@url{https://rfc-editor.org/rfc/rfc6455.html,RFC 6455}.")
(license license:expat)))
(define-public go-github-com-ledongthuc-pdf
(package
(name "go-github-com-ledongthuc-pdf")
(version "0.0.0-20240201131950-da5b75280b06")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ledongthuc/pdf")
(commit (go-version->git-ref version))))
(file-name (git-file-name name version))
(sha256
(base32 "0c1b2sxvxwpvv9b5xawr8i2dl2d6xlcdi7bdjjg0nbvxgh74269f"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/ledongthuc/pdf"))
(home-page "https://github.com/ledongthuc/pdf")
(synopsis "PDF Reader")
(description "Package pdf implements reading of PDF files.")
(license license:bsd-3)))
(define-public go-github-com-josharian-intern
(package
(name "go-github-com-josharian-intern")
(version "1.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/josharian/intern")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1za48ppvwd5vg8vv25ldmwz1biwpb3p6qhf8vazhsfdg9m07951c"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/josharian/intern"))
(home-page "https://github.com/josharian/intern")
(synopsis #f)
(description
"Package intern interns strings. Interning is best effort only. Interned
strings may be removed automatically at any time without notification. All
functions may be called concurrently with themselves and each other.")
(license license:expat)))
(define-public go-github-com-mailru-easyjson
(package
(name "go-github-com-mailru-easyjson")
(version "0.7.7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/mailru/easyjson")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0clifkvvy8f45rv3cdyv58dglzagyvfcqb63wl6rij30c5j2pzc1"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/mailru/easyjson"))
(propagated-inputs `(("go-github-com-josharian-intern" ,go-github-com-josharian-intern)))
(home-page "https://github.com/mailru/easyjson")
(synopsis "easyjson")
(description
"Package easyjson contains marshaler/unmarshaler interfaces and helper functions.")
(license license:expat)))
(define-public go-github-com-chromedp-chromedp
(package
(name "go-github-com-chromedp-chromedp")
(version "0.9.5")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/chromedp/chromedp")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1ballxw8l0cy2z467nshfflwyf7lhy7ng2q9w6k7kgnrrg8mb351"))))
(build-system go-build-system)
(arguments
(list
#:tests? #f ;; chromedp_test.go:138: exec: "google-chrome": executable file not found in $PATH
#:import-path "github.com/chromedp/chromedp"))
(propagated-inputs `(("go-github-com-orisano-pixelmatch" ,go-github-com-orisano-pixelmatch)
("go-github-com-mailru-easyjson" ,go-github-com-mailru-easyjson)
("go-github-com-ledongthuc-pdf" ,go-github-com-ledongthuc-pdf)
("go-github-com-gobwas-ws" ,go-github-com-gobwas-ws)
("go-github-com-chromedp-cdproto" ,go-github-com-chromedp-cdproto)))
(home-page "https://github.com/chromedp/chromedp")
(synopsis "About chromedp")
(description
"Package chromedp is a high level Chrome @code{DevTools} Protocol client that
simplifies driving browsers for scraping, unit testing, or profiling web pages
using the CDP.")
(license license:expat)))
(define-public go-github-com-chzyer-test
(package
(name "go-github-com-chzyer-test")
(version "1.0.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/chzyer/test")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1axdlcnx2qjsn5wsr2pr1m0w0a8k4nk5kkrngh742fgh81vzzy8s"))))
(build-system go-build-system)
(arguments
(list
#:tests? #f ;; FAIL: TestMemDisk (0.00s)
#:import-path "github.com/chzyer/test"))
(propagated-inputs `(("go-github-com-chzyer-logex" ,go-github-com-chzyer-logex)))
(home-page "https://github.com/chzyer/test")
(synopsis "test")
(description #f)
(license license:expat)))
(define-public go-github-com-chzyer-logex
(package
(name "go-github-com-chzyer-logex")
(version "1.2.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/chzyer/logex")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0c9yr3r7dl3lcs22cvmh9iknihi9568wzmdywmc2irkjdrn8bpxw"))))
(build-system go-build-system)
(arguments
(list
#:tests? #f ;; logex_test.go:58: except .test:logex_test.go:20][INFO] b not found
#:import-path "github.com/chzyer/logex"))
(home-page "https://github.com/chzyer/logex")
(synopsis "Logex")
(description
"An golang log lib, supports tracing and level, wrap by standard log lib")
(license license:expat)))
(define-public go-github-com-chzyer-readline
(package
(name "go-github-com-chzyer-readline")
(version "1.5.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/chzyer/readline")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1msh9qcm7l1idpmfj4nradyprsr86yhk9ch42yxz7xsrybmrs0pb"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/chzyer/readline"))
(propagated-inputs `(("go-github-com-chzyer-logex" ,go-github-com-chzyer-logex)
("go-golang-org-x-sys" ,go-golang-org-x-sys)
("go-github-com-chzyer-test" ,go-github-com-chzyer-test)))
(home-page "https://github.com/chzyer/readline")
(synopsis "Guide")
(description
"Readline is a pure go implementation for GNU-Readline kind library.")
(license license:expat)))
(define-public go-github-com-ianlancetaylor-demangle
(package
(name "go-github-com-ianlancetaylor-demangle")
(version "0.0.0-20240312041847-bd984b5ce465")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ianlancetaylor/demangle")
(commit (go-version->git-ref version))))
(file-name (git-file-name name version))
(sha256
(base32 "1g52ly5xpfx49c03cj2gac03pg1dvmsa7fkp85f9n4jz27j486gj"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/ianlancetaylor/demangle"))
(home-page "https://github.com/ianlancetaylor/demangle")
(synopsis "github.com/ianlancetaylor/demangle")
(description
"Package demangle defines functions that demangle GCC/LLVM C++ and Rust symbol
names. This package recognizes names that were mangled according to the C++ ABI
defined at
@@url{http://codesourcery.com/cxx-abi/,http://codesourcery.com/cxx-abi/} and the
Rust ABI defined at
@@url{https://rust-lang.github.io/rfcs/2603-rust-symbol-name-mangling-v0.html,https://rust-lang.github.io/rfcs/2603-rust-symbol-name-mangling-v0.html}")
(license license:bsd-3)))
(define-public go-github-com-google-pprof
(package
(name "go-github-com-google-pprof")
(version "0.0.0-20240227163752-401108e1b7e7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/google/pprof")
(commit (go-version->git-ref version))))
(file-name (git-file-name name version))
(sha256
(base32 "1gnmhivka2lymz7v1gg6wasbj8kj8kvmnzb20g8f74fpf7jbqgac"))))
(build-system go-build-system)
(arguments
(list
;; #:go 1.19
;; -> (value "Wrong type argument in position 1 (expecting struct): ~S") (value (1.19)) (value (1.19)))
#:import-path "github.com/google/pprof"))
(propagated-inputs `(("go-github-com-ianlancetaylor-demangle" ,go-github-com-ianlancetaylor-demangle)
("go-github-com-chzyer-readline" ,go-github-com-chzyer-readline)
("go-github-com-chromedp-chromedp" ,go-github-com-chromedp-chromedp)))
(home-page "https://github.com/google/pprof")
(synopsis "Introduction")
(description
"pprof is a tool for collection, manipulation and visualization of performance
profiles.")
(license license:asl2.0)))
(define-public go-github-com-felixge-fgprof
(package
(name "go-github-com-felixge-fgprof")
(version "0.9.4")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/felixge/fgprof")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "00h4kphvmbcdgad0wmqbaclc4a1pipdb55ay41mwh6cnkdjjvhp0"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/felixge/fgprof"))
(propagated-inputs `(("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)
("go-github-com-google-pprof" ,go-github-com-google-pprof)))
(home-page "https://github.com/felixge/fgprof")
(synopsis "🚀 fgprof - The Full Go Profiler")
(description
"fgprof is a sampling Go profiler that allows you to analyze On-CPU as well as
[Off-CPU](@@url{http://www.brendangregg.com/offcpuanalysis.html,http://www.brendangregg.com/offcpuanalysis.html})
(e.g. I/O) time together.")
(license license:expat)))
(define-public go-github-com-pkg-profile
(package
(name "go-github-com-pkg-profile")
(version "1.7.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pkg/profile")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0ifr9gnycjwh7dbvsb5vgs9kzlr548cb4m45zvl8i8lgd3qhppy1"))))
(build-system go-build-system)
(arguments
(list
#:tests? #f ;; FAIL: TestProfile (4.57s)
#:import-path "github.com/pkg/profile"))
(propagated-inputs `(("go-github-com-felixge-fgprof" ,go-github-com-felixge-fgprof)))
(home-page "https://github.com/pkg/profile")
(synopsis "profile")
(description
"Package profile provides a simple way to manage runtime/pprof profiling of your
Go application.")
(license license:bsd-2)))
(define-public go-github-com-jedib0t-go-pretty-v6
(package
(name "go-github-com-jedib0t-go-pretty-v6")
(version "6.5.5")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jedib0t/go-pretty")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1d8gz2sd2ipbak0phkhqrsw2jx4ga50mv6a0x4q898v7dyb2ffks"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/jedib0t/go-pretty/v6"))
(propagated-inputs `(("go-golang-org-x-term" ,go-golang-org-x-term)
("go-golang-org-x-sys" ,go-golang-org-x-sys)
("go-github-com-stretchr-testify" ,go-github-com-stretchr-testify)
("go-github-com-pkg-profile" ,go-github-com-pkg-profile)
("go-github-com-mattn-go-runewidth" ,go-github-com-mattn-go-runewidth)))
(home-page "https://github.com/jedib0t/go-pretty")
(synopsis "go-pretty")
(description
"Utilities to prettify console output of tables, lists, progress-bars, text, etc.
with a heavy emphasis on customization.")
(license license:expat)))
;; guix import go --recursive github.com/muesli/mango
(define-public go-github-com-muesli-roff
(package
(name "go-github-com-muesli-roff")
(version "0.1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/muesli/roff")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0l263rqwq2ccr1lpamsvs48dddsr70xim8mv6rsj2x9y3prcq3yh"))))
(build-system go-build-system)
(arguments
(list
#:tests? #f ;; FAIL: TestTitleHeading (0.00s)
#:import-path "github.com/muesli/roff"))
(home-page "https://github.com/muesli/roff")
(synopsis "roff")
(description "roff lets you write roff documents in Go")
(license license:expat)))
(define-public go-github-com-muesli-mango
(package
(name "go-github-com-muesli-mango")
(version "0.2.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/muesli/mango")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "16d0sga6cbdxzlqkibcgw0civkw11fpkcjpgv21i0q5j9mjbsjw4"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/muesli/mango"))
(propagated-inputs `(("go-github-com-muesli-roff" ,go-github-com-muesli-roff)))
(home-page "https://github.com/muesli/mango")
(synopsis "mango")
(description
"mango is a man-page generator for the Go flag, pflag, cobra, coral, and kong
packages. It extracts commands, flags, and arguments from your program and
enables it to self-document.")
(license license:expat)))
;; guix import go --recursive github.com/muesli/termenv
(define-public go-github-com-aymanbagabas-go-osc52-v2
(package
(name "go-github-com-aymanbagabas-go-osc52-v2")
(version "2.0.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/aymanbagabas/go-osc52")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1y4y49zys7fi5wpicpdmjqnk0mb6569zg546km02yck2349jl538"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/aymanbagabas/go-osc52/v2"))
(home-page "https://github.com/aymanbagabas/go-osc52")
(synopsis "go-osc52")
(description
"OSC52 is a terminal escape sequence that allows copying text to the clipboard.")
(license license:expat)))
(define-public go-github-com-muesli-termenv
(package
(name "go-github-com-muesli-termenv")
(version "0.15.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/muesli/termenv")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "19yhli6k79aqpra4djp0cl4q76mqxbc1f7in20y0dzhnjb7yz42p"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/muesli/termenv"))
(propagated-inputs `(("go-golang-org-x-sys" ,go-golang-org-x-sys)
("go-github-com-mattn-go-runewidth" ,go-github-com-mattn-go-runewidth)
("go-github-com-mattn-go-isatty" ,go-github-com-mattn-go-isatty)
("go-github-com-lucasb-eyer-go-colorful" ,go-github-com-lucasb-eyer-go-colorful)
("go-github-com-aymanbagabas-go-osc52-v2" ,go-github-com-aymanbagabas-go-osc52-v2)))
(home-page "https://github.com/muesli/termenv")
(synopsis "Features")
(description
"@@code{termenv} lets you safely use advanced styling options on the terminal.
It gathers information about the terminal environment in terms of its ANSI &
color support and offers you convenient methods to colorize and style your
output, without you having to deal with all kinds of weird ANSI escape sequences
and color conversions.")
(license license:expat)))

View file

@ -0,0 +1,191 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 David Craven <david@craven.ch>
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020, 2021, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages firmware)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
#:use-module (gnu packages assembly)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages curl)
#:use-module (gnu packages efi)
#:use-module (gnu packages elf)
#:use-module (gnu packages flex)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gtk)
#:use-module (gnu packages hardware)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages man)
#:use-module (gnu packages mingw)
#:use-module (gnu packages package-management)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages polkit)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages xml))
(define-public fwupd-zzkt
(package
(name "fwupd-lvfs")
(version "1.9.18")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/fwupd/fwupd")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"179yc0nbbyrdya5q16ncf7lkslrhr3i90rgb9vdmv751ikilkby6"))))
(build-system meson-build-system)
(arguments
(list
#:configure-flags #~(list "--wrap-mode=nofallback"
"-Dsystemd=false"
(string-append "-Defi_os_dir="
#$gnu-efi "/lib")
"-Defi_binary=false"
(string-append "-Dudevdir="
#$output "/lib/udev")
"--localstatedir=/var"
(string-append "--libexecdir="
#$output "/libexec")
"-Dsupported_build=true"
;; (don't) disable LVFS, (just) because it contains
;; nonfree firmwares.
;; "-Dlvfs=disabled"
)
#:glib-or-gtk? #t ;To wrap binaries and/or compile schemas
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'make-source-writable
(lambda _
(for-each make-file-writable
(find-files "."))
(substitute* "src/fu-self-test.c"
(("/bin/sh")
(which "sh")))))
;; These two files are zipped by Python, so need a newer timestamp.
(add-after 'unpack 'newer-timestamps-for-python-zip
(lambda _
(let ((circa-1980 (* 10 366 24 60 60)))
(for-each (lambda (file)
(make-file-writable file)
(utime file circa-1980 circa-1980))
'("./libfwupdplugin/tests/colorhug/firmware.bin"
"./libfwupdplugin/tests/colorhug/firmware.bin.asc")))))
(add-before 'build 'setup-home
(lambda _
(setenv "HOME" "/tmp")))
(add-before 'install 'no-polkit-magic
(lambda _
(setenv "PKEXEC_UID" "something")))
;; (add-after 'install 'ensure-all-remotes-are-disabled
;; ;; Because no remote currently promises to offer only free
;; ;; software firmwares, disable them to prevent a user to
;; ;; unknowingly install proprietary firmware updates.
;; (lambda _
;; (substitute* (find-files (string-append #$output "/etc")
;; "\\.conf$")
;; (("Enabled=true")
;; "Enabled=false"))))
)))
(native-inputs (list gobject-introspection
python-pygobject
python-pillow
python-pycairo
python
pkg-config
vala
gtk-doc
which
umockdev
`(,glib "bin")
help2man
gettext-minimal))
(inputs (append
(list bash-completion
libgudev
libxmlb
sqlite
polkit
eudev
libelf
tpm2-tss
cairo
efivar
pango
protobuf-c
mingw-w64-tools
gnu-efi)
;; (if (supported-package? libsmbios
;; (or (and=> (%current-target-system)
;; platform-target->system)
;; (%current-system)))
;; (list libsmbios)
;; '())
))
;; In Requires of fwupd*.pc.
(propagated-inputs (list curl
gcab
glib
gnutls
gusb
json-glib
libarchive
libjcat))
(home-page "https://fwupd.org/")
(synopsis "Daemon to allow session software to update firmware")
(description "This package aims to make updating firmware on GNU/Linux
automatic, safe and reliable. It is used by tools such as GNOME Software.")
(license license:lgpl2.1+)))

View file

@ -0,0 +1,92 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; as seen near gnu/packages/fonts.scm
;; 0xType is a type foundry specialized in programming fonts.
;; https://0xtype.dev/
(define-module (zzkt packages fonts-0xType)
#:use-module (ice-9 regex)
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system font)
#:use-module (guix build-system trivial))
;; a metapackage for all packaged fonts
(define-public font-collection-0xType
(package
(name "font-collection-0xType")
(version "0.1")
(source #f)
(build-system trivial-build-system)
(arguments
'(#:builder (begin
(mkdir %output) #t)))
(propagated-inputs (list font-0xProto
font-0xPropo))
(synopsis "A collection of fonts from 0xType")
(home-page "https://0xtype.dev/")
(description
"A collection of fonts from 0xType including 0xProto and 0xPropo")
(license license:silofl1.1)))
(define-public font-0xProto
(package
(name "font-0xProto")
(version "2.000")
(source
(origin
(method url-fetch)
(uri "https://github.com/0xType/0xProto/releases/download/2.000/0xProto_2_000.zip")
(sha256
(base32 "1l5lqvchfjhn42s5rdr74s1jzcadnd8vba8s113bbfky1ymgysgg"))))
(build-system font-build-system)
(home-page "https://github.com/0xType/0xProto")
(synopsis "A programming font focused on source code legibility")
(description
"0xProto is a programming font focused on source code legibility. Features; clear differentiation, legibility in small font size, more whitespace, and ligatures that don't deform shape.
Designed by 0xType")
(license license:silofl1.1)))
(define-public font-0xPropo
(package
(name "font-0xPropo")
(version "1.000")
(source
(origin
(method url-fetch)
(uri "https://github.com/0xType/0xPropo/releases/download/1.000/0xPropo_1_000.zip")
(sha256
(base32 "0mrihzffqfxxhmmgs43q5v4z8k6s4k6vcmyd3f0pr7r1fvwigfyc"))))
(build-system font-build-system)
(home-page "https://github.com/0xType/0xPropo")
(synopsis "Just the proportional version of 0xProto")
(description
"0xPropo is a font that retains the atmosphere and beauty of a monospace font and solves some of the difficulties in using monospace fonts for writing natural language (e.g. m and H are too close together, and i and l have too much space).
Designed by 0xType")
(license license:silofl1.1)))

View file

@ -0,0 +1,195 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages fonts-bye-bye-binary)
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system trivial)
#:use-module (guix build-system font))
;; https://typotheque.genderfluid.space/
;; https://gitlab.com/bye-bye-binary
;; https://typotheque.genderfluid.space/zip-fontes/josafronde.zip
;; https://typotheque.genderfluid.space/zip-fontes/cirruscumulus.zip
;; https://typotheque.genderfluid.space/zip-fontes/baskervvol.zip
;; https://typotheque.genderfluid.space/zip-fontes/dindong.zip
;; https://typotheque.genderfluid.space/zip-fontes/homoneta.zip
;; https://typotheque.genderfluid.space/zip-fontes/combine.zip
;; https://typotheque.genderfluid.space/zip-fontes/adelphe.zip
;; https://typotheque.genderfluid.space/zip-fontes/picnic.zip
;; https://typotheque.genderfluid.space/zip-fontes/ductus.zip
;; https://typotheque.genderfluid.space/zip-fontes/ductus-mono.zip
;; https://typotheque.genderfluid.space/zip-fontes/amiamie.zip
;; https://typotheque.genderfluid.space/zip-fontes/amiamie.zip
;; https://typotheque.genderfluid.space/zip-fontes/roberte.zip
;; https://typotheque.genderfluid.space/zip-fontes/escabeau.zip
;; https://typotheque.genderfluid.space/zip-fontes/crozet_te.zip
;; https://typotheque.genderfluid.space/zip-fontes/bbb-poppins-tn.zip
;; a metapackage for all packaged fonts
(define-public font-collection-bye-bye-binary
(package
(name "font-collection-bye-bye-binary")
(version "0.1")
(source #f)
(build-system trivial-build-system)
(arguments
'(#:builder (begin
(mkdir %output) #t)))
(propagated-inputs (list font-baskervvol
font-dindong
font-homoneta
;; font-adelphe
;; font-ls-vg5000
;; font-picnic
;; font-ductus
;; font-ductus-mono
;; font-amiamie
;; font-amiamie-round
;; font-roberte
;; font-escabeau
;; font-crozet
;; font-bbb-poppins-tn
))
(synopsis "A collection of fonts from Bye Bye Binary")
(home-page "https://typotheque.genderfluid.space")
(description
"A collection of fonts")
(license license:silofl1.1)))
;; Baskervvol - Bye Bye Binary - V1.0 — 2022
(define-public font-baskervvol
(package
(name "font-baskervvol")
(version "V1.0 — 2022")
(source
(origin
(method url-fetch)
(uri "https://typotheque.genderfluid.space/zip-fontes/baskervvol.zip")
(sha256
(base32 "0acx8knm8i6d0nqajsyxj3a2812ibdrmwr1mrbwwvzl1finj0skk"))))
(build-system font-build-system)
(home-page "https://typotheque.genderfluid.space/baskervvol.html")
(synopsis
"")
(description
"")
(license license:silofl1.1)))
;; DINdong - Clara Sambot - V1.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/dindong.zip
(define-public font-dindong
(package
(name "font-dindong")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://typotheque.genderfluid.space/zip-fontes/dindong.zip")
(sha256
(base32 "14zz6pz9jwb28nb2n6jzi21r0jh2cv466p9d77cik2lb96ddn8wg"))))
(build-system font-build-system)
(home-page "https://typotheque.genderfluid.space/dindong.html")
(synopsis
"")
(description
"")
(license license:silofl1.1)))
;; Homoneta - Quentin Lamouroux - V1.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/homoneta.zip
(define-public font-homoneta
(package
(name "font-homoneta")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://typotheque.genderfluid.space/zip-fontes/homoneta.zip")
(sha256
(base32 "1dpwxkmc567nnl39k2m1chaz1105qdgfp42rac7mcjkvck5ff38h"))))
(build-system font-build-system)
(home-page "https://typotheque.genderfluid.space/homoneta.html")
(synopsis
"")
(description
"")
(license license:silofl1.1)))
;; LS-VG5000 - Justin Bihan - V1.0 — 2022
;; http://www.lettres-simples.com/
;; Adelphe - Eugénie Bidaut - V2.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/adelphe.zip
;; PicNic - Marielle Nils - V1.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/picnic.zip
;; Ductus - Amélie Dumont - V1.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/ductus.zip
;; Ductus Mono - Amélie Dumont - V1.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/ductus-mono.zip
;; Amiamie- Mirat Masson - V1.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/amiamie.zip
;; Amiamie Round - Mirat Masson - V1.0 — 2022
;; https://typotheque.genderfluid.space/zip-fontes/amiamie.zip
;; Roberte - Eugénie Bidaut - V1.0 — 2023
;; https://typotheque.genderfluid.space/zip-fontes/roberte.zip
;; Escabeau - Max Lillo - V1.0 — 2023
;; https://typotheque.genderfluid.space/zip-fontes/escabeau.zip
;; Crozet·te - Thaïs Cuny - V1.0 — 2023
;; https://typotheque.genderfluid.space/zip-fontes/crozet_te.zip
;; BBB Poppins TN - Eugénie Bidaut & Camille°Circlude | V1.0 — 2023
;; https://typotheque.genderfluid.space/zip-fontes/bbb-poppins-tn.zip
;; (define-public font-
;; (package
;; (name "font-")
;; (version "1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri "https://typotheque.genderfluid.space/zip-fontes/")
;; (sha256
;; (base32 ""))))
;; (build-system font-build-system)
;; (home-page "https://typotheque.genderfluid.space/")
;; (synopsis
;; "")
;; (description
;; "")
;; (license license:silofl1.1)))

View file

@ -0,0 +1,464 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; as seen near gnu/packages/fonts.scm
(define-module (zzkt packages fonts-osp)
#:use-module (ice-9 regex)
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system trivial)
#:use-module (guix build-system font))
;; http://osp.kitchen/foundry
;; as of 2024-03-04 13:43:43
;; a metapackage for all packaged fonts
(define-public font-collection-osp
(package
(name "font-collection-osp")
(version "0.3")
(source
#f)
(build-system trivial-build-system)
(arguments
'(#:builder (begin
(mkdir %output) #t)))
(propagated-inputs (list font-osp-alfphabet
font-osp-belgica-belgika
font-osp-crickx
font-osp-din
font-osp-fluxisch-else
font-osp-libertinage
font-osp-mill
font-osp-notcouriersans
font-osp-philibert
font-osp-reglo
font-osp-sans-guilt
font-osp-work-avec
))
(synopsis "A collection of fonts from OSP")
(home-page "http://osp.kitchen/foundry/")
(description
"A collection of fonts from OSP including; work-avec, sans-guilt, reglo, libertinage, fluxisch-else, din, crickx, belgica-belgika, alfphabet")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/libertinage/
(define-public font-osp-libertinage
(package
(name "font-osp-libertinage")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.libertinage")
(commit "")))
(sha256
(base32 "10bv9kksmbsi1zf0gylywgxch6sp8c2pkyn1y6c3vs1ivhfjn9m5"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/libertinage/")
(synopsis
"A font made by copying and pasting parts of Linux Libertine glyphs.")
(description
"The Libertinage font-set we developed for the FLOSS+Art book. It was built by copying and pasting parts of Linux Libertine glyphs or simply by all-turning glyphs. There are 27 variations, one for each letter of the Latin alphabet and the Full version, containing all modifications.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/fluxisch-else/
(define-public font-osp-fluxisch-else
(package
(name "font-osp-fluxisch-else")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.fluxisch-else")
(commit "75abcc332cdf9083c6d50adaaf3e53725453d152")))
(sha256
(base32 "0nn41gnwgnydkarjv212fdspnv29qyhrd6y2pkpwy53ds1l04p8s"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/fluxisch-else/")
(synopsis
"Fluxisch Else is a font obtained from cheap phototypesetting machines.")
(description
"Fluxisch Else is an experiment, a first attempt to escape the post 80 era of geometrical purity that is so typical of Postscript vector based font drawing. The shapes of Fluxisch Else were obtained from scanning printed textpages that were optically composed by cheap phototypesetting machines in the sixties and seventies. Some of Fluxisch Else beautiful features are: round angles, floating baselines, erratic kerning.
More precisely in this case, George Maciunas of the Fluxus group used an IBM composer (probably a Selectric typewriter) for most of his own work, and as a former designer, for all Fluxus work. In the 1988 book Fluxus Codex, kindly given to Pierre Huyghebaert by Sylvie Eyberg, the body text is typeset in a charmingly rounded and dancing Fluxisch that seems to smile playfully at its dry swiss creator. As if it was really tempted, trying to provide a beautiful warm up to this old modernist classical.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/sans-guilt/
(define-public font-osp-sans-guilt
(package
(name "font-osp-sans-guilt")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.sans-guilt")
(commit "738f04f611b13a7e1f1833c1b29c17307530de5d")))
(sha256
(base32 "0nn41gnwgnydkarjv212fdspnv29qyhrd6y2pkpwy53ds1l04p8s"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/sans-guilt/")
(synopsis "Three versions of Gill Sans based on three different sources")
(description
"Sans Guilt MB: Based on a rasterized pdf made with the Monotype Gill Sans delivered with Mac OSX.
Sans Guilt DB: Based on early sketches by Eric Gill
Sans Guilt LB: Based on lead type from Royal College of Arts letterpress workshop.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/work-avec/
(define-public font-osp-work-avec
(package
(name "font-osp-work-avec")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.work-avec")
(commit "1feaf402adc8e5b5743c2613cecb22fb1fb86505")))
(sha256
(base32 "06ifsydmk90fzlkvzb3ij7lzsvdiamd05s1i33fa1mk6x84a9wpz"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/work-avec/")
(synopsis "A schoolbook version of the Work Sans font")
(description "A schoolbook version of the Work Sans font.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/crickx
(define-public font-osp-crickx
(package
(name "font-osp-crickx")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.crickx")
(commit "b32fb9627c887be02e36271b70e1e29178611312")))
(sha256
(base32 "06ifsydmk90fzlkvzb3ij7lzsvdiamd05s1i33fa1mk6x84a9wpz"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/crickx/")
(synopsis "A digital reinterpretation of a set of adhesive letters")
(description
"The Publi Fluor shop was situated in the northern part of Brussels, Schaerbeek, and founded by the father of Madame Christelle Crickx who was a trained letter painter. Starting to cut letters with the rounded and skilled cardboard templates drawn by her father, Madame Crickx slowly morphs the shapes by analysing how typographic niceties confuse her non-trained clients and leads to bad letters placement. She progressively removes the optical compensation of rounded tops and bottoms, straightens sides, and attaches accents for less floating parts. Those moves add a very specific orientation to this otherwise quite common bold italic sans serif display typeface.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/osp-din/
(define-public font-osp-din
(package
(name "font-osp-din")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.osp-din")
(commit "dc97c1ed86860351ae52a5636fa9c9a42ff93a8f")))
(sha256
(base32 "08lmli9l0nbcb8mhbrd458zkzm3ni29cljzkihyq438bq5v6lzxh"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/osp-din/")
(synopsis "A DIN font based on the original 1932 drawings")
(description
"The first cut of OSP-DIN was drawn for the festival Cinema du réel 2009, when we were invited to work on a cartographic version of the programme. We drew the first cut of the open source DIN from grid based drawings similar to the original 1932 drawings of the DIN we saw during our investigative trip to Berlin in February 2008.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/reglo/
(define-public font-osp-reglo
(package
(name "font-osp-reglo")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.reglo")
(commit "803694439ca14a3f2806c7347d198ed6201e8c4b")))
(sha256
(base32 "0kk6k038pfmddz53js3r1dlhib5cv9mar27vcd772r1dadagb71j"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/reglo")
(synopsis "Reglo is a font so tough that you can seriously mistreat it")
(description
"Reglo is a font so tough that you can seriously mistreat it. The font was designed by Sebastien Sanfilippo in autumn 2009 and is used for Radio Panik identity.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/alfphabet/
(define-public font-osp-alfphabet
(package
(name "font-osp-alfphabet")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.constantvzw.org/osp/foundry.alfphabet")
(commit "83c57d32b356826723bfe4f1a9db2301b8c5b9a6")))
(sha256
(base32 "0xb08k470hca23lvs700316qmjn83gsp5znhmhbjfwk0vvbjq5x9"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/alfphabet")
(synopsis
"The Alfphabet family is based on the Belgian road signage lettering")
(description
"The Alfphabet family is based on the Belgian road signage lettering called Alphabet in French and Alfabet in Dutch.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/belgica-belgika/
(define-public font-osp-belgica-belgika
(package
(name "font-osp-belgica-belgika")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://gitlab.constantvzw.org/osp/foundry.belgica-belgika/-/archive/master/foundry.belgica-belgika-master.zip")
(sha256
(base32 "0c5ilf59f70fwyl5rcvqs8q1cicv5v7rhrvsj24vqsfd3ig9x1c1"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/belgica-belgika")
(synopsis
"Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages")
(description
"Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/philibert/
(define-public font-osp-philibert
(package
(name "font-osp-philibert")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://gitlab.constantvzw.org/osp/foundry.philibert/-/archive/master/foundry.philibert-master.zip")
(sha256
(base32 "0pd1q1d8ni02iaj53xln0iyddh0abs4ks3p1zqgwz2fr0d9v8647"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/philibert")
(synopsis
"Font based of the lettering of old road signs in France")
(description
"Based of the lettering of old road signs in France for hamlets and localities. This lettering is also in use as clean vectors on some motorway signs in Luxembourg.")
(license license:silofl1.1)))
;; http://osp.kitchen/foundry/mill/
(define-public font-osp-mill
(package
(name "font-osp-mill")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://gitlab.constantvzw.org/osp/foundry.mill/-/archive/master/foundry.philibert-mill.zip")
(sha256
(base32 "1bnigqywl96gfgc3rqmca30743wy16v12g6y9409d12ifjdjkg2s"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/mill")
(synopsis
"A font for engraving building instructions into wood")
(description
"OSP Mill has been created for engraving building instructions into the wood of a bench.")
(license license:silofl1.1)))
;; https://gitlab.constantvzw.org/osp/foundry.notcouriersans
(define-public font-osp-notcouriersans
(package
(name "font-osp-notcouriersans")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://gitlab.constantvzw.org/osp/foundry.notcouriersans/-/archive/master/foundry.notcouriersans-master.zip")
(sha256
(base32 "1d0wfi5sf53sby56d8s7ahwcb43n2cbddfbwx7iv4wzwvk1349pk"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/notcouriersans")
(synopsis
"A re-interpretation of Nimbus Mono")
(description
"NotCourierSans is a re-interpretation of Nimbus Mono whose design began in Wroclaw at the occasion of the Libre Graphics Meeting 2008.
For more detailed information explore the files included in the font package (FONTLOG.txt) or go through the Font Info section (FONTLOG and Comment) in the font (open the font file in FontForge and go to Font Info in the Element menu).")
(license license:silofl1.1)))
;; http://osp.kitchen/api/osp.foundry.belgica-belgika/
;;
;; (define-public font-osp-belgica-belgika-5th
;; (package
;; (name "font-osp-belgica-belgika-5th")
;; (version "1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri "http://osp.kitchen/api/osp.foundry.belgica-belgika/ecfd91b1bb7800040d352413f27abb8cd3c92538/blob-data/belgika-5th-webfont.ttf")
;; (sha256
;; (base32
;; "0jr01j9nigc3nhghn47lwfq6lpyviyri2x5rdfpn28b8b1ghkz6r"))))
;; (build-system font-build-system)
;; (home-page "http://osp.kitchen/foundry/belgica-belgika")
;; (synopsis "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (description "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (license license:silofl1.1)))
;; http://osp.kitchen/api/osp.foundry.belgica-belgika/d0c4a6eb6e0b3618b77ebe92743b8517f5368814/blob-data/belgika-8th-webfont.ttf
;; 0q61r98377hbr5c5s0bl5xrskriqw26wasfdgz56x4qwgi85qiz9
;; (define-public font-osp-belgica-belgika-8th
;; (package
;; (name "font-osp-belgica-belgika-8th")
;; (version "1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri "http://osp.kitchen/api/osp.foundry.belgica-belgika/d0c4a6eb6e0b3618b77ebe92743b8517f5368814/blob-data/belgika-8th-webfont.ttf")
;; (sha256
;; (base32
;; "0q61r98377hbr5c5s0bl5xrskriqw26wasfdgz56x4qwgi85qiz9"))))
;; (build-system font-build-system)
;; (home-page "http://osp.kitchen/foundry/belgica-belgika")
;; (synopsis "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (description "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (license license:silofl1.1)))
;; http://osp.kitchen/api/osp.foundry.belgica-belgika/5260b4052c63c359739ddd024428633bfbea3c4f/blob-data/belgika-16th-webfont.ttf
;; 1qdh1hn3a5vhsz0v4n4f48gghsjzl051x348y71zmc236nspzm9b
;; (define-public font-osp-belgica-belgika-16th
;; (package
;; (name "font-osp-belgica-belgika-16th")
;; (version "1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri "http://osp.kitchen/api/osp.foundry.belgica-belgika/5260b4052c63c359739ddd024428633bfbea3c4f/blob-data/belgika-16th-webfont.ttf")
;; (sha256
;; (base32
;; "1qdh1hn3a5vhsz0v4n4f48gghsjzl051x348y71zmc236nspzm9b"))))
;; (build-system font-build-system)
;; (home-page "http://osp.kitchen/foundry/belgica-belgika")
;; (synopsis "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (description "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (license license:silofl1.1)))
;; http://osp.kitchen/api/osp.foundry.belgica-belgika/772c8b28b82269ac022fceee3ec04fc8fb166c3c/blob-data/belgika-40th-webfont.ttf
;; 15sf5yj9g6kpjjhd7aj0cg0wi8rv40b0wah9ckgn4470la8n7via
;; (define-public font-osp-belgica-belgika-40th
;; (package
;; (name "font-osp-belgica-belgika-40th")
;; (version "1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri "http://osp.kitchen/api/osp.foundry.belgica-belgika/772c8b28b82269ac022fceee3ec04fc8fb166c3c/blob-data/belgika-40th-webfont.ttf")
;; (sha256
;; (base32
;; "15sf5yj9g6kpjjhd7aj0cg0wi8rv40b0wah9ckgn4470la8n7via"))))
;; (build-system font-build-system)
;; (home-page "http://osp.kitchen/foundry/belgica-belgika")
;; (synopsis "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (description "Stroke fonts with no contrast and capital letters only based on diverse pseudo-generic elements for multi-usages.")
;; (license license:silofl1.1)))
;; what remains...
;; https://gitlab.constantvzw.org/osp/foundry.ax-28-script
;; https://gitlab.constantvzw.org/osp/foundry.belogodor
;; https://gitlab.constantvzw.org/osp/foundry.certegeska
;; https://gitlab.constantvzw.org/osp/foundry.cimatics
;; https://gitlab.constantvzw.org/osp/foundry.cowboy-henk
;; https://gitlab.constantvzw.org/osp/foundry.erbarre
;; https://gitlab.constantvzw.org/osp/foundry.le-patin-helvete
;; https://gitlab.constantvzw.org/osp/foundry.limousine
;; https://gitlab.constantvzw.org/osp/foundry.logisoso
;; https://gitlab.constantvzw.org/osp/foundry.metadin
;; https://gitlab.constantvzw.org/osp/foundry.polsku
;; https://gitlab.constantvzw.org/osp/foundry.sans-guilt-wafer
;; https://gitlab.constantvzw.org/osp/foundry.ume
;; https://gitlab.constantvzw.org/osp/foundry.vj12
;; https://gitlab.constantvzw.org/osp/foundry.w-droge
;; (define-public font-osp-
;; (package
;; (name "font-osp-")
;; (version "1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri "https://gitlab.constantvzw.org/osp/foundry.philibert/-/archive/master/foundry.philibert-master.zip")
;; (sha256
;; (base32 ""))))
;; (build-system font-build-system)
;; (home-page "http://osp.kitchen/foundry/")
;; (synopsis
;; "")
;; (description
;; "")
;; (license license:silofl1.1)))

View file

@ -0,0 +1,196 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; https://usemodify.com/
;; see also -> https://typespecimens.xyz/
(define-module (zzkt packages fonts-usemodify)
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system trivial)
#:use-module (guix build-system font))
;; fomts via https://usemodify.com/
;; a metapackage for all packaged fonts
(define-public font-collection-usemodify
(package
(name "font-collection-usemodify")
(version "0.1")
(source
#f)
(build-system trivial-build-system)
(arguments
'(#:builder (begin
(mkdir %output) #t)))
(propagated-inputs (list font-sono
;; font-
font-violet-sans))
(synopsis "Beautiful, classy, punk, professional, incomplete, weird typefaces")
(home-page "https://usemodify.com/")
(description
"Use & Modify is a personal selection of beautiful, classy, punk, professional, incomplete, weird typefaces. Open source licences make them free to use and modify. This selection is the result of deep search and crushes. This selection is yours.")
(license license:silofl1.1)))
;; https://usemodify.com/fonts/sono/
(define-public font-sono
(package
(name "font-sono")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/sursly/sono")
(commit "7dc859025b464e8530d90116782b5407b7b6376d")))
(sha256
(base32 "07arajpymrpnayxidzbqx83ffp0fj5l25jddnjbi2r4hzjs4hfhk"))))
(build-system font-build-system)
(home-page "http://osp.kitchen/foundry/libertinage/")
(synopsis
"A soft monospace (or proportional!) variable font")
(description
"A soft monospace (or proportional!) variable font by Tyler Finck.
Sono was initially only monospace. Sono was released in 2020 and was named for its most obvious characterstics: soft, monospaced. It has a low cap height which I enjoy when typing with THE CAPS LOCK KEY TURNED ON. Sono has been constantly updated and in 2022 received an additional axis called mono which has corresponding proportional styles. Those styles are prefixed with the name Sans for the sake of brevity. The name Sono doesnt make as much sense now, but changing it would upset a precarious balance in the universe. Ok maybe not that severe. But itd be weird. This is also the final free font I intend to make in the foreseeable future.
Sono comes in static styles for desktop and web as well as a single variable font and has received several updates since its release in August of 2018. It is available on Github and on Google Fonts.")
(license license:silofl1.1)))
;; https://usemodify.com/fonts/violet-sans/
(define-public font-violet-sans
(package
(name "font-violet-sans")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/violetoffice/violet_sans/")
(commit "e332826cf8445d60bf17bd21c07eafb052cf9070")))
(sha256
(base32 "1fwsr5b03qrfh5axmdwj7452z1x9w48xa13swyp3khbl1z0pij8f"))))
(build-system font-build-system)
(home-page "https://usemodify.com/fonts/violet-sans/")
(synopsis
"Violet Sans finds harmony in disparate forms")
(description
"Violet Sans finds harmony in disparate forms, at once sharp and aggressive it can retreat to being gentle and smooth, allowing for different expressions within a single weight and style. Initially designed as an all caps display face with generous counterforms and extended crossbars, this same personality has been extrapolated into the wider character set. As a nod to the long tradition of geometric sans serif typefaces, in particular Eurostile, Violet Sans has been developed for modern applications with a bit of experimentation and haphazard gestures built right in. For daily use, enjoy.")
(license license:silofl1.1)))
;; https://usemodify.com/fonts/orbit/
;; https://usemodify.com/fonts/instrument-serif/
;; https://usemodify.com/fonts/wavy/
;; https://usemodify.com/fonts/wondertype/
;; https://usemodify.com/fonts/metaaccanthis/
;; https://usemodify.com/fonts/version/
;; https://usemodify.com/fonts/hibana/
;; https://usemodify.com/fonts/heal-the-web/
;; https://usemodify.com/fonts/dinish/
;; https://usemodify.com/fonts/authentic-sans/
;; https://usemodify.com/fonts/lucette/
;; https://usemodify.com/fonts/aboensis/
;; https://usemodify.com/fonts/barlow/
;; https://usemodify.com/fonts/ferrite-core/
;; https://usemodify.com/fonts/routed-gothic-font/
;; https://usemodify.com/fonts/orchard-linear/
;; https://usemodify.com/fonts/profont/
;; https://usemodify.com/fonts/apl386/
;; https://usemodify.com/fonts/lunchtype/
;; https://usemodify.com/fonts/redaction/
;; https://usemodify.com/fonts/league-mono/
;; https://usemodify.com/fonts/manusquared/
;; https://usemodify.com/fonts/victor-mono/
;; https://usemodify.com/fonts/ia-writer/
;; git fetch
;; (define-public font-
;; (package
;; (name "font-")
;; (version "1")
;; (source
;; (origin
;; (method git-fetch)
;; (uri (git-reference
;; (url "")
;; (commit "")))
;; (sha256
;; (base32 ""))))
;; (build-system font-build-system)
;; (home-page "")
;; (synopsis
;; ""
;; (description
;; "")
;; (license license:silofl1.1)))
;; url fetch
;; (define-public font-
;; (package
;; (name "font-")
;; (version "1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri "")
;; (sha256
;; (base32 ""))))
;; (build-system font-build-system)
;; (home-page "")
;; (synopsis
;; "")
;; (description
;; "")
;; (license license:silofl1.1)))

View file

@ -0,0 +1,881 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages fonts-velvetyne)
;; #:use-module (ice-9 regex)
#:use-module (gnu packages base) ;; locales?
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system font)
#:use-module (guix build-system trivial))
;; https://velvetyne.fr/
;; credit line is included at the end of the package description.
;; updated 2024-03-03 13:03:09
;; a metapackage for all packaged fonts
(define-public font-collection-velvetyne
(package
(name "font-collection-velvetyne")
(version "0.1")
(source
#f)
(build-system trivial-build-system)
(arguments
'(#:builder (begin
(mkdir %output) #t)))
(propagated-inputs (list
font-velvetyne-amdal
font-velvetyne-anthony
;; font-velvetyne-avara
font-velvetyne-backout
font-velvetyne-basteleur
font-velvetyne-bianzhidai
;; font-velvetyne-cirruscumulus
font-velvetyne-compagnon
font-velvetyne-degheest
font-velvetyne-facade
font-velvetyne-format-1452
font-velvetyne-fungal
font-velvetyne-grotesk
font-velvetyne-gulax
font-velvetyne-jgs
font-velvetyne-kaeru-kaeru
font-velvetyne-karrik
font-velvetyne-lineal
font-velvetyne-lithops
font-velvetyne-mess
font-velvetyne-mourier
font-velvetyne-murmure
font-velvetyne-ouroboros
font-velvetyne-outward
font-velvetyne-picnic
font-velvetyne-pilowlava
font-velvetyne-resistance
font-velvetyne-sligoil
font-velvetyne-tiny
font-velvetyne-trickster
font-velvetyne-typefesse
;; font-velvetyne-vg5000
))
(synopsis "A collection of fonts from Velvetyne")
(home-page "https://velvetyne.fr/")
(description
"A collection of fonts from Velvetyne including; Anthony, Avara, BackOut, Basteleur, CirrusCumulus, Compagnon, Façade, Grotesk, Jgs font, Kaeru Kaeru, Mourier, Ouroboros, PicNic, Pilowlava, TINY, Typefesse, VG5000, Mess, Format 1452, Trickster, Lithops, Lineal, Amdal, Gulax, BianZhiDai, Degheest, Fungal, Karrik, Le Murmure, Outward, Resistance, Sligoil.")
(license license:silofl1.1)))
(define-public font-velvetyne-bianzhidai
(package
(name "font-velvetyne-bianzhidai")
(version "2.0")
(source
(origin
(method url-fetch)
(uri
"https://github.com/sdfggvfvj/bianzhidai-2.0/archive/refs/tags/OFL.tar.gz")
(sha256
(base32 "0p6bbvy3m474h57wm3nlg6zz94f3y2d6mhiawmlgg8zbny26kjl2"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/bianzhidai/")
(synopsis
"BianZhiDai is a font inspired by shading characters in ASCII art and woven plastic bags")
(description
"BianZhiDai is a font inspired by shading characters in ASCII art and 编织袋 (woven plastic bag in Simple Chinese). BianZhiDai is good with colors, especially in combination with different fill/stroke colors. Try it, and play it. Besides, the whole font is modular based, so you can customize it in Glyphs any way you like.")
(license license:silofl1.1)))
(define-public font-velvetyne-degheest
(package
(name "font-velvetyne-degheest")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/Eugenie-B/degheest-types/")
(commit "22a7ed8a6371d98e7f8a6fdb4db74a17885ae3bf")))
(sha256
(base32 "0js6h8ch9dbha2lkcmhpy5qmryzi09pjkryqzngg0kn4k2cyg1bw"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/degheest")
(synopsis
"A font family of Ange Degheests remarkable typefaces and lettering work")
(description
"After discovering Ange Degheests archives at the Rennes School of Fine Arts, we decided to put together an exhibition that attempted to finally give the designer the full recognition she deserves. In this exhibition, visitors learnt about Degheests life story and professional achievements, and discovered many original archival documents that had never previously been presented to the public. In addition to this historical research, we revived some of Ange Degheests most remarkable typefaces and lettering work, which are now available in digital format.
To revive means: to resurrect, to reactivate, to renew; and in many ways our work consisted in a kind of resurrection. We had indeed to reactivate the memory of Ange Degheest by diving in her archives, by exhuming the story of a woman who lived through many ages and locations. Only once we had acquired a good grasp of her life story, were we able to revive her typefaces. Reviving her designs and distributing them widely, free of charge, is our way to honour Ange Degheests memory and to give them a new life in the 21st century.
Deheest is a project by Ange Degheest, Eugénie Bidaut, Oriane Charvieux, Mandy Elbé, Luna Delabre, Camille Depalle, Justine Herbel, May Jolivet and Benjamin Gomez, created in Atelier de création typographique from EESAB Rennes.")
(license license:silofl1.1)))
(define-public font-velvetyne-fungal
(package
(name "font-velvetyne-fungal")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/fungal/")
(commit "b5b58278bc903ea5f0fe015a59b07fa77e9c56ff")))
(sha256
(base32 "0ab552f5f3fm7l7dj7jgg0klj66giwgyl1nx21rqvqdr6vf2zmch"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/fungal")
(synopsis
"Libre variable font inspired by mycelium growth, forked from DejaVu Sans")
(description
"In 2022, Hato press invited Raphaël Bastide to do a publication part of the zine series. In a wish to revive the fan part of fanzine, Raphaël Bastide decided to pay tribute to Wikipedia, a surviving, precious, unequaled place on the open WWW. The 16 pages riso print zine shows the encyclopedias interface as a post-human vestige, an artifact invaded by biomorphic figures and spreading typography. Through the pages of the zine, the reader discovers how the graphic elements are spreading like mycelium, creating an ornamental graphic network.
The Fungal font is a close collaboration between Jérémy Landes and Raphaël Bastide, so the characters of the zine can grow and spread thanks to their variable design. Fungal is a fork of DejaVu Sans, a libre font, popular on Linux systems.
The hypæ of the mycelium growing from each glyphs can be controlled in their length (the Grow axis) and in their thickness (the Thickness axis) allowing to fine tune the density of the rhizome growing on the page and the legibility of the text in the same move.
Fungal by Raphaël Bastide, Jérémy Landes. Distributed by velvetyne.fr")
;; Fungal is under Bitstream Vera Fonts Copyright
(license license:silofl1.1)))
(define-public font-velvetyne-sligoil
(package
(name "font-velvetyne-sligoil")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/sligoil")
(commit "2e60a0fa31685a64fcc7b6e9854aca4476c36403")))
(sha256
(base32 "0gbfq64rgl48rj5la2x49516ghr29fc58p49bwi2fp7xi22bak7z"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/sligoil")
(synopsis
"A Typeface influenced by the culture of the British isles")
(description
"Sligoil is a monospace typeface. It has been designed for the interface of the Unknown Number game, published by Godolphin Games. Sligoil is also the name of an evil fictional company within the game.
The Sligoil typeface has been influenced by the culture of the British isles (the work of Matthew Carter, of course, but also signs on Irish whiskey distilleries) and also by the letters on vintage Space Cadet keyboards (produced by the MIT). It presents wide language support for Latin-based European languages and a collection of symbols and alternate forms (including upright italic letters).
Sligoil by Ariel Martín Pérez. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-outward
(package
(name "font-velvetyne-outward")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/raoulaudouin/Outward/")
(commit "e541c20e28d6aa9b8d51489c86d0bb71b2a1e431")))
(sha256
(base32 "0s3jjw05kypa9id8a9dy33nb73h38b8adi33ahz2ki16xfj45gf6"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/")
(synopsis
"Outward is a display font family with three cuts")
(description
"Outward is a display font family coming in three cuts: Block (regular), Round (italic) and Borders (bold). Outward Block was initially designed in capitals only with the intent of getting rid of white spaces to reach a black type color, as opposed to the ideal grey sought after by typographers. The extended set of characters and families was developed following this root.
Outward by Raoul Audouin. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-karrik
(package
(name "font-velvetyne-karrik")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/phantomfoundry/karrik_fonts")
(commit "42ae96dcdfdd75b883d4d56a783c337f818f6651")))
(sha256
(base32 "0w3jprghkasyrn4gi9qpmdngrsqfr8hdfdr7l52j87mk26c859gd"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/karrik")
(synopsis
"Karrik is rooted in vernacular typography")
(description
"Karrik is rooted in vernacular typography. The weight disadjustments, the lack of optical corrections, the uneven width of the letters are some of the features of early sans serif typefaces that inspired us in this boundless reinterpretation. We kept these features noticeable at display font sizes but with the constraint that the typeface remains legible at body copy size. A set of random, chaotic uppercase lettersaccessible with the stylistic set SS01has been added as tribute to the roots of Karrik; uneven garage letterings, nameless fonts of obscure and discontinued foundries.
Karrik by Jean-Baptiste Morizot, Lucas Le Bihan. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-murmure
(package
(name "font-velvetyne-le-murmure")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/murmure")
(commit "7cfa8faf6ce6fe8d030410913b6147931cdc2ecb")))
(sha256
(base32 "0l8w6942ndmjm8zjkr2m2y2j6jbkq1iq7sdchma1xr1j1zmjzza0"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/le-murmure")
(synopsis
"Le Murmure font plays on a skillful mismatch between characters")
(description
"Used as a titling font, its height and the stability of its shapes lend it elegance, whilst details inspired by calligraphy and technique reveal all of Murmures notions of experimentation, research and creativity. Le Murmure is a typeface devoid of serifs which combines effectiveness, legibility and singularity. Its highly condensed proportions draw their inspiration from magazine titling fonts and add the editorial dimension the agency wished to endow their new identity with.
This typeface comes with many glyph variations, meaning alternate letters drawn in an even more original way. Here lies infinite potential which the users will take great delight in exploiting through a random opentype function.
Inga Plönnig's Magnet was a great influence on Le Murmure. If you like Le Murmure, you should defintely have a look at the broader family that Magnet has to offer.
Le Murmure by Jérémy Landes. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-resistance
(package
(name "font-velvetyne-resistance")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://github.com/velvetyne/resistance-generale/archive/master.zip")
(sha256
(base32 "0zyd63zhxg2b59ahmxkw9aabqxyn9bjvnbarp053k1jna9rl9csg"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/resistance")
(synopsis
"Résistance generale")
(description
"Font created using Glyphr Studio by the students of ENSAD Paris at La Générale, with the help of the F/LOS foundry Velvetyne.
Creators: Pauline Cormault, Esther Michaud, Claire Mucchieli, Merlin Andreae, Raphaël Maman, Pedro Gomes-Cardoso, Juliette Nier, Gabrielle Meistretty, Damien Bauza.
Résistance by A collective. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-gulax
(package
(name "font-velvetyne-gulax")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/gulax")
(commit "25ad92e48c142ad0f50c70f4fbaed3a44d93e37a")))
(sha256
(base32 "1z4xgck5nqpdc35qc6wrgjgsymwah7yc7mpmi1mzav2p8pf9p75q"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/gulax")
(synopsis
"Another 'experimental' monolinear sans")
(description
"Again another 'experimental' monolinear sans. Enjoy or not.
Gulax by Morgan Gilbert, with the contribution of Anton Moglia. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-lineal
(package
(name "font-velvetyne-lineal")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/lineal")
(commit "8dfea6601fdb5022ec38fc6d83de3cc44cb1bffa")))
(sha256
(base32 "0g3q823i80ibnqlvp817nz1z3w0vbk5gzqqy6b6h2j8qbh09y2kp"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/")
(synopsis
"Sort of Futura built with modules, without any optical corrections")
(description
"Lineal is a Libre Family initiated by Frank Adebiaye and updated by the Velvetyne Team.
According to Frank, Lineal was originally inspired by the song called 2870 by Gérard Manset. It ended-up looking like a sort of Futura built with modules, without any optical corrections. Its first version was drawn in 2010 with FontForge 2.0. and published on Velvetyne on February 2011.
Since 2019, Anton Moglia worked on enhancing the character set, to fit his own needs (with Glyphs App). It was largely developed by Anton Moglia, who reviewed all the capitals, added lowercase letters and other symbols and gave it a more stable structure. He extended the family by adding weights, from Thin to Heavy and cleaned up the entire character set of superfluous curve points.
During 2023, Ariel Martín Pérez helped Anton Moglia publish this substantial update of Lineal, developing the character set for other languages and helping build the repository for publication. Ariel Martín Pérez expanded language support and improved spacing and kerning.
Lineal by Frank Adebiaye, with the contribution of Anton Moglia, Ariel Martín Pérez. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-amdal
(package
(name "font-velvetyne-amdal")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/amdal")
(commit "4896d186680c62d002702f4c17ac741038b3d905")))
(sha256
(base32 "02v6gqz1gl0q63vb5ipr389mql1cav94qcwwqrcjjv899pzx7nnp"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/amdal")
(synopsis
"Amdal is a Tifinagh titling font")
(description
"Amdal is a Tifinagh typeface designed by Walid Bouchouchi - Akakir Studio. Tifinagh is the alphabet used to write Tamazight, a language common to several North African countries and an official language in Algeria and Morocco. This alphabet finds its origin in antiquity, it has long fallen into disrepair, and reintroduced thanks to the committed work of linguists and historians of the region.
Amdal is a titling font, born out of a lettering project for Korean fashion brand Merely Made, which was developing a collection inspired by the Sahara (North African desert) with the keyphrase a better world. From there began the development of a font with a limited glyphset intended to write a particular sentence. Then the rest of the glyphs followed until the glyphsets for Basic-IRCAM, Extended, Neo-Tifinagh and Touareg were completed.
Amdal means World in Tamazight (Berber language).
Amdal by Walid Bouchouchi. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-lithops
(package
(name "font-velvetyne-lithops")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/daytonamess/lithops")
(commit "b9f42e0fb75746fa72a23cc96d86891c42d4eaba")))
(sha256
(base32 "0isjklwhpdlkff9h7xpczkrx7bc5qkb0f15g7gc9msfc7nm3d3c2"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/lithops")
(synopsis
"Lithops is a very display, very unique, very complex semi modular font")
(description
"Lithops is a very display, very unique, very complex semi modular font. Uppercase only, it was originally hand drawn in Procreate, and then processed in Glyphs 3. Its name stems from succulent plants to which it bears a resemblance, and was (loosely) inspired by Art Nouveau, Alzheimer brains and Matisse cutouts. Lithops started in February 2021 as a spontaneous creative outlet and glyph drawing exercise. Though it may not be easy to use and is difficult to categorise, Lithops serves as an exploration of the future of type design, begging the question: how complex can a font be, all while staying cohesive, legible and aesthetically pleasing, and most importantly, fun?
Lithops by Anne-Dauphine Borione. Distributed by velvetyne.fr")
(license license:silofl1.1)))
(define-public font-velvetyne-anthony
(package
(name "font-velvetyne-anthony")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/anthony")
(commit "bf84739794cf48ff661f3ba6cee2dc38f3bc4710")))
(sha256
(base32 "0q5c5y3g9r6f6jla7z4xmcl1vprr4l1ai5dgdyikmj1dsbdig7fy"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/anthony/")
(synopsis
"A typeface inspired by artworks of British sculptor Anthony Caro")
(description
"Anthony is a typeface designed by Sun Young Oh and inspired by the artworks of British sculptor Anthony Caro. The form of this typeface comes from his sculptures that are leaning against each other.
The typeface is packed with alternates for most letters that are pseudo-randomly picked when you write some text.
Anthony by Sun Young Oh. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-avara
(package
(name "font-velvetyne-avara")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/avara")
(commit "cb655944d819ff3636e35bc58407e2b30b36e6fe")))
(sha256
(base32 "0prh207as83md0hqych3hvzlvwck2k5hcy6mw531bjgacmlv731r"))))
(native-inputs
(list glibc-locales))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/avara/")
(synopsis
"Transitional serif curveless font based on a square grid")
(description
"Avara is a libre transitional serif curveless type family. The placement of its nodes is exclusively based on a rough square grid. The original reason of this design choice was to facilitate collaboration on the font, and it now results in the radical and highly constrained shapes of this type family. It was started and first released in November 2011 by Raphaël Bastide; it has been updated since then and finally published here. It might be updated again in the future, tho. Maybe by you.
The Bold style was initiated by Raphaël Bastide and continued by Wei Huang and Lucas Le Bihan; the Bold Italic by Lucas Le Bihan; the Black was started by Walid Bouchouchi and Jérémy Landes, then it was boldened again and finished by Lucas Le Bihan.
Avara by Raphaël Bastide, with the contribution of Wei Huang, Lucas Le Bihan, Walid Bouchouchi, Jérémy Landes. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-backout
(package
(name "font-velvetyne-backout")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/backout")
(commit "4f894ca0bf7d46e12a1e818d24a1234660e5848b")))
(sha256
(base32 "092kp582876nvk4dgfjfd55fipjj17wjv82s1cf4924v5k2j2nah"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/backout/")
(synopsis
"BackOut is a kind of African Glyphic typeface")
(description
"Inspired by humanist typefaces such as Albertus, BackOut has a decidely African design. Its name comes from the eponymous song by Bob Marley and The Wailers.
The 2.0 version of BackOut is a faithful review of Frank's original with improved spacing and kerning, corrected contrast, new lowercase letters and extended language support and functionalities. In October 2022, the 2.1 version was released, with revised kerning and some minor modifications.
BackOut by Frank Adebiaye, with the contribution of Ariel Martín Pérez. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-basteleur
(package
(name "font-velvetyne-basteleur")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/basteleur")
(commit "f32302d63d46e9b996f329648b0f2df01c9190f5")))
(sha256
(base32 "0yfnx58fi8q6ccppq5rjz3j21sd0v8zxcyhiw4q7k6p9wzvnagh7"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/basteleur/")
(synopsis
"A funny blend of medieval-ish and cooperblack-ish")
(description
"This typeface was designed with the Tarot de Marseille in mind. This led to a funny blend of medieval-ish and cooperblack-ish typeface. An anniversary update of June 2022 adds a lighter and sharper weight to the original bold and soft one.
The Basteleur Arcana represents a lot of things a designer can experience: new beginnings, having fun, crafting, but also a lack of confidence and having hard time to finish projects
Basteleur by Keussel. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-cirruscumulus
(package
(name "font-velvetyne-cirruscumulus")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/Clarasambot/cirruscumulus")
(commit "f4a5673e51959e55fc488df00a9f3d638a850677")))
(sha256
(base32 "0bn74b8rr2cl5y5nkcdq736c6qbvy1a6l5j6k3clx5qfgbhdchd1"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/cirruscumulus/")
(synopsis
"Modular typeface inspired by scientific diagrams")
(description
"CirrusCumulus was designed without using curves. it's made-up of different modules inspired by scientific diagrams. CirrusCumulus is also a hybridization of two styles: it has a lineal-style lowercase set, as well as a script-like uppercase set, while some glyphs adopt italic forms which produce unusual combinations, arabesques and ligatures. CirrusCumulus includes a large panel of characters that can be used to draw figures, shapes or patterns, a variable ligature system, and many non-binary and inclusive glyphs.
CirrusCumulus by Clara Sambot. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-compagnon
(package
(name "font-velvetyne-compagnon")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/compagnon")
(commit "4f2344df5adb6eaf9ffd9215c5406c0729fb7aa1")))
(sha256
(base32 "1rm1v9yd2wv9m8aafs9gz9m93nfsrj5d0iix4iqbrdk38rsgwm07"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/compagnon/")
(synopsis
"Font family inspired by the Typewriter Database archives")
(description
"Compagnon is a typeface family composed of five distinctive styles. It finds its inspiration in the online archives of Typewriter Database specimens and combines different periods of the history of typewriter typefaces. Each weight is based on singular references relating to significant periods aiming to underline the evolution of typewriter characters as they are called.
Compagnon by Juliette Duhé, Léa Pradine, Valentin Papon, Chloé Lozano, Sébastien Riollier. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-facade
(package
(name "font-velvetyne-facade")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/eleonorefines/Facade-font")
(commit "67a50fcb5986cd1a14d5183f5dfdda717db105e2")))
(sha256
(base32 "1gpilpsv20rq1s2458wa4ydqdqrbw5wxj3l61jqqi24a7lv4k7m7"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/facade/")
(synopsis
"A typeface created from the architectural grid of the ÉSAD Orléans facade")
(description
"Façade is a typeface created from the architectural grid of the ÉSAD Orléans facade. This grid is used as a basis for the first sketches, then as a spirit for all the typefaces. The 'sud' (south) version is faithful to the architecture while the other weights are emancipated from it.
Façade by Éléonore Fines. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-grotesk
(package
(name "font-velvetyne-grotesk")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/grotesk")
(commit "ac79fbc0f818fba94b61fb7f302e44ebc7a107bf")))
(sha256
(base32 "04hvy34li3zd6byrx24f3p06jnfd4n1cf4pdlh60044crbd30nzh"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/grotesk/")
(synopsis
"Grotesk is a heavily geometric sans serif typeface with an unusually large spacing")
(description
"Grotesk is one of Velvetyne's first published typefaces. Designed by Frank Adebiaye in 2010 and released on Velvetyne in 2012, Grotesk is a heavily geometric sans serif typeface with an unusually large spacing. The original version of Grotesk is known because it was used on the official website of the city of Paris for many years. Even if the city's visual identity has changed since then, the broken 'S' of Grotesk can still be seen in some of the technical vehicles of the city.
In 2023, a new version of Grotesk developed by Ariel Martín Pérez was released. This new version introduces new weights that are multiplexed, which means that you can change the weight of the font without changing the width of the paragraphs. This new version also presents some subtle optical corrections. Last but not least, it considerably expands the glyphset of the font with a brand new lowercase set as well as language support for Russian, Ukrainian, Tifinagh and many Latin-based languages.
You can use Grotesk to give a relaxed and elegant touch to your texts, its subtle art-déco flavour will enlighten any composition.
Grotesk by Frank Adebiaye, with the contribution of Ariel Martín Pérez. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-jgs
(package
(name "font-velvetyne-jgs")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/jgs")
(commit "b1fe344c6ab4cb97aa9ceb09ba3b6056f826b040")))
(sha256
(base32 "1hwaylgih66cqwcf68i2xdccrn0p0rbvmlz5f3mlzvm51s5pzqb8"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/jgs-font/")
(synopsis
"Jgs Font is a font family specifically designed to draw ASCII art")
(description
"Jgs Font is a font family made as a tribute to Joan G. Stark (a.k.a. jgs, Spunk), pioneer of ASCII art.
This font has been specifically designed to draw ASCII art. Its bitmap look and its shapes accentuate the ambiguity between text and drawing. The 'graphic' properties of the characters have been exaggerated depending on the way ASCII artists use them.
The glyphs that make up Jgs Font can be combined from one character to the next in line or from one line to another. It allows, by association of characters, to produce continuous lines, curves, frames, patterns, levels of gray.
In order to be able to change body size while maintaining these pixel-perfect continuity effects, the family is available in three fonts.
Jgs5 for body text sizes that are a multiple of 10 : 10px, 20px, 30px etc. Jgs7 for body text sizes that are a multiple of 14 : 14px, 28px, 42px etc. Jgs9 for body text sizes that are a multiple of 18 : 18px, 36px, 54px etc.
For better results, the body size and the leading need to have exactly the same value and correspond to the multiples cited above.
Jgs font by Adel Faure. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-kaeru-kaeru
(package
(name "font-velvetyne-kaeru-kaeru")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/kaerukaeru")
(commit "dae804908ffb9249af2c4ee0b65a4a9084620de5")))
(sha256
(base32 "0f5myczwv35ly5g3xxdw98aak9gxdy0x1fa95bvl87l6cig4qc9p"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/kaeru-kaeru/")
(synopsis
"Bright colored and blobby shaped patterns of the poison dart frog mixed together with the strangely formed muscles in Japanese woodcuts")
(description
"Bright colored and blobby shaped patterns of the poison dart frog mixed together with the strangely formed muscles in Japanese woodcuts. Kaeru kaeru combines both inspirations in one typeface.
It was created in a seminar called 'Type Inspiration elsewhere' led by Jérémy Landes at the HfG Karlsruhe. The idea of the seminar was, to take different inspirations out of nature and illustrations and try to combine them to one typeface.
Kaeru Kaeru by Isabel Motz. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-mourier
(package
(name "font-velvetyne-mourier")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/mourier")
(commit "02c6e2d3aa23b3b8b625f50b7a912baa02e055f5")))
(sha256
(base32 "19na95101ky85knkz7qv7v6225ghy714nhsq8j2vb3mgv6qdkrd4"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/mourier/")
(synopsis
"Mourier is a geometric typeface based on a 7x7 square and unclosed lines")
(description
"Mourier is a geometric alphabet designed by Eric Mourier in 1971 following a strict set of rules. The font is based on a square of 7 x 7 units and made of unclosed lines. The first and only use of the lead-cast font was on the booklet 'The Myth about Bird B', a leporello design by Mourier and written by Knud Holten (a poet).
In 2002, Sébastien Hayez adapted the typeface as a digital font, with the approval of its original designer (thanks to him), which was afterwards published as part of the Velvetyne Type Foundry collection in 2011. Then, in 2020, Ukraininan designer Alex Ash (Alexander Kondratenko) proposed a Cyrillic alphabet expansion of the font, of which he had imagined the capitals. Ariel Martín Perez took this opportunity and developped lowercase letters for Latin and Cyrillic scripts (with feedback from Alex Ash for the Cyrillic), added diacritics and symbols, mastered the font and also created several sets of alternates.
Mourier by Eric Mourier, with the contribution of Sébastien Hayez, Ariel Martín Pérez, Alexander Kondratenko. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-ouroboros
(package
(name "font-velvetyne-ouroboros")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/arielmartinperez/ouroboros/")
(commit "7250b7c0a1af0648f4c88d7e05b7f189a934489c")))
(sha256
(base32 "0lh3f57qzc6bmbym3f2ffsc0pb6m7fcsbvqa8qyb95mqpxljnx1v"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/ouroboros/")
(synopsis
"Ouroboros is a font for alchemists, witches, heretics, outsiders and curious people in general")
(description
"The Ouroboros or uroborus is an ancient symbol depicting a serpent or dragon eating its own tail. Ouroboros is also a font for alchemists, witches, heretics, outsiders and curious people in general. It's inspired by early art-nouveau styles, which were sometimes used in relation with magical themes and symbolism, so it comes together with a set of alchemical and astronomical symbols.
Ouroboros by Ariel Martín Pérez, with the contribution of H·Alix Sanyas. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-picnic
(package
(name "font-velvetyne-picnic")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/mariellenils/PicNic")
(commit "acadbd37f9d85a913ca1e0bd3724ecd6a96ddd90")))
(sha256
(base32 "0jhs7m8rl2n5a690hfvl4y8xzjdby1ilz12yva7374q1av5dkf5z"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/picnic/")
(synopsis
"An organic typeface inhabiting a cloud of contextual ligatures and inclusive ligatures")
(description
"PicNic is an organic typeface inhabiting a cloud of contextual ligatures and inclusive ligatures, substituting for the midpoint automatically. They are designed mainly for French.
The shapes are inspired by the trajectory of a drop of water on an oilcloth, the shadows of the tree leaves on the fabric lying in the grass, the precise path that the ant takes to the watermelon. They attempt to translate the sensory experience of a picnic among friends.
This typeface will suit for all wild, poetic and bucolic explorers for their most adventurous excursions.
PicNic by Mariel Nils. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-pilowlava
(package
(name "font-velvetyne-pilowlava")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/StudioTriple/pilowlava/")
(commit "f9ad3674c77465ada43c909197f7696e818182c0")))
(sha256
(base32 "07n5lkprm1xr74v8z223xdb7qs510cvgkvikzmha2vsvkm86k6j6"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/pilowlava/")
(synopsis
"A typeface that recalls cooled lava flows drawn with a compass")
(description
"Pilowlava (sic) was born as an intuitive, fast-paced creative feedback loop in which its creators tried to surprise one another. The result is a typeface that recalls cooled lava flows drawn with a compass. Striving to please both of its parents, Pilowlava seeks a balance between viscous energy and controlled geometry. This geometric approach lies on the shoulders of researches conducted by Swiss designer Armin Hofmann in his Graphic Design Manual edited in 1965. The structures of its glyphs are mostly derived from hand-written dynamics, that feed from both calligraphic and graffiti references. All these sweet inconsistencies produce a vacillating, fluctuating typographic colour, embodied by the almost-mathematical tension of its curves. Under a hardened crust, Pilowlava awaits the smallest temperature rise to recover its viscosity. The alternate shapes of certain letters play out these thermic accidents and raise the temperature of the text.
It takes its name from lava pillows, a natural phenomenon that is produced when lava is expelled by an underwater volcano, or when the lava flows of an emerged volcano encounter a body of water. In contact with the water, the lava flow is so hot that it's coated in a glass film. As it isn't totally cooled down, it transforms into smooth pillows that continue to slowly grow. This way, lava creates tubes and viscous balls that pile up and shape one another, and then they aggregate in puffy clusters that can measure several meters.
Pilowlava by Anton Moglia, Jérémy Landes, with the contribution of Maksym Kobuzan. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-tiny
(package
(name "font-velvetyne-tiny")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jckfa/tinyfonts")
(commit "259f633d770ea08cbb9620d477fdfa7a7384efc2")))
(sha256
(base32 "01d0iqch1z60nlvcmgchallkcsk06dblzw7zfv5hnp60m0pkqkki"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/tiny/")
(synopsis
"A font family based around the smallest type size of the HandJet EBS-250")
(description
"The TINY font family was originally created over the summer of 2018 as the visual identity for an experimental retail pop-up shop in Chinatown, New York City called Today in New York, or TINY for short. The shop was the result of an intern project at Verdes, a creative agency, between Jack Halten Fahnestock and Théïa Flynn, where they sold T-shirts and tote bags customized on the spot. TINY is based on the smallest type size (using only 5 of the 16 available print heads) of the HandJet EBS-250, the tool used in the shop for immediate printing on textiles. Its variable dot size comes from the HandJets adjustable ink output.
TINY 5x3 comes as a variable font with a size axis to modify dot size from 0300, as well as 15 separate instances (each increasing the dot size by 20 units).
TINY by Jack Halten Fahnestock. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-typefesse
(package
(name "font-velvetyne-typefesse")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ohpla/typefesse")
(commit "3a1d99ace34398547315e55dafb7263310148350")))
(sha256
(base32 "1ixgmcrnmyqggjgwh8ir39cjwzcqc1sikmkwwdpacxxr4kmgzchg"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/typefesse/")
(synopsis
"")
(description
"Typefesse is a playful butt-shaped typeface in which the letters are rendered in such a way that the reading is done through the folds of the body.
The design of Typefesse is motivated by the surprising combination of two vocabularies, that of the body and that of the alphabet. The drawn alphabet reveals contortionist and playful creatures that either hide inside of it or that expose themselves to it. Is it the letter that defines the bodies' shapes, or is it the other way around? These creatures play with the viewer's gaze and fight against the lettershapes by disturbing their readability with their exuberance. The alphabet is laid bare and readers become spectator-voyeurs in spite of themselves. Typefesse is a typeface that generates a confusion between reading, seeing and spying. It's a titling font, although it has a surprising readability at small body sizes. Its three styles have been named in reference to the moon and its mysteries
Typefesse by Océane Juvin. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-vg5000
(package
(name "font-velvetyne-vg5000")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/vg5000")
(commit "e4eeaed973f75fd5bafe2c69de60e8ad0f710f58")))
(sha256
(base32 "18dbay1yfy59zmis1iwpd55mjx713pjn71rid0wpa90kjdd0x8x6"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/VG5000")
(synopsis
"A typeface inspired by the VG5000 computer manufactured by Phillips released in 1984")
(description
"The VG5000 takes its name from the homonymous computer manufactured by Phillips, released in 1984. Its video processor displays bitmap characters built in a common matrix of 8x10 dots. The modern VG5000 is built on a grid 4 times more detailed, allowing more freedom and imagination of curves, where there were only right angles. The superposition of the new drawing onto the starting matrix sometimes reveals unexpected mixtures. Some right angles have been deliberately preserved as vestiges of the first digital fonts, offering a hybrid final shape. One of the inherited features is the accents that are always placed at the same height, forcing some letters to crash. Many glyphs and pictograms complete the VG5000's original set, including references to VG5000 games and the history of emoji.
VG5000 by Justin Bihan. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-mess
(package
(name "font-velvetyne-mess")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/mess")
(commit "c0ec947a54d664c2b08bd5e9a7b7baf877a73423")))
(sha256
(base32 "0k2gplsq837gxja2lbnqvv8pwx3yflnfp8gnm1ynmh4sa1nmp54i"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/mess/")
(synopsis
"Possibly, glyphs are holding a clandestine meeting deep inside the font file")
(description
"Font is something like a corporation. From outside, it is hard for us to see how it works and who is working in it. In metal type era, we were close to glyphs but today we never know how they feels about their treatment. Possibly, glyphs are holding a clandestine meeting at the deep inside of font file and plan a sabotage against users and type engineers. We don't know, but
Mess by Tezzo Suzuki. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-format-1452
(package
(name "font-velvetyne-format-1452")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/format-1452")
(commit "4af715b8a873139975d2651f0e316604508635ff")))
(sha256
(base32 "0298xv8ndqi508adp21mcxwf15mqayqikrzb13zy2r9w7fwfnj0q"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/format-1452/")
(synopsis
"A Din-like typeface built with modules, without any optical corrections.")
(description
"Format 1452 is a Din-like typeface built with modules, without any optical corrections.
Format 1452 by Frank Adebiaye, with the contribution of Anton Moglia. Distributed by velvetyne.fr.")
(license license:silofl1.1)))
(define-public font-velvetyne-trickster
(package
(name "font-velvetyne-trickster")
(version "1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/velvetyne/Trickster")
(commit "751b1fa5fd5293614d0eb4df4962ec195fa243ab")))
(sha256
(base32 "1bjk7pz8lvkcx19wy0p8p1pj4xv0mvcspyf6vqg7a0q54l1vky0s"))))
(build-system font-build-system)
(home-page "https://velvetyne.fr/fonts/trickster/")
(synopsis
"Trickster is a typeface mixing a lot of oddities smoothly")
(description
"Sans-serif, but with calligraphic influence and strong contrast, Trickster borrows shapes from Merovingian writing, Blackletters construction and contemporean drawing. Trickster is a display typeface in one bold weight. Its unusual shapes, tight spacing and various alternates allow designers to create quickly strong headlines and beautiful titling.
According to Wikipedia, in mythology, and in the study of folklore and religion, a trickster is a character in a story (god, goddess, spirit, man, woman, or anthropomorphic creature), which exhibits a great degree of intellect or secret knowledge, and which uses it to play tricks or otherwise disobey normal rules and conventional behaviour. So that's the origin of the name of this typeface.
Trickster by Jean-Baptiste Morizot. Distributed by velvetyne.fr.")
(license license:silofl1.1)))

View file

@ -0,0 +1,81 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; as seen near gnu/packages/fonts.scm
(define-module (zzkt packages fonts)
#:use-module (ice-9 regex)
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system font)
#:use-module (guix build-system trivial))
;; various fonts & foundries
;; https://github.com/dharmatype/Bebas-Neue
;; https://fonts.google.com/specimen/Spline+Sans
;; https://github.com/lettersoup/Sofia-Sans
;; https://fontesk.com/sofia-sans-typeface/
;; more generally -> https://fontesk.com/license/ofl-gpl/
(define-public font-monaspace
(package
(name "font-monaspace")
(version "1.000")
(source
(origin
(method url-fetch)
(uri
"https://github.com/githubnext/monaspace/archive/refs/tags/v1.000.tar.gz")
(sha256
(base32 "0lg5qwml3fv58xk92sgamxg3rni7am2m6xzzj8pcq758idiphs8d"))))
(build-system font-build-system)
(home-page "https://monaspace.githubnext.com")
(synopsis "An innovative superfamily of fonts for code")
(description
"The Monaspace type system is a monospaced type superfamily with some modern tricks up its sleeve. It consists of five variable axis typefaces. Each one has a distinct voice, but they are all metrics-compatible with one another, allowing you to mix and match them for a more expressive typographical palette.")
(license license:silofl1.1)))
(define-public font-paragon
(package
(name "font-paragon")
(version "1")
(source
(origin
(method url-fetch)
(uri "https://fonderiz.fr/site/assets/files/1021/paragon.zip")
(sha256
(base32 "1wymrz64v03gqlc110m64blg99s2hi52hi1cbs4a6h4shm54k4kq"))))
(build-system font-build-system)
(home-page "https://fonderiz.fr/paragon/")
(synopsis "Revival of Paragon, one of the typefaces in Griffith's 'Legibility Group'")
(description
"Paragon is a serif font family, a revival of the typeface designed in 1935 by Chauncey H. Griffith for Linotype. A set of characters intended to be printed in small size on newspapers and to remain legible despite poor quality printing. The Paragon was intended to be lighter in order to compensate for the over-inking of the newspapers during printing.
The a.c.r version was designed taking as its origins the work of Phil Baines on his 'You Can Read Me' type. It seeks to establish a border where the character resists machine reading (OCR) while being readable by humans on short texts.
Designed by Cédric Rossignol Brunet")
(license license:silofl1.1)))

View file

@ -0,0 +1,53 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages frameworkinfo)
#:use-module (guix)
#:use-module (guix build-system python)
#:use-module (guix git-download)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages linux)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz))
(define-public frameworkinfo
(package
(name "frameworkinfo")
(version "0.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/zzkt/frameworkinfo")
(commit "endless")))
(file-name (git-file-name name version))
(sha256
(base32 "0j5qnz3zzs17qb9hxjjnwgba4sijm2ar8s1ba551f0v6jsidf29f"))))
(propagated-inputs (list sudo dmidecode pciutils lshw))
(build-system python-build-system)
(arguments
`(#:tests? #f))
(home-page "https://github.com/zzkt/frameworkinfo")
(synopsis "Show hardware info for framework laptop")
(description
"Show information about hardware, BIOS, CPU and kernel version.")
(license license:gpl3+)))

View file

@ -0,0 +1,78 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages gephi)
#:use-module (guix)
#:use-module (guix build-system ant)
#:use-module (guix build-system copy)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages java))
(define-public gephi-ant-nest
(package
(name "gephi")
(version "0.10.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/gephi/gephi/")
(commit "0.10.2")))
(file-name (git-file-name name version))
(sha256 (base32 "01ywl2p5yi6ccam8778yjayrjjvmbh2h3yw4qd263siyih0zs9hj"))))
(build-system ant-build-system)
;; (arguments (list #:configure-flags #~(list "--enable-silent-rules")))
(home-page "https://gephi.org/")
(synopsis "The Open Graph Viz Platform")
(description
"Gephi is the leading visualization and exploration software for all kinds of graphs and networks. The goal is to help data analysts to make hypothesis, intuitively discover patterns, isolate structure singularities or faults during data sourcing. It is a complementary tool to traditional statistics, as visual thinking with interactive interfaces is now recognized to facilitate reasoning.")
(license license:gpl3+)))
;; gephi needs the jdkhome path set to $GUIX_PROFILE order to work (can this be set as default?)
;; e.g gephi --jdkhome $GUIX_PROFILE
(define-public gephi-binary
(package
(name "gephi-binary")
(version "0.10.1")
(source
(origin
(method url-fetch)
(uri "https://github.com/gephi/gephi/releases/download/v0.10.1/gephi-0.10.1-linux-x64.tar.gz")
(sha256
(base32 "0y7kzwh5ascmqs7whlf5jajj46zy2zyb57944sggy1rz7i6czhpn"))))
(propagated-inputs
(list openjdk))
(build-system copy-build-system)
(arguments
(list #:install-plan
#~'(("bin" "bin")
("etc" "etc")
("extra" "extra")
("flathub" "flathub")
("gephi" "gephi")
("jre-x64" "jre-x64")
("platform" "platform"))))
(home-page "https://gephi.org/")
(synopsis "The Open Graph Viz Platform (binary release)")
(description
"Gephi is the leading visualization and exploration software for all kinds of graphs and networks. The goal is to help data analysts to make hypothesis, intuitively discover patterns, isolate structure singularities or faults during data sourcing. It is a complementary tool to traditional statistics, as visual thinking with interactive interfaces is now recognized to facilitate reasoning.")
(license license:gpl3+)))

View file

@ -0,0 +1,328 @@
;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; inkscape 1.2 -> 1.3
;; via https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/inkscape.scm
(define-module (zzkt packages inkscape)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages aspell)
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages graphics)
#:use-module (gnu packages gtk)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libreoffice)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages pdf)
#:use-module (gnu packages popt)
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages xml)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages image)
#:use-module (gnu packages pkg-config)
#:use-module (srfi srfi-1))
;;; A variant of Inkscape intended to be bumped only on core-updates, to avoid
;;; rebuilding 2k+ packages through dblatex.
(define-public inkscape/stable
(hidden-package
(package
(name "inkscape")
(version "1.2.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://media.inkscape.org/dl/"
"resources/file/"
"inkscape-" version ".tar.xz"))
(patches (search-patches "inkscape-poppler-compat.patch"))
(sha256
(base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))
(modules '((guix build utils)
(ice-9 format)))
(snippet
'(begin
(let-syntax
;; XXX: The build system doesn't currently support using
;; system libraries over bundled ones (see:
;; https://gitlab.com/inkscape/inkscape/issues/876).
((unbundle
(syntax-rules ()
((_ (name source-dir use-pkg-config?) ...)
(begin
;; Delete bundled source directories.
(delete-file-recursively source-dir) ...
(substitute* '("src/CMakeLists.txt"
"src/3rdparty/CMakeLists.txt")
(((string-append ".*add_subdirectory\\("
(basename source-dir) "\\).*"))
"") ...)
;; Remove bundled entries from INKSCAPE_TARGET_LIBS.
(substitute* "src/CMakeLists.txt"
(((string-append name "_LIB.*")) "") ...)
;; Register the external libraries, so that their
;; headers are added to INKSCAPE_INCS_SYS and their
;; shared libraries added to INKSCAPE_LIBS.
(if use-pkg-config?
(let* ((width (string-length "pkg_check_modules("))
(indent (string-join (make-list width " ") "")))
(substitute* "CMakeScripts/DefineDependsandFlags.cmake"
(("^pkg_check_modules\\(INKSCAPE_DEP REQUIRED.*" start)
(string-append start
(format #f "~a~a~%" indent name)))))
(substitute* "CMakeScripts/DefineDependsandFlags.cmake"
(("^find_package\\(Iconv REQUIRED\\).*" start)
(string-append (format #f "
find_path(~a_INCLUDE_DIR NAMES ~:*~a/~:*~a.h ~:*~a.h)
if(NOT ~:*~a_INCLUDE_DIR)
message(FATAL_ERROR \"~:*~a headers not found\")
else()
list(APPEND INKSCAPE_INCS_SYS ${~:*~a_INCLUDE_DIR})
endif()
find_library(~:*~a_LIB NAMES ~:*~a)
if(NOT ~:*~a_LIB)
message(FATAL_ERROR \"~:*~a library not found\")
else()
list(APPEND INKSCAPE_LIBS ~:*~a_LIB)
endif()~%~%"
name)
start)))) ...
;; Fix the references to the headers of the
;; unbundled libraries.
(substitute* (find-files "." "\\.h$|\\.cpp$")
(((string-append "#include (\"|<)3rdparty/"
(basename source-dir)) _ quote)
(string-append "#include " quote
(basename source-dir)))
...))))))
(unbundle ("2geom" "src/3rdparty/2geom" #t)
;; libcroco cannot be unbundled as it is heavily
;; modified (see:
;; https://gitlab.com/inkscape/inkscape/issues/876#note_276114904).
;; ("croco" "src/3rdparty/libcroco" #t)
;; FIXME: Unbundle the following libraries once they
;; have been packaged.
;; ("cola" "src/3rdparty/adaptagrams/libcola")
;; ("avoid" "src/3rdparty/adaptagrams/libavoid")
;; ("vpsc" "src/3rdparty/adaptagrams/libvpsc")
;; libuemf cannot be unbundled as it slightly modified
;; from upstream (see:
;; https://gitlab.com/inkscape/inkscape/issues/973).
;; ("uemf" "src/3rdparty/libuemf" #f)
;; FIXME: libdepixelize upstream is ancient and doesn't
;; build with a recent lib2geom
;; (see: https://bugs.launchpad.net/libdepixelize/+bug/1862458).
;;("depixelize" "src/3rdparty/libdepixelize")
("autotrace" "src/3rdparty/autotrace" #t)))
;; Lift the requirement on the double-conversion library, as
;; it is only needed by lib2geom, which is now unbundled.
(substitute* "CMakeScripts/DefineDependsandFlags.cmake"
((".*find_package\\(DoubleConversion.*") ""))))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;; surface without tests?
#:test-target "check" ;; otherwise some test binaries are missing
#:imported-modules (,@%cmake-build-system-modules
(guix build glib-or-gtk-build-system))
#:modules ((guix build cmake-build-system)
((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
(guix build utils))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
(assoc-ref glib-or-gtk:%standard-phases
'generate-gdk-pixbuf-loaders-cache-file))
(add-after 'unpack 'patch-icon-cache-generator
(lambda _
(substitute* "share/icons/application/CMakeLists.txt"
(("gtk-update-icon-cache") "true"))))
(add-after 'unpack 'disable-latex-export-tests
;; FIXME: For some reason the test.pdf_tex file generated by the
;; "--export-latex" lacks "some text" in its content when run in
;; the build environment. Skip the related tests.
(lambda _
(substitute* "testfiles/cli_tests/CMakeLists.txt"
(("add_cli_test\\(export-latex")
"message(TEST_DISABLED: export-latex"))))
(add-after 'unpack 'disable-vertical-glyph-tests
(lambda _
;; FIXME: These tests fail with newer Pango and Harfbuzz:
;; https://gitlab.com/inkscape/inkscape/-/issues/2917
;; https://gitlab.com/inkscape/inkscape/-/issues/3554
;; Simply providing older versions don't work, as we need
;; the full GTK stack; we could use package-input-rewriting
;; but then have to also downgrade pangomm and disable tests
;; in librsvg and GTK+. Just ignore for now.
(substitute* "testfiles/rendering_tests/CMakeLists.txt"
(("test-glyph-y-pos") "")
(("text-glyphs-combining") "")
(("text-glyphs-vertical") "")
(("test-rtl-vertical") ""))))
,@(if (or (target-aarch64?)
(target-ppc64le?)
(target-riscv64?))
`((add-after 'unpack 'disable-more-tests
(lambda _
;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035680690
(substitute* "testfiles/CMakeLists.txt"
(("lpe64-test") "#lpe64-test"))
;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
;; According to upstream, this is a false positive.
(substitute* "testfiles/rendering_tests/CMakeLists.txt"
(("test-use") "#test-use"))
;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
;; Allegedly a precision error in the gamma.
(substitute* "testfiles/cli_tests/CMakeLists.txt"
(("add_cli_test\\(export-png-color-mode-gray-8_png" all)
(string-append "#" all))))))
'())
(add-after 'unpack 'set-home
;; Mute Inkscape warnings during tests.
(lambda _
(setenv "HOME" (getcwd))))
;; Move the check phase after the install phase, as when run in the
;; tests, Inkscape relies on files that are not yet installed, such
;; as the "share/inkscape/ui/units.xml" file.
(delete 'check)
(add-after 'install 'check
(assoc-ref %standard-phases 'check))
(add-after 'install 'glib-or-gtk-compile-schemas
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
(add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
(add-after 'install 'wrap-program
;; Ensure Python is available at runtime.
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/inkscape")
`("GUIX_PYTHONPATH" prefix
(,(getenv "GUIX_PYTHONPATH")))
;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
;; its own icons in pure environments.
`("GDK_PIXBUF_MODULE_FILE" =
(,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))))
(inputs
(list aspell
autotrace
bash-minimal
gdl-minimal
gtkmm-3
gtk+
gtkspell3
gsl
poppler
lib2geom
libjpeg-turbo
libpng
libxml2
libxslt
libgc
(librsvg-for-system) ;for the pixbuf loader
libsoup-minimal-2
libcdr
libvisio
libwpd
libwpg
freetype
popt
potrace
lcms
boost
python-wrapper
python-scour
python-pyserial
python-numpy
python-lxml))
(native-inputs
(list gettext-minimal
imagemagick ;for tests
`(,glib "bin")
googletest
perl
pkg-config))
(home-page "https://inkscape.org/")
(synopsis "Vector graphics editor")
(description "Inkscape is a vector graphics editor. What sets Inkscape
apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,
as the native format.")
(license license:gpl3+)))) ;see the file COPYING
(define-public inkscape-next
(package
(inherit inkscape/stable)
(name "inkscape-next")
(version "1.3.2")
(source
(origin
(inherit (package-source inkscape/stable))
(patches '())
(method url-fetch)
(uri (string-append "https://media.inkscape.org/dl/"
"resources/file/"
"inkscape-" version ".tar.xz"))
(sha256
(base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv"))))
(build-system cmake-build-system)
(arguments
(substitute-keyword-arguments (package-arguments inkscape/stable)
((#:phases phases)
`(modify-phases ,phases
(replace 'wrap-program
;; Ensure Python is available at runtime.
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/inkscape")
`("GUIX_PYTHONPATH" prefix
(,(getenv "GUIX_PYTHONPATH")))
;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
;; its own icons in pure environments.
`("GDK_PIXBUF_MODULE_FILE" =
(,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))))
(inputs (modify-inputs (package-inputs inkscape/stable)
(append python-cssselect))) ;to render qrcode
(properties (alist-delete 'hidden? (package-properties inkscape/stable)))))

View file

@ -0,0 +1,255 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015-2021, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
;;; Copyright © 2016, 2017, 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
;;; Copyright © 20172022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018, 2019, 2021 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Valentin Ignatev <valentignatev@gmail.com>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
;;; Copyright © 2020 luhux <luhux@outlook.com>
;;; Copyright © 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2021, 2022 Raphaël Mélotte <raphael.melotte@mind.be>
;;; Copyright © 2021 ikasero <ahmed@ikasero.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2022 Felipe Balbi <balbi@kernel.org>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2022, 2023 jgart <jgart@dismail.de>
;;; Copyright © 2023 Aaron Covrig <aaron.covrig.us@ieee.org>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Jaeme Sifat <jaeme@runbox.com>
;;; Copyright © 2024 nik gaffney <nik@fo.am>
;;;
;;; This file is (not yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages kitty)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system cargo)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system go)
#:use-module (guix build-system meson)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages crypto)
#:use-module (gnu packages curl)
#:use-module (gnu packages dlang)
#:use-module (gnu packages digest)
#:use-module (gnu packages docbook)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages fribidi)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages linux)
#:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-check)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages ssh)
#:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (srfi srfi-26))
;; via gnu/packages/terminals.scm
(define-public kitty-next
(package
(name "kitty-next")
(version "0.32.1")
(home-page "https://sw.kovidgoyal.net/kitty/")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/kovidgoyal/kitty")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0gqxn2g1ws3whn6gfb6246pad9g0a656f51f0cjrgzk8xagz1rbp"))
;; (patches (search-patches "kitty-fix-wayland-protocols.patch"))
(modules '((guix build utils)))
(snippet
'(begin
;; patch needed as sphinx-build is used as a python script
;; whereas the guix package uses a bash script launching the
;; python script
(substitute* "docs/conf.py"
(("(from kitty.constants import str_version)" kitty-imp)
(string-append "sys.path.append(\"..\")\n" kitty-imp)))
(substitute* "docs/Makefile"
(("^SPHINXBUILD[[:space:]]+= (python3.*)$")
"SPHINXBUILD = sphinx-build\n"))
#t))))
(build-system gnu-build-system)
(native-inputs
(list dbus
mesa
libxcursor
libxi
libxinerama
libxkbcommon
libxrandr
ncurses ;; for tic command
pkg-config
python-sphinx
wayland-protocols
go-1.21
git))
(inputs
(list fontconfig
freetype
harfbuzz
lcms
libcanberra
libpng
python-pygments
python-wrapper
wayland
openssl
xxhash
zlib))
(arguments
(list
#:phases
#~(modify-phases
%standard-phases
;; required for go build/linking phase
;; (setenv "GOCACHE" "/tmp/.gocache")
(add-before 'check 'fix-home-directory
(lambda _
(setenv "HOME" "/tmp")))
(add-before 'build 'fix-gocache-directory
(lambda _
(setenv "HOME" "/tmp")
(setenv "GOCACHE" "/tmp/.gocache")
(setenv "GOPROXY" "direct")))
(delete 'configure) ;no configure script
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
;; The "kitty" sub-directory must be writable prior to
;; configuration (e.g., un-setting updates).
(for-each make-file-writable (find-files "kitty"))
(invoke "python3" "setup.py" "linux-package"
;; Do not phone home.
"--update-check-interval=0"
;; Wayland backend requires EGL, which isn't
;; found out-of-the-box for some reason.
(string-append "--egl-library="
(search-input-file inputs "/lib/libEGL.so.1")))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
;; Fix "cannot find kitty executable" error when running
;; tests.
(setenv "PATH" (string-append "linux-package/bin:"
(getenv "PATH")))
(invoke "python3" "test.py"))))
(add-before 'install 'rm-pycache
;; created python cache __pycache__ are non deterministic
(lambda _
(let ((pycaches (find-files "linux-package/"
"__pycache__"
#:directories? #t)))
(for-each delete-file-recursively pycaches))))
(replace 'install
(lambda _
(let* ((obin (string-append #$output "/bin"))
(olib (string-append #$output "/lib"))
(oshare (string-append #$output "/share")))
(copy-recursively "linux-package/bin" obin)
(copy-recursively "linux-package/share" oshare)
(copy-recursively "linux-package/lib" olib)))))))
(synopsis "Fast, featureful, GPU based terminal emulator")
(description "Kitty is a fast and featureful GPU-based terminal emulator:
@itemize
@item Offloads rendering to the GPU for lower system load and buttery smooth
scrolling. Uses threaded rendering to minimize input latency.
@item Supports all modern terminal features: graphics (images), unicode,
true-color, OpenType ligatures, mouse protocol, focus tracking, bracketed
paste and several new terminal protocol extensions.
@item Supports tiling multiple terminal windows side by side in different
layouts without needing to use an extra program like tmux.
@item Can be controlled from scripts or the shell prompt, even over SSH.
@item Has a framework for Kittens, small terminal programs that can be used to
extend kitty's functionality. For example, they are used for Unicode input,
hints, and side-by-side diff.
@item Supports startup sessions which allow you to specify the window/tab
layout, working directories and programs to run on startup.
@item Allows you to open the scrollback buffer in a separate window using
arbitrary programs of your choice. This is useful for browsing the history
comfortably in a pager or editor.
@end itemize")
(license license:gpl3+)))

View file

@ -0,0 +1,289 @@
;;; GNU Guix --- Functional package management for G->NU
;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015, 2016, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015-2018, 2020-2023 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2015, 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
;;; Copyright © 2016, 2017, 2020 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2016, 2017, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016-2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at>
;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
;;; Copyright © 20162022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
;;; Copyright © 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2019,2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2019, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021, 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Hyunseok Kim <lasnesne@lagunposprasihopre.org>
;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 muradm <mail@muradm.net>
;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2021 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2022 Andreas Rammhold <andreas@rammhold.de>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2022, 2023 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Juliana Sims <juli@incana.org>
;;; Copyright © 2023 Lu Hui <luhux76@gmail.com>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Alexey Abramov <levenson@mmer.org>
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Tobias Kortkamp <tobias.kortkamp@gmail.com>
;;; Copyright © 2023 Jaeme Sifat <jaeme@runbox.com>
;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2023 Tomás Ortín Fernández <tomasortin@mailbox.org>
;;; Copyright © 2024 dan <i@dan.games>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; as seen near
;; https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/admin.scm#n4740
;; lynis 3.1.1
;; https://github.com/CISOfy/lynis/commit/60afce6d8110ee9e88ac9e9d0e0346b1cf222b5e
;; lynis-sdk 3.1.1
;; https://github.com/CISOfy/lynis-sdk/commit/f4f885f1f049f59940487a6ffc2d53806c729d12
(define-module (zzkt packages lynis)
#:use-module (guix build-system cargo)
#:use-module (guix build-system cmake)
#:use-module (guix build-system emacs)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system qt)
#:use-module (guix build-system ruby)
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix gexp)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix platform)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages algebra)
#:use-module (gnu packages attr)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages c)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages crates-windows)
#:use-module (gnu packages crypto)
#:use-module (gnu packages cryptsetup)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages dns)
#:use-module (gnu packages elf)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
#:use-module (gnu packages fonts)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages golang)
#:use-module (gnu packages golang-build)
#:use-module (gnu packages golang-compression)
#:use-module (gnu packages golang-xyz)
#:use-module (gnu packages groff)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages inkscape)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libunwind)
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages lua)
#:use-module (gnu packages m4)
#:use-module (gnu packages mail)
#:use-module (gnu packages man)
#:use-module (gnu packages mcrypt)
#:use-module (gnu packages mpi)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages nettle)
#:use-module (gnu packages networking)
#:use-module (gnu packages openldap)
#:use-module (gnu packages package-management)
#:use-module (gnu packages patchutils)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages polkit)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
#:use-module (gnu packages selinux)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages ssh)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages tcl)
#:use-module (gnu packages terminals)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages textutils)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg))
(define-public lynis
(package
(name "lynis")
;; Also update the lynis-sdk input to the commit matching this release.
(version "3.1.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/CISOfy/lynis")
(commit "60afce6d8110ee9e88ac9e9d0e0346b1cf222b5e")))
(file-name (git-file-name name version))
(sha256
(base32 "05bh16i916xz9w8p8fz8flzj9ayyzg7wpbi7q61ylrlahhc03nqd"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove proprietary plugins. As of now, all plugins supplied with
;; lynis are proprietary. In the future, if free plugins are
;; provided, whitelist them from deletion.
(for-each delete-file (find-files "plugins"))))))
(build-system gnu-build-system)
(native-inputs
`(;; For tests
("lynis-sdk"
,(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/CISOfy/lynis-sdk")
(commit "f4f885f1f049f59940487a6ffc2d53806c729d12")))
(file-name (git-file-name "lynis-sdk" version))
(sha256
(base32 "09d98wmvan7nlchm056kls5xm939d1231pwsvlp4q2aznz8cmg42"))))))
(arguments
(list
#:phases
#~(modify-phases %standard-phases
(replace 'unpack
;; XXX Remove after fixing <https://issues.guix.gnu.org/55287>.
(lambda* (#:key source #:allow-other-keys)
(mkdir "source")
(chdir "source")
(copy-recursively source "."
#:keep-mtime? #t)))
(replace 'configure
(lambda _
(substitute* "lynis"
(("/usr/share/lynis")
(string-append #$output "/share/lynis")))
(substitute* "include/functions"
(("/usr/local/etc/lynis")
(string-append #$output "/etc/lynis")))))
(delete 'build)
(replace 'install
(lambda _
(install-file "lynis" (string-append #$output "/bin/"))
(install-file "default.prf" (string-append #$output "/etc/lynis"))
(for-each
(lambda (dir)
(copy-recursively
dir (string-append #$output "/share/lynis/" dir)))
(list "db" "include" "plugins"))
(install-file "lynis.8"
(string-append #$output "/share/man/man8"))))
(replace 'check
(lambda _
(copy-recursively #$(this-package-native-input "lynis-sdk")
"../lynis-sdk")
(setenv "LANG" "en_US.UTF-8")
(let ((lynis-dir (getcwd)))
(with-directory-excursion "../lynis-sdk"
(substitute* "config"
(("\\.\\./lynis") lynis-dir))
(substitute* "unit-tests/tests-language-translations.sh"
(("\\.\\./lynis") lynis-dir))
(invoke "sh" "lynis-devkit" "run" "unit-tests"))))))))
(home-page "https://cisofy.com/lynis/")
(synopsis "Security auditing tool")
(description "Lynis is a security auditing tool. It performs an in-depth
security scan and runs on the system itself. The primary goal is to test
security defenses and provide tips for further system hardening. It will also
scan for general system information, vulnerable software packages, and
possible configuration issues.")
(license license:gpl3+)))

View file

@ -0,0 +1,151 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages mattermost)
#:use-module (guix)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages glib)
#:use-module (gnu packages video)
#:use-module (gnu packages linux)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gtk)
;; #:use-module (gnu packages commencement)
#:use-module (guix build-system copy)
#:use-module (guix build-system node)
#:use-module (guix git-download)
#:use-module ((guix licenses)
#:prefix license:))
;; binary
;; https://releases.mattermost.com/desktop/5.6.0/mattermost-desktop-5.6.0-linux-x64.tar.gz
;; source
;; https://github.com/mattermost/desktop
;; - create_desktop_file.sh
;; - mattermost-desktop
;; - 'libffmpeg.so', which cannot be found in RUNPATH ()
;; - 'libgobject-2.0.so.0', which cannot be found in RUNPATH ()
;; - 'libglib-2.0.so.0', which cannot be found in RUNPATH ()
;; - 'libgio-2.0.so.0', which cannot be found in RUNPATH ()
;; - 'libnss3.so', which cannot be found in RUNPATH ()
;; - 'libnssutil3.so', which cannot be found in RUNPATH ()
;; - 'libsmime3.so', which cannot be found in RUNPATH ()
;; - 'libnspr4.so', which cannot be found in RUNPATH ()
;; - 'libatk-1.0.so.0', which cannot be found in RUNPATH ()
;; - 'libatk-bridge-2.0.so.0', which cannot be found in RUNPATH ()
;; - 'libcups.so.2', which cannot be found in RUNPATH ()
;; - 'libdbus-1.so.3', which cannot be found in RUNPATH ()
;; - 'libdrm.so.2', which cannot be found in RUNPATH ()
;; - 'libgtk-3.so.0', which cannot be found in RUNPATH ()
;; - 'libpango-1.0.so.0', which cannot be found in RUNPATH ()
;; - 'libcairo.so.2', which cannot be found in RUNPATH ()
;; - 'libX11.so.6', which cannot be found in RUNPATH ()
;; - 'libXcomposite.so.1', which cannot be found in RUNPATH ()
;; - 'libXdamage.so.1', which cannot be found in RUNPATH ()
;; - 'libXext.so.6', which cannot be found in RUNPATH ()
;; - 'libXfixes.so.3', which cannot be found in RUNPATH ()
;; - 'libXrandr.so.2', which cannot be found in RUNPATH ()
;; - 'libgbm.so.1', which cannot be found in RUNPATH ()
;; - 'libexpat.so.1', which cannot be found in RUNPATH ()
;; - 'libxcb.so.1', which cannot be found in RUNPATH ()
;; - 'libxkbcommon.so.0', which cannot be found in RUNPATH ()
;; - 'libasound.so.2', which cannot be found in RUNPATH ()
;; - 'libatspi.so.0', which cannot be found in RUNPATH ()
;; - 'libgcc_s.so.1', which cannot be found in RUNPATH ()
;; - 'ld-linux-x86-64.so.2', which cannot be found in RUNPATH ()
(define-public mattermost-desktop-binary
(package
(name "mattermost-desktop-binary")
(version "5.6.0")
(source
(origin
(method url-fetch)
(uri "https://releases.mattermost.com/desktop/5.6.0/mattermost-desktop-5.6.0-linux-x64.tar.gz")
(sha256
(base32 "1x0pigcl1a6clrv8zki4m9qnjc15fzz0c0h2y19f8pvwgp67yh99"))))
(build-system copy-build-system)
(inputs
(list ffmpeg
binutils ;; ld
;; gcc-toolchain ;; libgcc
alsa-lib ;; libasound
glib ;; libgobject, libglib
libx11
pango
gtk
))
(arguments
;; via readme.md
;; /opt/mattermost-desktop/create_desktop_file.sh
;; #!/bin/sh
;; set -e
;; WORKING_DIR=`pwd`
;; THIS_PATH=`readlink -f $0`
;; cd `dirname ${THIS_PATH}`
;; FULL_PATH=`pwd`
;; cd ${WORKING_DIR}
;; cat <<EOS > Mattermost.desktop
;; [Desktop Entry]
;; Name=Mattermost
;; Comment=Mattermost Desktop application for Linux
;; Exec="${FULL_PATH}/mattermost-desktop" %U
;; Terminal=false
;; Type=Application
;; Icon=${FULL_PATH}/app_icon.png
;; Categories=Network;InstantMessaging;
;; EOS
;; chmod +x Mattermost.desktop
;; mv Mattermost.desktop ~/.local/share/applications/
;; sudo ln -s /opt/mattermost-desktop/mattermost-desktop /usr/local/bin/
(list #:install-plan
#~'(("mattermost-desktop" "bin/mattermost-desktop")
("resources" "resources"))))
(home-page "https://mattermost.com/")
(synopsis "Collaboration platform for technical and operational teams. (binary release)")
(description
"Work together effectively with real-time communication, file and code snippet sharing, in-line code syntax highlighting, and workflow automation purpose-built for technical teams.")
(license license:asl2.0)))
;; source
;; https://github.com/mattermost/desktop
(define-public mattermost-desktop
(package
(name "mattermost-desktop")
(version "5.6.0")
(source
(origin
(method url-fetch)
(uri "https://releases.mattermost.com/desktop/5.6.0/mattermost-desktop-5.6.0-linux-x64.tar.gz")
(sha256
(base32 "1x0pigcl1a6clrv8zki4m9qnjc15fzz0c0h2y19f8pvwgp67yh99"))))
(build-system copy-build-system)
(home-page "https://mattermost.com/")
(synopsis "Collaboration platform for technical and operational teams. (binary release)")
(description
"Work together effectively with real-time communication, file and code snippet sharing, in-line code syntax highlighting, and workflow automation purpose-built for technical teams.")
(license license:asl2.0)))

View file

@ -0,0 +1,51 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages plugdata)
#:use-module (guix)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix git-download)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages perl)
#:use-module (gnu packages gawk))
(define-public plugdata
(package
(name "plugdata")
(version "0.8.2")
(source
(origin
(method url-fetch)
(uri
"https://github.com/plugdata-team/plugdata/archive/refs/tags/v0.8.2.tar.gz")
(sha256
(base32 "18c340hnx1sny87dby8wahijl1ssj1av67ff232gfwymfra6rdxm"))))
;; see https://github.com/juce-framework/JUCE/blob/master/docs/Linux%20Dependencies.md
(inputs (list gawk perl))
(build-system cmake-build-system)
(arguments
`(#:tests? #f))
(home-page "https://plugdata.org/")
(synopsis
"A visual programming environment for audio experimentation, prototyping and education")
(description
"A visual programming environment for audio experimentation, prototyping and education")
(license license:gpl3+)))

View file

@ -0,0 +1,90 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages python-xyz)
#:use-module (gnu packages python-web) ;; python-requests
#:use-module (gnu packages python-xyz) ;; python-bibtexparser
#:use-module (gnu packages python-build) ;; python-toml
#:use-module (gnu packages web) ;; python-feedparser, python-httpretty
#:use-module (gnu packages time) ;; python-pytz, python-dateutil
#:use-module (gnu packages check) ;; python-pytest
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix build-system python)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system trivial))
;; via guix import pypi -r pyzotero
(define-public python-pyzotero
(package
(name "python-pyzotero")
(version "1.5.18")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pyzotero" version))
(sha256
(base32 "0bx4y7wasarm7yb8kj7rsf2vzjyin78wqs1bx6gb9fh3hy2wvkj2"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-bibtexparser
python-feedparser
python-pytz
python-requests))
(native-inputs (list python-httpretty
python-pytest
python-dateutil))
(home-page "https://github.com/urschrei/pyzotero")
(synopsis "Python wrapper for the Zotero API")
(description "Python wrapper for the Zotero API")
(license license:expat)))
;; via guix import pypi -r mausoleum
;; really? pytoml==0.1.13
;; also requires pyqt5
(define-public python-mausoleum
(package
(name "python-mausoleum")
(version "0.10.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "mausoleum" version))
(sha256
(base32 "160n1i4aabzwlrjyn8vlc26acvwwx9kizp52bqy5znyz58rmbc6a"))))
(build-system pyproject-build-system)
(propagated-inputs (list python-appdirs
python-click
python-pytoml))
(home-page "https://github.com/mandeep/Mausoleum")
(synopsis "A Python GUI, CLI, and wrapper for Tomb")
(description
"This package provides a Python GUI, CLI, and wrapper for Tomb.")
(license #f)))
;; via guix import pypi -r amphi-etl
;; requires `https://github.com/benfred/py-spy' to be built (rust)
;; cargo install py-spy

View file

@ -0,0 +1,55 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages sbcl-osc)
#:use-module (guix)
#:use-module (guix build-system asdf)
#:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages lisp-check)
#:use-module (guix git-download)
#:use-module ((guix licenses)
#:prefix license:))
(define-public sbcl-osc
(let ((commit "f647738ccc22925ed740a8ca9132fda76a05baeb")
(revision "0"))
(package
(name "sbcl-osc")
(version (git-version "0.9" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/zzkt/osc")
(commit commit)))
(file-name (git-file-name "cl-osc" version))
(sha256
(base32 "1x4cavspaxcr604g0hwak1ncy4m9cqq03ji4v56g2h1443n7h48a"))))
(build-system asdf-build-system/sbcl)
(native-inputs (list sbcl-fiveam))
(inputs (list sbcl-ieee-floats))
(synopsis "Implementation of the Open Sound Control protocol")
(description "This is a lisp implementation of the Open Sound Control protocol (or more accurately “data transport specification” or “encoding”). The code should be close to ANSI standard common lisp and provides self contained code for encoding and decoding of OSC data, messages, and bundles.")
(home-page "https://github.com/zzkt/osc/")
(license license:gpl3+))))
(define-public cl-osc
(sbcl-package->cl-source-package sbcl-osc))
(define-public ecl-osc
(sbcl-package->ecl-package sbcl-osc))

View file

@ -0,0 +1,108 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2018, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2018, 2021, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is (not yet) part of 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 <http://www.gnu.org/licenses/>.
;; Scribus 1.6.1 is availale in mainline Guix as of
;; https://git.savannah.gnu.org/cgit/guix.git/commit/?id=3da49b1472919a62df1fe399638f23a246aa325d
(define-module (zzkt packages scribus)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages cups)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gtk)
#:use-module (gnu packages hunspell)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libreoffice)
#:use-module (gnu packages linux)
#:use-module (gnu packages pdf)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages tls)
#:use-module (gnu packages xml))
(define-public scribus-next
(package
(name "scribus-next")
(version "1.6.1")
(source
(origin
(method url-fetch)
(uri "https://sourceforge.net/projects/scribus/files/scribus/1.6.1/scribus-1.6.1.tar.gz")
(sha256
(base32 "1kqqffx5xz35mwd422s4i110794zzx9sc2bn2mg77rz02hrxdhxg"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;no test target
#:configure-flags '("-DWANT_GRAPHICSMAGICK=1" "-DWANT_CPP17=ON")))
(inputs (list boost
cairo
cups
fontconfig
freetype
graphicsmagick
harfbuzz
hunspell
icu4c
lcms
libcdr
libfreehand
libjpeg-turbo
libmspub
libpagemaker
librevenge
libtiff
libvisio
libxml2
libzmf
openssl
podofo
poppler
python
qtbase-5
qtdeclarative-5
zlib))
(native-inputs (list pkg-config qttools-5 util-linux))
(home-page "https://www.scribus.net")
(synopsis "Desktop publishing and page layout program")
(description
"Scribus is a @dfn{desktop publishing} (DTP) application and can
be used for many tasks; from brochure design to newspapers, magazines,
newsletters and posters to technical documentation. Scribus supports
professional DTP features, such as CMYK color and a color management
system to soft proof images for high quality color printing, flexible
PDF creation options, Encapsulated PostScript import/export and
creation of four color separations, import of EPS/PS and SVG as native
vector graphics, Unicode text including right to left scripts such as
Arabic and Hebrew via FreeType.")
(license license:gpl2+)))

View file

@ -0,0 +1,591 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 nik gaffney <nik@fo.am>
;;;
;;; This file is (not yet) part of 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 <http://www.gnu.org/licenses/>.
;;; via unofficial channels
;;; https://repo.fo.am/zzkt/guix
(define-module (zzkt packages soupault)
#:use-module (guix)
#:use-module (guix build-system dune)
#:use-module (guix build-system ocaml)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages glib)
#:use-module (gnu packages libevent)
#:use-module (gnu packages pkg-config)
#:use-module (guix git-download)
#:use-module ((guix licenses)
#:prefix license:))
;; v4.7.0
;; https://github.com/ocaml/opam-source-archives/raw/main/soupault.4.7.0.tar.gz
;; 0y4dlifiqs4x3w87lkfdiw0i89v8j69ax5mxp7g6lq0h40g8n4i6
;; v4.6.0
;; https://github.com/ocaml/opam-source-archives/raw/main/soupault.4.6.0.tar.gz
;; 1rc1jqri24ib5w109y8ffl9k835b6s9cyxj0s2px7aabwsf3iidf
(define-public soupault
(package
(name "soupault")
(version "4.6.0")
(source
(origin
(method url-fetch)
(uri
"https://github.com/ocaml/opam-source-archives/raw/main/soupault.4.6.0.tar.gz")
(sha256
(base32 "1rc1jqri24ib5w109y8ffl9k835b6s9cyxj0s2px7aabwsf3iidf"))))
(build-system dune-build-system)
(arguments
`(#:tests? #f))
(propagated-inputs (list ocaml-containers
ocaml-fileutils
ocaml-logs
ocaml-fmt
ocaml-lambdasoup
ocaml-markup
ocaml-otoml
ocaml-ezjsonm
ocaml-yaml
ocaml-csv
ocaml-lwt
ocaml-re
ocaml-odate
ocaml-spelll
ocaml-base64
ocaml-jingoo
ocaml-camomile
ocaml-digestif
ocaml-tsort
ocaml-lua-ml))
(home-page "https://www.soupault.app")
(synopsis "Static website generator based on HTML rewriting")
(description
"This package provides a website generator that works with page element tree
rather than text and allows you to manipulate pages and retrieve metadata from
existing HTML using arbitrary CSS selectors. With soupault you can: * Generate
@code{ToC} and footnotes. * Insert file content or an HTML snippet in any
element. * Preprocess element content with external programs (e.g. run `<pre>`
tags through a highlighter) * Extract page metadata (think microformats) and
render it using a Jingoo template or an external script. * Export extracted
metadata to JSON. Soupault is extensible with Lua (2.5) plugins and provides an
API for element tree manipulation, similar to web browsers. The website
generator mode is optional, you can use it as post-processor for existing sites.")
(license license:expat)))
;; ocaml packages not (yet) in guix as of 2024-01-04
;; ocaml-containers
;; ocaml-lambdasoup
;; ocaml-otoml
;; ocaml-yaml
;; ocaml-odate
;; ocaml-spelll
;; ocaml-jingoo
;; ocaml-tsort
;; ocaml-lua-ml
;; ocaml-qcheck-core
;; ocaml-iter
;; via guix import opam containers
(define-public ocaml-containers
(package
(name "ocaml-containers")
(version "3.13.1")
(source
(origin
(method url-fetch)
(uri
"https://github.com/c-cube/ocaml-containers/releases/download/v3.13.1/containers-3.13.1.tbz")
(sha256
(base32 "114pcswmscbh5mvniiarbk5jqma3kjs6w9bx2p2lzw1w5kmjd6zb"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-either dune-configurator ocaml-odoc))
(native-inputs (list ocaml-qcheck-core
ocaml-yojson
ocaml-iter
ocaml-gen
ocaml-csexp
ocaml-uutf))
(home-page "https://github.com/c-cube/ocaml-containers/")
(synopsis
"A modular, clean and powerful extension of the OCaml standard library")
(description #f)
(license license:bsd-2)))
;; via guix import opam lambdasoup
(define-public ocaml-lambdasoup
(package
(name "ocaml-lambdasoup")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri "https://github.com/aantron/lambdasoup/archive/1.0.0.tar.gz")
(sha256
(base32 "1g5jr1s024z755slz5zg4cssmxqbva0d0nhn75wd09p45v7c94x3"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-camlp-streams ocaml-markup ocaml-bisect-ppx))
(native-inputs (list ocaml-ounit2))
(home-page "https://github.com/aantron/lambdasoup")
(synopsis
"Easy functional HTML scraping and manipulation with CSS selectors")
(description
"Lambda Soup is an HTML scraping library inspired by Python's Beautiful Soup. It
provides lazy traversals from HTML nodes to their parents, children, siblings,
etc., and to nodes matching CSS selectors. The traversals can be manipulated
using standard functional combinators such as fold, filter, and map. The DOM
tree is mutable. You can use Lambda Soup for automatic HTML rewriting in
scripts. Lambda Soup rewrites its own ocamldoc page this way. A major goal of
Lambda Soup is to be easy to use, including in interactive sessions, and to have
a minimal learning curve. It is a very simple library.")
(license license:expat)))
;; via guix import opam otoml
(define-public ocaml-otoml
(package
(name "ocaml-otoml")
(version "1.0.4")
(source
(origin
(method url-fetch)
(uri
"https://github.com/dmbaturin/otoml/archive/refs/tags/1.0.4.tar.gz")
(sha256
(base32 "1q4nq5sj31hhv0vwv3wd739scqd4ni80583dmny0ip1id4w7xkc8"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-menhir ocaml-menhirLib ocaml-uutf
ocaml-odoc))
(native-inputs (list ocaml-ounit2))
(home-page "https://github.com/dmbaturin/otoml")
(synopsis
"TOML parsing, manipulation, and pretty-printing library (1.0.0-compliant)")
(description
"OTOML is a library for parsing, manipulating, and pretty-printing TOML files. *
Fully 1.0.0-compliant. * No extra dependencies: default implementation uses
native numbers and represents dates as strings. * Provides a functor for
building alternative implementations: plug your own bignum and calendar
libraries if required. * Informative parse error reporting. * Pretty-printer
offers flexible indentation options.")
(license license:expat)))
;; via guix import opam yaml
(define-public ocaml-yaml
(package
(name "ocaml-yaml")
(version "3.2.0")
(source
(origin
(method url-fetch)
(uri
"https://github.com/avsm/ocaml-yaml/releases/download/v3.2.0/yaml-3.2.0.tbz")
(sha256
(base32 "09w2l2inc0ymzd9l8gpx9pd4xlp5a4rn1qbi5dwndydr5352l3f5"))))
(build-system dune-build-system)
(propagated-inputs (list dune-configurator ocaml-ctypes ocaml-bos))
(native-inputs (list ocaml-fmt
ocaml-logs
ocaml-mdx
ocaml-alcotest
ocaml-crowbar
ocaml-junit-alcotest
ocaml-ppx-sexp-value
ocaml-sexplib
ocaml-ezjsonm))
(home-page "https://github.com/avsm/ocaml-yaml")
(synopsis "Parse and generate YAML 1.1/1.2 files")
(description
"This is an OCaml library to parse and generate the YAML file format. It is
intended to interoperable with the [Ezjsonm](https://github.com/mirage/ezjsonm)
JSON handling library, if the simple common subset of Yaml is used. Anchors and
other advanced Yaml features are not implemented in the JSON compatibility
layer.")
(license license:isc)))
;; via guix import opam odate
(define-public ocaml-odate
(package
(name "ocaml-odate")
(version "0.7")
(source
(origin
(method url-fetch)
(uri
"https://github.com/hhugo/odate/releases/download/0.7/odate-0.7.tbz")
(sha256
(base32 "1bsmix8qbsk04a1l2x4lrh919xq6a3pmanvgkdlc5wwp3p42q6bl"))))
(build-system dune-build-system)
(arguments
`(#:tests? #f))
(propagated-inputs (list ocaml-menhir))
(native-inputs (list ocaml-lwt ocaml-ppx-expect))
(home-page "https://github.com/hhugo/odate")
(synopsis "Date & Duration Library")
(description
"Simple date and duration manipulation. Also implement duration printer based on
string format.")
(license license:expat)))
;; via guix import opam spelll
(define-public ocaml-spelll
(package
(name "ocaml-spelll")
(version "0.4")
(source
(origin
(method url-fetch)
(uri "https://github.com/c-cube/spelll/archive/v0.4.tar.gz")
(sha256
(base32 "06sv8fm8ml6s1w005c0d0lsc58qhqhij5chks3fv541b2y2mcl5q"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-seq ocaml-stdlib-shims ocaml-odoc))
(native-inputs (list ocaml-qcheck ocaml-mdx))
(home-page "https://github.com/c-cube/spelll/")
(synopsis "Fuzzy string searching, using Levenshtein automaton")
(description #f)
(license license:bsd-2)))
;; via guix import opam jingoo
(define-public ocaml-jingoo
(package
(name "ocaml-jingoo")
(version "1.5.0")
(source
(origin
(method url-fetch)
(uri "https://github.com/tategakibunko/jingoo/archive/1.5.0.tar.gz")
(sha256
(base32 "1sjq26dxh8vk184fn2md5r4ilnh7jj7baylg3f3j142l94ig6kwc"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-menhir ocaml-ppx-deriving ocaml-re
ocaml-uutf ocaml-uucp))
(native-inputs (list ocaml-ounit))
(home-page "https://github.com/tategakibunko/jingoo")
(synopsis
"Template engine almost compatible with Jinja2(python template engine)")
(description #f)
(license license:bsd-3)))
;; via guix import opam tsort
(define-public ocaml-tsort
(package
(name "ocaml-tsort")
(version "2.1.0")
(source
(origin
(method url-fetch)
(uri
"https://github.com/dmbaturin/ocaml-tsort/archive/refs/tags/2.1.0.tar.gz")
(sha256
(base32 "16vy2x384ac3wr4vdfvc2dqnln6w5bgj4frwyi0h3rgnz9cz2w1q"))))
(build-system dune-build-system)
(home-page "https://github.com/dmbaturin/ocaml-tsort")
(synopsis "Easy to use and user-friendly topological sort")
(description
"Easy to use and user-friendly topological sort. Example: ``` Tsort.sort
[(\"foundation\", []); (\"walls\", [\"foundation\"]); (\"roof\", [\"walls\"])] ```")
(license license:expat)))
;; via guix import opam lua-ml
(define-public ocaml-lua-ml
(package
(name "ocaml-lua-ml")
(version "0.9.4")
(source
(origin
(method url-fetch)
(uri "https://github.com/lindig/lua-ml/archive/refs/tags/0.9.4.tar.gz")
(sha256
(base32 "0za62jivmxrdwnnxdaad53sbryfsaj4zfqlfpdp98n9bpvsi4mad"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-odoc))
(home-page "https://github.com/lindig/lua-ml")
(synopsis "An embeddable Lua 2.5 interpreter implemented in OCaml")
(description #f)
(license license:bsd-2)))
;; via guix import opam qcheck-core
(define-public ocaml-qcheck-core
(package
(name "ocaml-qcheck-core")
(version "0.21.3")
(source
(origin
(method url-fetch)
(uri "https://github.com/c-cube/qcheck/archive/v0.21.3.tar.gz")
(sha256
(base32 "1ar416qlrb2qrnlm7vw7lzg860nrg9vw8p3rnx16xy8ryj6z5pix"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-ppxlib ocaml-ounit2 ocaml-odoc))
(native-inputs (list ocaml-alcotest))
(home-page "https://github.com/c-cube/qcheck/")
(synopsis "Core qcheck library")
(description #f)
(license license:bsd-2)))
;; via guix import opam iter
(define-public ocaml-iter
(package
(name "ocaml-iter")
(version "1.8")
(source
(origin
(method url-fetch)
(uri
"https://github.com/c-cube/iter/releases/download/v1.8/iter-1.8.tbz")
(sha256
(base32 "08rhykcizbs21mri4zx1b6vg42a4wybl238cla5bmi79bah9qwzq"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-odoc))
(native-inputs (list ocaml-qcheck-core ocaml-ounit2 ocaml-mdx))
(home-page "https://github.com/c-cube/iter/")
(synopsis
"Simple abstraction over `iter` functions, intended to iterate efficiently on collections while performing some transformations")
(description #f)
(license license:bsd-2)))
;; via guix import opam menhirLib
(define-public ocaml-menhirLib
(package
(name "ocaml-menhirLib")
(version "20230608")
(source
(origin
(method url-fetch)
(uri
"https://gitlab.inria.fr/fpottier/menhir/-/archive/20230608/archive.tar.gz")
(sha256
(base32 "13mb862c20m1q7vjsa5lgqj3w6b0xhj8ckjyk524wrc4i0s1jzix"))))
(build-system dune-build-system)
(arguments
`(#:tests? #f))
(home-page "http://gitlab.inria.fr/fpottier/menhir")
(synopsis "Runtime support library for parsers generated by Menhir")
(description #f)
(license #f)))
;; via guix import opam junit
(define-public ocaml-junit
(package
(name "ocaml-junit")
(version "2.0.2")
(source
(origin
(method url-fetch)
(uri
"https://github.com/Khady/ocaml-junit/releases/download/2.0.2/junit-2.0.2.tbz")
(sha256
(base32 "00bbx5j8vsy9fqbc04xa3lsalaxicirmbczr65bllfk1afv43agx"))))
(build-system dune-build-system)
(arguments
`(#:tests? #f))
(propagated-inputs (list ocaml-ptime ocaml-tyxml ocaml-odoc ocaml-ounit
ocaml-alcotest))
(home-page "https://github.com/Khady/ocaml-junit")
(synopsis "JUnit XML reports generation library")
(description "JUnit XML reports generation library")
(license #f)))
;; via guix import opam junit_alcotest
(define-public ocaml-junit-alcotest
(package
(name "ocaml-junit-alcotest")
(version "2.0.2")
(source
(origin
(method url-fetch)
(uri
"https://github.com/Khady/ocaml-junit/releases/download/2.0.2/junit-2.0.2.tbz")
(sha256
(base32 "00bbx5j8vsy9fqbc04xa3lsalaxicirmbczr65bllfk1afv43agx"))))
(build-system dune-build-system)
(arguments
`(#:tests? #f))
(propagated-inputs (list ocaml-odoc ocaml-alcotest ocaml-junit))
(properties `((upstream-name . "junit_alcotest")))
(home-page "https://github.com/Khady/ocaml-junit")
(synopsis "JUnit XML reports generation for alcotest tests")
(description "JUnit XML reports generation for alcotest tests")
(license #f)))
;; via guix import opam junit_ounit
(define-public ocaml-junit-ounit
(package
(name "ocaml-junit-ounit")
(version "2.0.2")
(source
(origin
(method url-fetch)
(uri
"https://github.com/Khady/ocaml-junit/releases/download/2.0.2/junit-2.0.2.tbz")
(sha256
(base32 "00bbx5j8vsy9fqbc04xa3lsalaxicirmbczr65bllfk1afv43agx"))))
(build-system dune-build-system)
(arguments
`(#:tests? #f))
(propagated-inputs (list ocaml-odoc ocaml-ounit ocaml-junit))
(properties `((upstream-name . "junit_ounit")))
(home-page "https://github.com/Khady/ocaml-junit")
(synopsis "JUnit XML reports generation for OUnit tests")
(description "JUnit XML reports generation for OUnit tests")
(license #f)))
;; via guix import opam junit_camomile
;; note: camomile 1.0.2 is currently available in guix
(define-public ocaml-camomile
(package
(name "ocaml-camomile")
(version "2.0.0")
(source
(origin
(method url-fetch)
(uri
"https://github.com/savonet/Camomile/archive/refs/tags/v2.0.0.tar.gz")
(sha256
(base32 "0gfhpwh039jgf9bdjwz3dxbjs0h90qd100nrbp5llnc1pg823d3b"))))
(build-system dune-build-system)
(propagated-inputs (list ocaml-dune-site ocaml-camlp-streams ocaml-odoc))
;; (native-inputs (list ocaml-stdlib-random))
(home-page "https://github.com/savonet/Camomile")
(synopsis "A Unicode library")
(description
"Camomile is a Unicode library for OCaml. Camomile provides Unicode character
type, UTF-8, UTF-16, UTF-32 strings, conversion to/from about 200 encodings,
collation and locale-sensitive case mappings, and more. The library is
currently designed for Unicode Standard 3.2.")
(license #f)))
;; via guix import opam dune-site
(define-public ocaml-dune-site
(package
(name "ocaml-dune-site")
(version "3.12.2")
(source
(origin
(method url-fetch)
(uri
"https://github.com/ocaml/dune/releases/download/3.12.2/dune-3.12.2.tbz")
(sha256
(base32 "1csz543wq66dcn08piabaascvbiswb1vxw1xfg4glgp8zq0mzap8"))))
(build-system dune-build-system)
(propagated-inputs (list dune ocaml-lwt ocaml-base ocaml-odoc))
(home-page "https://github.com/ocaml/dune")
(synopsis "Embed locations information inside executable and libraries")
(description #f)
(license license:expat)))
;; via guix import opam lwt
;; note: v5.6 is currently available in guix
;; see also https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/ocaml.scm#n2800
(define-public ocaml-lwt
(package
(name "ocaml-lwt")
(version "5.7.0")
(source
(origin
(method url-fetch)
(uri "https://github.com/ocsigen/lwt/archive/refs/tags/5.7.0.tar.gz")
(sha256
(base32 "11dpr0aprqqjgb2n4j4czpw3l0bc8dzy1jqmp2qz3xkih31k241p"))))
(build-system dune-build-system)
(arguments
`(#:package "lwt"))
(native-inputs (list ocaml-cppo ocaml-base pkg-config))
(inputs (list glib))
(propagated-inputs (list ocaml-mmap ocaml-ocplib-endian ocaml-result
ocaml-seq libev))
;; (propagated-inputs (list dune-configurator ocaml-ocplib-endian))
;; (native-inputs (list ocaml-cppo))
(home-page "https://github.com/ocsigen/lwt")
(synopsis "Promises and event-driven I/O")
(description
"This package provides a promise is a value that may become determined in the
future. Lwt provides typed, composable promises. Promises that are resolved by
I/O are resolved by Lwt in parallel. Meanwhile, OCaml code, including code
creating and waiting on promises, runs in a single thread by default. This
reduces the need for locks or other synchronization primitives. Code can be run
in parallel on an opt-in basis.")
(license license:expat)))
;; via guix import opam base
;; (define-public ocaml-base
;; (package
;; (name "ocaml-base")
;; (version "0.16.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri
;; "https://github.com/janestreet/base/archive/refs/tags/v0.16.3.tar.gz")
;; (sha256
;; (base32 "0g7rrwnd3sb4pcpnvq7hc7dd7rg1gh0axxdhqwjh60dxw81ybycv"))))
;; (build-system dune-build-system)
;; (propagated-inputs (list ocaml-sexplib0 dune-configurator))
;; (home-page "https://github.com/janestreet/base")
;; (synopsis "Full standard library replacement for OCaml")
;; (description
;; "Full standard library replacement for OCaml Base is a complete and portable
;; alternative to the OCaml standard library. It provides all standard
;; functionalities one would expect from a language standard library. It uses
;; consistent conventions across all of its module. Base aims to be usable in any
;; context. As a result system dependent features such as I/O are not offered by
;; Base. They are instead provided by companion libraries such as stdio:
;; https://github.com/janestreet/stdio")
;; (license license:expat)))
;; via guix import opam sexplib0
;; (define-public ocaml-sexplib0
;; (package
;; (name "ocaml-sexplib0")
;; (version "0.16.0")
;; (source
;; (origin
;; (method url-fetch)
;; (uri
;; "https://ocaml.janestreet.com/ocaml-core/v0.16/files/sexplib0-v0.16.0.tar.gz")
;; (sha256
;; (base32 "07bhj2akd6i33h11qin4wns9qnjicf871yzji7vi4i8rd1ja5nw6"))))
;; (build-system dune-build-system)
;; (home-page "https://github.com/janestreet/sexplib0")
;; (synopsis
;; "Library containing the definition of S-expressions and some base converters")
;; (description
;; "Part of Jane Street's Core library The Core suite of libraries is an industrial
;; strength alternative to OCaml's standard library that was developed by Jane
;; Street, the largest industrial user of OCaml.")
;; (license license:expat)))

View file

@ -0,0 +1,218 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
(define-module (zzkt packages supercollider)
#:use-module (ice-9 regex)
#:use-module (guix utils)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (gnu packages algebra) ;; fftw
#:use-module (gnu packages xorg) ;; libxt
#:use-module (gnu packages audio) ;; mainline supercollider package
#:use-module (gnu packages readline)
#:use-module (gnu packages linux) ;; alsa-lib, eudev
#:use-module (gnu packages avahi)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages boost)
#:use-module (gnu packages serialization) ;; yaml-cpp
#:use-module (gnu packages python)
#:use-module (gnu packages ruby)
#:use-module (gnu packages qt)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio) ;; libsndfile
#:use-module (guix build-system cmake)
#:use-module (guix build-system trivial))
(define-public supercollider-cli
(package
(name "supercollider-cli")
(version "3.13.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/supercollider/supercollider")
(commit (string-append "Version-" version))
;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
(recursive? #t)))
(file-name (git-file-name name version))
(sha256
(base32
"1dkpnaly4m2j41ypy7xj5m2yhbl4ykw3vbnam345z4dk6qhyj9b1"))
(modules '((guix build utils)
(ice-9 ftw)))
(snippet
;; The build system doesn't allow us to unbundle the following
;; libraries. hidapi is also heavily patched and upstream not
;; actively maintained.
#~(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi"
"TLSF-2.4.6" "oscpack_1_1_0" "." "..")))
(with-directory-excursion "./external_libraries"
(for-each
delete-file-recursively
(scandir "."
(lambda (x)
(and (eq? (stat:type (stat x)) 'directory)
(not (member (basename x) keep-dirs)))))))
;; To find the Guix provided ableton-link library.
(substitute* "lang/CMakeLists.txt"
(("include\\(\\.\\./external_libraries/link/\
AbletonLinkConfig\\.cmake\\)")
"find_package(AbletonLink NAMES AbletonLink ableton-link \
link REQUIRED)"))))))
(build-system cmake-build-system)
(outputs '("out"))
(arguments
(list
#:configure-flags
#~(list "-DSYSTEM_BOOST=ON"
"-DSYSTEM_YAMLCPP=ON"
"-DFORTIFY=ON"
"-DLIBSCSYNTH=ON"
"-DSC_EL=OFF"
"-DSC_QT=OFF" ;; CLI only. buiild without Qt and IDE
"-DCMAKE_BUILD_TYPE=Release")
#:phases
#~(modify-phases %standard-phases
;; HOME must be defined otherwise supercollider throws a "ERROR:
;; Primitive '_FileMkDir' failed." error when generating the doc.
;; The graphical tests also hang without it.
(add-after 'unpack 'set-home-directory
(lambda _
(setenv "HOME" (getcwd))))
(add-after 'unpack 'patch-scclass-dir
(lambda _
(let* ((scclass-dir
(string-append #$output
"/share/SuperCollider/SCClassLibrary")))
(substitute* "lang/LangSource/SC_LanguageConfig.cpp"
(((string-append
"SC_Filesystem::instance\\(\\)\\.getDirectory"
"\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
(string-append "Path(\"" scclass-dir "\")"))))))
(add-after 'patch-scclass-dir 'fix-struct-SOUNDFILE-tag
(lambda _
(display (getcwd)) (newline)
(substitute* "include/plugin_interface/SC_SndBuf.h"
(("SNDFILE_tag")
"sf_private_tag")))))))
(native-inputs
(list ableton-link pkg-config))
(inputs (list jack-1
libsndfile
fftw
libxt
readline
alsa-lib
eudev
avahi
icu4c
boost
boost-sync
yaml-cpp
python-wrapper
ruby))
(home-page "https://github.com/supercollider/supercollider")
(synopsis "Synthesis engine and programming language (CLI version without Qt GUI)")
(description "SuperCollider is a synthesis engine (@code{scsynth} or
@code{supernova}) and programming language (@code{sclang}). It can be used
for experimenting with sound synthesis and algorithmic composition.
SuperCollider requires jackd to be installed in your user profile and your
user must be allowed to access the realtime features of the kernel. Search
for \"realtime\" in the index of the Guix manual to learn how to achieve this
using Guix System.")
(license license:gpl2+)))
(define-public supercollider-gui
(package
(inherit supercollider-cli)
(name "supercollider-gui")
(outputs
'("out"
"ide"))
(arguments
(list
#:configure-flags
#~(list "-DSYSTEM_BOOST=ON"
"-DSYSTEM_YAMLCPP=ON"
"-DSC_QT=ON"
"-DCMAKE_BUILD_TYPE=Release"
"-DFORTIFY=ON"
"-DLIBSCSYNTH=ON"
"-DSC_EL=OFF")
#:phases
#~(modify-phases %standard-phases
;; HOME must be defined otherwise supercollider throws a "ERROR:
;; Primitive '_FileMkDir' failed." error when generating the doc.
;; The graphical tests also hang without it.
(add-after 'unpack 'set-home-directory
(lambda _
(setenv "HOME" (getcwd))))
(add-after 'unpack 'patch-scclass-dir
(lambda _
(let* ((scclass-dir
(string-append #$output
"/share/SuperCollider/SCClassLibrary")))
(substitute* "lang/LangSource/SC_LanguageConfig.cpp"
(((string-append
"SC_Filesystem::instance\\(\\)\\.getDirectory"
"\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
(string-append "Path(\"" scclass-dir "\")"))))))
(add-after 'patch-scclass-dir 'fix-struct-SOUNDFILE-tag
(lambda _
(display (getcwd)) (newline)
(substitute* "include/plugin_interface/SC_SndBuf.h"
(("SNDFILE_tag")
"sf_private_tag"))))
(add-before 'build 'prepare-x
(lambda _
(system "Xvfb &")
(setenv "DISPLAY" ":0")))
(add-before 'install 'install-ide
(lambda _
(let* ((ide #$output:ide)
(scide "editors/sc-ide/scide"))
(install-file scide
(string-append ide "/bin"))
(delete-file scide)))))))
(native-inputs
(list ableton-link pkg-config qttools-5 xorg-server-for-tests))
(inputs (modify-inputs
(package-inputs supercollider-cli)
(prepend qtbase-5
qtdeclarative-5
qtsvg-5
qtwebchannel-5
qtwebsockets-5)))
(propagated-inputs
(list qtwebengine-5))
(synopsis "Synthesis engine and programming language (including IDE)")))
;; Supercollider GUI version by default
(define-public supercollider-default
(package
(inherit supercollider-gui)
(name "supercollider-default")))

View file

@ -0,0 +1,180 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; tidal(cycles)
;;
;; run time depends
;; - supercollider
;; - https://github.com/musikinformatik/SuperDirt
;; see also -> https://git.sr.ht/~akagi/rrr/tree/master/item/rrr/packages/haskell-xyz.scm#L116
(define-module (zzkt packages tidal)
#:use-module (guix)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system haskell)
#:use-module (guix git-download)
#:use-module ((guix licenses)
#:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages audio)
#:use-module (gnu packages haskell-apps)
#:use-module (gnu packages haskell-check)
#:use-module (gnu packages haskell-xyz))
(define-public tidal
(package
(name "tidal")
(version "1.9.4")
(source
(origin
(method url-fetch)
(uri (hackage-uri "tidal" version))
(sha256
(base32 "126p05lqlq8q03gdhqq378dirs5imfkk9csaf797jz1j6lcwbnv1"))))
(build-system haskell-build-system)
(properties '((upstream-name . "tidal")))
(inputs (list ghc-colour
ghc-hosc
ghc-network
ghc-clock
ghc-primitive
ghc-random
ghc-tidal-link))
(native-inputs (list ghc-microspec))
(arguments
`(#:cabal-revision ("2"
"12v805xy9nqfyn9ryqxlslqiffb6havpixi23xkmk0annbxcf8k2")))
(home-page "http://tidalcycles.org/")
(synopsis "Pattern language for improvised music")
(description
"Tidal is a domain specific language for live coding patterns.")
(license license:gpl3)))
(define-public ghc-tidal-link
(package
(name "ghc-tidal-link")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (hackage-uri "tidal-link" version))
(sha256
(base32 "0s3x73zx4rxjawcf2744z9dr05j4pabbxddrz9814h1d61q2cbb1"))))
(build-system haskell-build-system)
(properties '((upstream-name . "tidal-link")))
(home-page "http://tidalcycles.org/")
(synopsis "Ableton Link integration for Tidal")
(description
"Ableton Link integration for Tidal, to let Tidal sync with external clocks")
(license #f)))
;; hackage dependencies not in guix as of 2023-12-01
;; - ghc-hosc
;; - ghc-data-binary-ieee754
(define-public ghc-hosc
(package
(name "ghc-hosc")
(version "0.20")
(source
(origin
(method url-fetch)
(uri (hackage-uri "hosc" version))
(sha256
(base32 "17pvv6rgl74ymq7pazxqia19smsga53kkg5h1i1dgfpikrmq7fz9"))))
(build-system haskell-build-system)
(properties '((upstream-name . "hosc")))
(inputs (list ghc-blaze-builder ghc-data-binary-ieee754 ghc-network))
(home-page "http://rohandrape.net/t/hosc")
(synopsis "Haskell Open Sound Control")
(description
"Haskell library implementing the Open Sound Control protocol")
(license #f)))
(define-public ghc-data-binary-ieee754
(package
(name "ghc-data-binary-ieee754")
(version "0.4.4")
(source
(origin
(method url-fetch)
(uri (hackage-uri "data-binary-ieee754" version))
(sha256
(base32 "02nzg1barhqhpf4x26mpzvk7jd29nali033qy01adjplv2z5m5sr"))))
(build-system haskell-build-system)
(properties '((upstream-name . "data-binary-ieee754")))
(home-page "https://john-millikin.com/software/data-binary-ieee754/")
(synopsis "Parser/Serialiser for IEEE-754 floating-point values")
(description "Convert Float and Decimal values to/from raw octets.")
(license license:expat)))
(define-public ghc-microspec
(package
(name "ghc-microspec")
(version "0.2.1.3")
(source
(origin
(method url-fetch)
(uri (hackage-uri "microspec" version))
(sha256
(base32 "0615gdbsk7i3w71adjp69zabw4mli965wffm2h846hp6pjj31xcb"))))
(build-system haskell-build-system)
(properties '((upstream-name . "microspec")))
(inputs (list ghc-quickcheck))
(home-page "http://hackage.haskell.org/package/microspec")
(synopsis "Tiny QuickCheck test library with minimal dependencies")
(description
"This package provides a tiny (1 module, <500 lines) property-based (and unit)
testing library with minimal dependencies. . Instead of reinventing the wheel
(<https://xkcd.com/927>), we use a RSpec/HSpec-like DSL and run tests with
@code{QuickCheck}. . For many use-cases, microspec is a drop-in replacement for
hspec. . > import Test.Microspec > > main :: IO () > main = microspec $ do >
describe \"replicate\" $ do > it \"doubles with 2\" $ > replicate 2 x === \"xx\" > it
\"creates a list of the right size\" $ > \\(Positive n) -> length (replicate n x')
=== n > > describe \"reverse\" $ do > it \"reverse . reverse === id\" $ \\l -> >
reverse (reverse l) === (l :: [Int]) > > describe \"tail\" $ > it \"length is -1\" $
\\(@code{NonEmpty} l) -> > length (tail l :: [Int]) === length l - 1 > > describe
\"solve the halting problem\" $ > pending")
(license license:bsd-3)))
;; superdirt via -> https://github.com/musikinformatik/SuperDirt
(define-public superdirt
(package
(name "superdirt")
(version "1.7.3")
(source
(origin
(method url-fetch)
(uri
"https://github.com/musikinformatik/SuperDirt/archive/refs/tags/v1.7.3.tar.gz")
(sha256
(base32 "16pl3z7979j2az8xcjglxz7rmn9rnm8mll5gns3fj193yp3w18iv"))))
(inputs (list supercollider))
(propagated-inputs (list supercollider))
(build-system gnu-build-system)
(arguments
(list
#:configure-flags #~(list "--enable-silent-rules")))
(home-page "https://github.com/musikinformatik/SuperDirt/")
(synopsis "Tidal Audio Engine")
(description
"SuperCollider implementation of the Dirt sampler, originally designed for the TidalCycles environment. SuperDirt is a general purpose framework for playing samples and synths, controllable over the Open Sound Control protocol, and locally from the SuperCollider language.")
(license license:gpl3+)))

View file

@ -0,0 +1,118 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2023 nik gaffney <nik@fo.am>
;;;
;;; This file is not (yet) part of 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 <http://www.gnu.org/licenses/>.
;; from the guix-science channel -> https://github.com/guix-science/
;; seems to have been deleted or moved?
;; see also
;; - https://github.com/guix-science/guix-science/issues/24
;; - https://github.com/guix-science/guix-science/pull/27
;; or via flatpack? https://flathub.org/apps/org.zotero.Zotero
(define-module (zzkt packages zotero)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix download)
#:use-module (gnu packages base)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gtk)
#:use-module (gnu packages xorg)
#:use-module (gnu packages glib)
#:use-module (guix build-system gnu)
;; #:use-module (nonguix build-system binary) ;; requires guix/guile path config?
#:use-module (ice-9 regex))
;; null package for now...
(define-public zotero
(package
(name "zotero")
(version "0.0.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/hello/hello-" version
".tar.gz"))
(sha256
(base32
"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
(build-system gnu-build-system)
(synopsis "Hello, GNU world: An example GNU package")
(description
"GNU Hello prints the message \"Hello, world!\" and then exits. It
serves as an example of standard GNU coding practices. As such, it supports
command-line arguments, multiple languages, and so on.")
(home-page "https://www.gnu.org/software/hello/")
(license license:gpl3+)))
;; (define-public zotero
;; (package
;; (name "zotero")
;; (version "6.0.26")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append "https://download.zotero.org/client/release/"
;; version "/Zotero-" version "_linux-x86_64.tar.bz2"))
;; (sha256
;; (base32 "0h1bizcqlk22h7nvhnyp3ppymv2hrk7133hgmp15hl3bvfzz7nh6"))))
;; (build-system binary-build-system)
;; (arguments
;; `(#:patchelf-plan `(("zotero-bin" ("gcc:lib" "glibc"))
;; ("libmozgtk.so" ("gtk+"))
;; ("libxul.so" ("libx11" "dbus-glib" "libxt"
;; "libgthread")))
;; #:install-plan '(("./" "/opt/zotero/"))
;; #:phases (modify-phases %standard-phases
;; (add-after 'patch-usr-bin-file 'patch-launcher
;; (lambda* (#:key outputs #:allow-other-keys)
;; (substitute* "zotero"
;; ((,(regexp-quote
;; "$(dirname \"$(readlink -f \"$0\")\")"))
;; (string-append (assoc-ref outputs "out")
;; "/opt/zotero")))))
;; (add-after 'install 'install-bin
;; (lambda* (#:key outputs #:allow-other-keys)
;; (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
;; (symlink (string-append (assoc-ref outputs "out")
;; "/opt/zotero/zotero")
;; (string-append (assoc-ref outputs "out")
;; "/bin/zotero"))
;; (mkdir-p (string-append (assoc-ref outputs "out")
;; "/share/applications"))
;; (symlink (string-append (assoc-ref outputs "out")
;; "/opt/zotero/zotero.desktop")
;; (string-append (assoc-ref outputs "out")
;; "/share/applications/zotero.desktop")))))))
;; (inputs (list coreutils
;; gcc
;; gtk+
;; libx11
;; glib
;; libxt
;; dbus-glib))
;; (synopsis
;; "Your personal research assistant.")
;; (description
;; "Zotero is a free, easy-to-use tool to help you collect, organize, annotate, cite, and share research.")
;; (home-page "https://www.zotero.org/")
;; (license license:gpl3)))

View file

@ -0,0 +1,72 @@
# typography
font_family Victor Mono Regular
bold_font Victor Mono SemiBold
italic_font Victor Mono Thin Italic
bold_italic_font auto
disable_ligatures never
font_size 14.0
# per symbol font mapping
symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols
cursor_blink_interval 1
cursor_stop_blinking_after 15.0
show_hyperlink_targets yes
underline_hyperlinks hover
paste_actions quote-urls-at-prompt,confirm
strip_trailing_spaces smart
# theme based on Monokai Pro (Filter_Octagon)
background #3a3d4b
foreground #eaf2f1
cursor #eaf2f1
cursor_text_color #000000
selection_foreground #3a3d4b
selection_background #eaf2f1
# dull black
color0 #3a3d4b
# light black
color8 #696d77
# dull red
color1 #ff657a
# light red
color9 #ff657a
# dull green
color2 #bad761
# light green
color10 #bad761
# yellow
color3 #ffd76d
# light yellow
color11 #ffd76d
# blue
color4 #ff9b5e
# light blue
color12 #ff9b5e
# magenta
color5 #c39ac9
# light magenta
color13 #c39ac9
# cyan
color6 #9cd1bb
# light cyan
color14 #9cd1bb
# dull white
color7 #eaf2f1
# bright white
color15 #eaf2f1

View file

@ -0,0 +1,545 @@
# -*- mode: org; coding: utf-8; -*-
#+title: a GUIX system config - Framework 13 AMD
#+property: header-args :tangle framework13-system.scm
A semi-literate config for GUIX running on a Framework 13 AMD laptop
- generate config with =org-babel-tangle= (bound to =C-c C-v t=)
- rebuild with =guix system reconfigure framework13.scm= (or similar)
* header
generate a header and timestamp if required
#+name: timestamp
#+BEGIN_SRC sh :results output code :tangle no
echo ";; -*- mode: scheme; coding: utf-8; -*-
;;
;; tangled from framework13-system.org on `date --rfc-3339 seconds`)"
#+end_src
#+begin_src scheme :noweb yes
<<timestamp()>>
#+end_src
* modules
#+begin_src scheme
(use-modules (gnu)
(gnu packages)
(guix modules)
(gnu system nss)
(gnu system setuid)
(gnu packages shells)
(gnu packages linux)
(gnu packages xdisorg)
(gnu packages display-managers)
(gnu packages emacs-xyz))
#+end_src
Include non-free linux kernel, modules and firmware from the [[https://gitlab.com/nonguix/nonguix/][nonguix channel]] (aka “The GUIX Channel That Shall Not Be Named”)
#+begin_src scheme
(use-modules (nongnu packages linux)
(nongnu system linux-initrd))
#+end_src
** service modules
#+begin_src scheme
(use-service-modules cups
sddm
desktop
networking
ssh
xorg
samba
sound
mail
vpn)
#+end_src
** package modules
#+begin_src scheme
(use-package-modules admin
certs
package-management
ssh
tls
vpn)
#+end_src
* kernel corruption
Some kernel corruption may be required to enable WIFI. Since the non-free kernel from nonguix prior to 6.7.2 doesnt include the driver for RZ616/MT7922 adapter by default it needs to be added explicitly. Defined here and used in the =operating-system= declaration below. (see also commit [[https://gitlab.com/nonguix/nonguix/-/commit/3857d86267284000dc48660a5dfd56cb2a8cf004][3857d862]] for the addition of =nonguix-extra-linux-options=)
#+begin_src scheme
(define-public linux-FWL13
(corrupt-linux linux-libre-6.11
#:name "linux-fwl13"
#:configs '("CONFIG_MT7921E=m")))
#+end_src
* operating-system
The =operating-system= declaration
#+begin_src scheme
(operating-system
(host-name "zxxcxxz")
(locale "en_GB.utf8")
(timezone "Europe/Amsterdam")
#+end_src
hosts file for local & LAN name resolving and persistent =/etc/hosts= (maybe convert to =hosts-service-type=)
#+BEGIN_SRC scheme :session
(hosts-file (local-file "hosts.conf"))
#+END_SRC
** keyboard layout
Layout is qwerty, CAPS_LOCK is CTRL, Ctrl-Fn-Meta-super to left of SPACE. The =keyboard-layout= declared here can be used for boot, console and Xorg
#+begin_src scheme
(keyboard-layout (keyboard-layout
"us" "altgr-intl"
#:options '("ctrl:nocaps"
"altwin:swap_lalt_lwin")))
#+end_src
** kernel
A custom kernel is configured above, kernel arguments are declared here.
The =hid_sensor_hub= module needs to be disabled for screen dimming and keyboard backlight to work as expecrted. Some other kernel arguments possibly required for (in)compatability with other features include ="amdgpu.sg_display=0"=, ="acpi_osi=linux" "acpi_backlight=vendor"=
Kernel & driver details
- https://gitlab.com/nonguix/nonguix
- https://www.kernel.org/doc/html/latest/gpu/amdgpu/module-parameters.html
- https://community.frame.work/t/solved-backlight-brightness-issues/36065/13
Using =linux-6.11= from nonguix (which includes =CONFIG_MT7921E= by default as of 6.7.2)
#+begin_src scheme
(kernel linux-6.11)
;; (kernel linux-FWL13)
#+end_src
testing [[https://community.frame.work/t/adaptive-backlight-management-abm/41055][Adaptive Backlight Management (ABM)]]
#+BEGIN_SRC scheme
;; (kernel-arguments '("amdgpu.abmlevel=3"))
;; (kernel-arguments '("modprobe.blacklist=hid_sensor_hub")) ;; required prior to 6.7
(kernel-arguments (cons* "resume=/swapfile"
"splash" "quiet")
%default-kernel-arguments)
#+END_SRC
…and required firmware (should be possible to reduce to specifics)
#+begin_src scheme
(firmware (list linux-firmware
amdgpu-firmware
amd-microcode))
;; (firmware (list amdgpu-firmware
;; amd-microcode
;; realtek-firmware))
#+end_src
** users & groups
#+begin_src scheme
(users (cons* (user-account
(name "zzk")
(comment "zzk")
(group "users")
(home-directory "/home/zzk")
(shell (file-append zsh "/bin/zsh"))
(supplementary-groups '("wheel"
"netdev"
"audio"
"video"
"www-data"
"realtime"
"lp")))
(user-account
(name "www-data")
(group "www-data")
(home-directory "/home/www"))
%base-user-accounts))
#+end_src
#+begin_src scheme
(groups (cons* (user-group
(name "www-data"))
(user-group
(system? #t)
(name "realtime"))
%base-groups))
#+end_src
** sudoers
#+begin_src scheme
(sudoers-file
(plain-file "sudoers"
"root ALL=(ALL) ALL
%wheel ALL=NOPASSWD: ALL"))
#+end_src
** system-wide packages
Packages installed system-wide. Users can also install packages under their own account: use =guix search KEYWORD= to search for packages and =guix install PACKAGE= to install a package.
#+begin_src scheme
(packages
(append (map specification->package
'("emacs"
"emacs-guix"
"emacs-exwm"
"openssh-sans-x"
;; xfce
"xfce4-power-manager"
"xfce4-settings"
"xfce4-session"
"xfce4-panel"
;; gnome extras
"gvfs"
; sddm
"chili-sddm-theme"
;; vpn
"wireguard-tools"
))
%base-packages))
#+end_src
** system services
Below is the list of enabled system services. To search for any available services, run =guix system search KEYWORD= in a terminal.
#+begin_src scheme
(services
(append (list
#+end_src
*** SSH
#+begin_src scheme
(service openssh-service-type
(openssh-configuration
(openssh openssh-sans-x)
(password-authentication? #true)
(authorized-keys
`(("zzk" ,(local-file "zzk_rsa.pub"))
("root" ,(local-file "zzk_rsa.pub"))))))
#+end_src
*** mail
use dovecot for local IMAP
#+begin_src scheme
(service dovecot-service-type
(dovecot-configuration
(mail-location "maildir:%h/Maildir:LAYOUT=fs")))
#+end_src
*** iptables
=iptables= configuration to allow SSH on port 22, IMAPS on 993, wireguard (wg0), syncthing, mDNS and local smb for 192.168.0.0/16
#+BEGIN_SRC scheme :session
(service iptables-service-type
(iptables-configuration
(ipv4-rules (plain-file "iptables.rules"
#+end_src
**** ipv4 rules
#+BEGIN_SRC scheme
"*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -o en0 -j MASQUERADE
COMMIT
,*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p udp -m udp --dport 5353 -j ACCEPT
#+end_src
SMB
#+BEGIN_SRC scheme
-A INPUT -p udp -m udp -s 192.168.0.0/16 --dport 137 -j ACCEPT
-A INPUT -p udp -m udp -s 192.168.0.0/16 --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.0.0/16 --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.0.0/16 --dport 445 -j ACCEPT
#+end_src
wireguard
#+BEGIN_SRC scheme
-A INPUT -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -i wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wg0 -j ACCEPT
#+end_src
syncthing
#+BEGIN_SRC scheme
-A INPUT -p tcp -s 192.168.0.0/16 --dport 8384 -j ACCEPT
-A INPUT -p tcp -s 192.168.0.0/16 --dport 21027 -j ACCEPT
#+END_SRC
otherwise
#+BEGIN_SRC scheme
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m conntrack --ctstate INVALID -j DROP
COMMIT
"))
#+end_src
**** ipv6 rules
#+BEGIN_SRC scheme
(ipv6-rules (plain-file "ip6tables.rules"
"*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -o en0 -j MASQUERADE
COMMIT
,*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
-A INPUT -p udp -m udp --dport 5353 -j ACCEPT
#+end_src
SMB
#+BEGIN_SRC scheme
-A INPUT -p udp -m udp -s fded:c2f7:43ef::/64 --dport 137 -j ACCEPT
-A INPUT -p udp -m udp -s fded:c2f7:43ef::/64 --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s fded:c2f7:43ef::/64 --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s fded:c2f7:43ef::/64 --dport 445 -j ACCEPT
#+end_src
wireguard
#+BEGIN_SRC scheme
-A INPUT -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -i wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wg0 -j ACCEPT
#+end_src
syncthing
#+BEGIN_SRC scheme
-A INPUT -p tcp -s 192.168.0.0/16 --dport 8384 -j ACCEPT
-A INPUT -p tcp -s 192.168.0.0/16 --dport 21027 -j ACCEPT
#+END_SRC
otherwise
#+BEGIN_SRC scheme
-A INPUT -j REJECT --reject-with icmp6-port-unreachable
-A INPUT -m conntrack --ctstate INVALID -j DROP
COMMIT
"))))
#+END_SRC
*** wireguard
details can be found (and mostly ignored) in [[https://guix.gnu.org/cookbook/en/html_node/Connecting-to-Wireguard-VPN.html][Connecting to Wireguard VPN]] section of the cookbook
#+BEGIN_SRC scheme :session
(service wireguard-service-type
(wireguard-configuration
(addresses '("10.0.0.23/32" "fded:dada::23/128"))
(private-key "/etc/wireguard/private.key")
(port 51820)
(peers
(list
(wireguard-peer
(name "lmn")
(endpoint "example.org:51820")
(public-key "WHmVhvgxkBxk8fqZU6pWEaH4iVzOcud9JQivwRsaIE8=")
(allowed-ips '("10.0.0.1/24" "fded:dada::1/64"))
(keep-alive 25))
(wireguard-peer
(name "beryllium")
(endpoint "example.org:51820")
(public-key "taeID3fNgci9OpE+1UYkS4DYZE6DIlhpLQL1BVN9sg8=")
(allowed-ips '("10.0.0.13/32" "fded:dada::13/128"))
(keep-alive 25))
(wireguard-peer
(name "vrt")
(public-key "4xA6sNrHyAebXZ2i8szdN0WMhH61CE786H+pGQwuLlA=")
(allowed-ips '("10.0.0.22/32" "fded:dada::22/128"))
(keep-alive 25))))))
#+END_SRC
*** display manager
#+begin_src scheme
(service sddm-service-type
(sddm-configuration
(display-server "x11")
(remember-last-user? #t)
(theme "chili")
(xorg-configuration
(xorg-configuration
(keyboard-layout keyboard-layout)
#+end_src
Trackpad config using [[https://www.mankier.com/4/libinput][libinput]]
#+begin_src scheme
(extra-config '("Section \"InputClass\"
Identifier \"touchpad\"
Driver \"libinput\"
MatchIsTouchpad \"on\"
Option \"Tapping\" \"on\"
Option \"TappingButtonMap\" \"lrm\"
Option \"ClickMethod\" \"clickfinger\"
Option \"AccelProfile\" \"adaptive\"
EndSection"))))))
#+end_src
*** desktop environments
Provide Gnome, KDE (plasma) and/or xfce as desktop environments. exwm is enabled automatically via module.
#+begin_src scheme
(service plasma-desktop-service-type)
;; (service gnome-desktop-service-type)
;; (service xfce-desktop-service-type)
;; (service lxqt-desktop-service-type)
#+end_src
*** file sharing
#+begin_src scheme
(service samba-service-type
(samba-configuration
(enable-smbd? #t)
(config-file
(plain-file "smb.conf" "\
[global]
protocol = SMB3
logging = syslog@1
workgroup = FOAM
netbios name = zxXCXxz
security = user
case sensitive = yes
preserve case = yes
short preserve case = yes
[homes]
valid users = %S
browsable = no
writable = yes
"))))
#+end_src
*** realtime
real-time scheduling for the =realtime= group (sound, supercollider, etc)
#+BEGIN_SRC scheme
(service pam-limits-service-type
(list
(pam-limits-entry "@realtime" 'both 'rtprio 99)
(pam-limits-entry "@realtime" 'both 'memlock 'unlimited)))
#+END_SRC
*** bluetooth
#+begin_src scheme
(service bluetooth-service-type)
#+end_src
*** printing
#+begin_src scheme
(service cups-service-type)
#+end_src
*** firmware updates
via fwdup (incomplete)
#+BEGIN_SRC emacs-lisp
;; (simple-service 'fwupd-dbus dbus-root-service-type
;; (list fwupd-nonfree))
#+END_SRC
*** modify desktop services
If gdm is reconfigured (see above) or any other display manager is declared, gdm needs to be removed from =%desktop-services=
#+begin_src scheme
) ;; end services list
#+end_src
#+begin_src scheme
(modify-services %desktop-services
(delete gdm-service-type))))
#+end_src
*** mDNS
Enable resolution of '.local' host names with mDNS (as of 2024-06-17 looks like this conflicts with smbd)
#+begin_src scheme
;; (name-service-switch %mdns-host-lookup-nss)
#+end_src
*** screen locker
screen locker requires suid
#+begin_src scheme
;; (service screen-locker-service-type
;; (screen-locker-configuration
;; (name "xscreensaver")
;; (program (file-append xscreensaver "/bin/xscreensaver")) (using-pam? #t)
;; (using-setuid? #f)))
(setuid-programs
(cons*
(setuid-program
(program (file-append xsecurelock "/libexec/xsecurelock/authproto_pam")))
%setuid-programs))
#+end_src
** initrd
initrd with AMD microcode blobs
#+begin_src scheme
(initrd (lambda (file-systems . rest)
(apply microcode-initrd file-systems
#:initrd base-initrd
#:microcode-packages (list amd-microcode)
rest)))
#+end_src
** bootloader
#+begin_src scheme
(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
(targets (list "/boot/efi"))
(keyboard-layout keyboard-layout)))
#+end_src
** file systems & mount points
Using LUKS for encrypted partitions requires =mapped-devices=
#+BEGIN_SRC scheme :session
(mapped-devices (list (mapped-device
(source (uuid
"9b5d47cd-d865-4ec9-81ec-30565fa767e4"))
(target "cryptroot")
(type luks-device-mapping))))
#+END_SRC
The list of file systems that get mounted. The unique file system identifiers ("UUIDs") can be obtained by running =blkid= in a terminal.
#+begin_src scheme
(file-systems (cons* (file-system
(mount-point "/boot/efi")
(device (uuid "0D77-7016" 'fat32))
(type "vfat"))
(file-system
(mount-point "/")
(device "/dev/mapper/cryptroot")
(type "ext4")
(dependencies mapped-devices))
%base-file-systems))
#+end_src
** swap device
keep swap file within the encrypted partition:
- dd if=/dev/zero of=/swapfile bs=1M count=32768
- chmod 0600 /swapfile && mkswap /swapfile && swapon
- add "resume=/swapfile" to =kernel-arguments=
#+begin_src scheme
(swap-devices (list (swap-space
(target "/swapfile")
(dependencies mapped-devices))))
#+end_src
** FIN
#+begin_src scheme
) ;; end operating-system declaration
#+end_src

View file

@ -0,0 +1,340 @@
;; -*- mode: scheme; coding: utf-8; -*-
;;
;; tangled from framework13-system.org on 2024-10-29 11:47:13+01:00)
(use-modules (gnu)
(gnu packages)
(guix modules)
(gnu system nss)
(gnu system setuid)
(gnu packages shells)
(gnu packages linux)
(gnu packages xdisorg)
(gnu packages display-managers)
(gnu packages emacs-xyz))
(use-modules (nongnu packages linux)
(nongnu system linux-initrd))
(use-service-modules cups
sddm
desktop
networking
ssh
xorg
samba
sound
mail
vpn)
(use-package-modules admin
certs
package-management
ssh
tls
vpn)
(define-public linux-FWL13
(corrupt-linux linux-libre-6.11
#:name "linux-fwl13"
#:configs '("CONFIG_MT7921E=m")))
(operating-system
(host-name "zxxcxxz")
(locale "en_GB.utf8")
(timezone "Europe/Amsterdam")
(hosts-file (local-file "hosts.conf"))
(keyboard-layout (keyboard-layout
"us" "altgr-intl"
#:options '("ctrl:nocaps"
"altwin:swap_lalt_lwin")))
(kernel linux-6.11)
;; (kernel linux-FWL13)
;; (kernel-arguments '("amdgpu.abmlevel=3"))
;; (kernel-arguments '("modprobe.blacklist=hid_sensor_hub")) ;; required prior to 6.7
(kernel-arguments (cons* "resume=/swapfile"
"splash" "quiet")
%default-kernel-arguments)
(firmware (list linux-firmware
amdgpu-firmware
amd-microcode))
;; (firmware (list amdgpu-firmware
;; amd-microcode
;; realtek-firmware))
(users (cons* (user-account
(name "zzk")
(comment "zzk")
(group "users")
(home-directory "/home/zzk")
(shell (file-append zsh "/bin/zsh"))
(supplementary-groups '("wheel"
"netdev"
"audio"
"video"
"www-data"
"realtime"
"lp")))
(user-account
(name "www-data")
(group "www-data")
(home-directory "/home/www"))
%base-user-accounts))
(groups (cons* (user-group
(name "www-data"))
(user-group
(system? #t)
(name "realtime"))
%base-groups))
(sudoers-file
(plain-file "sudoers"
"root ALL=(ALL) ALL
%wheel ALL=NOPASSWD: ALL"))
(packages
(append (map specification->package
'("emacs"
"emacs-guix"
"emacs-exwm"
"openssh-sans-x"
;; xfce
"xfce4-power-manager"
"xfce4-settings"
"xfce4-session"
"xfce4-panel"
;; gnome extras
"gvfs"
; sddm
"chili-sddm-theme"
;; vpn
"wireguard-tools"
))
%base-packages))
(services
(append (list
(service openssh-service-type
(openssh-configuration
(openssh openssh-sans-x)
(password-authentication? #true)
(authorized-keys
`(("zzk" ,(local-file "zzk_rsa.pub"))
("root" ,(local-file "zzk_rsa.pub"))))))
(service dovecot-service-type
(dovecot-configuration
(mail-location "maildir:%h/Maildir:LAYOUT=fs")))
(service iptables-service-type
(iptables-configuration
(ipv4-rules (plain-file "iptables.rules"
"*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -o en0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p udp -m udp --dport 5353 -j ACCEPT
-A INPUT -p udp -m udp -s 192.168.0.0/16 --dport 137 -j ACCEPT
-A INPUT -p udp -m udp -s 192.168.0.0/16 --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.0.0/16 --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.0.0/16 --dport 445 -j ACCEPT
-A INPUT -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -i wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wg0 -j ACCEPT
-A INPUT -p tcp -s 192.168.0.0/16 --dport 8384 -j ACCEPT
-A INPUT -p tcp -s 192.168.0.0/16 --dport 21027 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m conntrack --ctstate INVALID -j DROP
COMMIT
"))
(ipv6-rules (plain-file "ip6tables.rules"
"*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -o en0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
-A INPUT -p udp -m udp --dport 5353 -j ACCEPT
-A INPUT -p udp -m udp -s fded:c2f7:43ef::/64 --dport 137 -j ACCEPT
-A INPUT -p udp -m udp -s fded:c2f7:43ef::/64 --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s fded:c2f7:43ef::/64 --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s fded:c2f7:43ef::/64 --dport 445 -j ACCEPT
-A INPUT -p udp -m udp --dport 51820 -j ACCEPT
-A INPUT -i wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wg0 -j ACCEPT
-A INPUT -p tcp -s 192.168.0.0/16 --dport 8384 -j ACCEPT
-A INPUT -p tcp -s 192.168.0.0/16 --dport 21027 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-port-unreachable
-A INPUT -m conntrack --ctstate INVALID -j DROP
COMMIT
"))))
(service wireguard-service-type
(wireguard-configuration
(addresses '("10.0.0.23/32" "fded:dada::23/128"))
(private-key "/etc/wireguard/private.key")
(port 51820)
(peers
(list
(wireguard-peer
(name "lmn")
(endpoint "example.org:51820")
(public-key "WHmVhvgxkBxk8fqZU6pWEaH4iVzOcud9JQivwRsaIE8=")
(allowed-ips '("10.0.0.1/24" "fded:dada::1/64"))
(keep-alive 25))
(wireguard-peer
(name "beryllium")
(endpoint "example.org:51820")
(public-key "taeID3fNgci9OpE+1UYkS4DYZE6DIlhpLQL1BVN9sg8=")
(allowed-ips '("10.0.0.13/32" "fded:dada::13/128"))
(keep-alive 25))
(wireguard-peer
(name "vrt")
(public-key "4xA6sNrHyAebXZ2i8szdN0WMhH61CE786H+pGQwuLlA=")
(allowed-ips '("10.0.0.22/32" "fded:dada::22/128"))
(keep-alive 25))))))
(service sddm-service-type
(sddm-configuration
(display-server "x11")
(remember-last-user? #t)
(theme "chili")
(xorg-configuration
(xorg-configuration
(keyboard-layout keyboard-layout)
(extra-config '("Section \"InputClass\"
Identifier \"touchpad\"
Driver \"libinput\"
MatchIsTouchpad \"on\"
Option \"Tapping\" \"on\"
Option \"TappingButtonMap\" \"lrm\"
Option \"ClickMethod\" \"clickfinger\"
Option \"AccelProfile\" \"adaptive\"
EndSection"))))))
(service plasma-desktop-service-type)
;; (service gnome-desktop-service-type)
;; (service xfce-desktop-service-type)
;; (service lxqt-desktop-service-type)
(service samba-service-type
(samba-configuration
(enable-smbd? #t)
(config-file
(plain-file "smb.conf" "\
[global]
protocol = SMB3
logging = syslog@1
workgroup = FOAM
netbios name = zxXCXxz
security = user
case sensitive = yes
preserve case = yes
short preserve case = yes
[homes]
valid users = %S
browsable = no
writable = yes
"))))
(service pam-limits-service-type
(list
(pam-limits-entry "@realtime" 'both 'rtprio 99)
(pam-limits-entry "@realtime" 'both 'memlock 'unlimited)))
(service bluetooth-service-type)
(service cups-service-type)
;; (simple-service 'fwupd-dbus dbus-root-service-type
;; (list fwupd-nonfree))
) ;; end services list
(modify-services %desktop-services
(delete gdm-service-type))))
;; (name-service-switch %mdns-host-lookup-nss)
;; (service screen-locker-service-type
;; (screen-locker-configuration
;; (name "xscreensaver")
;; (program (file-append xscreensaver "/bin/xscreensaver")) (using-pam? #t)
;; (using-setuid? #f)))
(setuid-programs
(cons*
(setuid-program
(program (file-append xsecurelock "/libexec/xsecurelock/authproto_pam")))
%setuid-programs))
(initrd (lambda (file-systems . rest)
(apply microcode-initrd file-systems
#:initrd base-initrd
#:microcode-packages (list amd-microcode)
rest)))
(bootloader (bootloader-configuration
(bootloader grub-efi-bootloader)
(targets (list "/boot/efi"))
(keyboard-layout keyboard-layout)))
(mapped-devices (list (mapped-device
(source (uuid
"9b5d47cd-d865-4ec9-81ec-30565fa767e4"))
(target "cryptroot")
(type luks-device-mapping))))
(file-systems (cons* (file-system
(mount-point "/boot/efi")
(device (uuid "0D77-7016" 'fat32))
(type "vfat"))
(file-system
(mount-point "/")
(device "/dev/mapper/cryptroot")
(type "ext4")
(dependencies mapped-devices))
%base-file-systems))
(swap-devices (list (swap-space
(target "/swapfile")
(dependencies mapped-devices))))
) ;; end operating-system declaration

View file

@ -0,0 +1,284 @@
# -*- mode: org; coding: utf-8; -*-
#+title: a GUIX home config
#+property: header-args :tangle home-configuration.scm
A semi-literate config for GUIX home
- generate config with =org-babel-tangle= (bound to =C-c C-v t=)
- rebuild with =guix home reconfigure home-configuration.scm= (or similar)
* header
generate a header and timestamp if required
#+name: timestamp
#+BEGIN_SRC sh :results output code :tangle no
echo ";; -*- mode: scheme; coding: utf-8; -*-
;;
;; tangled from home-configuration.org on `date --rfc-3339 seconds`)"
#+end_src
#+begin_src scheme :noweb yes
<<timestamp()>>
#+end_src
** use-modules
#+BEGIN_SRC scheme
(use-modules (gnu)
(gnu home)
(gnu services)
(gnu packages)
(gnu packages gnupg)
(gnu packages shells)
(gnu home services)
(gnu home services guix)
(gnu home services shells)
(gnu home services dotfiles)
(gnu home services desktop)
(gnu home services sound)
(gnu home services gnupg)
(guix channels)
(guix gexp))
#+END_SRC
* home environment
** packages
Packages that will show up in the home profile under =~/.guix-home/profile= (this setup might make more sense split into several composible profiles or project based manifest files)
#+BEGIN_SRC scheme
(home-environment
(packages (specifications->packages
(list
#+END_SRC
*** generally useful
#+BEGIN_SRC scheme
"emacs-guix"
"emacs-next"
"libreoffice"
"rsync"
"gnupg"
"crda"
"htop"
"tree"
"password-store"
"tomb"
"rbw"
#+END_SRC
*** KDE packages
various features not installed as part of =plasma-desktop-service=
#+BEGIN_SRC scheme
"dolphin-plugins"
"spectacle" ;; screencapture
"akonadi" ;; PIM
"kamoso" ;; webcam
"okular" ;; doc viewer
#+END_SRC
*** terminal
kitty config located in =dotfiles/.config/kitty/kitty.conf=
#+BEGIN_SRC scheme
"kitty"
#+END_SRC
*** Mail
#+BEGIN_SRC scheme
"icedove" ;; aka thunderbird
"getmail6"
"notmuch"
#+END_SRC
*** graphics
drivers for opengl, opencl, vulkan, etc and some apps
#+BEGIN_SRC scheme
"mesa" "mesa-opencl" "vulkan-loader" "vulkan-tools"
"scribus"
"inkscape"
"gimp"
"imagemagick"
#+END_SRC
*** music, sound & noise
#+BEGIN_SRC scheme
"supercollider"
"tidal"
"ardour"
"audacity"
"qpwgraph"
"patchage"
"aubio"
"ffmpeg"
#+END_SRC
*** programming, dev & ops
#+BEGIN_SRC scheme :session
"guile"
"sbcl"
"racket"
"python"
"gcc-toolchain"
"git" "git:send-email"
"cryptsetup"
"glances"
"file"
#+END_SRC
*** research & reading
#+BEGIN_SRC scheme :session
"zotero"
#+END_SRC
*** network & interconnect
#+BEGIN_SRC scheme
"librewolf"
;; "nyxt"
"nextcloud-client"
"nmap"
"w3m"
"bind:utils"
#+END_SRC
*** fonts & typography
#+BEGIN_SRC scheme :session
"font-monaspace"
"font-recursive"
"font-fira-sans"
"font-fira-mono"
"font-victor-mono"
#+END_SRC
*** Hardware
#+BEGIN_SRC scheme
"lm-sensors"
"dmidecode"
"lshw"
"hwinfo"
"acpi"
))) ;; end packages
#+END_SRC
** services
The list of home services. To search for available services run =guix home search KEYWORD= in a terminal.
#+BEGIN_SRC scheme
(services
(list
#+END_SRC
*** channels
Additional channels → nonguix (aka “The GUIX Channel That Shall Not Be Named”) & zzkt (local particulars)
#+BEGIN_SRC scheme
(simple-service 'variant-packages-service
home-channels-service-type
(list
(channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
(channel
(name 'zzkt)
(url "https://gitlab.com/zzkt/guix")
(branch "endless")
(commit
"02cdb798288a79e77e2b42f712c64b758de22499")
(introduction
(make-channel-introduction
"fc0ada85de1980e1fc9ee50672d827c0c17c3e7d"
(openpgp-fingerprint
"24A7 4604 91E6 A60F 5BB4 A00F 989F 5E6E DB47 8160"))))))
#+END_SRC
*** environment / variables
#+BEGIN_SRC scheme
(simple-service 'variant-env-vars-service
home-environment-variables-service-type
`(("GUIX_LOCPATH" . "$HOME/.guix-profile/lib/locale")
("NOTMUCH_CONFIG" . "$XDG_CONFIG_HOME/notmuch/notmuch.conf")
("LD_LIBRARY_PATH" . "$HOME/.guix-profile/lib")
("GPG_TTY" . "$TTY")
("SHELL" . ,(file-append zsh "/bin/zsh"))))
#+END_SRC
*** zsh shell
zsh (and/or completions and/or [[https://lists.gnu.org/archive/html/help-guix/2020-06/msg00005.html][help-guix]])
=$fpath= contains =/run/current-system/profile/share/zsh/site-functions=
#+BEGIN_SRC scheme
(service home-zsh-service-type
(home-zsh-configuration
;; configs in $XDG_CONFIG_HOME/zsh
(xdg-flavor? #t)
(environment-variables
'(("HISTFILE" . "$HOME/.config/zsh/.history")
("HISTSIZE" . "800000")
("SAVEHIST" . "800000")))
#+END_SRC
the zsh dotfiles are added manually rather than using dotfiles-service (duplicate errors when managed by =home-dotfiles-service= )
#+BEGIN_SRC scheme
(zshenv
(list (local-file "dotfiles/.config/zsh/.zshenv" "zshenv")))
(zshrc
(list (local-file "dotfiles/.config/zsh/.zshrc" "zshrc")))))))
#+END_SRC
*** gnupg
#+BEGIN_SRC scheme
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
(file-append pinentry-qt "/bin/pinentry-qt"))
(ssh-support? #t)))
#+END_SRC
*** dotfiles
(see [[https://guix.gnu.org/manual/devel/en/html_node/Essential-Home-Services.html][guix docs]] and note about zsh config)
#+BEGIN_SRC scheme
(service home-dotfiles-service-type
(home-dotfiles-configuration
(layout 'plain)
(directories (list "dotfiles"))
(excluded
'(".*~" ".*\\.swp" "\\.git" "\\.gitignore"
".zshenv" ".zshrc"))))
#+END_SRC
*** ssh & sundry
(see also [[https://guix.gnu.org/manual/devel/en/html_node/Secure-Shell.html][guix manual]])
#+BEGIN_SRC scheme
;; ssh config in 'dotfiles'
#+END_SRC
*** syncthing
using [[https://syncthing.net/][syncthing]] for local & point-to-point filesync across machines (see also nextcloud)
#+BEGIN_SRC scheme
(service home-syncthing-service-type)
#+END_SRC
*** sound
via pipewire which requires dbus (see also [[https://guix.gnu.org/manual/devel/en/html_node/Sound-Home-Services.html][guix manual]])
#+BEGIN_SRC scheme
(service home-dbus-service-type)
(service home-pipewire-service-type
(home-pipewire-configuration
(enable-pulseaudio? #t)))
#+END_SRC
*** fonts
(see -> https://guix.gnu.org/manual/devel/en/html_node/Fonts-Home-Services.html)
#+BEGIN_SRC scheme
)) ;; end services
#+END_SRC
* FIN
#+BEGIN_SRC scheme
) ;; end home-environment
#+END_SRC

View file

@ -0,0 +1,171 @@
;; -*- mode: scheme; coding: utf-8; -*-
;;
;; tangled from home-configuration.org on 2024-10-29 11:47:07+01:00)
(use-modules (gnu)
(gnu home)
(gnu services)
(gnu packages)
(gnu packages gnupg)
(gnu packages shells)
(gnu home services)
(gnu home services guix)
(gnu home services shells)
(gnu home services dotfiles)
(gnu home services desktop)
(gnu home services sound)
(gnu home services gnupg)
(guix channels)
(guix gexp))
(home-environment
(packages (specifications->packages
(list
"emacs-guix"
"emacs-next"
"libreoffice"
"rsync"
"gnupg"
"crda"
"htop"
"tree"
"password-store"
"tomb"
"rbw"
"dolphin-plugins"
"spectacle" ;; screencapture
"akonadi" ;; PIM
"kamoso" ;; webcam
"okular" ;; doc viewer
"kitty"
"icedove" ;; aka thunderbird
"getmail6"
"notmuch"
"mesa" "mesa-opencl" "vulkan-loader" "vulkan-tools"
"scribus"
"inkscape"
"gimp"
"imagemagick"
"supercollider"
"tidal"
"ardour"
"audacity"
"qpwgraph"
"patchage"
"aubio"
"ffmpeg"
"guile"
"sbcl"
"racket"
"python"
"gcc-toolchain"
"git" "git:send-email"
"cryptsetup"
"glances"
"file"
"zotero"
"librewolf"
;; "nyxt"
"nextcloud-client"
"nmap"
"w3m"
"bind:utils"
"font-monaspace"
"font-recursive"
"font-fira-sans"
"font-fira-mono"
"font-victor-mono"
"lm-sensors"
"dmidecode"
"lshw"
"hwinfo"
"acpi"
))) ;; end packages
(services
(list
(simple-service 'variant-packages-service
home-channels-service-type
(list
(channel
(name 'nonguix)
(url "https://gitlab.com/nonguix/nonguix")
(branch "master")
(introduction
(make-channel-introduction
"897c1a470da759236cc11798f4e0a5f7d4d59fbc"
(openpgp-fingerprint
"2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"))))
(channel
(name 'zzkt)
(url "https://gitlab.com/zzkt/guix")
(branch "endless")
(commit
"02cdb798288a79e77e2b42f712c64b758de22499")
(introduction
(make-channel-introduction
"fc0ada85de1980e1fc9ee50672d827c0c17c3e7d"
(openpgp-fingerprint
"24A7 4604 91E6 A60F 5BB4 A00F 989F 5E6E DB47 8160"))))))
(simple-service 'variant-env-vars-service
home-environment-variables-service-type
`(("GUIX_LOCPATH" . "$HOME/.guix-profile/lib/locale")
("NOTMUCH_CONFIG" . "$XDG_CONFIG_HOME/notmuch/notmuch.conf")
("LD_LIBRARY_PATH" . "$HOME/.guix-profile/lib")
("GPG_TTY" . "$TTY")
("SHELL" . ,(file-append zsh "/bin/zsh"))))
(service home-zsh-service-type
(home-zsh-configuration
;; configs in $XDG_CONFIG_HOME/zsh
(xdg-flavor? #t)
(environment-variables
'(("HISTFILE" . "$HOME/.config/zsh/.history")
("HISTSIZE" . "800000")
("SAVEHIST" . "800000")))
(zshenv
(list (local-file "dotfiles/.config/zsh/.zshenv" "zshenv")))
(zshrc
(list (local-file "dotfiles/.config/zsh/.zshrc" "zshrc")))))))
(service home-gpg-agent-service-type
(home-gpg-agent-configuration
(pinentry-program
(file-append pinentry-qt "/bin/pinentry-qt"))
(ssh-support? #t)))
(service home-dotfiles-service-type
(home-dotfiles-configuration
(layout 'plain)
(directories (list "dotfiles"))
(excluded
'(".*~" ".*\\.swp" "\\.git" "\\.gitignore"
".zshenv" ".zshrc"))))
;; ssh config in 'dotfiles'
(service home-syncthing-service-type)
(service home-dbus-service-type)
(service home-pipewire-service-type
(home-pipewire-configuration
(enable-pulseaudio? #t)))
)) ;; end services
) ;; end home-environment

11
news.scm Normal file
View file

@ -0,0 +1,11 @@
;; -*- mode: scheme; -*-
;; https://guix.gnu.org/manual/en/html_node/Writing-Channel-News.html
(channel-news
(version 0)
(entry (commit "")
(title (en "New configuration format")
(fr "Nouveau format de configuration"))
(body (en "The configuration")
(fr "Le fichier de configuration"))))

View file

@ -1,74 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGiBD2bMg4RBACC30KyWqnNVe4VB9bl8xdt2GDHkVAcydBY7KwYVgHoFpHgxQny
EsKw/Iyb5LbPnfnUV29uOfbl6/W1AvCD8YP/wMuhEqRrSMsfG56rW7grp1Ykd0qh
b9ysVvXszHnNF52dbWtt32BUM5BLmoHQWMXzOcpxzExNufJvapZhRNQCWwCgmzBY
4osO+Ptbf3bawFamjLyDNqMD/iNKIe6wdz4NhK8+GNZam2aSIh7LSahZPkcn/iJ3
7dSHLjJ72ERC2WsVEEYPiompiAWA5UeL67sZjGoMaROGKrySaRqV5LIr2/8DpIue
xMgBN0t2D6EWBbw4KlZfFlSpV1qx4fDkJecBtBA+SCAFat42ER9JGC9C1waUtnV6
dauFA/41GsN0/m61/T0bwVPm0os5UEZvpLyo4nWQGw/xAL9Fv2fvtdmr4GGfa/1j
I7opTZw34rgIOVy9dVmFGDP3cg3K1mxLuuBz6z483Yl5VAsm4dtFXvSkXGksN4+Q
/zU9+70Hi77li31tuK84nHLU1zFHG9is6/WyvDuOJ6J2c2Z8I7QXbmlrIGdhZmZu
ZXkgPG5pa0Bmby5hbT6IYQQTEQIAIQIbIwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUC
RSTqIwIZAQAKCRCYn15u20eBYPoTAJ0Qsdxz7Xd2y06B3KUicDBDWVLqJQCdEdvs
FeDEMffrK56n3zFyvda89iuIRgQTEQIABgUCQs2mFwAKCRDCskiugSOfEl2VAKCv
1+S93pAwjuJzaiE2OmBRl3y8rwCdH4gdX2Shm65jONHiFCvns3Cc6miIRgQQEQIA
BgUCRSTfkwAKCRAE2e5ZEye275KQAJ9cuPC9XalTNy4KSDR9Xjb7lt+qPwCdEsWl
CFY3+L7AQijvZmOvwLPO3ySIXgQTEQIAHgUCQm4LdAIbIwYLCQgHAwIDFQIDAxYC
AQIeAQIXgAAKCRCYn15u20eBYMbrAKCDN4IZBGrNBFNLpdkgxGEGdz0/VwCgmGWV
L6mi7fnQHNHlicHv3v5rEBC0F25payBnYWZmbmV5IDxuaWtAZjAuYW0+iFkEExEC
ABkECwcDAgMVAgMDFgIBAh4BAheABQJFJOojAAoJEJifXm7bR4FgNAIAnitkoWga
fQbfV5N4o5xV+9+CSaWEAKCDMnsf3rcj2CKIUaR+c/0Fc49FFohGBBMRAgAGBQJB
mJrCAAoJEKYdytr4SJQbH4QAn0eDEH0dvRo52cSoHKM3ug57M3a0AJ0Vy8qq/B2K
yssH4va8PwolGmRSZIhfBBMRAgAfBAsHAwIDFQIDAxYCAQIeAQIXgAUCP33x/gUJ
A8PzcAAKCRCYn15u20eBYGdCAKCLAJK1CWuu7zoG7qteCd510/Eb7QCfaxv/5OPD
jqsSmuuDfo6V9Df5v1OIXwQTEQIAHwUCPZsyDgUJAeEzgAQLBwMCAxUCAwMWAgEC
HgECF4AACgkQmJ9ebttHgWBkbQCgmBJTaycbyzP1jDhJsOrPK11ARRQAniWUUeN/
4xlXdKvFAGbfm28ZQR+5iFkEExECABkECwcDAgMVAgMDFgIBAh4BAheABQI/iwkU
AAoJEJifXm7bR4Fg+L0AoJsN66ilOBOY+mxgzM2GDvX0Nla/AJ41Pg2l0SUA1vxE
UGHfAmvmGlMdg4hGBBARAgAGBQJCcLzXAAoJEHdv18ASl9S1p0QAni6F79w1IBmA
2fvBImLC+ABq4hKcAJ97ZlT/vR5vwvh9OXo4bYTenIhK64hGBBMRAgAGBQJCcNqd
AAoJEO+uRaaaaQhnFz0AoOb50BVgPfIE3dzCIKxBIhks4QpJAJ9WteSAaZHkdlXm
iwj1uCWxS99XkYhGBBARAgAGBQJCcV4IAAoJELnAwFgE1/RfPOoAn1K90cgXdnOA
yjplHagR3L2ThgdhAKCJhxU7l7UHMXkhuTJFLL4nqAl49YhGBBMRAgAGBQJCeRl3
AAoJEBvqAv6Lq2Iac88An2WIur05rAiKswOb16IZjpv7/PjQAJ96XtlmUCVf0NUv
QNxln2p02sXz9YhGBBIRAgAGBQJCfRwNAAoJEJE4tKHT1PNDCsUAn3ZOcIuDXEHo
Nz8/pDiuzOzeKxtIAJ0btniYce7juX8qh5o33SuhouWZaIhGBBMRAgAGBQJCzaYO
AAoJEMKySK6BI58S8uoAoKhG6s3y6nfsPTdiNY9AxRW+1l2qAKC5e65LHY0DdDUl
158n3HAg8AIBn4hGBBARAgAGBQJFJN+TAAoJEATZ7lkTJ7bvSg8AnAhyBadkjcis
srdJ0m4qMmKXba/dAJ9vk+1vz/OW90h28SEpvHL4QZk/EIhcBBMRAgAcBAsHAwID
FQIDAxYCAQIeAQIXgAUCQm4LoQIZAQAKCRCYn15u20eBYN7FAJ0SIaoDYZ1je9FE
mQHN6D8Hl0JAWgCdFcju+/BUkL5GGczMwh0XgxDg8nS5AQ0EPZsyFBAEAKCj7IAw
hwbF7osoVjFpobpqRdLrDC6fdTAwr+l3OKYscs+kumG59Ue7xhQvfCWNL2g6MOhR
/7+Gdv338gXjwuMrshhvFYpkt6QGarMDm+bus+/hnjvLsnYHsAiO2guYYI+JnqKe
+J0bJQvCE3PwvwHj1hSSCsVvU5I66jOqIi2/AAMHA/wNB6GuZdl/7hL24slkIk0+
M6fdbN47x0galz37dUzDINkVjKI1ebv374mSpGyZ6TBeVKh853edrGD+G/GUgyBG
bdASVUuCdh2jb1dGDzfZfg+XL0D7+hLxsRRxKPRtHXmbJwp1H2Jia74VOCql1sNC
Yeba7ANu7kvFb7xkjqyzFYhGBBgRAgAGBQI/iwl4AAoJEJifXm7bR4FgLjYAoIXW
i4oV0bPkn0qDxNTeHLw0QfwXAJ9n9P1jiSTM1M8i6CPVuXWTLj9ndLkEDQRVEadU
EBAA66ED2lfO0//2JwodzNyP6nIJNrZjW9PZqkWmUqhqTjlD6mFGlDa0b5DBMncP
Wr/Nf4mhMgO/2FbVdRQ+UMQDTS1vwcuMiY07QsmvXLddiRCWB9y4AdGYZXTgTUQN
GDPMu+p250+u0E3ko9gnjP+MmuMTbloEWTC0WQOxz2qjHHXA9wBkLLfD5G7YGRIf
ymDJEgIK77BRKOmhpmrrh6DloTL2RJc/DwkEwGpiPsDBw5+f8/mZiosqRrB5qPQC
JClM2Iu3/R0n4ciQx9u6i/YDDlN2IZzkpTX73Mi5GfVLsR74faHnawDuyXg9118x
fmHqAdM1Lko30jUyImOfpNx0J8UyplRTrKwGWy9YZqDZtOD5hKq3j3CSdQgahDWP
IY0cjvCA4/Afws5fXrWP68uO1hgPWGYei1QAhct22SIpNUmx9XDHTswljKZi+D1i
9foTlILm0wHm+6xbzOXSfi7ASsoMwa0tiEfCbDQ+3Bo722YHQ7DGd0B4hoMiiqef
zMP/Zy6WdhdYc0BxkIOfgNbdlbbe1TuOK9Y3tSgxoaCeTcqmMNHKfmmvtfQosprE
R0KYcHiNAdfkdcf853kcU63obKV4BQs7wzSyNehOMFQVfOgISigmUJABYI/OrzLO
3WQSP7jmfrF6tKOxPPcb5Ct7zUM+UYAn1IqfYx2/AZ+NlPsAAwUP/2vW95ZAUOpT
/zZh5FkvPHHETCssvH59+v71MCHkosDCIh2hHSmRM3MYgU9l99k+JAweLv9Th3Ws
X5C3BZI3HFG/I1sXv7zyeo7KiRWWoJVxAZM1oOSwmwRJVuJ1sUy3GFUBRgtcx/Wj
q9Hh8mqCvu3oUDxh+ciG59aSNCYay2WQbNeK2SKNIDRWrfdGl56aFFSn0FjxVcfD
JIqIs+uf8ILxcrxzvcUzK4ja5rfqVi5Z35B38iiT3UT6h/bPCnenS+14EFxwxVdc
ujNzG3jUvIc5i6Rg/5peTpb02efYlC/jbwz8dtwROhbfQl79+DG/tGPT0iiyzsfN
XRR2lbrlDwattBNuAXWdKCrKkGd+6SjjRTzfe6P/Ka25sPNlJD6TUhO0EX7sKYCL
3hAGP+UTIFJvrQXq1s5kBN4KXTD3qu1fSFqW9UlMwLdFiSWAR39q7Z/UxwUNXyYA
mkirFnuflFVr9BxL2+MTWKSmt47fcmpu3dwdcRxNlBlSJGRxxkJtqMqq0412zHC+
52K4jqT8aW3FCWD8BnMziogGl3VHXw9oS0KlRa6umwFfVibBUF2RcR3/0pjE/H8h
BMmBJz7ddAVDz4EAQA2jCL6zNiiUWQHGvQHx/aGwD8+RO4yRMrzpEBJ8iU4suYKH
pqI6GSF/w4XaexUrTewsmqIrl4UhYhZiiEkEGBECAAkFAlURp1QCGwwACgkQmJ9e
bttHgWDnUACdH9XMpL55HfV4l4OgzSyriCGwhpYAoILHB/ewTp3aELIFquXQhjSf
op+f
=BfZA
-----END PGP PUBLIC KEY BLOCK-----