https://github.com/nexveridian/attic-compose
Deploying Attic Nix Binary Cache With Docker Compose
https://github.com/nexveridian/attic-compose
attic binary-cache cache ci ci-cd github-actions nix nix-flake nixos
Last synced: 3 months ago
JSON representation
Deploying Attic Nix Binary Cache With Docker Compose
- Host: GitHub
- URL: https://github.com/nexveridian/attic-compose
- Owner: NexVeridian
- License: apache-2.0
- Created: 2025-02-03T23:15:32.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-03-28T22:57:59.000Z (3 months ago)
- Last Synced: 2025-03-28T23:29:45.071Z (3 months ago)
- Topics: attic, binary-cache, cache, ci, ci-cd, github-actions, nix, nix-flake, nixos
- Language: Just
- Homepage:
- Size: 10.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-Apache
Awesome Lists containing this project
README
# Attic Compose
Deploying Attic Nix Binary Cache With Docker Compose## Server Install
Install docker and docker compose`git clone`
See [/scr](./src), create a `prod.env` and `server.toml` files
then run
```bash
just up
just create_token
```### Exmaple Traefik Label
```yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.attic.rule=Host(`nix.example.com`)"
- "traefik.http.routers.attic.entrypoints=websecure"
- "traefik.http.routers.attic.tls.certresolver=myhttpchallenge"
- "traefik.http.services.attic.loadbalancer.server.port=8080"
- "traefik.http.routers.attic-http.middlewares=redirect-to-https"
- "traefik.docker.network="
```### Cloudflare
If you are using cloudflare make the subdomain DNS only### Check if it works
If working nix.example.com should say `attic push`## Client Install
Install `pkg.attic-client`make sure your user is trusted
```nix
nix.settings = {
trusted-users = [
"root"
""
];
};
``````bash
# then login to attic
attic login https://nix.example.com# create a cache to push to
attic cache create# use the cache
attic use# pushing to the cache
attic push /nix/store/*/
```## Github Actions Install
Add the token from `just create_token` to your repository secrets `https://github.com///settings/secrets/actions`
```yaml
steps:
- uses: actions/checkout@v3
- uses: DeterminateSystems/nix-installer-action@main
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client login https://nix.example.com ${{ secrets.ATTIC_TOKEN }} || true
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client cache create || true
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client use || true- run: nix flake check --all-systems
- run: |
for i in {1..5}; do
nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client push /nix/store/*/ && break || [ $i -eq 5 ] || sleep 5
done
- run: nix run -I nixpkgs=channel:nixos-unstable nixpkgs#attic-client push /nix/store/*/ || true
```# License
All code in this repository is dual-licensed under either [License-MIT](./LICENSE-MIT) or [LICENSE-APACHE](./LICENSE-Apache) at your option. This means you can select the license you prefer. [Why dual license](https://github.com/bevyengine/bevy/issues/2373).