Up: Správa prostredí   [Contents][Index]


8.1 Guix prostredie cez direnv

Guix poskytuje balík ‘direnv’, ktorým možno rozšíriť prostredie shellu po zmene priečinka. Tento nástroj sa dá využiť na prípravu čistého prostredia Guix.

Nasledovný príklad poskytuje shellovskú funkciu pre súbor ~/.direnvrc, ktorú možno použiť z Git repozitára Guixu v súbore ~/src/guix/.envrc na nastavenie vývojového prostredia podobnému tomu, ktoré je opísané v see Building from Git in GNU Guix Reference Manual.

Vytvorte súbor ~/.direnvrc obsahujúci nasledovný kód Bash:

# Vďaka <https://github.com/direnv/direnv/issues/73#issuecomment-152284914>
export_function()
{
  local name=$1
  local alias_dir=$PWD/.direnv/aliases
  mkdir -p "$alias_dir"
  PATH_add "$alias_dir"
  local target="$alias_dir/$name"
  if declare -f "$name" >/dev/null; then
    echo "#!$SHELL" > "$target"
    declare -f "$name" >> "$target" 2>/dev/null
    # Všimnite si, že pridávame premenné shellu do spúšťača funkcie.
    echo "$name \$*" >> "$target"
    chmod +x "$target"
  fi
}

use_guix()
{
    # Nastaviť žetón pre GitHub.
    export GUIX_GITHUB_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

    # Vyčistiť „GUIX_PACKAGE_PATH“.
    export GUIX_PACKAGE_PATH=""

    # Opätovne vytvoriť koreň zberača odpadkov.
    gcroots="$HOME/.config/guix/gcroots"
    mkdir -p "$gcroots"
    gcroot="$gcroots/guix"
    if [ -L "$gcroot" ]
    then
        rm -v "$gcroot"
    fi

    # Doplnkové balíky.
    PACKAGES_MAINTENANCE=(
        direnv
        git
        git:send-email
        git-cal
        gnupg
        guile-colorized
        guile-readline
        less
        ncurses
        openssh
        xdot
    )

    # Balíky prostredia.
    PACKAGES=(help2man guile-sqlite3 guile-gcrypt)

    # Vďaka <https://lists.gnu.org/archive/html/guix-devel/2016-09/msg00859.html>
    eval "$(guix environment --search-paths --root="$gcroot" --pure guix --ad-hoc ${PACKAGES[@]} ${PACKAGES_MAINTENANCE[@]} "$@")"

    # Vopred zadať voľby nastavenia.
    configure()
    {
        ./configure --localstatedir=/var --prefix=
    }
    export_function configure

    # Spustiť „make“ a možno niečo zostaviť.
    build()
    {
        make -j 2
        if [ $# -gt 0 ]
        then
            ./pre-inst-env guix build "$@"
        fi
    }
    export_function build

    # Vopred zadať Git príkaz pre odoslanie zmien.
    push()
    {
        git push --set-upstream origin
    }
    export_function push

    clear                        # Vyčistiť obrazovku.
    git-cal --author='Vaše meno' # Zobraziť kalendár zmien.

    # Zobraziť pomocníka príkazov.
    echo "
build          zostaviť balík alebo iba projekt ak nebol poskytnutý žiaden parameter
configure      vykonať ./configure s predvolenými voľbami
push           odoslať zmeny do vzdialeného repozitára Git
"
}

Každý projekt obsahujúci .envrc s reťazcom use guix bude mať vopred pripravené premenné prostredia a funkcie.

Vykonajte direnv allow pre prvé nastavenie prostredia.


Up: Správa prostredí   [Contents][Index]