/elrage

Emacs interface to rage

Primary LanguageRustGNU General Public License v3.0GPL-3.0

elrage

Experimental Emacs interface to Rust implementation of age (rage) with support for passphrase input callbacks. It requires Emacs compiled with support for dynamic modules.

Installation

With Nix

$ mkdir -p ~/.emacs.d/dynamic-modules # or any path other you want
$ nix build -L github:t4ccer/elrage#elrage
$ nix-store --realise ./result --add-root ~/.emacs.d/dynamic-modules/elrage.root
$ ln -s ~/.emacs.d/dynamic-modules/{elrage.root/lib/,}elrage.so -f

With Cargo

$ git clone https://github.com/t4ccer/elrage
$ cd elrage
$ mkdir -p ~/.emacs.d/dynamic-modules # or any path other you want
$ cargo build --release
$ cp ./target/release/libelrage.so ~/.emacs.d/dynamic-modules/elrage.so

Note that this is not recommended on NixOS for long-term use (but perfect for development) as runtime dependencies of elrage.so file such as glibc may get garbage collected.

Common

(add-to-list 'load-path "~/.emacs.d/dynamic-modules")
(require 'elrage)

Usage

agenix.el integration

Functions exposed by this package have signatures that match those of agenix-age-decrypt-function and agenix-age-encrypt-function variables. This enables support for SSH keys with passphrases and does not require age executable in runtime.

;; Install agenix.el and elrage

(setq agenix-age-decrypt-function 'elrage-decrypt-file-interactive)
(setq agenix-age-encrypt-function 'elrage-encrypt-file)

License

Copyright (C) 2024 Tomasz Maciosowski (t4ccer)

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.