Files
omarchy-pkgs/pkgbuilds/omarchy-nvim/PKGBUILD
T
David Heinemeier HanssonandClaude Fable 5 b4e9935951 Simplify remote clipboard and share Neovim yanks over OSC 52 inside tmux
Sessions inside tmux used to skip the clipboard provider entirely, so
yanks only reached the machine's own Wayland clipboard and never
traveled over OSC 52 to clients attached via SSH. Now every copy also
emits OSC 52, which tmux turns into a buffer and rebroadcasts to all
attached clients. Paste prefers wl-paste when a display is available.

This also drops the private-file fallback clipboard and its regtype
sidecar: Neovim's built-in clipboard layer already restores the register
type when pasted content matches its cache, and OSC 52 queries answered
by tmux cover the display-less paste case.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 10:39:30 -07:00

94 lines
3.3 KiB
Bash

# Maintainer: Ryan Hughes <ryan@omarchy.org>
pkgname=omarchy-nvim
pkgver=2026.7.15
pkgrel=1
pkgdesc="Pre-built LazyVim configuration with cached plugins"
arch=('any')
url="https://github.com/LazyVim/LazyVim"
license=('MIT')
depends=('neovim>=0.9.0' 'git')
makedepends=('git' 'nodejs' 'npm' 'tree-sitter-cli')
conflicts=('omarchy-lazyvim')
options=('!debug')
source=("https://github.com/LazyVim/starter/archive/refs/heads/main.tar.gz")
sha256sums=('d865d50211358358d3c3c1e356773c1e3de1e8964215d85eb1b4c77521e17488')
build() {
cd "$srcdir"
# Create isolated environment for building
export HOME="$srcdir/build-home"
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
export XDG_CACHE_HOME="$HOME/.cache"
mkdir -p "$XDG_CONFIG_HOME" "$XDG_DATA_HOME" "$XDG_STATE_HOME" "$XDG_CACHE_HOME"
# Setup LazyVim starter
cp -r "$srcdir/starter-main" "$XDG_CONFIG_HOME/nvim"
rm -rf "$XDG_CONFIG_HOME/nvim/.git"
# Copy our custom configs
cp -r "$startdir/lua" "$XDG_CONFIG_HOME/nvim/"
cp -r "$startdir/plugin" "$XDG_CONFIG_HOME/nvim/"
cp "$startdir/lazyvim.json" "$XDG_CONFIG_HOME/nvim/"
{
echo "require('config.remote_clipboard').setup()"
echo "vim.opt.relativenumber = false"
echo "vim.g.autoformat = false"
} >>"$XDG_CONFIG_HOME/nvim/lua/config/options.lua"
echo "Installing LazyVim plugins..."
nvim --headless \
"+Lazy! sync" \
"+qa!" || true
}
restore_lazy_worktrees() {
local data_dir="$1"
local dir
for dir in "$data_dir"/lazy/*/; do
[[ -d "$dir/.git" ]] || continue
git --git-dir="$dir/.git" --work-tree="$dir" restore .
done
}
package() {
cd "$srcdir"
install -dm755 "$pkgdir/usr/share/$pkgname"
cp -a "$XDG_CONFIG_HOME/nvim" "$pkgdir/usr/share/$pkgname/config"
cp -a "$XDG_DATA_HOME/nvim" "$pkgdir/usr/share/$pkgname/data"
# Remove everything from site/ directory but keep the directory to prevent error
rm -rf "$pkgdir/usr/share/$pkgname/data/site"/*
mkdir -p "$pkgdir/usr/share/$pkgname/data/site"
# Fix permissions to be readable by all users
chmod -R 755 "$pkgdir/usr/share/$pkgname"
find "$pkgdir/usr/share/$pkgname" -type f -exec chmod 644 {} \;
# Restore plugin worktree modes after the package-wide chmod so users seeded
# from /etc/skel do not need a first-login omarchy-nvim-setup cleanup pass.
restore_lazy_worktrees "$pkgdir/usr/share/$pkgname/data"
# Seed new users via /etc/skel. The installer installs omarchy-nvim before
# creating the first user, so this handles initial ISO installs and future
# users without an extra overwrite step.
install -dm755 "$pkgdir/etc/skel/.config" "$pkgdir/etc/skel/.local/share"
cp -a "$pkgdir/usr/share/$pkgname/config" "$pkgdir/etc/skel/.config/nvim"
cp -a "$pkgdir/usr/share/$pkgname/data" "$pkgdir/etc/skel/.local/share/nvim"
ln -snf "../../../../.local/state/omarchy/current/theme/neovim.lua" \
"$pkgdir/etc/skel/.config/nvim/lua/plugins/theme.lua"
# Install setup/refresh commands to /usr/bin. setup fills missing pieces;
# refresh explicitly backs up and overwrites with the same /etc/skel defaults
# used for newly-created users.
install -Dm755 "$startdir/omarchy-nvim-setup" "$pkgdir/usr/bin/omarchy-nvim-setup"
ln -s omarchy-nvim-setup "$pkgdir/usr/bin/omarchy-nvim-refresh"
}