nix

configuration files that power my machines
Log | Files | Refs | README | LICENSE

commit 123fb3e3f3bf96590c5eb4130f325e14b20352e7
parent 78cfbb69124b56a4a5d273aeede2956cad2ae1f4
Author: mtmn <miro@haravara.org>
Date:   Thu,  9 Apr 2026 17:16:55 +0200

feat: install attic

Diffstat:
Mflake.nix | 9+++++----
Mhome.nix | 7+++++--
Mhosts/nixaran/configuration.nix | 0
Mhosts/void/default.nix | 3+++
Ahttps/attic.saatana.cat/meow/nix/var/nix/db/big-lock | 0
Ahttps/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite | 0
Ahttps/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite-shm | 0
Ahttps/attic.saatana.cat/meow/nix/var/nix/db/db.sqlite-wal | 0
Ahttps/attic.saatana.cat/meow/nix/var/nix/db/reserved | 0
Ahttps/attic.saatana.cat/meow/nix/var/nix/db/schema | 1+
Mjustfile | 2+-
Mmodules/mixins/dotfiles/bin/hakuna | 2+-
Mmodules/mixins/dotfiles/bin/meq | 2+-
Mmodules/nixos/base.nix | 1+
Amodules/services/attic.nix | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msecrets.nix | 1+
Asecrets/attic-credentials.age | 0
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.