From 0da9c3b3cb5eebcb768884bdc7f452aa68bbaf43 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Tue, 29 Jul 2025 15:49:49 +0200 Subject: [PATCH] Add papis reference manager configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add papis.nix module with embedded configuration - Configure library at ~/Documents/Library/papis - Set up nvim editor and fzf picker integration - Add comprehensive papis documentation to README 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- README.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++ modules/papis.nix | 46 ++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 modules/papis.nix diff --git a/README.md b/README.md index 1076807..dd898f0 100644 --- a/README.md +++ b/README.md @@ -400,6 +400,70 @@ rsync -avh --progress --exclude-from=~/.rsync-exclude source/ dest/ - Safety options including partial transfers and dry-run capability - Preserves extended attributes and ACLs on macOS +### 🌟 Reference Management + +**Tool**: papis +**Purpose**: Command-line reference manager for academic papers and documents + +A powerful bibliography manager that stores documents and metadata in a human-readable format: + +#### Key Features: +- **Document Library**: Centralized storage at `~/Documents/Library/papis` +- **BibTeX Integration**: Import/export references in standard academic formats +- **PDF Management**: Automatic file organization and retrieval +- **Search & Filter**: Fast document discovery with fuzzy finding (fzf) +- **Metadata Storage**: Human-readable YAML files for bibliographic data +- **Editor Integration**: Configured with nvim for editing document metadata + +#### Usage Examples: + +**Adding documents:** +```bash +# Add a paper from DOI +papis add --from doi 10.1000/example.doi + +# Add a PDF file with interactive metadata entry +papis add paper.pdf + +# Add from arXiv +papis add --from arxiv 2301.12345 + +# Add from URL +papis add --from url https://example.com/paper.pdf +``` + +**Searching and browsing:** +```bash +# Search documents (uses fzf picker) +papis open +papis search "machine learning" +papis search author:smith year:2023 + +# List all documents +papis list + +# Open specific document +papis open smith2023 +``` + +**Document management:** +```bash +# Edit document metadata +papis edit + +# Export to BibTeX +papis export --all --format bibtex > references.bib +papis export search_term --format bibtex + +# Show document information +papis show document_key +``` + +**Configuration location**: `modules/papis.nix` with embedded configuration +**Main library**: `~/Documents/Library/papis` +**Editor**: nvim (configured automatically) +**Picker**: fzf for interactive document selection + ### 🌟 Python Development & Package Management **Tool**: uv diff --git a/modules/papis.nix b/modules/papis.nix new file mode 100644 index 0000000..58ee628 --- /dev/null +++ b/modules/papis.nix @@ -0,0 +1,46 @@ +{ pkgs, ... }: + +{ + # Install papis package + home.packages = with pkgs; [ + papis + ]; + + # Papis configuration + home.file.".config/papis/config".text = '' + [settings] + default-library = main + editor = nvim + opentool = open + file-browser = open + + # Document management + add-folder-name = {doc[author]}-{doc[year]}-{doc[title]} + add-file-name = {doc[author]}-{doc[year]}-{doc[title]} + 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 + ''; +}