EAPI=8 DESCRIPTION='Get up and running with Llama 3, Mistral, Gemma, and other large language models.' HOMEPAGE='https://ollama.com' LICENSE='MIT' SLOT='0' KEYWORDS='~amd64 ~arm64' IUSE='+systemd -rocm' DEPEND='acct-user/ollama acct-group/ollama' RDEPEND='acct-user/ollama acct-group/ollama' S="${WORKDIR}" RESTRICT='strip' inherit xdg-utils SRC_URI=" amd64? ( https://github.com/ollama/ollama/releases/download/v${PV}/ollama-linux-amd64.tgz -> $P.amd64.tgz ) arm64? ( https://github.com/ollama/ollama/releases/download/v${PV}/ollama-linux-arm64.tgz -> $P.arm64.tgz ) rocm? ( https://github.com/ollama/ollama/releases/download/v${PV}/ollama-linux-amd64-rocm.tgz -> $P.rocm.tgz ) " src_unpack() { if use rocm; then tar -xzvf "${DISTDIR}/${P}.rocm.tgz" -C "${WORKDIR}" || die "Can't extract rocm tgz" elif use amd64; then tar -xzvf "${DISTDIR}/${P}.amd64.tgz" -C "${WORKDIR}" || die 'Failed to extract binary' elif use arm64; then tar -xzvf "${DISTDIR}/${P}.arm64.tgz" -C "${WORKDIR}" || die 'Failed to extract binary' fi } src_install() { exeinto /opt/Ollama/bin doexe "${WORKDIR}/bin/ollama" || die 'Failed to install binary' insinto /opt/Ollama/lib/ doins -r "${WORKDIR}/lib/ollama/" || die 'Failed to install libraries' dosym /opt/Ollama/bin/ollama /opt/bin/ollama } src_prepare() { eapply_user } pkg_postinst() { einfo 'Quick guide:' einfo 'ollama serve' einfo 'ollama run llama3:70b' einfo 'See available models at https://ollama.com/library' if use systemd; then einfo 'Creating systemd service file...' { echo '[Unit]' echo 'Description=Ollama Service' echo 'After=network-online.target' echo '' echo '[Service]' echo 'ExecStart=/opt/Ollama/bin/ollama serve' echo 'User=ollama' echo 'Group=ollama' echo 'Restart=always' echo 'RestartSec=3' echo '' echo '[Install]' echo 'WantedBy=default.target' } > /usr/lib/systemd/system/ollama.service einfo 'Service file created at /etc/systemd/system/ollama.service' einfo 'Making service user-startable...' mkdir -p /etc/systemd/user ln -s /usr/lib/systemd/system/ollama.service /etc/systemd/user/ollama.service ln -s /usr/lib/systemd/system/ollama.service /etc/systemd/system/ollama.service fi }