aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@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 (gnu packages configuration-management)
  #:use-module (gnu packages)
  #:use-module (guix build-system go)
  #:use-module (guix gexp)
  #:use-module (guix git-download)
  #:use-module (gnu packages golang)
  #:use-module (gnu packages golang-build)
  #:use-module (gnu packages golang-check)
  #:use-module (gnu packages golang-web)
  #:use-module (gnu packages golang-xyz)
  #:use-module (gnu packages version-control)
  #:use-module (gnu packages textutils)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix utils))

(define-public chezmoi
  (package
    (name "chezmoi")
    (version "1.8.10")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/twpayne/chezmoi")
                    (commit (string-append "v" version))))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "0ildvlq7v8vnw74y4fgnv3hpq49bpl6zh1wmakfh46crwg7ffmjb"))))
    (build-system go-build-system)
    (arguments
     (list
      #:import-path "github.com/twpayne/chezmoi"
      #:install-source? #f
      #:phases
      #~(modify-phases %standard-phases
          ;; Remove test script which expect additional user's programs available
          ;; in the PATH. The testdata directory is removed in the latest version
          ;; (2.46.1) of the program.
          (add-after 'unpack 'remove-failing-test-scripts
            (lambda* (#:key import-path #:allow-other-keys)
              (for-each (lambda (f)
                          (delete-file (string-append "src/" import-path "/testdata/scripts/" f)))
                        '("bitwarden.txt"
                          "cd.txt"
                          "cd_unix.txt"
                          "completion.txt"
                          "diff.txt"
                          "edit.txt"
                          "editconfig.txt"
                          "git.txt"
                          "gopass.txt"
                          "keepassxc.txt"
                          "lastpass.txt"
                          "onepassword.txt"
                          "pass.txt"
                          "runscriptdir_unix.txt"
                          "script_unix.txt"
                          "secretgeneric.txt"
                          "secretgopass.txt"
                          "secretkeepassxc.txt"
                          "secretlastpass.txt"
                          "secretonepassword.txt"
                          "secretpass.txt"))))
          ;; FIXME: Pattern embedded: cannot embed directory embedded:
          ;; contains no embeddable files.
          ;;
          ;; This happens due to Golang can't determine the valid directory of
          ;; the module which is sourced during setup environment phase, but
          ;; easy resolved after coping to expected directory "vendor" within
          ;; the current package, see details in Golang source:
          ;;
          ;; - URL: <https://github.com/golang/go/blob/>
          ;; - commit: 82c14346d89ec0eeca114f9ca0e88516b2cda454
          ;; - file: src/cmd/go/internal/load/pkg.go#L2059
          (add-before 'build 'copy-input-to-vendor-directory
            (lambda* (#:key import-path #:allow-other-keys)
              (with-directory-excursion (string-append "src/" import-path)
                (mkdir "vendor")
                (copy-recursively
                 (string-append
                  #$(this-package-native-input "go-github-com-charmbracelet-glamour")
                  "/src/github.com")
                 "vendor/github.com")
                (copy-recursively
                 (string-append
                  #$(this-package-native-input "go-github-com-alecthomas-chroma-v2")
                  "/src/github.com")
                 "vendor/github.com"))))
          (add-before 'install 'remove-vendor-directory
            (lambda* (#:key import-path #:allow-other-keys)
              (with-directory-excursion (string-append "src/" import-path)
                (delete-file-recursively "vendor")))))))
    (native-inputs
     (list go-github-com-alecthomas-chroma-v2
           go-github-com-bmatcuk-doublestar-v2
           go-github-com-charmbracelet-glamour
           go-github-com-coreos-go-semver
           go-github-com-google-go-github-v33
           go-github-com-google-renameio
           go-github-com-masterminds-sprig-v3
           go-github-com-pelletier-go-toml
           go-github-com-pkg-diff
           go-github-com-rogpeppe-go-internal
           go-github-com-sergi-go-diff
           go-github-com-spf13-cobra
           go-github-com-spf13-viper
           go-github-com-stretchr-testify
           go-github-com-twpayne-go-shell
           go-github-com-twpayne-go-vfs
           go-github-com-twpayne-go-vfsafero
           go-github-com-twpayne-go-xdg-v3
           go-github-com-zalando-go-keyring
           go-github-go-git
           go-go-etcd-io-bbolt
           go-golang-org-x-oauth2
           go-golang-org-x-sys
           go-golang-org-x-term
           go-gopkg-in-yaml-v2
           go-howett-net-plist))
    (home-page "https://www.chezmoi.io/")
    (synopsis "Personal configuration files manager")
    (description "This package helps to manage personal configuration files
across multiple machines.")
    (license license:expat)))
ixes <https://issues.guix.gnu.org/49515>. * gnu/packages/mes.scm (mescc-tools-0.5.2): Remove. (mescc-tools): Update to 1.2.0. Use 'git-fetch'. * gnu/packages/make-bootstrap.scm (%mescc-tools-static): Inherit from MESCC-TOOLS rather than MESCC-TOOLS-0.5.2. (%mes-minimal): Inherit from MES rather than MES-0.19. [arguments]: Remove 'delete-file-recursively' for /mes/scaffold. Ludovic Courtès 2021-07-26gnu: mes-minimal: Remove unused variable....* gnu/packages/make-bootstrap.scm (%mes-minimal): Remove unused 'triplet' variable. Ludovic Courtès 2021-07-18Merge branch 'master' into core-updatesLudovic Courtès 2021-07-14utils: Define 'target-hurd?' predicate....It behaves similarily to the other target-...? procedures. The usage of hurd-triplet? / target-hurd? in libgc appears incorrect to me, as (%current-system) is normally never false. * gnu/packages/hurd.scm (hurd-triplet?): Move to ... * guix/util.scm (target-hurd?): ... here, let its argument default to (%current-target-system) or (%current-system), and write a docstring. * gnu/packages/hurd.scm (hurd-target?, hurd-system?): Use target-hurd? instead of hurd-triplet?. * gnu/packages/bdw-gc.scm (libgc): Likewise. * gnu/packages/cross-base.scm (cross-libc)[arguments]<#:configure-flags>: Likewise. (cross-libc)[arguments]<#:phases>: Likewise. (cross-libc)[arguments]<#:native-inputs>: Likewise. * gnu/packages/make-boostrap.scm (%glibc-stripped)[inputs]: Likewise. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> Maxime Devos 2021-07-08gnu: %guile-3.0-static-stripped: Rename to %guile-static-stripped....* gnu/packages/make-bootstrap.scm (%guile-3.0-static-stripped): Rename to %guile-static-stripped. (%guile-bootstrap-tarball): Adjust accordingly. * gnu/system/linux-initrd.scm (expression->initrd): Use %guile-static-stripped as default guile. * doc/guix.texi (initial RAM disk)[expression->initrd]: Adjust documentation accordingly. Efraim Flashner 2021-07-08gnu: make-bootstrap: Use guile-3.0 bootstrap tarball....* gnu/packages/make-bootstrap.scm (%guile-bootstrap-tarball): Use guile-3.0. (%guile-static-stripped): Remove variable. Efraim Flashner 2021-07-08gnu: make-bootstrap: Build with gcc-7....* gnu/packages/make-bootstrap.scm (gcc-for-bootstrap)[Inherit]: Inherit from gcc-7. [inputs]: Use package-inputs from gcc-7. (package-with-relocatable-glibc)[native-inputs]: Have cross-gcc use gcc-7. (%gcc-static)[inherit]: Inherit from gcc-7. [arguments]: Use package-arguments from gcc-7. [inputs]: Replace isl-0.18 with isl. Use package-inputs from gcc-7. [native-inputs]: Use package-native-inputs from gcc-7. (%gcc-stripped)[inherit]: Inherit from gcc-7. Efraim Flashner 2021-07-05gnu: bootstrap-tarballs: Turn builder into a gexp....* gnu/packages/make-bootstrap.scm (%bootstrap-tarballs)[arguments]: Turn #:builder into a gexp. Ludovic Courtès 2021-07-05gnu: bootstrap-tarballs: Fix build....* gnu/packages/make-bootstrap.scm (%bootstrap-tarballs)[arguments]: Make 'use-modules' the first expression. Failing that, 'match' would not be properly expanded when running on Guile 3.0. Ludovic Courtès 2021-05-22gnu: guile-static: Fix build without GMP....* gnu/packages/make-bootstrap.scm (make-guile-static)[arguments]: Add "--enable-mini-gmp" to #:configure-flags. Marius Bakke 2021-05-22gnu: guile-static: Remove obsolete workaround....* gnu/packages/make-bootstrap.scm (make-guile-static)[arguments]: Don't disable JIT on ARMv7. Marius Bakke