{ pkgs, ... }: { # Papis configuration home.file."Library/Application Support/papis/config".text = '' [settings] default-library = main editor = nvim opentool = open file-browser = open # Document management ref-format = {doc[author]}{doc[year]} # Search and display sort-field = year sort-reverse = True match-format = {doc[tags]}{doc[author]}{doc[title]}{doc[year]} # Database and storage database-backend = papis use-git = False # Interface fzf-binary = fzf picktool = fzf [main] dir = ~/Documents/Library/papis # Local configuration for the main library local-config-file = .papisrc ''; # Create the papis library directory home.activation.createPapisDir = '' mkdir -p ~/Documents/Library/papis ''; # Papis bibliography template home.file."Library/Application Support/papis/templates/bibitem.template".text = '' {doc[title]} ({doc[year]}). {doc[author]}. Venue: {doc[journal]} {doc[booktitle]} {doc[eprinttype]} {doc[eprint]} {doc[eventtitle]} Tags: {doc[tags]} URL: {doc[url]} --- ''; # Shell aliases for papis workflow programs.zsh.shellAliases = { # Bibliography formatting pals = "papis list --template \"$HOME/Library/Application Support/papis/templates/bibitem.template\""; # File operations paurl = "papis addto -u"; # Open documents paopen = "papis open"; }; # Shell functions for papis workflow programs.zsh.initContent = '' # Papis finder function - open document directory in Finder with query support pafinder() { local result=$(papis list "$@" | head -1) if [ -n "$result" ]; then open -R "$result" else echo "No documents found" return 1 fi } # Papis add file function - add file to existing document with proper parameter handling pafile() { if [ $# -lt 1 ]; then echo "Usage: pafile [query]" echo "Example: pafile paper.pdf # Interactive selection" echo "Example: pafile paper.pdf \"einstein relativity\" # Direct match" echo "Example: pafile /path/to/paper.pdf \"quantum\" # Absolute path" return 1 fi local filename="$1" shift # Remove first argument local query="$*" # All remaining arguments as query (empty if none) # Check if filename is absolute path or relative to Downloads if [[ "$filename" == /* ]]; then # Absolute path if [ -n "$query" ]; then papis addto -f "$filename" "$query" else papis addto -f "$filename" fi else # Relative to Downloads if [ -n "$query" ]; then papis addto -f "$HOME/Downloads/$filename" "$query" else papis addto -f "$HOME/Downloads/$filename" fi fi } ''; }