commit 123fb3e3f3bf96590c5eb4130f325e14b20352e7
parent 78cfbb69124b56a4a5d273aeede2956cad2ae1f4
Author: mtmn <miro@haravara.org>
Date: Thu, 9 Apr 2026 17:16:55 +0200
feat: install attic
Diffstat:
17 files changed, 91 insertions(+), 9 deletions(-)
diff --git a/flake.nix b/flake.nix
@@ -60,12 +60,12 @@
{
nix.settings = {
substituters = [
+ "https://attic.saatana.cat/meow?priority=10"
"https://cache.nixos.org"
- "ssh-ng://root@nixaran:468?compress=true&max-connections=4"
];
trusted-public-keys = [
+ "meow:K6dc3G3PZRJ//iVPREPZvjbTbcAB+eUpQRQzxXFavNk="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
- "nixaran:d63/FF1RnBYzFggx+wvp4SVtGmemzR1tlaRrh0Msf4M="
];
netrc-file = ./secrets/netrc;
};
@@ -99,12 +99,12 @@
{
nix.settings = {
substituters = [
+ "https://attic.saatana.cat/meow"
"https://cache.nixos.org"
- "ssh-ng://root@nixaran:468?compress=true&max-connections=4"
];
trusted-public-keys = [
+ "meow:K6dc3G3PZRJ//iVPREPZvjbTbcAB+eUpQRQzxXFavNk="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
- "nixaran:d63/FF1RnBYzFggx+wvp4SVtGmemzR1tlaRrh0Msf4M="
];
netrc-file = ./secrets/netrc;
};
@@ -167,6 +167,7 @@
headscale = import ./modules/services/headscale.nix;
searxng = import ./modules/services/searxng.nix;
harmonia = import ./modules/services/harmonia.nix;
+ attic = import ./modules/services/attic.nix;
static = import ./modules/services/static.nix;
};
diff --git a/home.nix b/home.nix
@@ -35,10 +35,13 @@
auto-optimise-store = true;
warn-dirty = false;
experimental-features = ["nix-command" "flakes"];
- substituters = ["https://cache.nixos.org" "https://nix-community.cachix.org"];
+ substituters = [
+ "https://attic.saatana.cat/meow?priority=10"
+ "https://cache.nixos.org"
+ ];
trusted-public-keys = [
+ "meow:K6dc3G3PZRJ//iVPREPZvjbTbcAB+eUpQRQzxXFavNk="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
- "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
};
gc = {
diff --git a/hosts/nixaran/configuration.nix b/hosts/nixaran/configuration.nix
Binary files differ.
diff --git a/hosts/void/default.nix b/hosts/void/default.nix
@@ -70,6 +70,8 @@
slop
taplo
datasette
+ hledger
+ hledger-iadd
];
vcs = with pkgs; [
@@ -100,6 +102,7 @@
ragenix
statix
nix-diff
+ attic-client
];
net = with pkgs; [
diff --git a/https/attic.saatana.cat/meow/nix/var/nix/db/big-lock b/https/attic.saatana.cat/meow/nix/var/nix/db/big-lock
diff --git a/https/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite b/https/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite
Binary files differ.
diff --git a/https/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite-shm b/https/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite-shm
Binary files differ.
diff --git a/https/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite-wal b/https/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite-wal
diff --git a/https/attic.saatana.cat/meow/nix/var/nix/db/reserved b/https/attic.saatana.cat/meow/nix/var/nix/db/reserved
Binary files differ.
diff --git a/https/attic.saatana.cat/meow/nix/var/nix/db/schema b/https/attic.saatana.cat/meow/nix/var/nix/db/schema
@@ -0,0 +1 @@
+10
diff --git a/justfile b/justfile
@@ -12,7 +12,7 @@ deadnix:
deploy host="nixaran":
@backup nix
- nix run github:serokell/deploy-rs .#{{ host }} 2>&1 | grep -vE "unknown flake output '(deploy|configData)'"
+ nix run github:serokell/deploy-rs --max-jobs 2 .#{{ host }} 2>&1 | grep -vE "unknown flake output '(deploy|configData)'"
update:
nix flake update
diff --git a/modules/mixins/dotfiles/bin/hakuna b/modules/mixins/dotfiles/bin/hakuna
@@ -1,2 +1,2 @@
#!/bin/sh
-DISCOGS_TOKEN="$(pass show discogs-token)" /opt/tools/hakunadata "$@"
+DISCOGS_TOKEN="$(pass show discogs-token)" hakunadata "$@"
diff --git a/modules/mixins/dotfiles/bin/meq b/modules/mixins/dotfiles/bin/meq
@@ -1,3 +1,3 @@
#!/bin/sh
eval "$("$HOME/bin/amen-or-not")"
-exec /opt/tools/mpd_edit_queue "$@"
+exec mpd_edit_queue "$@"
diff --git a/modules/nixos/base.nix b/modules/nixos/base.nix
@@ -18,6 +18,7 @@
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
+ netrc-file = ../../secrets/netrc;
};
gc = {
automatic = true;
diff --git a/modules/services/attic.nix b/modules/services/attic.nix
@@ -0,0 +1,72 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.services.haravara.attic;
+in {
+ options.services.haravara.attic = {
+ enable = lib.mkEnableOption "Attic Nix binary cache";
+ domain = lib.mkOption {
+ type = lib.types.str;
+ description = "Domain name for the Attic server";
+ };
+ s3Endpoint = lib.mkOption {
+ type = lib.types.str;
+ default = "https://estri.saatana.cat";
+ description = "S3 endpoint for Attic";
+ };
+ s3Bucket = lib.mkOption {
+ type = lib.types.str;
+ default = "attic";
+ description = "S3 bucket name for Attic";
+ };
+ s3Region = lib.mkOption {
+ type = lib.types.str;
+ default = "us-east-1";
+ description = "S3 region for Attic";
+ };
+ credentialsFile = lib.mkOption {
+ type = lib.types.path;
+ description = "Path to environment file with ATTIC_SERVER_TOKEN_RS256_SECRET_BASE64 and AWS credentials";
+ };
+ port = lib.mkOption {
+ type = lib.types.port;
+ default = 7381;
+ description = "Port for Attic to listen on";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ users.users.atticd = {
+ isSystemUser = true;
+ group = "atticd";
+ };
+ users.groups.atticd = {};
+
+ services.atticd = {
+ enable = true;
+ user = "atticd";
+ group = "atticd";
+ settings = {
+ listen = "127.0.0.1:${toString cfg.port}";
+ storage = {
+ type = "s3";
+ bucket = cfg.s3Bucket;
+ endpoint = cfg.s3Endpoint;
+ region = cfg.s3Region;
+ };
+ };
+ environmentFile = cfg.credentialsFile;
+ };
+
+ systemd.services.atticd.serviceConfig = {
+ Environment = ["S3_ADDRESSING_STYLE=path"];
+ DynamicUser = lib.mkForce false;
+ };
+
+ services.caddy.virtualHosts."${cfg.domain}".extraConfig = ''
+ reverse_proxy 127.0.0.1:${toString cfg.port}
+ '';
+ };
+}
diff --git a/secrets.nix b/secrets.nix
@@ -12,4 +12,5 @@ in {
"secrets/couchdb-admin-pass.age".publicKeys = allKeys;
"secrets/searx-secret-key.age".publicKeys = allKeys;
"secrets/headscale-api-key.age".publicKeys = allKeys;
+ "secrets/attic-credentials.age".publicKeys = allKeys;
}
diff --git a/secrets/attic-credentials.age b/secrets/attic-credentials.age
Binary files differ.