~ruther/guix-local

a903558577d249354aa74bbd6aab897235a7602b — Andrew Tropin 2 years ago 5d2302a
gnu: elixir: Remove wrap for mix.

* gnu/packages/elixir.scm (elixir)[#:phases]: Instead of wrapping mix into
shell script, which sets environment variables, we patch mix itself and set
environmnet variables via elixir code.

Change-Id: Ia4643e18fe927491242a0541938b7570bd56fca1

Co-authored-by: Ivan Sokolov <ivan-p-sokolov@ya.ru>
Change-Id: I29d2c61299a8a54125f0e15190c526a860d501da
1 files changed, 14 insertions(+), 1 deletions(-)

M gnu/packages/elixir.scm
M gnu/packages/elixir.scm => gnu/packages/elixir.scm +14 -1
@@ 7,6 7,8 @@
;;; Copyright © 2018 Nikita <nikita@n0.is>
;;; Copyright © 2021 Oskar Köök <oskar@maatriks.ee>
;;; Copyright © 2021 Cees de Groot <cg@evrl.com>
;;; Copyright © 2024 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2024 Ivan Sokolov <ivan-p-sokolov@ya.ru>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 101,7 103,18 @@
          (add-after 'install 'wrap-programs
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (programs '("elixir" "elixirc" "iex" "mix")))
                     (programs '("elixir" "elixirc" "iex")))
                ;; mix can be sourced as an elixir script by other elixir
                ;; program, for example `iex -S mix`, so we should not wrap
                ;; mix into shell script.
                (substitute* (string-append out "/bin/mix")
                  (("Mix.start\\(\\)") "\
~w[GUIX_ELIXIR_LIBS ERL_LIBS]
|> Enum.map(&System.get_env/1)
|> Enum.reject(&is_nil/1)
|> Enum.join(\":\")
|> case do \"\" -> :ok; erl_libs -> System.put_env(\"ERL_LIBS\", erl_libs) end
Mix.start()"))
                (for-each (lambda (program)
                            (wrap-program (string-append out "/bin/" program)
                              '("ERL_LIBS" prefix ("${GUIX_ELIXIR_LIBS}"))))