projects/guix·blob java-team · refs

283 lines · 11.3 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019 Josh Holland <[email protected]>
3;;; Copyright © 2020 Oleg Pykhalov <[email protected]>
4;;; Copyright © 2021, 2022 Tobias Geerinckx-Rice <[email protected]>
5;;; Copyright © 2024 Sharlatan Hellseher <[email protected]>
6;;; Copyright © 2025 Sergio Pastor Pérez <[email protected]>
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23(define-module (gnu packages configuration-management)
24 #:use-module (gnu packages)
25 #:use-module (gnu packages autotools)
26 #:use-module (gnu packages check)
27 #:use-module (gnu packages golang-build)
28 #:use-module (gnu packages golang-check)
29 #:use-module (gnu packages golang-vcs)
30 #:use-module (gnu packages golang-web)
31 #:use-module (gnu packages golang-xyz)
32 #:use-module (gnu packages perl)
33 #:use-module (gnu packages python-build)
34 #:use-module (gnu packages python-check)
35 #:use-module (gnu packages python-crypto)
36 #:use-module (gnu packages python-web)
37 #:use-module (gnu packages python-xyz)
38 #:use-module (gnu packages textutils)
39 #:use-module (guix build-system gnu)
40 #:use-module (guix build-system go)
41 #:use-module (guix build-system pyproject)
42 #:use-module (guix gexp)
43 #:use-module (guix git-download)
44 #:use-module ((guix licenses) #:prefix license:)
45 #:use-module (guix packages)
46 #:use-module (guix utils))
47
48(define-public bundlewrap
49 (package
50 (name "bundlewrap")
51 (version "5.0.2")
52 (source
53 (origin
54 (method git-fetch)
55 (uri (git-reference
56 (url "https://github.com/bundlewrap/bundlewrap")
57 (commit version)))
58 (file-name (git-file-name name version))
59 (sha256
60 (base32 "1p0082lwyfkppswm8cpr1yp28y0cm0f8rk3ly3xlym7qyidglkli"))))
61 (build-system pyproject-build-system)
62 (arguments
63 (list
64 #:test-flags #~(list "tests/unit")))
65 (native-inputs
66 (list python-pytest
67 python-setuptools))
68 (inputs
69 (list python-bcrypt
70 python-cryptography
71 python-jinja2
72 python-librouteros
73 python-mako
74 python-pyyaml
75 python-requests
76 python-tomlkit))
77 (home-page "https://bundlewrap.org")
78 (synopsis "Config management with Python")
79 (description
80 "BundleWrap is a decentralized configuration management system that is
81designed to be powerful, easy to extend and extremely versatile.
82
83
84By allowing for easy and low-overhead config management, BundleWrap fills the
85gap between complex deployments using Chef or Puppet and old school system
86administration over SSH. While most other config management systems rely on a
87client-server architecture, BundleWrap works off a repository cloned to local
88machine. It then automates the process of SSHing into servers and making sure
89everything is configured the way it's supposed to be.")
90 (license license:gpl3)))
91
92(define-public chezmoi
93 (package
94 (name "chezmoi")
95 (version "2.1.0")
96 (source (origin
97 (method git-fetch)
98 (uri (git-reference
99 (url "https://github.com/twpayne/chezmoi")
100 (commit (string-append "v" version))))
101 (file-name (git-file-name name version))
102 (sha256
103 (base32
104 "1kjjbns80pcd6wh51kmhpw8xlm57cqgq205qp2i2z78n82h3fijc"))))
105 (build-system go-build-system)
106 (arguments
107 (list
108 #:install-source? #f
109 #:import-path "github.com/twpayne/chezmoi"
110 #:embed-files #~(list ".*\\.xml")
111 #:test-flags
112 #~(list "-skip" (string-join
113 (list "TestScript/autocommit"
114 "TestScript/autopush"
115 "TestScript/bitwarden"
116 "TestScript/builtingit"
117 "TestScript/cd_unix"
118 "TestScript/completion"
119 "TestScript/doctor_unix"
120 "TestScript/edit"
121 "TestScript/editconfig"
122 "TestScript/git"
123 "TestScript/gopass"
124 "TestScript/init"
125 "TestScript/issue1213"
126 "TestScript/keepassxc"
127 "TestScript/lastpass"
128 "TestScript/merge_unix"
129 "TestScript/modify_unix"
130 "TestScript/onepassword"
131 "TestScript/pass"
132 "TestScript/runscriptdir_unix"
133 "TestScript/script"
134 "TestScript/script_unix"
135 "TestScript/scriptonce_unix"
136 "TestScript/scriptorder_unix"
137 "TestScript/scriptsubdir_unix"
138 "TestScript/secret"
139 "TestScript/state_unix"
140 "TestScript/templatefuncs"
141 "TestScript/update"
142 "TestScript/vault")
143 "|"))))
144 (native-inputs
145 (list go-github-com-masterminds-sprig-v3
146 go-github-com-bmatcuk-doublestar-v4
147 go-github-com-bradenhilton-mozillainstallhash
148 go-github-com-charmbracelet-glamour-0.3
149 go-github-com-coreos-go-semver
150 go-github-com-go-git-go-git-v5
151 go-github-com-google-go-github-v36
152 go-github-com-google-gops
153 go-github-com-google-renameio
154 go-github-com-mitchellh-mapstructure
155 go-github-com-muesli-combinator
156 go-github-com-pelletier-go-toml
157 go-github-com-rogpeppe-go-internal
158 go-github-com-rs-zerolog
159 go-github-com-sergi-go-diff
160 go-github-com-spf13-afero
161 go-github-com-spf13-cobra
162 go-github-com-spf13-viper
163 go-github-com-stretchr-testify
164 go-github-com-twpayne-go-shell
165 go-github-com-twpayne-go-vfs-v3
166 go-github-com-twpayne-go-xdg-v6
167 go-github-com-zalando-go-keyring
168 go-go-etcd-io-bbolt
169 go-go-uber-org-multierr
170 go-golang-org-x-oauth2
171 go-golang-org-x-sys
172 go-golang-org-x-term
173 go-gopkg-in-yaml-v2
174 go-gopkg-in-yaml-v3
175 go-howett-net-plist))
176 (home-page "https://www.chezmoi.io/")
177 (synopsis "Personal configuration files manager")
178 (description "This package helps to manage personal configuration files
179across multiple machines.")
180 (license license:expat)))
181
182(define-public konsave
183 (package
184 (name "konsave")
185 (version "2.3.0")
186 (source
187 (origin
188 (method git-fetch)
189 (uri (git-reference
190 (url "https://github.com/Prayag2/konsave")
191 (commit (string-append "v" version))))
192 (file-name (git-file-name name version))
193 (sha256
194 (base32 "0454cjcnlwpylia6lb40xzjvm07p3hxmfl21zmlxhl2xjlbjhsg4"))))
195 (build-system pyproject-build-system)
196 (arguments
197 (list
198 #:tests? #false ; no tests.
199 #:phases
200 #~(modify-phases %standard-phases
201 (add-after 'unpack 'fix-package-data
202 ;; Fix detection of default configuration files without which the
203 ;; programs fails to invoke.
204 (lambda _
205 (substitute* "setup.py"
206 ((" package_data=.*")
207 " package_data = {'': ['*.yaml']},\n"))))
208 (add-before 'sanity-check 'set-home-directory
209 ;; sanity-check requires a home directory since importing the
210 ;; `const.py' module creates a directory to save configurations.
211 (lambda _
212 (setenv "HOME" "/tmp"))))))
213 (native-inputs
214 (list python-setuptools
215 python-wheel))
216 (inputs
217 (list python-pyyaml))
218 (home-page "https://github.com/prayag2/konsave")
219 (synopsis "Dotfiles manager")
220 (description
221 "Konsave is @acronym{CLI, Command Line Program} that lets you backup your
222dotfiles and switch to other ones.
223Features:
224@itemize
225@item storing configurations in profiles
226@item exporting profiles to '.knsv' files
227@item import profiles from '.knsv' files
228@item official support for KDE Plasma
229@end itemize")
230 (license license:gpl3)))
231
232(define-public rcm
233 (package
234 (name "rcm")
235 (version "1.3.6")
236 (source
237 (origin
238 (method git-fetch)
239 (uri (git-reference
240 (url "https://github.com/thoughtbot/rcm")
241 (commit (string-append "v" version))))
242 (file-name (git-file-name name version))
243 (sha256
244 (base32 "0zkajv5qk3snfmnnhv9y2qwgvcg5cai9dzcns6n8g30xnjdlhpvj"))
245 (modules '((guix build utils)))
246 (snippet #~(substitute* "autogen.sh"
247 ;; Contributor list would be generated from git shortlog.
248 (("./maint/autocontrib ((man/rcm.7).mustache)" _ in out)
249 (simple-format #f "sed '/^\\.Sh CONTRIBUTORS/,$d' ~a > ~a"
250 in out))))))
251 (build-system gnu-build-system)
252 (arguments
253 (list
254 #:parallel-tests? #f ;multiple tests write to /tmp/test
255 #:phases
256 #~(modify-phases %standard-phases
257 (add-after 'patch-source-shebangs 'patch-tests
258 (lambda* (#:key inputs #:allow-other-keys)
259 (substitute* "test/rcdn-hooks-failure.t"
260 (("\\$ rcdn\\>") "$ $TESTDIR/../bin/rcdn"))
261 (substitute* "test/rcup-hooks-failure.t"
262 (("\\$ rcup\\>") "$ $TESTDIR/../bin/rcup"))
263 (substitute* '("test/rcrc-tilde.t"
264 "test/rcdn-hooks-failure.t"
265 "test/rcdn-hooks-run-in-order.t"
266 "test/rcup-hooks-failure.t"
267 "test/rcup-hooks-run-in-order.t")
268 (("/bin/sh") (search-input-file inputs "/bin/sh")))
269 (substitute* "test/rcup-hooks.t"
270 (("/usr/bin/env") (search-input-file inputs "/bin/env"))))))))
271 (native-inputs (list autoconf automake perl python-cram))
272 (home-page "https://github.com/thoughtbot/rcm")
273 (synopsis "Management suite for dotfiles")
274 (description
275 "The rcm suite of tools is for managing dotfiles directories. This is
276a directory containing all the @file{.*rc} files in your home directory
277(@file{.zshrc}, @file{.vimrc}, and so on). These files have gone by many
278names in history, such as “rc files” because they typically end in rc
279or “dotfiles” because they begin with a period. This suite is useful
280for committing your rc files to a central repository to share, but it also
281scales to a more complex situation such as multiple source directories
282shared between computers with some host-specific or task-specific files.")
283 (license license:bsd-3)))