Files
arca/README.md
Kyle Isom c835358829 Initial implementation of arca, a LUKS volume manager.
Go CLI using cobra with mount, unmount, status, and init subcommands.
Unlocks via udisks2 D-Bus (passphrase/keyfile) or cryptsetup (FIDO2/TPM2)
with ordered method fallback. Includes NixOS-specific LD_LIBRARY_PATH
injection for systemd cryptsetup token plugins.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 07:42:38 -07:00

70 lines
1.7 KiB
Markdown

# arca
A CLI tool for mounting and unmounting LUKS-encrypted volumes. Latin for
"strongbox."
arca talks to udisks2 over D-Bus, so no root privileges are required. It
handles the unlock-then-mount and unmount-then-lock sequences as single
commands.
## Usage
```
arca mount /dev/sda1 # unlock + mount by device path
arca mount backup # unlock + mount by config alias
arca unmount backup # unmount + lock
arca status # show unlocked LUKS volumes
```
## Configuration
Optional. Without a config file, arca works with device paths directly.
`~/.config/arca/config.yaml`:
```yaml
devices:
backup:
uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
mountpoint: "/mnt/backup" # optional — udisks2 picks if omitted
methods: # optional — default: [passphrase]
- fido2
- passphrase
media:
uuid: "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
methods:
- keyfile
- passphrase
keyfile: "/path/to/media.key"
```
Aliases let you refer to devices by name and ensure stable identification
via UUID regardless of device path changes.
The `methods` list defines the unlock strategies to try in order. If the
first method fails (e.g., FIDO2 key not present), arca tries the next.
Supported methods: `passphrase`, `keyfile`, `fido2`, `tpm2`.
## Installation
### Nix flake
```nix
# flake.nix
inputs.arca.url = "git+https://git.wntrmute.dev/kyle/arca";
# in your NixOS config or home packages
environment.systemPackages = [ inputs.arca.packages.${system}.default ];
```
### From source
```
go install git.wntrmute.dev/kyle/arca@latest
```
## Requirements
- Linux with udisks2 running (standard on most desktop distributions)
- D-Bus session or system bus access