FROM nixos/nix RUN nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs RUN nix-channel --update RUN nix-env -i bash RUN wget https://github.com/nix-community/emacs-overlay/archive/master.tar.gz \ && tar xf master.tar.gz WORKDIR /emacs-overlay-master RUN echo -e "{ pkgs ? (import { overlays = [ (import ./.) ]; }) }:\n\n\ let\n\ emacsWithPackages = (pkgs.emacsPackagesFor pkgs.emacsGit-nox).emacsWithPackages;\n\ in\n\ emacsWithPackages (epkgs: (with epkgs.elpaPackages; [ counsel ]))\n\ " >> emacs.nix RUN nix-build ./emacs.nix RUN echo -e "\ export EMACS=$(awk '/exec/ {print $2}' result/bin/emacs)\n\ export EMACSCLIENT=$(awk '/exec/ {print $2}' result/bin/emacsclient)\n\ export ELPA=$(awk -F= '/export emacsWithPackages_siteLisp=/ {print $2}' result/bin/emacs)/elpa\n\ " >> .env RUN source .env && echo -e "\ export IVY=$(find $ELPA -type d -name ivy*)\n\ export COUNSEL=$(find $ELPA -type d -name counsel*)\n\ export SWIPER=$(find $ELPA -type d -name swiper*)\n\ export LISPPATH=$(realpath $(dirname $EMACS)/../share/emacs/28.0.50/lisp)\n\ export BINPATH=$(dirname $EMACS)\n\ " >> .env RUN echo -e "\ source .env\n\ export PATH=\$BINPATH\n\ export EMACSLOADPATH=\$LISPPATH:\$IVY:\$COUNSEL:\$SWIPER\n\ unset EMACS EMACSCLIENT ELPA IVY COUNSEL SWIPER LISPPATH BINPATH\n\ export ALTERNATE_EDITOR=\n\ export TERM=xterm\n\ emacs --version\n\ emacs -Q --bg-daemon --eval \"(prog1 'counsel (require 'counsel))\"\n\ emacsclient -t --eval \"(progn (save-buffers-kill-emacs))\"\n\ " >> emacs.sh RUN chmod 755 emacs.sh ENTRYPOINT bash -c "exec -c /emacs-overlay-master/emacs.sh"