;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020 Oleg Pykhalov ;;; ;;; 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 . (define-module (gnu packages configuration-management) #:use-module (gnu packages) #:use-module (guix build-system go) #:use-module (guix git-download) #:use-module (gnu packages golang) #: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") ;; XXX: Make sure 7f238faa61e46d79b54d4d0ea8f0b5fc27db84b2 applied before ;; version update, which should fix @code{password-store} integration. (version "1.8.1") (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 "1b8y0wq3myhvjdnwl0i4x85iil7i7kmsjajvbw1a47afm83jkbaw")))) (build-system go-build-system) (arguments `(#:import-path "github.com/twpayne/chezmoi" ;; We don't need to install the source code for end-user applications. #:install-source? #f)) (native-inputs (list go-github-com-masterminds-sprig go-github-com-masterminds-goutils go-github-com-masterminds-semver go-github-com-google-uuid go-github-com-huandu-xstrings go-github-com-imdario-mergo go-github-com-mitchellh-reflectwalk go-github-com-mitchellh-copystructure go-github-com-bmatcuk-doublestar go-github-com-charmbracelet-glamour go-github-com-alecthomas-chroma go-github-com-coreos-go-semver go-github-com-danwakefield-fnmatch go-github-com-dlclark-regexp2 go-github-go-git go-github-com-google-go-github go-github-com-google-go-querystring go-github-com-google-renameio go-github-com-microcosm-cc-bluemonday go-github-com-aymerick-douceur go-github-com-chris-ramon-douceur go-github-com-gorilla-css go-github-com-muesli-reflow-ansi go-github-com-muesli-reflow-wordwrap go-github-com-muesli-reflow-indent go-github-com-muesli-reflow-padding go-github-com-muesli-termenv go-github-com-google-goterm go-github-com-lucasb-eyer-go-colorful go-github-com-mattn-go-isatty go-github-com-mattn-go-runewidth go-github-com-olekukonko-tablewriter go-github-com-pelletier-go-toml go-github-com-pkg-diff go-github-com-sergi-go-diff go-github-com-spf13-cobra go-github-com-spf13-viper go-github-com-twpayne-go-shell go-github-com-twpayne-go-vfs go-github-com-twpayne-go-vfsafero go-github-com-twpayne-go-xdg go-github-com-yuin-goldmark go-github-com-zalando-go-keyring go-github-com-godbus-dbus go-etcd-io-bbolt go-golang-org-x-crypto go-golang-org-x-net go-golang-org-x-oauth2 go-github-com-rogpeppe-go-internal go-gopkg-in-errgo-fmt-errors)) (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))) b48ad166f893a5b7c707505a77effce208b86 Lars-Dominik Braun 2024-06-29gnu: ghc-9.2: Make Cabal respect GHC_PACKAGE_PATH...**tl;dr** Applying this patch makes Cabal work in Guix environments and ensures that Cabal picks up Haskell packages installed via Guix. Guix makes heavy use of GHC_PACKAGE_PATH to make GHC pickup Haskell packages installed via the Guix package manager. The environment variable is set using native-search-paths from the GHC packages. Unfortunately, upstream Cabal does presently not respect GHC_PACKAGE_PATH. If this environment variable is set, `cabal build` and other commands will terminate. For building packages, Guix does not make much use of cabal-install hence this is not as big of an issue. However, cabal-install does therefore presently not work out-of-the-box in environments created by Guix. For example, in `guix shell` environments. This makes it essentially impossible to use Guix for setting up development environments for Haskell software. Cabal upstream is aware of this issue and a patch exists to workaround this problem. The patch is currently not merged upstream due to issues related to reconfiguration (changing GHC_PACKAGE_PATH between `cabal configure` and `cabal build`). However, I would argue that this edge case is not that relevant for Guix and therefore propose including this patch with the Cabal Guix package. As outlined above, cabal-install is not usable by default presently, and I would therefore argue that this is a major improvement over the current situation. I am willing to work with Cabal upstream to have this issue fixed upstream eventually. Note that this requires patching the GHC package instead of the cabal-install package as Guix uses the version of the Cabal package <https://hackage.haskell.org/package/Cabal> distributed with GHC. See: https://github.com/haskell/cabal/issues/3728 * gnu/packages/haskell-apps.scm (cabal-install): Include patch to support the GHC_PACKAGE_PATH environment variable. Signed-off-by: Sören Tempel <soeren@soeren-tempel.net> Signed-off-by: Lars-Dominik Braun <lars@6xq.net> Change-Id: Ib77ffa937b878690d0e2d8964b534842b99da039 Sören Tempel 2024-02-19gnu: Add ghc-7.0....* gnu/packages/haskell.scm (ghc-7.0): New variable. Change-Id: I6b05c5fa87dca1d9fbea6b782b64e3d005d76c1c Efraim Flashner