#!/usr/bin/env bash # Source this to enter the Eprefix environment # Like this for example: # $ source $HOME/gentoo/eprefix-activate # >>> Set eprefix EPREFIX=${EPREFIX:-${HOME}/gentoo} export EPREFIX # >>> Funcion definitions command_exists() { if command -v "$1" >/dev/null then return 0 else return 1 fi } if command_exists tput then eprefix_good="$(tput bold)$(tput setaf 2)*$(tput sgr0)" eprefix_bad="$(tput bold)$(tput setaf 1)*$(tput sgr0)" eprefix_warn="$(tput bold)$(tput setaf 3)*$(tput sgr0)" else eprefix_good="*" eprefix_bad="*" eprefix_warn="*" fi eprefix_addpath() { if [ -d "${1}" ] then PATH=${1}:${PATH} export PATH else echo "${eprefix_warn} ${1} not found" fi } eprefix_addman() { if [ -d "${1}" ] then MANPATH=${1}:${MANPATH} export MANPATH else echo "${eprefix_warn} ${1} not found" fi } eprefix_packages() { if [ -d "${EPREFIX}/var/db/pkg" ] then find "${EPREFIX}"/var/db/pkg/*/* -type d | wc -l fi } eprefix_world() { if [ -f "${EPREFIX}/var/lib/portage/world" ] then wc -l < "${EPREFIX}/var/lib/portage/world" fi } # >>> Checks # Exit if eprefix does not exist if [ ! -d "${EPREFIX}" ] then echo "${eprefix_bad} No ${EPREFIX} found!" echo ">>> Exiting..." sleep 3 exit 1 fi # >>> PATH setup # Add directories to PATH eprefix_addpath "${EPREFIX}/bin" eprefix_addpath "${EPREFIX}/opt/bin" eprefix_addpath "${EPREFIX}/sbin" eprefix_addpath "${EPREFIX}/tmp/bin" eprefix_addpath "${EPREFIX}/tmp/usr/bin" eprefix_addpath "${EPREFIX}/usr/bin" eprefix_addpath "${EPREFIX}/usr/local/bin" eprefix_addpath "${EPREFIX}/usr/local/sbin" eprefix_addpath "${EPREFIX}/usr/sbin" # Add manpages eprefix_addman "${EPREFIX}/usr/local/share/man" eprefix_addman "${EPREFIX}/usr/share/binutils-data/x86_64-pc-linux-gnu/2.34/man" eprefix_addman "${EPREFIX}/usr/share/man" # >>> General env setup # Process .sh files for sh in "${EPREFIX}"/etc/profile.d/*.sh do # shellcheck source="${EPREFIX}"/etc/profile.d/*.sh [ -r "$sh" ] && . "$sh" done unset sh # Set Portage shell CONFIG_SHELL="${EPREFIX}/bin/bash" export CONFIG_SHELL # Misc env vars CONFIG_PROTECT_MASK="${CONFIG_PROTECT_MASK} ${EPREFIX}/etc/sandbox.d ${EPREFIX}/etc/gentoo-release ${EPREFIX}/etc/terminfo ${EPREFIX}/etc/ca-certificates.conf" GCC_SPECS="" LANG="en_US.utf8" export CONFIG_PROTECT_MASK export GCC_SPECS export LANG # Set umask umask 022 # >>> Use Eprefix's tools # We just use "which" because we put Eprefix's PATHs first # before the system ones EDITOR="$(command -v nano)" PAGER="$(command -v less)" export EDITOR export PAGER # >>> Emerge options # Sandbox does not work well on Prefix # Bug: 490246 FEATURES="${FEATURES} -usersandbox -sandbox" export FEATURES # Check if we are on a prefix profile echo "" if command_exists eselect then eprofile="$(eselect profile show)" if [[ "${eprofile}" == *prefix* ]] then echo "${eprefix_good} ${eprofile}" else echo "${eprefix_bad} You are not on a prefix profile" fi unset eprofile else echo "${eprefix_bad} Could not determine running profile" fi # >>> Finish echo "" echo ">>> Sourced the eprefix script" echo "" echo "${eprefix_good} Prefix: ${EPREFIX}" echo "${eprefix_good} Packages: $(eprefix_packages)" echo "${eprefix_good} In World: $(eprefix_world)" echo "${eprefix_good} Have fun! ;-)" if command_exists emerge then echo "" echo ">>> Environment ready" else echo "" echo "${eprefix_bad} Could not locate emerge" echo "${eprefix_bad} Environment may be broken" echo ">>> Continuing anyway..." fi # >>> Cleanup unset eprefix_good unset eprefix_bad unset eprefix_warn