No description
  • Rust 88.6%
  • Nix 8.7%
  • C++ 1.5%
  • HTML 0.5%
  • Shell 0.4%
  • Other 0.3%
Find a file
Lain Iwakura 8e292f1663
Some checks failed
Deploy Book / Deploy (push) Has been cancelled
Build / build (macos-latest) (push) Has been cancelled
Build / build (ubuntu-latest) (push) Has been cancelled
Build / tests (2.24, macos-latest) (push) Has been cancelled
Build / tests (2.24, ubuntu-latest) (push) Has been cancelled
Build / tests (2.26, macos-latest) (push) Has been cancelled
Build / tests (2.26, ubuntu-latest) (push) Has been cancelled
Build / tests (2.28, macos-latest) (push) Has been cancelled
Build / tests (2.28, ubuntu-latest) (push) Has been cancelled
Build / tests (default, macos-latest) (push) Has been cancelled
Build / tests (default, ubuntu-latest) (push) Has been cancelled
Build / nix-matrix (push) Has been cancelled
Lint / Lint (push) Has been cancelled
Build / (push) Has been cancelled
Build / image (push) Has been cancelled
feat(s3)
2026-02-02 19:22:49 +03:00
.cargo .cargo: Rename config to config.toml 2024-09-02 14:07:37 -04:00
.ci Build and push multi-arch images 2024-09-11 09:59:49 -04:00
.github Merge pull request #257 from zhaofengli/chore/upstream-bumps-20250706 2025-07-08 12:27:17 -06:00
attic feat(placeholder): update placeholder 2026-01-24 13:15:31 +03:00
book book/user-guide: Make the example more detailed 2025-08-28 11:57:43 -06:00
client client: Fix User-Agent formatting 2025-09-16 11:30:31 -04:00
docker feat(placeholder): update placeholder 2026-01-24 13:15:31 +03:00
flake flake/devshells: Add cargo-audit and cargo-udeps 2025-09-16 11:30:31 -04:00
integration-tests integration-tests: Add workaround for 9p corruption 2025-07-06 15:54:42 -06:00
nixos Fix descriptions for user and group options 2025-09-12 17:28:39 +09:00
server feat(s3) 2026-02-02 19:22:49 +03:00
token Upgrade Cargo deps 2025-07-06 15:54:42 -06:00
.editorconfig .editorconfig: Fix indentation 2024-06-01 13:47:27 -06:00
.envrc Initial public commit 2022-12-31 17:01:07 -07:00
.gitattributes book: Add vendored highlight.js with Nix syntax 2023-01-29 17:23:59 -07:00
.gitignore Initial public commit 2022-12-31 17:01:07 -07:00
Cargo.lock feat(placeholder): some cache 2026-01-24 13:35:53 +03:00
Cargo.toml Cargo.toml: set resolver = 2 2023-12-18 09:28:43 -07:00
ci-installer.nix ci-installer: Remove drvPath from fake derivation 2024-07-09 07:56:03 -04:00
crane.nix Merge pull request #231 from zhaofengli/nix-2.26 2025-07-06 12:24:42 -06:00
default.nix Initial public commit 2022-12-31 17:01:07 -07:00
flake-compat.nix Initial public commit 2022-12-31 17:01:07 -07:00
flake.lock chore: update flake.lock 2026-01-24 11:54:11 +03:00
flake.nix flake: Update nixpkgs 2025-07-06 15:54:42 -06:00
garnix.yaml Add garnix config 2023-01-06 00:59:38 -07:00
justfile attic: Rename stream to io 2025-09-16 11:30:31 -04:00
LICENSE Initial public commit 2022-12-31 17:01:07 -07:00
README.md Fix typo in readme 2023-01-23 18:16:37 +01:00
renovate.json renovate.json: Group non-major updates together 2024-11-09 15:07:11 -07:00
shell.nix Initial public commit 2022-12-31 17:01:07 -07:00

Attic

Attic is a self-hostable Nix Binary Cache server backed by an S3-compatible storage provider. It has support for global deduplication and garbage collection.

Attic is an early prototype.

⚙️ Pushing 5 paths to "demo" on "local" (566 already cached, 2001 in upstream)...
✅ gnvi1x7r8kl3clzx0d266wi82fgyzidv-steam-run-fhs (29.69 MiB/s)
✅ rw7bx7ak2p02ljm3z4hhpkjlr8rzg6xz-steam-fhs (30.56 MiB/s)
✅ y92f9y7qhkpcvrqhzvf6k40j6iaxddq8-0p36ammvgyr55q9w75845kw4fw1c65ln-source (19.96 MiB/s)
🕒 vscode-1.74.2        ███████████████████████████████████████  345.66 MiB (41.32 MiB/s)
🕓 zoom-5.12.9.367      ███████████████████████████              329.36 MiB (39.47 MiB/s)

Try it out (15 minutes)

Let's spin up Attic in just 15 minutes. And yes, it works on macOS too!

Goals

  • Multi-Tenancy: Create a private cache for yourself, and one for friends and co-workers. Tenants are mutually untrusting and cannot pollute the views of other caches.
  • Global Deduplication: Individual caches (tenants) are simply restricted views of the content-addressed NAR Store and Chunk Store. When paths are uploaded, a mapping is created to grant the local cache access to the global NAR.
  • Managed Signing: Signing is done on-the-fly by the server when store paths are fetched. The user pushing store paths does not have access to the signing key.
  • Scalabilty: Attic can be easily replicated. It's designed to be deployed to serverless platforms like fly.io but also works nicely in a single-machine setup.
  • Garbage Collection: Unused store paths can be garbage-collected in an LRU manner.

Licensing

Attic is available under the Apache License, Version 2.0. See LICENSE for details.

By contributing to the project, you agree to license your work under the aforementioned license.