[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#46031] services: cuirass: Add "simple-cuirass-services".
From: |
Ludovic Courtès |
Subject: |
[bug#46031] services: cuirass: Add "simple-cuirass-services". |
Date: |
Sat, 20 Feb 2021 11:59:38 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Hi,
Mathieu Othacehe <othacehe@gnu.org> skribis:
> Here is a service that provides some syntactic sugar over the (complex)
> Cuirass configuration. It uses Guix Channels to declare Cuirass inputs.
>
> In the future, it would be nice if Cuirass could operate directly on
> Channels. For now, this service only act as a translation layer for
> people willing to setup a simple Cuirass instance.
I had overlooked these patches; that’s really nice!
> +@lisp
> +(simple-cuirass-services
> + (simple-cuirass-configuration
> + (build (list
> + (build-manifest
> + (channel-name 'conf)
> + (manifest "guix/manifest.scm"))))
> + (channels (cons* (channel
> + (name 'my-guix)
> + (url "https://my-git-repo/guix.git"))
> + (channel
> + (name 'conf)
> + (url "https://my-git-repo/conf.git"))
> + %default-channels))
> + (non-package-channels '(conf))))
> +@end lisp
I wonder if it would make sense to allow users to pass directly a
manifest, as in (pseudo syntax):
(simple-cuirass-configuration
(build (list (build-manifest … (local-file "my-manifest.scm"))))
(channels …))
It’d be less expressive (you’d have to reconfigure when you change the
manifest), but perhaps easier to set up. WDYT?
> + (define (config->spec config)
> + (match-record config <simple-cuirass-configuration>
> + (build channels non-package-channels systems)
> + `((#:name . "simple-config")
> + (#:load-path-inputs . ("guix"))
> + (#:package-path-inputs . ,(package-path channels
> + non-package-channels))
> + (#:proc-input . "guix")
> + (#:proc-file . "build-aux/cuirass/gnu-system.scm")
> + (#:proc . cuirass-jobs)
> + (#:proc-args . ((systems . ,systems)
> + ,@(if (eq? build 'all)
> + '()
> + `((subset . "manifests")
> + (manifests . ,(format-manifests build))))))
> + (#:inputs . ,(map channel->input channels))
> + (#:build-outputs . ())
> + (#:priority . 1))))
> +
> + (list
> + (service cuirass-service-type
> + (cuirass-configuration
> + (inherit cuirass)
> + (specifications #~(list
> + '#$(config->spec config)))))
What about exposing ‘simple-cuirass-configuration->specs’, and document
it such that one can do:
(service cuirass-service-type
(cuirass-configuration
(specifications
(simple-cuirass-configuration->specs config))))
or even:
(service cuirass-service-type
(compile-simple-cuirass-configuration config))
?
That way, the relationship between “simple” and “not simple” would be
clearer.
Thanks,
Ludo’.
- [bug#46031] services: cuirass: Add "simple-cuirass-services"., Jonathan Brielmaier, 2021/02/02
- [bug#46031] services: cuirass: Add "simple-cuirass-services".,
Ludovic Courtès <=
- [bug#46031] services: cuirass: Add "simple-cuirass-services"., Mathieu Othacehe, 2021/02/22
- [bug#46031] services: cuirass: Add "simple-cuirass-services"., Ludovic Courtès, 2021/02/22
- [bug#46031] services: cuirass: Add "simple-cuirass-services"., Mathieu Othacehe, 2021/02/23
- [bug#46031] services: cuirass: Add "simple-cuirass-services"., Ludovic Courtès, 2021/02/23
- [bug#46031] services: cuirass: Add "simple-cuirass-services"., Mathieu Othacehe, 2021/02/23
- [bug#46031] services: cuirass: Add "simple-cuirass-services"., Ludovic Courtès, 2021/02/23