- download arch linux parallels image
- update package info
pacman -Sy
pacman -S sudo openssh tmux
sudo localectl set-locale LANG=en_US.UTF-8
systemctl enable sshd && systemctl start sshd
- add johnny user
useradd -m -G wheel johnny
- visudo
johnny ALL=(ALL:ALL) ALL
- copy ssh public key
(mkdir (format "%s:~/.ssh" ssh-host) t) (copy-file (format "%s" ssh-public-key) (format "%s:/home/johnny/.ssh/authorized_keys" scp-host) t)
- copy emacs config
(mkdir (format "%s:~/.config/emacs" ssh-host) t) (copy-file (format "%s/early-init.el" emacs-config-path) (format "%s:/home/johnny/.config/emacs/" scp-host) t) (copy-file (format "%s/init.el" emacs-config-path) (format "%s:/home/johnny/.config/emacs/" scp-host) t) (copy-file (format "%s/config.org" emacs-config-path) (format "%s:/home/johnny/.config/emacs/" scp-host) t)
- set timezone
sudo pacman -Sy sudo pacman -S xorg-server xorg-xinit lightdm lightdm-gtk-greeter wget accountsservice firefox which ripgrep unzip gnome-keyring aspell aspell-en openntpd inotify-tools openbox xterm --noconfirm
- start openntpd
sudo systemctl start openntpd && sudo systemctl enable openntpd
- usermod -aG docker johnny
sudo usermod -aG docker johnny
- lightdm config
[LightDM] run-directory=/run/lightdm [Seat:*] greeter-session=lightdm-gtk-greeter session-wrapper=/etc/lightdm/Xsession
- install guix
cd /tmp && wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh sudo chmod +x guix-install.sh
- install guix
sudo /tmp/guix-install.sh
- copy ~/.bashrc
# # ~/.bashrc # GUIX_PROFILE="/home/johnny/.guix-profile" . "$GUIX_PROFILE/etc/profile" GUIX_LOCPATH=$HOME/.guix-profile/lib/locale ERL_AFLAGS="-kernel shell_history enabled -kernel shell_history_file_bytes 1024000" ELIXIR_EDITOR="emacs +__LINE__ __FILE__" ECTO_EDITOR=$ELIXIR_EDITOR PLUG_EDITOR=$ELIXIR_EDITOR eval "$(direnv hook bash)" # this is needed when emacs --daemon is running so nyxt will operate correct and get org.gnome.system.proxy settings. # export XDG_DATA_DIRS=$XDG_DATA_DIRS:/home/johnny/.config/guix/current/share:/usr/local/share/:/usr/share/ # If not running interactively, don't do anything [[ $- != *i* ]] && return alias ls='ls --color=auto' PS1='[\u@\h \W]\$ '
guix install nss-certs glibc-locales
guix install glibc-locales nss-certs export GUIX_LOCPATH="$HOME/.guix-profile/lib/locale" guix pull GUIX_PROFILE="/home/johnny/.config/guix/current" . "$GUIX_PROFILE/etc/profile" guix upgrade
- install emacs git and nss-certs
guix pull && guix install emacs-next git emacs-vterm elixir
sometimes this can fail so might need to run this twice.guix install emacs-next git emacs-vterm direnv
- Copy nyxt init.lisp
(define-configuration buffer ((default-modes (append '(emacs-mode) %slot-default%)) (override-map (let ((map (make-keymap "override-map"))) (define-key map "S-w" 'delete-current-buffer "S-t" 'make-buffer-focus "S-f" 'nyxt/web-mode:search-buffer "S-r" 'reload-current-buffer))))) (define-configuration browser ((session-restore-prompt :always-restore)))
- add emacs.service file
[Unit] Description=Emacs text editor Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/ [Service] Type=forking ExecStart=/home/johnny/.config/emacs.sh # ExecStop=emacsclient --eval "(save-buffers-kill-emacs)" Environment=SSH_AUTH_SOCK=%t/keyring/ssh EnvironmentFile=/home/johnny/.config/guix/current/etc/profile Restart=on-failure [Install] WantedBy=default.target
- add home/johnny.config/emacs.sh
# #!/bin/bash source ~/.bashrc # emacs --daemon emacs
- start and enable emacs.service
# systemctl enable --user emacs && systemctl start --user emacs
- ln -s ~/.bashrc ~/.xprofile
ln -s ~/.bashrc ~/.xprofile
- .xinirc
xhost +SI:localuser:$USER exec emacs
- printf “[Desktop Entry]\nName=EXWM\nComment=Emacs Window Manager\nExec=emacs\nType=Application” >> /usr/share/xsessions/emacs.desktop
[Desktop Entry] Name=EXWM Comment=Emacs Window Manager Exec=emacs # Exec=emacsclient -c -a "" Type=Application
- enable lxdm
systemctl enable lightdm
sudo systemctl enable lightdm && sudo systemctl start lightdm
- pacman -S base-devel –needed
sudo pacman -S base-devel --needed --noconfirm
- pacman install the rest of the deps
sudo pacman -S docker docker-compose nyxt postgresql --noconfirm
- git clone https://aur.archlinux.org/paru.git
# source ~/.bashrc git clone https://aur.archlinux.org/paru.git
- install node and imagemagick
node is for language servers
guix install node imagemagick elixir
- cd paru && makepkg -si
cd paru && makepkg -si
- paru visual-studio-code-bin mermaid-cli
this might need to be run locally since I can’t do this from sudo here since it errors with can’t install AUR as root
paru -S visual-studio-code-bin mermaid-cli --noconfirm
- install vs code liveshare manually
- install eglot-grammarly
npm install @emacs-grammarly/grammarly-languageserver
- wget https://cache.agilebits.com/dist/1P/op2/pkg/v2.7.0/op_linux_arm64_v2.7.0.zip
https://developer.1password.com/docs/cli/get-started
# exec 2>&1 cd gpg --receive-keys 3FEF9748469ADBE15DA7CA80AC2D62742012EA22 wget https://cache.agilebits.com/dist/1P/op2/pkg/v2.7.1/op_linux_arm64_v2.7.1.zip unzip op_linux_arm64*.zip gpg --verify op.sig op # :
- mv 1password cli op to /usr/local/bin
# exec 2>&1 sudo mv /home/johnny/op /usr/local/bin/ op --version
- curl -sSO https://downloads.1password.com/linux/tar/stable/aarch64/1password-latest.tar.gz
# exec 2>&1 curl -sSO https://downloads.1password.com/linux/tar/stable/aarch64/1password-latest.tar.gz tar -xf 1password-latest.tar.gz # sudo mkdir -p /opt/1Password # sudo mv 1password-*/* /opt/1Password # sudo /opt/1Password/after-install.sh # :
will need pinentry for exwm emacs package
- (multi-occur-in-matching-buffers) M-x multi-occur-in-matching-buffers . RET emac RET