1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
| | ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Konrad Hinsen <konrad.hinsen@fastmail.net>
;;;
;;; 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 (gnu packages minimacy)
#:use-module (gnu packages)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gl)
#:use-module (gnu packages linux)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
(define-public minimacy
(package
(name "minimacy")
(version "0.6.2")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ambermind/minimacy/")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1x9i1spf79lq3kxms55dx7lf8pl84cyblq313sjyfpr9l187ailb"))
(patches (search-patches "minimacy.patch"))
(modules '((guix build utils)))
(snippet '(delete-file-recursively "windows"))))
(build-system gnu-build-system)
(inputs (list libx11 libxext alsa-lib mesa glu))
(outputs '("out" ; core
"gui" ; for GUI programs, with X11 and ALSA
"opengl")) ; for GUI programs, with X11, OpenGL, and ALSA
(arguments
(list
#:tests? #f ; no tests
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-path
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "src/hw.c"
(("minimacy-in-gnu-store")
(assoc-ref outputs "out")))))
(delete 'configure)
(replace 'build
(lambda _
(chdir "unix")
(invoke "make" "nox")
(for-each delete-file
(find-files "../obj" "\\.o$"))
(invoke "make" "x11")
(for-each delete-file
(find-files "../obj" "\\.o$"))
(invoke "make" "x11gl")
(chdir "..")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(gui (assoc-ref outputs "gui"))
(opengl (assoc-ref outputs "opengl")))
(mkdir-p (string-append out "/rom"))
(mkdir-p (string-append out "/system"))
(copy-recursively "rom"
(string-append out "/rom"))
(copy-recursively "system"
(string-append out "/system"))
(install-file "bin/minimacy"
(string-append out "/bin"))
(install-file "bin/minimacyX11"
(string-append gui "/bin"))
(install-file "bin/minimacyX11GL"
(string-append opengl "/bin"))))))))
(synopsis "Minimalist computing system")
(description
"Minimacy is a minimalist computing technology.
It consists of a programming language (compiler plus virtual machine)
and a library, written such that the whole system can be fully
understood by a single person. An optional extension to the virtual
machine adds X11 and ALSA for user interfaces, another extension
adds OpenGL support.")
(home-page "https://minimacy.net/")
(license license:gpl2)))
|