From cf10f910bdd7443852f352b1e7342c90221f5929 Mon Sep 17 00:00:00 2001 From: niten Date: Sat, 10 Feb 2024 16:53:55 -0800 Subject: [PATCH] Lemmy broken on Germany --- config/domain-config/fudo.org.nix | 239 ++- config/domain-config/fudo.org/mail-server.nix | 75 +- config/domain-config/fudo.org/mastodon.nix | 70 +- config/domain-config/fudo.org/nextcloud.nix | 4 + config/domain-config/sea.fudo.org.nix | 39 +- config/hardware/germany.nix | 39 +- config/host-config/fimbria.nix | 10 + config/host-config/germany.nix | 47 +- config/host-config/nostromo.nix | 16 - config/host-config/nutboy3.nix | 34 +- config/host-config/toothless.nix | 36 +- config/service/authoritative-dns.nix | 29 +- config/service/gitea-container.nix | 113 +- config/service/lemmy.nix | 106 +- config/service/mail-server.nix | 16 - config/service/postgresql.nix | 2 +- flake.lock | 1520 ++++++++++------- flake.nix | 26 +- 18 files changed, 1501 insertions(+), 920 deletions(-) diff --git a/config/domain-config/fudo.org.nix b/config/domain-config/fudo.org.nix index 6628be4..6a85468 100644 --- a/config/domain-config/fudo.org.nix +++ b/config/domain-config/fudo.org.nix @@ -6,22 +6,41 @@ let localDomain = "fudo.org"; domainSecrets = config.fudo.secrets.files.domain-secrets."${localDomain}"; + hostSecrets = config.fudo.secrets.host-secrets."${hostname}"; - inherit (pkgs.lib) getDomainHosts getHostIpv4 getHostIpv6 getHostFqdn; + inherit (pkgs.lib) + getDomainHosts getHostIpv4 getHostIpv6 getHostFqdn getSiteV4PrefixLength; domain = config.fudo.domains."${localDomain}"; authentikHost = "legatus"; + authentikImage = "ghcr.io/goauthentik/server:2023.10.7"; primaryNameserver = "germany"; + webmailHost = "germany"; + defaultHost = "germany"; + mastodonHost = "germany"; mastodonHostname = "fudo.live"; + giteaHost = "germany"; + giteaHostname = "fudo.dev"; + giteaIpv4Address = "208.81.3.118"; + + cloudHost = "germany"; + cloudHostname = "fudo.cloud"; + lemmyHost = "germany"; lemmyHostname = "fudo.social"; + matrixHost = "germany"; + matrixHostname = "fudo.im"; + + immichHost = "germany"; + immichHostname = "pics.fudo.org"; + servedDomains = [ "fudo.org" "test.fudo.org" @@ -30,35 +49,36 @@ let "fudo.im" "fudo.live" "fudo.social" + "fudo.dev" + "fudo.cloud" "stewartsoundservices.ca" ]; + static = ../../static; + in { imports = [ - (import ./fudo.org/authentik.nix { - inherit authentikHost; - authentikImage = "ghcr.io/goauthentik/server:2023.10.6"; - }) + (import ./fudo.org/authentik.nix { inherit authentikHost authentikImage; }) (import ./fudo.org/mastodon.nix { - mastodonHost = "germany"; + mastodonHost = mastodonHost; mastodonHostname = mastodonHostname; mastodonWebDomain = mastodonHostname; mastodonOidcClientId = domainSecrets."mastodon-oidc.clientid"; mastodonOidcClientSecret = domainSecrets."mastodon-oidc.secret"; }) (import ./fudo.org/nextcloud.nix { - nextcloudHost = "legatus"; - nextcloudHostname = "cloud.fudo.org"; + nextcloudHost = cloudHost; + nextcloudHostname = cloudHostname; nextcloudPackage = pkgs.nextcloud28; }) (import ./fudo.org/matrix.nix { - matrixHost = "germany"; - matrixServerName = "fudo.im"; + matrixHost = matrixHost; + matrixServerName = matrixHostname; openIdClientId = readFile domainSecrets."matrix-oidc.clientid"; openIdClientSecret = readFile domainSecrets."matrix-oidc.secret"; }) (import ./fudo.org/mail-server.nix (rec { - primaryMailserver = "france"; + primaryMailserver = "germany"; primaryDomain = "fudo.org"; authentikServer = "authentik.fudo.org"; ldapBase = "dc=fudo,dc=org"; @@ -73,8 +93,21 @@ in { ]; config = { - # All Fudo hosts should redirect selby.ca to the selbyhomecentre website. + systemd.services = { lemmy.after = [ "postgresql.service" ]; }; + services = { + immichContainer = mkIf (hostname == immichHost) { + enable = true; + images = let immichVersion = "v1.94.1"; + in { + immich = "ghcr.io/immich-app/immich-server:${immichVersion}"; + immich-ml = + "ghcr.io/immich-app/immich-machine-learning:${immichVersion}"; + redis = "redis:6.2-alpine"; + postgresql = "tensorchord/pgvecto-rs:pg14-v0.1.11"; + }; + }; + nginx.virtualHosts = { # Pass requests to selby on to selbyhomecentre "selby.ca".locations."/".return = @@ -82,34 +115,110 @@ in { "www.selby.ca".locations."/".return = "301 https://selbyhomecentre.com$request_uri"; - # For Mastodon - "fudo.org".locations = { - "/.well-known/webfinger" = { - return = "301 http://${mastodonHostname}"; - extraConfig = "add_header Access-Control-Allow-Origin '*';"; + "pics.fudo.org" = mkIf (hostname == immichHost) { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://localhost:${ + toString config.services.immichContainer.port + }/"; + proxyWebsockets = true; }; - "/.well-known/host-meta" = { - return = "301 https://${mastodonHostname}$request_uri"; + }; + + "fudo.org" = mkIf (hostname == defaultHost) { + enableACME = true; + forceSSL = true; + locations = let + mkWellKnown = data: '' + add_header Content-Type application/json; + add_header Access-Control-Allow-Origin *; + return 200 '${builtins.toJSON data}'; + ''; + in { + # Mastodon + "/.well-known/webfinger" = { + return = "301 https://${mastodonHostname}"; + extraConfig = "add_header Access-Control-Allow-Origin '*';"; + }; + "/.well-known/host-meta" = { + return = "301 https://${mastodonHostname}$request_uri"; + }; + # Matrix + "/.well-known/matrix/server".extraConfig = + mkWellKnown { "m.server" = "matrix.${matrixHostname}:443"; }; + "/.well-known/matrix/client".extraConfig = mkWellKnown { + "m.homeserver".base_url = "https://web.${matrixHostname}:443"; + }; + "/.well-known/acme-challenge" = { + root = "/var/lib/acme/acme-challenge/"; + extraConfig = "auth_basic off;"; + }; }; }; }; - lemmyDocker = { - enable = config.instance.hostname == lemmyHost; - hostname = lemmyHostname; - site-name = "Fudo Lemmy"; - version = "0.19.2"; - smtp-server = "mail.fudo.org:587"; - docker-images = { - pictrs = "asonix/pictrs:0.5.1"; - postgres = "postgres:15-alpine"; - }; - }; + # lemmyContainer = { + # enable = config.instance.hostname == lemmyHost; + # hostname = lemmyHostname; + # site-name = "Fudo Lemmy"; + # smtp.host = "mail.fudo.org:587"; + # # admin-password-file = hostSecrets.lemmyAdminPasswd.target-file; + # server-package = pkgs.pkgsUnstable.lemmy-server; + # }; }; fudo = { + secrets.host-secrets."${hostname}" = { + lemmyAdminPasswd = { + source-file = + pkgs.lib.passwd.stablerandom-passwd-file "lemmy-admin.passwd" + config.instance.build-seed; + target-file = "/run/lemmy/admin.passwd"; + }; + }; + + zones = { + "fudo.org".aliases = { + cloud = "germany.fudo.org."; + pics = "germany.fudo.org."; + webmail = "germany.fudo.org."; + }; + "selby.ca".aliases.webmail = "germany.fudo.org."; + }; + + webmail = { + enable = hostname == webmailHost; + + sites = { + "webmail.fudo.org" = { + title = "Fudo Webmail"; + favicon = "${static}/fudo.org/favicon.ico"; + mail-server = "mail.fudo.org"; + domain = "fudo.org"; + edit-mode = "Plain"; + }; + + "webmail.fudo.link" = { + title = "Fudo Link Webmail"; + favicon = "${static}/fudo.link/favicon.ico"; + mail-server = "mail.fudo.org"; + domain = "fudo.link"; + edit-mode = "Plain"; + layout-mode = "bottom"; + }; + + "webmail.selby.ca" = { + title = "Selby Webmail"; + favicon = "${static}/selby.ca/favicon.ico"; + mail-server = "mail.fudo.org"; + domain = "selby.ca"; + }; + }; + }; + services = { - # TEMPORARY + # DON'T enable, we're using mail-container instead mail-server.enable = false; jabber = { @@ -127,6 +236,25 @@ in { }; }; + lemmy = { + enable = hostname == lemmyHost; + hostname = "fudo.social"; + site-name = "Fudo Lemmy"; + smtp.host = "mail.fudo.org"; + }; + + gitea-container = let siteName = config.fudo.hosts."${giteaHost}".site; + in { + enable = hostname == giteaHost; + site-name = "Fudo Git"; + hostname = giteaHostname; + trusted-networks = config.instance.local-networks; + networking.ipv4 = { + address = giteaIpv4Address; + prefixLength = getSiteV4PrefixLength siteName; + }; + }; + authoritative-dns = { enable = hostname == primaryNameserver; @@ -167,23 +295,56 @@ in { mkDomain = domain: extraConfig: { - default-host = defaultDeets; ksk = config.fudo.secrets.files.dns.key-signing-keys."${domain}"; } // extraConfig; + + getDeets = hostname: description: { + inherit (config.fudo.zones."fudo.org".hosts."${hostname}") + ipv4-address ipv6-address sshfp-records; + }; in { "fudo.org" = mkDomain "fudo.org" { reverse-zones = [ "208.81.1.128/28" "208.81.3.112/28" ]; mail = fudoMailservers; + default-host = defaultDeets; }; "test.fudo.org" = mkDomain "test.fudo.org" { }; - "selby.ca" = mkDomain "selby.ca" { mail = fudoMailservers; }; - "fudo.ca" = mkDomain "fudo.ca" { mail = fudoMailservers; }; - "fudo.im" = mkDomain "fudo.im" { mail = fudoMailservers; }; - "stewartsoundservices.ca" = - mkDomain "stewartsoundservices.ca" { mail = fudoMailservers; }; - "fudo.live" = mkDomain "fudo.live" { mail = fudoMailservers; }; - "fudo.social" = mkDomain "fudo.social" { mail = fudoMailservers; }; + "selby.ca" = mkDomain "selby.ca" { + mail = fudoMailservers; + default-host = defaultDeets; + }; + "fudo.ca" = mkDomain "fudo.ca" { + mail = fudoMailservers; + default-host = defaultDeets; + }; + "fudo.im" = mkDomain "fudo.im" { + mail = fudoMailservers; + default-host = getDeets matrixHost "fudo.im primary server"; + }; + "stewartsoundservices.ca" = mkDomain "stewartsoundservices.ca" { + mail = fudoMailservers; + default-host = defaultDeets; + }; + "fudo.live" = mkDomain "fudo.live" { + mail = fudoMailservers; + default-host = getDeets mastodonHost "fudo.live primary server"; + }; + "fudo.social" = mkDomain "fudo.social" { + mail = fudoMailservers; + default-host = getDeets lemmyHost "fudo.social primary server"; + }; + "fudo.dev" = mkDomain "fudo.dev" { + mail = fudoMailservers; + default-host = { + ipv4-address = giteaIpv4Address; + description = "fudo.dev"; + }; + }; + "fudo.cloud" = mkDomain "fudo.cloud" { + mail = fudoMailservers; + default-host = getDeets cloudHost "fudo.dev primary server"; + }; }; }; }; diff --git a/config/domain-config/fudo.org/mail-server.nix b/config/domain-config/fudo.org/mail-server.nix index 86b0a58..9f37665 100644 --- a/config/domain-config/fudo.org/mail-server.nix +++ b/config/domain-config/fudo.org/mail-server.nix @@ -22,39 +22,48 @@ in { # }; fudo = { - zones."${primaryDomain}" = let - mailserverDomain = config.fudo.hosts."${primaryMailserver}".domain; - mailserverIps = { - ipv4-address = getHostIpv4 primaryMailserver; - ipv6-address = getHostIpv6 primaryMailserver; - }; - srvRecord = host: port: [{ inherit host port; }]; + zones = let + mailserverIp = getHostIpv4 primaryMailserver; + spfRecords = [ + ''@ IN TXT "v=spf1 mx ip4:${mailserverIp}/32 -all"'' + ''@ IN SPF "v=spf1 mx ip4:${mailserverIp}/32 -all"'' + ]; in { - srv-records = { - tcp = { - imap = srvRecord "imap.${primaryDomain}" 143; - imaps = srvRecord "imap.${primaryDomain}" 993; - smtp = srvRecord "smtp.${primaryDomain}" 25; - submission = srvRecord "smtp.${primaryDomain}" 587; - submissions = srvRecord "smtp.${primaryDomain}" 465; + "${primaryDomain}" = let + mailserverDomain = config.fudo.hosts."${primaryMailserver}".domain; + mailserverIps = { + ipv4-address = getHostIpv4 primaryMailserver; + ipv6-address = getHostIpv6 primaryMailserver; }; - udp = { - smtp = srvRecord "smtp.${primaryDomain}" 25; - submission = srvRecord "smtp.${primaryDomain}" 587; + srvRecord = host: port: [{ inherit host port; }]; + in { + srv-records = { + tcp = { + imap = srvRecord "mail.${primaryDomain}" 143; + imaps = srvRecord "mail.${primaryDomain}" 993; + smtp = srvRecord "mail.${primaryDomain}" 25; + submission = srvRecord "mail.${primaryDomain}" 587; + submissions = srvRecord "mail.${primaryDomain}" 465; + }; + udp = { + smtp = srvRecord "mail.${primaryDomain}" 25; + submission = srvRecord "mail.${primaryDomain}" 587; + }; }; - }; - metric-records = genAttrs [ "dovecot" "postfix" "rspamd" ] - (_: srvRecord "mail-stats.${primaryDomain}" 443); + metric-records = genAttrs [ "dovecot" "postfix" "rspamd" ] + (_: srvRecord "mail-stats.${primaryDomain}" 443); - hosts = { - imap = mailserverIps; - smtp = mailserverIps; - mail = mailserverIps; - mail-stats = mailserverIps; + hosts = { + imap = mailserverIps; + smtp = mailserverIps; + mail = mailserverIps; + mail-stats = mailserverIps; + }; + verbatim-dns-records = [ dkimRecord ] ++ spfRecords; }; - verbatim-dns-records = [ dkimRecord ]; - }; + } // (genAttrs (filter (dom: dom != primaryDomain) servedDomains) + (domain: { verbatim-dns-records = [ dkimRecord ] ++ spfRecords; })); metrics.prometheus.service-discovery-dns = (genAttrs [ "dovecot" "postfix" "rspamd" ] @@ -68,14 +77,14 @@ in { sasl-domain = saslDomain; trusted-networks = config.instance.local-networks; smtp = { - hostname = "smtp.${primaryDomain}"; + hostname = "mail.${primaryDomain}"; ssl-directory = - config.security.acme.certs."smtp.${primaryDomain}".directory; + config.security.acme.certs."mail.${primaryDomain}".directory; }; imap = { - hostname = "imap.${primaryDomain}"; + hostname = "mail.${primaryDomain}"; ssl-directory = - config.security.acme.certs."imap.${primaryDomain}".directory; + config.security.acme.certs."mail.${primaryDomain}".directory; }; ldap = { authentik-host = "https://${authentikServer}"; @@ -112,7 +121,7 @@ in { "imap.${primaryDomain}" = { enableACME = true; forceSSL = true; - locations."/".return = "301 https://webmail.${primaryDomain}"; + locations."/".return = "403 Forbidden"; }; "mail.${primaryDomain}" = { enableACME = true; @@ -122,7 +131,7 @@ in { "smtp.${primaryDomain}" = { enableACME = true; forceSSL = true; - locations."/".return = "301 https://webmail.${primaryDomain}"; + locations."/".return = "403 Forbidden"; }; }; }; diff --git a/config/domain-config/fudo.org/mastodon.nix b/config/domain-config/fudo.org/mastodon.nix index 82293ad..359a380 100644 --- a/config/domain-config/fudo.org/mastodon.nix +++ b/config/domain-config/fudo.org/mastodon.nix @@ -7,50 +7,46 @@ with lib; let hostname = config.instance.hostname; isMastodon = hostname == mastodonHost; + mkEnvFile = vars: + pkgs.writeText "mastodon.env" + (concatStringsSep "\n" (mapAttrsToList (k: v: ''${k}="${v}"'') vars)); in { config = { + fudo.secrets.host-secrets."${hostname}".mastodonEnv = { + source-file = mkEnvFile { + OIDC_ENABLED = "true"; + OIDC_DISPLAY_NAME = "fudo auth"; + OIDC_DISCOVERY = "true"; + OIDC_ISSUER = "https://authentik.fudo.org/application/o/mastodon/"; + OIDC_AUTH_ENDPOINT = + "https://authentik.fudo.org/application/o/authorize/"; + OIDC_SCOPE = "openid,profile,email"; + OIDC_UID_FIELD = "sub"; + OIDC_CLIENT_ID = readFile mastodonOidcClientId; + OIDC_CLIENT_SECRET = readFile mastodonOidcClientSecret; + OIDC_REDIRECT_URI = + "https://fudo.live/auth/auth/openid_connect/callback"; + OIDC_SECURITY_ASSUME_EMAIL_IS_VERIFIED = "true"; + OMNIAUTH_ONLY = "true"; + ONE_CLICK_SSO_LOGIN = "true"; + }; + target-file = "/run/mastodon/env"; + }; + services = { mastodonContainer = mkIf isMastodon { enable = true; - hostname = mastodonWebDomain; - web-domain = mastodonHostname; - version = "v4.1.6"; - state-directory = "/state/services/mastodon"; - smtp.server = "mail.fudo.org"; - environment = { - OIDC_ENABLED = "true"; - OIDC_DISPLAY_NAME = "fudo auth"; - OIDC_DISCOVERY = "true"; - OIDC_ISSUER = "https://authentik.fudo.org/application/o/mastodon/"; - OIDC_AUTH_ENDPOINT = - "https://authentik.fudo.org/application/o/authorize/"; - OIDC_SCOPE = "openid,profile,email"; - OIDC_UID_FIELD = "sub"; - OIDC_CLIENT_ID = readFile mastodonOidcClientId; - OIDC_CLIENT_SECRET = readFile mastodonOidcClientSecret; - OIDC_REDIRECT_URI = - "https://mastodon.fudo.org/auth/auth/openid_connect/callback"; - OIDC_SECURITY_ASSUME_EMAIL_IS_VERIFIED = "true"; - }; - }; - nginx = mkIf isMastodon { - enable = true; - recommendedGzipSettings = true; - recommendedOptimisation = true; - recommendedProxySettings = true; - virtualHosts = { - "${mastodonHostname}" = { - enableACME = true; - forceSSL = true; - locations."/" = { - proxyPass = "http://localhost:${ - toString config.services.mastodonContainer.port - }"; - proxyWebsockets = true; - }; - }; + hostname = mastodonHostname; + domain = mastodonWebDomain; + environment-files = [ + config.fudo.secrets.host-secrets."${hostname}".mastodonEnv.target-file + ]; + smtp = { + host = "mail.fudo.org"; + port = 25; }; + allow-registrations = false; }; }; }; diff --git a/config/domain-config/fudo.org/nextcloud.nix b/config/domain-config/fudo.org/nextcloud.nix index 9715a36..e4d7f9e 100644 --- a/config/domain-config/fudo.org/nextcloud.nix +++ b/config/domain-config/fudo.org/nextcloud.nix @@ -40,6 +40,10 @@ in { }; extraConfig = '' client_body_buffer_size 1024m; + client_max_body_size 4096m; + fastcgi_read_timeout 120s; + proxy_max_temp_file_size 4096m; + proxy_buffering off; ''; }; }; diff --git a/config/domain-config/sea.fudo.org.nix b/config/domain-config/sea.fudo.org.nix index ab8b011..b4fd942 100644 --- a/config/domain-config/sea.fudo.org.nix +++ b/config/domain-config/sea.fudo.org.nix @@ -5,6 +5,8 @@ let hostname = config.instance.hostname; hostSecrets = config.fudo.secrets.host-secrets."${hostname}"; + domainName = "sea.fudo.org"; + frigateExternalHost = "sea-cam.fudo.link"; frigateHost = "zbox"; frigateDirectory = frigateCfg.state-directory; @@ -12,9 +14,15 @@ let pkgs.lib.passwd.stablerandom-passwd-file "frigate-mqtt-passwd" config.instance.build-seed; + immichHost = "toothless"; + in { config = { - fudo.zones."sea.fudo.org".aliases = { "frigate" = "zbox"; }; + fudo.zones."sea.fudo.org".aliases = { + chat = "nostromo"; + frigate = "zbox"; + immich = immichHost; + }; fudo = { services = { metrics = { @@ -37,8 +45,33 @@ in { }; services = { - frigateContainer = { - enable = config.instance.hostname == frigateHost; + immichContainer = mkIf (hostname == immichHost) { + enable = true; + images = let immichVersion = "v1.94.1"; + in { + immich = "ghcr.io/immich-app/immich-server:${immichVersion}"; + immich-ml = + "ghcr.io/immich-app/immich-machine-learning:${immichVersion}"; + redis = "redis:6.2-alpine"; + postgresql = "tensorchord/pgvecto-rs:pg14-v0.1.11"; + }; + }; + + nginx = mkIf (hostname == immichHost) { + enable = true; + recommendedOptimisation = true; + recommendedGzipSettings = true; + recommendedProxySettings = true; + virtualHosts."immich.${domainName}".locations."/" = { + proxyPass = "http://${immichHost}.${domainName}:${ + toString config.services.immichContainer.port + }/"; + recommendedProxySettings = true; + }; + }; + + frigateContainer = mkIf (config.instance.hostname == frigateHost) { + enable = true; log-level = "info"; images.frigate = "ghcr.io/blakeblackshear/frigate:0.13.0-beta5"; cameras = diff --git a/config/hardware/germany.nix b/config/hardware/germany.nix index 6800bef..1e9fe8c 100644 --- a/config/hardware/germany.nix +++ b/config/hardware/germany.nix @@ -1,5 +1,6 @@ { config, lib, pkgs, ... }: +with lib; let generateMac = pkgs.lib.network.generate-mac-address; in { @@ -22,6 +23,8 @@ in { extraModulePackages = [ ]; kernelPackages = pkgs.linuxPackages_latest; + supportedFilesystems = [ "bcachefs" ]; + loader.grub = { enable = true; devices = [ @@ -85,11 +88,45 @@ in { fsType = "btrfs"; options = [ "subvol=@container-data" "noatime" "compress=zstd" "noexec" ]; }; + + ## BROKEN! + # "/store" = { + # device = lib.concatStringsSep ":" [ + # "/dev/disk/by-id/ata-Crucial_CT525MX300SSD1_171516B3CB40" + # "/dev/disk/by-id/ata-ST8000DM004-2U9188_ZR153N5H" + # "/dev/disk/by-id/ata-ST8000DM004-2U9188_ZR153CDK" + # ]; + # fsType = "bcachefs"; + # options = [ "noexec" "compression=zstd" ]; + # }; + }; + + systemd.services.mount-bcachefs-store = let + mountpoint = "/store"; + deviceString = concatStringsSep ":" [ + "/dev/disk/by-id/ata-Crucial_CT525MX300SSD1_171516B3CB40" + "/dev/disk/by-id/ata-ST8000DM004-2U9188_ZR153N5H" + "/dev/disk/by-id/ata-ST8000DM004-2U9188_ZR153CDK" + ]; + options = concatStringsSep "," [ "noexec" "compression=zstd" ]; + in { + description = + "Mount ${mountpoint} filesystem (can't use fileSystems with multiple devices)."; + wantedBy = [ "local-fs.target" ]; + script = '' + [ -d ${mountpoint} ] || mkdir ${mountpoint} + if ${pkgs.util-linux}/bin/findmnt ${mountpoint}; then + echo "already mounted: ${mountpoint}" + else + echo "mounting filesystem: ${mountpoint}" + ${pkgs.bcachefs-tools}/bin/mount.bcachefs ${deviceString} -o ${options} ${mountpoint} + fi + ''; }; swapDevices = [{ device = "/dev/disk/by-label/germany-swap"; }]; - nix.settings.max-jobs = lib.mkDefault 24; + nix.settings.max-jobs = mkDefault 24; hardware.bluetooth.enable = false; diff --git a/config/host-config/fimbria.nix b/config/host-config/fimbria.nix index e068717..6bcc50f 100644 --- a/config/host-config/fimbria.nix +++ b/config/host-config/fimbria.nix @@ -248,6 +248,16 @@ in { (trustedNetworkClauses ++ [ "deny all;" ]); }; }; + + "pics.fudo.link" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://immich.sea.fudo.org/"; + proxyWebsockets = true; + recommendedProxySettings = true; + }; + }; }; }; diff --git a/config/host-config/germany.nix b/config/host-config/germany.nix index 0a9ba80..930ed9e 100644 --- a/config/host-config/germany.nix +++ b/config/host-config/germany.nix @@ -31,7 +31,7 @@ in { }; firewall = { enable = false; - interfaces."podman+".allowedUDPPorts = [ 53 ]; + interfaces."podman[0-9]+".allowedUDPPorts = [ 53 ]; }; }; @@ -60,6 +60,11 @@ in { ''; }; }; + + webmail-init = { + after = [ "fudo-secrets.target" ]; + requires = [ "fudo-secrets.target" ]; + }; }; timers.fudo-mail-sync = { @@ -79,13 +84,42 @@ in { enable = true; autoPrune.enable = true; dockerSocket.enable = true; - defaultNetwork.settings.dns_enabled = true; + dockerCompat = true; + defaultNetwork.settings = { + dns_enabled = true; + network_dns_servers = [ "1.1.1.1" "8.8.4.4" ]; + }; }; oci-containers.backend = "podman"; arion.backend = "podman-socket"; }; - services.lemmyDocker.state-directory = "/state/services/lemmy"; + services = { + lemmyContainer.state-directory = "/state/services/lemmy-container"; + mastodonContainer.streaming-processes = 6; + nextcloudContainer = { + state-directory = "/state/services/nextcloud"; + store-directory = "/store/nextcloud"; + }; + immichContainer = { + state-directory = "/state/services/immich"; + store-directory = "/store/immich"; + }; + nginx = { + enable = true; + commonHttpConfig = '' + log_format with_response_time '$remote_addr - $remote_user [$time_local] ' + '"$request" $status $body_bytes_sent ' + '"$http_referer" "$http_user_agent" ' + '"$request_time" "$upstream_response_time"'; + access_log /var/log/nginx/access.log with_response_time; + ''; + recommendedTlsSettings = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + }; + }; fudo = { client.dns = { @@ -105,12 +139,18 @@ in { state-directory = "/state/services/postgresql"; }; + webmail.state-directory = "/state/services/webmail"; + services = { auth = { kerberos.state-directory = "/state/services/kerberos"; ldap.state-directory = "/state/services/ldap"; }; authoritative-dns.state-directory = "/state/services/dns"; + gitea-container = { + networking.interface = "enp5s0f0"; + state-directory = "/state/services/gitea-container"; + }; jabber.state-directory = "/state/services/jabber"; logging.loki.state-directory = "/state/services/loki"; mail-server.state-directory = "/state/services/mail"; @@ -118,6 +158,7 @@ in { prometheus.state-directory = "/state/services/prometheus"; grafana.state-directory = "/state/services/grafana"; }; + nexus.dns-server.listen-addresses = [ primary-ip ]; postgresql = { state-directory = "/state/services/postgresql"; keytab = extractFudoKeytab { diff --git a/config/host-config/nostromo.nix b/config/host-config/nostromo.nix index f21c0f6..52e6106 100644 --- a/config/host-config/nostromo.nix +++ b/config/host-config/nostromo.nix @@ -125,22 +125,6 @@ in { local-networks = config.instance.local-networks; state-directory = "/state/services/postgresql"; }; - - services.gitea-container = { - enable = true; - site-name = "Seattle Fudo Git"; - hostname = "git.fudo.org"; - state-directory = "/state/services/gitea"; - trusted-networks = config.instance.local-networks; - openid-urls = [ "https://authentik.fudo.org/" ]; - networking = { - interface = "eno2"; - ipv4 = { - address = "10.0.0.15"; - prefixLength = 24; - }; - }; - }; }; virtualisation = { diff --git a/config/host-config/nutboy3.nix b/config/host-config/nutboy3.nix index e085a08..e43b0b5 100644 --- a/config/host-config/nutboy3.nix +++ b/config/host-config/nutboy3.nix @@ -14,7 +14,7 @@ let host-secrets = config.fudo.secrets.host-secrets.${hostname}; - postgresql-user = config.systemd.services.postgresql.serviceConfig.User; + # postgresql-user = config.systemd.services.postgresql.serviceConfig.User; files = config.fudo.secrets.files; @@ -48,10 +48,10 @@ in { "L /etc/adjtime - - - - /state/etc/adjtime" "d /state/services 0555 - - - -" ]; - services.grafana = { - bindsTo = [ "postgresql.service" ]; - requires = [ "postgresql.service" ]; - }; + # services.grafana = { + # bindsTo = [ "postgresql.service" ]; + # requires = [ "postgresql.service" ]; + # }; }; environment = { systemPackages = local-packages; }; @@ -69,11 +69,11 @@ in { # part-of = [ config.fudo.auth.ldap-server.systemd-target ]; # }; - postgresql = { - user = postgresql-user; - dependent-services = [ "postgresql.service" ]; - part-of = [ config.fudo.postgresql.systemd-target ]; - }; + # postgresql = { + # user = postgresql-user; + # dependent-services = [ "postgresql.service" ]; + # part-of = [ config.fudo.postgresql.systemd-target ]; + # }; }; }; @@ -99,13 +99,13 @@ in { }; }; - postgresql = { - state-directory = "/state/services/postgresql"; - keytab = extractFudoKeytab { - realm = domain.gssapi-realm; - principals = [ "postgres/${host-fqdn}" ]; - }; - }; + # postgresql = { + # state-directory = "/state/services/postgresql"; + # keytab = extractFudoKeytab { + # realm = domain.gssapi-realm; + # principals = [ "postgres/${host-fqdn}" ]; + # }; + # }; metrics = { prometheus.state-directory = "/state/services/prometheus"; diff --git a/config/host-config/toothless.nix b/config/host-config/toothless.nix index f6b4cf0..dba8e28 100644 --- a/config/host-config/toothless.nix +++ b/config/host-config/toothless.nix @@ -28,21 +28,14 @@ in { Defaults lecture = never ''; + services = { + immichContainer = { + state-directory = "/state/immich/state"; + store-directory = "/state/immich/store"; + }; + }; + fudo = { - # minecraft-server = { - # enable = true; - # data-dir = "/state/services/minecraft"; - # world-name = "TLS"; - # motd = "Welcome to Jasper's TLS minecraft server."; - # game-mode = "survival"; - # difficulty = 1; - # allow-cheats = true; - # allocated-memory = 16; - # port = 25555; - # query-port = 25556; - # rcon-port = 25557; - # world-seed = 2090763904884813452; - # }; minecraft-clj = { enable = true; state-directory = "/state/services/minecraft-clj"; @@ -86,6 +79,21 @@ in { }; }; + virtualisation = { + podman = { + enable = true; + autoPrune.enable = true; + dockerSocket.enable = true; + dockerCompat = true; + defaultNetwork.settings = { + dns_enabled = true; + network_dns_servers = [ "1.1.1.1" "8.8.4.4" ]; + }; + }; + oci-containers.backend = "podman"; + arion.backend = "podman-socket"; + }; + systemd.targets = { sleep.enable = false; suspend.enable = false; diff --git a/config/service/authoritative-dns.nix b/config/service/authoritative-dns.nix index 951a522..ed0ce9e 100644 --- a/config/service/authoritative-dns.nix +++ b/config/service/authoritative-dns.nix @@ -34,9 +34,9 @@ let isReadOnly = false; }; } // (mapAttrs' (zoneName: _: - let zoneKeyName = zoneKeySecret zoneName; - in nameValuePair "/run/nsd/keys/${zoneKeyName}" { - hostPath = hostSecrets."${zoneKeyName}".target-file; + nameValuePair "/run/nsd/keys/${zoneName}" { + hostPath = + dirOf hostSecrets."${zoneKeySecret zoneName}".target-file; }) securedZones); config = let nameserverHost = cfg.container.hostname; @@ -82,7 +82,10 @@ let domains = mapAttrs' (zoneName: zoneCfg: nameValuePair zoneCfg.domain { - ksk.key-file = "/run/nsd/keys/${zoneKeySecret zoneName}"; + ksk.key-file = "/run/nsd/keys/${zoneName}/${ + baseNameOf + hostSecrets."${zoneKeySecret zoneName}".target-file + }"; reverse-zones = zoneCfg.reverse-zones; notify = mkIf cfg.enable-notifications { ipv4 = concatMap @@ -280,11 +283,21 @@ in { }; fudo = { - secrets.host-secrets."${hostname}" = mapAttrs' (zone: zoneCfg: - nameValuePair (zoneKeySecret zone) { + secrets.host-secrets."${hostname}" = concatMapAttrs (zone: zoneCfg: { + "${zoneKeySecret zone}" = { source-file = zoneCfg.ksk.private-key; - target-file = "/run/nsd/${baseNameOf zoneCfg.ksk.private-key}"; - }) (filterAttrs (_: zoneCfg: zoneCfg.ksk != null) cfg.zones); + target-file = + "/run/nsd/${zone}/${baseNameOf zoneCfg.ksk.private-key}"; + }; + "${zone}-ds" = { + source-file = zoneCfg.ksk.ds; + target-file = "/run/nsd/${zone}/${baseNameOf zoneCfg.ksk.ds}"; + }; + "${zone}-pubkey" = { + source-file = zoneCfg.ksk.public-key; + target-file = "/run/nsd/${zone}/${baseNameOf zoneCfg.ksk.public-key}"; + }; + }) (filterAttrs (_: zoneCfg: zoneCfg.ksk != null) cfg.zones); zones = mapAttrs (zone-name: zoneCfg: let diff --git a/config/service/gitea-container.nix b/config/service/gitea-container.nix index c60b6f7..5c2d106 100644 --- a/config/service/gitea-container.nix +++ b/config/service/gitea-container.nix @@ -1,7 +1,20 @@ { config, lib, pkgs, ... }: with lib; -let cfg = config.fudo.services.gitea-container; +let + cfg = config.fudo.services.gitea-container; + + hostname = config.instance.hostname; + domainName = config.fudo.hosts."${hostname}".domain; + zoneName = config.fudo.domains."${domainName}".zone; + siteName = config.fudo.hosts."${hostname}".site; + + getSiteGatewayV4 = pkgs.lib.getSiteGatewayV4; + + keyPaths = { + ed25519 = "/state/ssh/ed25519.key"; + ecdsa = "/state/ssh/ecdsa.key"; + }; in { options.fudo.services.gitea-container = with types; { @@ -29,11 +42,6 @@ in { default = [ ]; }; - openid-urls = mkOption { - type = listOf str; - description = "List of authorized OpenID providers."; - }; - networking = { interface = mkOption { type = str; @@ -75,7 +83,10 @@ in { }; config = mkIf cfg.enable { - systemd.tmpfiles.rules = [ "d ${cfg.state-directory} 700 root root - -" ]; + systemd.tmpfiles.rules = [ + "d ${cfg.state-directory}/gitea 755 root root - -" + "d ${cfg.state-directory}/acme 755 root root - -" + ]; containers.gitea = { autoStart = true; @@ -83,18 +94,63 @@ in { macvlans = [ cfg.networking.interface ]; bindMounts = { "/state" = { - hostPath = cfg.state-directory; + hostPath = "${cfg.state-directory}/gitea"; + isReadOnly = false; + }; + "/var/lib/acme" = { + hostPath = "${cfg.state-directory}/acme"; isReadOnly = false; }; }; config = { nixpkgs.pkgs = pkgs; - systemd = { tmpfiles.rules = [ "d /state 0755 root root - -" ]; }; + systemd = { + tmpfiles.rules = [ "d /state 0755 root root - -" ]; + services = { + gitea-chown = { + requiredBy = [ "gitea.service" ]; + before = [ "gitea.service" ]; + serviceConfig.Type = "oneshot"; + script = "chown -R gitea:gitea /state"; + }; + + gitea-keygen = { + requiredBy = [ "gitea.service" ]; + before = [ "gitea.service" ]; + serviceConfig.Type = "oneshot"; + script = let + keygenScripts = mapAttrsToList (type: path: + let dir = dirOf path; + in '' + if [ ! -f ${path} ]; then + mkdir -p ${dir} + ${pkgs.openssh}/bin/ssh-keygen -q -N "" -t ${type} -f ${path} + chown -R gitea:gitea ${dir} + chmod 0750 ${dir} + chmod 0440 ${path} + fi + '') keyPaths; + in concatStringsSep "\n" keygenScripts; + }; + }; + }; + + environment.systemPackages = let + giteaCli = pkgs.writeShellApplication { + name = "gitea-cli"; + runtimeInputs = with pkgs; [ gitea ]; + text = ''gitea --config /state/gitea/custom/conf/app.ini "$@"''; + }; + in [ giteaCli ]; networking = { - defaultGateway = config.networking.defaultGateway; + defaultGateway = { + address = getSiteGatewayV4 siteName; + interface = "mv-${cfg.networking.interface}"; + }; enableIPv6 = !isNull cfg.networking.ipv6; + nameservers = config.networking.nameservers; firewall = { enable = true; allowedTCPPorts = [ 22 80 443 ]; @@ -111,6 +167,11 @@ in { }; }; + security.acme = { + acceptTerms = true; + defaults.email = "admin@${cfg.hostname}"; + }; + services = { gitea = { enable = true; @@ -122,7 +183,10 @@ in { repositoryRoot = "/state/repositories"; stateDir = "/state/gitea"; settings = { - service.DISABLE_REGISTRATION = true; + service = { + #DISABLE_REGISTRATION = true; + ALLOW_ONLY_EXTERNAL_REGISTRATION = true; + }; security = { INSTALL_LOCK = true; LOGIN_REMEMBER_DAYS = 30; @@ -133,26 +197,23 @@ in { # Host & port to display in the clone URL SSH_DOMAIN = cfg.hostname; + # SSH_LISTEN_HOST = "0.0.0.0"; SSH_PORT = 22; - SSH_LISTEN_PORT = 2222; - SSH_LISTEN_HOST = "0.0.0.0"; - DOMAIN = cfg.hostname; ROOT_URL = "https://${cfg.hostname}"; + SSH_SERVER_HOST_KEYS = + concatStringsSep "," (attrValues keyPaths); + HTTP_ADDR = "127.0.0.1"; HTTP_PORT = 8080; }; - openid = { - ENABLE_OPENID_SIGNIN = true; - WHITELISTED_URIS = concatStringsSep "," cfg.openid-urls; - }; oauth2_client = { REGISTER_EMAIL_CONFIRM = false; OPENID_CONNECT_SCOPES = concatStringsSep "," [ "email" "profile" ]; - ENABLE_AUTO_REGISTRATION = true; + #ENABLE_AUTO_REGISTRATION = true; USERNAME = "email"; UPDATE_AVATAR = true; ACCOUNT_LINKING = "login"; @@ -164,8 +225,8 @@ in { enable = true; services = [{ name = "ssh"; - # port = 22; - # protocol = "tcp"; + port = 22; + protocol = "tcp"; extraConfig = '' redirect = localhost 2222 wait = no @@ -185,9 +246,13 @@ in { recommendedTlsSettings = true; recommendedGzipSettings = true; virtualHosts."${cfg.hostname}" = { - # enableACME = true; - # forceSSL = true; - locations."/".proxyPass = "http://127.0.0.1:8080"; + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:8080"; + proxyWebsockets = true; + recommendedProxySettings = true; + }; locations."/metrics" = mkIf (cfg.trusted-networks != [ ]) { proxyPass = "http://127.0.0.1:8080/metrics"; extraConfig = let diff --git a/config/service/lemmy.nix b/config/service/lemmy.nix index c923e36..d8d24c0 100644 --- a/config/service/lemmy.nix +++ b/config/service/lemmy.nix @@ -2,20 +2,12 @@ with lib; let - lemmyDbPasswd = pkgs.lib.passwd.stablerandom-passwd-file "lemmy-server-passwd" - "lemmy-server-${config.instance.build-seed}"; - cfg = config.fudo.services.lemmy; hostname = config.instance.hostname; domainName = config.fudo.hosts."${hostname}".domain; - postgresqlServer = config.fudo.domains."${domainName}".postgresql-server; - postgresqlFqdn = pkgs.lib.getHostFqdn postgresqlServer; - - isPostgresServer = hostname == postgresqlServer; - hostSecrets = config.fudo.secrets.host-secrets."${hostname}"; in { @@ -27,38 +19,55 @@ in { description = "Hostname at which this server will be reachable."; }; - port = mkOption { - type = port; - description = "Port on which to listen for requests"; - default = 8536; + site-name = mkOption { + type = str; + description = "Site Name"; }; - listen-ip = mkOption { - type = str; - description = "IP on which to listen for incoming requests."; - default = "0.0.0.0"; + smtp = { + host = mkOption { + type = str; + description = "SMTP server to relay Lemmy emails."; + }; + + port = mkOption { + type = port; + description = "Port to which to send outgoing messages."; + default = 25; + }; }; }; config = mkIf cfg.enable { fudo = { - secrets.host-secrets."${hostname}" = { - dbLemmyPasswd = mkIf isPostgresServer { - source-file = lemmyDbPasswd; + secrets.host-secrets."${hostname}" = let + lemmyDbPasswdFile = + pkgs.lib.passwd.stablerandom-passwd-file "lemmy-server-passwd" + "lemmy-server-${config.instance.build-seed}"; + lemmyDbPasswd = readFile lemmyDbPasswdFile; + in { + lemmyDbUrl = { + source-file = let + url = + "postgres:///lemmy?user=lemmy&password=${lemmyDbPasswd}&host=/var/run/postgresql"; + in pkgs.writeText "lemmy-db.url" url; + target-file = "/run/lemmy/db.url"; + }; + dbLemmyPasswd = { + source-file = lemmyDbPasswdFile; target-file = "/run/postgres/lemmy.passwd"; user = config.systemd.services.postgresql.serviceConfig.User; }; - lemmyEnv = mkIf cfg.enable { - source-file = pkgs.writeText "lemmy.env" '' - LEMMY_DATABASE_URL=postgres:///lemmy:${ - readFile lemmyDbPasswd - }@${postgresqlFqdn}:5432/lemmy - ''; - target-file = "/run/lemmy/env"; + lemmyAdminPasswdFile = { + source-file = + pkgs.lib.passwd.stablerandom-passwd-file "lemmy-admin.passwd" + config.instance.build-seed; + target-file = "/run/lemmy/admin.passwd"; }; }; - postgresql = mkIf isPostgresServer { + postgresql = { + enable = true; databases.lemmy.users = config.instance.local-admins; users.lemmy = { password-file = hostSecrets.dbLemmyPasswd.target-file; @@ -74,35 +83,36 @@ in { }; systemd.services.lemmy = { - requires = [ "fudo-secret-lemmyEnv.service" ]; - after = [ "fudo-secret-lemmyEnv.service" ]; - environment.LEMMY_DATABASE_URL = mkForce null; - serviceConfig = mkIf cfg.enable { - LoadCredential = [ "env:${hostSecrets.lemmyEnv.target-file}" ]; - EnvironmentFile = "$$CREDENTIALS_DIRECTORY/env"; - }; + requires = [ "fudo-secret-lemmyDbUrl.service" "postgresql.service" ]; + after = [ "fudo-secret-lemmyDbUrl.service" "postgresql.service" ]; }; - services.lemmy = mkIf cfg.enable { + services.nginx.virtualHosts."${cfg.hostname}" = { + enableACME = true; + forceSSL = true; + }; + + services.lemmy = { enable = true; + nginx.enable = true; + adminPasswordFile = hostSecrets.lemmyAdminPasswdFile.target-file; + database.uriFile = hostSecrets.lemmyDbUrl.target-file; + ui.port = 50395; settings = { hostname = cfg.hostname; - federation.enabled = true; + host = cfg.hostname; captcha.enabled = true; - database = { - user = "lemmy"; - host = pkgs.lib.getHostFqdn postgresqlServer; - database = "lemmy"; - password = readFile lemmyDbPasswd; + email = { + smtp_server = "${cfg.smtp.host}:${toString cfg.smtp.port}"; + smtp_from_address = "noreply@${cfg.hostname}"; + tls_type = "starttls"; + }; + admin_username = "admin"; + setup = { + site_name = cfg.site-name; + admin_username = "admin"; }; - bind = cfg.listen-ip; - port = cfg.port; }; }; - - networking.firewall = { - allowedTCPPorts = [ cfg.port ]; - allowedUDPPorts = [ cfg.port ]; - }; }; } diff --git a/config/service/mail-server.nix b/config/service/mail-server.nix index 4b18a5d..e10ae86 100644 --- a/config/service/mail-server.nix +++ b/config/service/mail-server.nix @@ -103,22 +103,6 @@ in { }; }; - zones = { - ${mailserver-domain.zone} = let - server-ipv4 = pkgs.lib.network.host-ipv4 config mailserver-host; - server-ipv6 = pkgs.lib.network.host-ipv6 config mailserver-host; - - srv-record = host: port: [{ inherit host port; }]; - - in { - aliases = mkIf metricsEnabled { mail-stats = "${mailserver-fqdn}."; }; - - metric-records = mkIf metricsEnabled - (genAttrs [ "dovecot" "postfix" "rspamd" ] - (_: srv-record "mail-stats" 443)); - }; - }; - metrics.prometheus.service-discovery-dns = mkIf metricsEnabled (genAttrs [ "dovecot" "postfix" "rspamd" ] (mtype: [ "${mtype}._metrics._tcp.${mailserver-domain-name}" ])); diff --git a/config/service/postgresql.nix b/config/service/postgresql.nix index 6e1c920..104e89b 100644 --- a/config/service/postgresql.nix +++ b/config/service/postgresql.nix @@ -56,7 +56,7 @@ in { }; zones."${zone-name}".aliases.postgresql = - pkgs.lib.getHostFqdn domain.postgresql-server; + "${pkgs.lib.getHostFqdn domain.postgresql-server}."; postgresql = mkIf isPostgresHost (let ssl-config = optionalAttrs publicNetwork (let diff --git a/flake.lock b/flake.lock index 13a3901..909dd67 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ ] }, "locked": { - "lastModified": 1703950660, - "narHash": "sha256-GgynJdQ6KngwFBd4YbMYbwesyOiMTZAFymsStE0PSfM=", + "lastModified": 1707151070, + "narHash": "sha256-jDz+459Iqn895HWnxhIPW0alIlDG7Ar1ZM0ONJysWbg=", "owner": "hercules-ci", "repo": "arion", - "rev": "f295eabd25b7c894ab405be784e2a010f83fde55", + "rev": "9e5caa2b4869c9094a39a7819511a88c35e35671", "type": "github" }, "original": { @@ -31,11 +31,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1703950660, - "narHash": "sha256-GgynJdQ6KngwFBd4YbMYbwesyOiMTZAFymsStE0PSfM=", + "lastModified": 1707151070, + "narHash": "sha256-jDz+459Iqn895HWnxhIPW0alIlDG7Ar1ZM0ONJysWbg=", "owner": "hercules-ci", "repo": "arion", - "rev": "f295eabd25b7c894ab405be784e2a010f83fde55", + "rev": "9e5caa2b4869c9094a39a7819511a88c35e35671", "type": "github" }, "original": { @@ -49,14 +49,14 @@ "flake-parts": "flake-parts_5", "haskell-flake": "haskell-flake_3", "hercules-ci-effects": "hercules-ci-effects_3", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_20" }, "locked": { - "lastModified": 1703950660, - "narHash": "sha256-GgynJdQ6KngwFBd4YbMYbwesyOiMTZAFymsStE0PSfM=", + "lastModified": 1707151070, + "narHash": "sha256-jDz+459Iqn895HWnxhIPW0alIlDG7Ar1ZM0ONJysWbg=", "owner": "hercules-ci", "repo": "arion", - "rev": "f295eabd25b7c894ab405be784e2a010f83fde55", + "rev": "9e5caa2b4869c9094a39a7819511a88c35e35671", "type": "github" }, "original": { @@ -64,27 +64,6 @@ "type": "indirect" } }, - "arion_4": { - "inputs": { - "flake-parts": "flake-parts_7", - "haskell-flake": "haskell-flake_4", - "hercules-ci-effects": "hercules-ci-effects_4", - "nixpkgs": "nixpkgs_17" - }, - "locked": { - "lastModified": 1703950660, - "narHash": "sha256-GgynJdQ6KngwFBd4YbMYbwesyOiMTZAFymsStE0PSfM=", - "owner": "hercules-ci", - "repo": "arion", - "rev": "f295eabd25b7c894ab405be784e2a010f83fde55", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "arion", - "type": "github" - } - }, "authentik-container": { "inputs": { "arion": [ @@ -95,11 +74,11 @@ ] }, "locked": { - "lastModified": 1704566338, - "narHash": "sha256-ofTCDtJwR2xoLlCVQpA4f1pO0sOrz3SCB5CniP3NU8g=", + "lastModified": 1707259343, + "narHash": "sha256-W6W57ruUa+oSD3j1cBG9/trNexhLM4LmF1P1Ber8Qwk=", "ref": "refs/heads/master", - "rev": "6d14ff1999b4f5767bddcc1fea1e9138ef9f8ff5", - "revCount": 21, + "rev": "4c8601dac9298cb8a15e887de8be2ec07f50e142", + "revCount": 23, "type": "git", "url": "https://git.fudo.org/fudo-nix/authentik-container.git" }, @@ -116,11 +95,11 @@ ] }, "locked": { - "lastModified": 1700444903, - "narHash": "sha256-UAkNtgkB1qI2gWjjCh0dedtGoPJWhjjfUTu7oCrFOD8=", + "lastModified": 1706576134, + "narHash": "sha256-2fIyFtD0Xt4OqyPs5fzB+b5l8ZR2D7CeYriBjqxRcnQ=", "ref": "refs/heads/master", - "rev": "1671cece1cde85578be9aee9c84b0ff7a0793c76", - "revCount": 91, + "rev": "8e8a3099e5c3f1cf56677d5a9dbb7fb79a5c937f", + "revCount": 94, "type": "git", "url": "https://git.fudo.org/fudo-public/authoritative-dns.git" }, @@ -231,7 +210,7 @@ "clj-nix_10": { "inputs": { "devshell": "devshell_10", - "flake-utils": "flake-utils_12", + "flake-utils": "flake-utils_14", "nixpkgs": [ "pricebot", "nixpkgs" @@ -254,7 +233,7 @@ "clj-nix_11": { "inputs": { "devshell": "devshell_11", - "flake-utils": "flake-utils_13", + "flake-utils": "flake-utils_15", "nixpkgs": [ "snooper", "helpers", @@ -278,7 +257,7 @@ "clj-nix_12": { "inputs": { "devshell": "devshell_12", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_16", "nixpkgs": [ "suanni", "helpers", @@ -302,7 +281,7 @@ "clj-nix_13": { "inputs": { "devshell": "devshell_13", - "flake-utils": "flake-utils_15", + "flake-utils": "flake-utils_17", "nixpkgs": [ "tattler", "helpers", @@ -326,7 +305,7 @@ "clj-nix_14": { "inputs": { "devshell": "devshell_14", - "flake-utils": "flake-utils_16", + "flake-utils": "flake-utils_18", "nixpkgs": [ "tattler", "notifierClj", @@ -351,7 +330,7 @@ "clj-nix_15": { "inputs": { "devshell": "devshell_15", - "flake-utils": "flake-utils_18", + "flake-utils": "flake-utils_20", "nixpkgs": [ "wallfly", "nixpkgs" @@ -374,7 +353,7 @@ "clj-nix_2": { "inputs": { "devshell": "devshell_2", - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_4", "nixpkgs": [ "fudo-pkgs", "helpers", @@ -398,7 +377,7 @@ "clj-nix_3": { "inputs": { "devshell": "devshell_3", - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_6", "nixpkgs": [ "fudo-secrets", "fudo-pkgs", @@ -423,7 +402,7 @@ "clj-nix_4": { "inputs": { "devshell": "devshell_4", - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_7", "nixpkgs": [ "fudo-secrets", "nexus", @@ -449,7 +428,7 @@ "clj-nix_5": { "inputs": { "devshell": "devshell_5", - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_8", "nixpkgs": [ "fudo-secrets", "nexus", @@ -475,7 +454,7 @@ "clj-nix_6": { "inputs": { "devshell": "devshell_6", - "flake-utils": "flake-utils_7", + "flake-utils": "flake-utils_9", "nixpkgs": [ "fudo-secrets", "nexus", @@ -501,7 +480,7 @@ "clj-nix_7": { "inputs": { "devshell": "devshell_7", - "flake-utils": "flake-utils_8", + "flake-utils": "flake-utils_10", "nixpkgs": [ "nexus", "nexus-client", @@ -526,7 +505,7 @@ "clj-nix_8": { "inputs": { "devshell": "devshell_8", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_11", "nixpkgs": [ "nexus", "nexus-crypto", @@ -551,7 +530,7 @@ "clj-nix_9": { "inputs": { "devshell": "devshell_9", - "flake-utils": "flake-utils_10", + "flake-utils": "flake-utils_12", "nixpkgs": [ "nexus", "nexus-server", @@ -596,8 +575,8 @@ "clj2nix_10": { "inputs": { "flake-compat": "flake-compat_11", - "nixpkgs": "nixpkgs_19", - "utils": "utils_25" + "nixpkgs": "nixpkgs_22", + "utils": "utils_27" }, "locked": { "lastModified": 1673786922, @@ -616,8 +595,8 @@ "clj2nix_11": { "inputs": { "flake-compat": "flake-compat_12", - "nixpkgs": "nixpkgs_20", - "utils": "utils_28" + "nixpkgs": "nixpkgs_23", + "utils": "utils_30" }, "locked": { "lastModified": 1673786922, @@ -636,8 +615,8 @@ "clj2nix_12": { "inputs": { "flake-compat": "flake-compat_13", - "nixpkgs": "nixpkgs_22", - "utils": "utils_34" + "nixpkgs": "nixpkgs_25", + "utils": "utils_36" }, "locked": { "lastModified": 1673786922, @@ -656,8 +635,8 @@ "clj2nix_13": { "inputs": { "flake-compat": "flake-compat_14", - "nixpkgs": "nixpkgs_23", - "utils": "utils_37" + "nixpkgs": "nixpkgs_26", + "utils": "utils_39" }, "locked": { "lastModified": 1673786922, @@ -676,8 +655,8 @@ "clj2nix_14": { "inputs": { "flake-compat": "flake-compat_15", - "nixpkgs": "nixpkgs_24", - "utils": "utils_40" + "nixpkgs": "nixpkgs_27", + "utils": "utils_42" }, "locked": { "lastModified": 1673786922, @@ -696,8 +675,8 @@ "clj2nix_15": { "inputs": { "flake-compat": "flake-compat_16", - "nixpkgs": "nixpkgs_25", - "utils": "utils_42" + "nixpkgs": "nixpkgs_28", + "utils": "utils_44" }, "locked": { "lastModified": 1673786922, @@ -756,8 +735,8 @@ "clj2nix_4": { "inputs": { "flake-compat": "flake-compat_5", - "nixpkgs": "nixpkgs_6", - "utils": "utils_7" + "nixpkgs": "nixpkgs_8", + "utils": "utils_8" }, "locked": { "lastModified": 1673786922, @@ -776,8 +755,8 @@ "clj2nix_5": { "inputs": { "flake-compat": "flake-compat_6", - "nixpkgs": "nixpkgs_9", - "utils": "utils_9" + "nixpkgs": "nixpkgs_13", + "utils": "utils_11" }, "locked": { "lastModified": 1673786922, @@ -796,8 +775,8 @@ "clj2nix_6": { "inputs": { "flake-compat": "flake-compat_7", - "nixpkgs": "nixpkgs_11", - "utils": "utils_11" + "nixpkgs": "nixpkgs_15", + "utils": "utils_13" }, "locked": { "lastModified": 1673786922, @@ -816,8 +795,8 @@ "clj2nix_7": { "inputs": { "flake-compat": "flake-compat_8", - "nixpkgs": "nixpkgs_12", - "utils": "utils_14" + "nixpkgs": "nixpkgs_16", + "utils": "utils_16" }, "locked": { "lastModified": 1673786922, @@ -836,8 +815,8 @@ "clj2nix_8": { "inputs": { "flake-compat": "flake-compat_9", - "nixpkgs": "nixpkgs_13", - "utils": "utils_17" + "nixpkgs": "nixpkgs_17", + "utils": "utils_19" }, "locked": { "lastModified": 1673786922, @@ -856,8 +835,8 @@ "clj2nix_9": { "inputs": { "flake-compat": "flake-compat_10", - "nixpkgs": "nixpkgs_18", - "utils": "utils_22" + "nixpkgs": "nixpkgs_21", + "utils": "utils_24" }, "locked": { "lastModified": 1673786922, @@ -922,7 +901,7 @@ }, "devshell_10": { "inputs": { - "flake-utils": "flake-utils_11", + "flake-utils": "flake-utils_13", "nixpkgs": [ "pricebot", "clj-nix", @@ -1063,7 +1042,7 @@ }, "devshell_15": { "inputs": { - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_19", "nixpkgs": [ "wallfly", "clj-nix", @@ -1352,8 +1331,8 @@ "dnssec-ksks": { "flake": false, "locked": { - "lastModified": 1705301167, - "narHash": "sha256-5P3/MrvGDx1fAdowvKW9EelBIYqO6VIfff8dMMY3ctE=", + "lastModified": 1707248541, + "narHash": "sha256-EzzKxX6iGKrDPV8V2kaGj2Jg4s28xX7QgUcPKVucn7k=", "path": "/secrets/dnssec", "type": "path" }, @@ -1489,14 +1468,14 @@ "entities": { "inputs": { "fudo-lib": "fudo-lib_4", - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_10" }, "locked": { - "lastModified": 1705300819, - "narHash": "sha256-OvYO4+dJwWMOOPVU7MH1gDXyza8UN8RjjsTL+rzUJtA=", + "lastModified": 1707247772, + "narHash": "sha256-qndZ2CrF8jUH104UipHmC23NxUR+vjMxlvCzSymsp4Y=", "ref": "refs/heads/master", - "rev": "1cb9f7805b8e69619410c44159a5c0d404cca81a", - "revCount": 225, + "rev": "3a1ffc2992472366c7b570a11ce57fb30690d6f4", + "revCount": 234, "type": "git", "url": "https://git.fudo.org/fudo-nix/entities.git" }, @@ -1862,11 +1841,11 @@ ] }, "locked": { - "lastModified": 1701473968, - "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "lastModified": 1706830856, + "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", "type": "github" }, "original": { @@ -1884,11 +1863,11 @@ ] }, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", "type": "github" }, "original": { @@ -1905,11 +1884,11 @@ ] }, "locked": { - "lastModified": 1701473968, - "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "lastModified": 1706830856, + "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", "type": "github" }, "original": { @@ -1928,11 +1907,11 @@ ] }, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", "type": "github" }, "original": { @@ -1949,11 +1928,11 @@ ] }, "locked": { - "lastModified": 1701473968, - "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "lastModified": 1706830856, + "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", "type": "github" }, "original": { @@ -1971,27 +1950,6 @@ "nixpkgs" ] }, - "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", - "type": "github" - }, - "original": { - "id": "flake-parts", - "type": "indirect" - } - }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "mail-server", - "arion", - "nixpkgs" - ] - }, "locked": { "lastModified": 1701473968, "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", @@ -2000,29 +1958,6 @@ "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", "type": "github" }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_8": { - "inputs": { - "nixpkgs-lib": [ - "mail-server", - "arion", - "hercules-ci-effects", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", - "type": "github" - }, "original": { "id": "flake-parts", "type": "indirect" @@ -2062,6 +1997,36 @@ } }, "flake-utils_11": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -2076,7 +2041,7 @@ "type": "github" } }, - "flake-utils_12": { + "flake-utils_14": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2091,36 +2056,6 @@ "type": "github" } }, - "flake-utils_13": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_14": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "flake-utils_15": { "locked": { "lastModified": 1656928814, @@ -2153,11 +2088,11 @@ }, "flake-utils_17": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -2181,6 +2116,21 @@ "type": "github" } }, + "flake-utils_19": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flake-utils_2": { "locked": { "lastModified": 1656928814, @@ -2196,7 +2146,7 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_20": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -2211,6 +2161,24 @@ "type": "github" } }, + "flake-utils_3": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flake-utils_4": { "locked": { "lastModified": 1656928814, @@ -2227,12 +2195,15 @@ } }, "flake-utils_5": { + "inputs": { + "systems": "systems_4" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -2347,11 +2318,11 @@ ] }, "locked": { - "lastModified": 1705300819, - "narHash": "sha256-OvYO4+dJwWMOOPVU7MH1gDXyza8UN8RjjsTL+rzUJtA=", + "lastModified": 1707592324, + "narHash": "sha256-OpWILltoP+nN+xrVa/cYNrREfW631wdju7gIxLwP6Lo=", "ref": "refs/heads/master", - "rev": "1cb9f7805b8e69619410c44159a5c0d404cca81a", - "revCount": 225, + "rev": "bdf15c64e7753b0bb1ba1e6609ca8bf1efe8f712", + "revCount": 235, "type": "git", "url": "https://git.fudo.org/fudo-nix/entities.git" }, @@ -2372,11 +2343,11 @@ ] }, "locked": { - "lastModified": 1705010387, - "narHash": "sha256-SAQz8BYOAmRAXYQ4SmZzNP9tcvImF3VkSNFwVRlv94I=", + "lastModified": 1707241980, + "narHash": "sha256-OawfqeauORw80WwlW8Yrdw7YebBhfXVh8AQZq43b9lU=", "ref": "refs/heads/master", - "rev": "814780b6d8cd767aa6725b67d804b53d1e8c30d2", - "revCount": 456, + "rev": "ac346cada8a89da3d3ff81f67126673ee7174767", + "revCount": 464, "type": "git", "url": "https://git.fudo.org/fudo-nix/home.git" }, @@ -2417,11 +2388,11 @@ }, "fudo-lib_3": { "locked": { - "lastModified": 1705184348, - "narHash": "sha256-d44DVCpKPTQ9Tdbc6s/sPoA6qVbLCPBxYzwZYP02jB8=", + "lastModified": 1707117696, + "narHash": "sha256-29O7UwcggymOtE2In5DjMLrWDlTyYDv4K4+VnJz1N10=", "ref": "refs/heads/master", - "rev": "16a105a24e51db9e962f5d85ff7779a7925ba0a9", - "revCount": 215, + "rev": "751ee6be5d414fd291eb650a105fa06da60b6f6e", + "revCount": 226, "type": "git", "url": "https://git.fudo.org/fudo-nix/lib.git" }, @@ -2466,15 +2437,16 @@ }, "fudo-pkgs_2": { "inputs": { + "google-photo-uploader-flake": "google-photo-uploader-flake", "helpers": "helpers_2", "unstableNixpkgs": "unstableNixpkgs_2" }, "locked": { - "lastModified": 1703103386, - "narHash": "sha256-+hQr7V6rVfG1wt49kkC3BgbLnsOkSfuJLCEo/ERjIfE=", + "lastModified": 1706636056, + "narHash": "sha256-YP/yvkmiRecmQyzo5JCzeKxoue4nQKJSqLOQU2YU/Kk=", "ref": "refs/heads/master", - "rev": "f975b9b4d0c0187cf70ff3f533486ca30c471083", - "revCount": 260, + "rev": "23777dfea1db2118c730d40cae21844fe45e504f", + "revCount": 275, "type": "git", "url": "https://git.fudo.org/fudo-nix/pkgs.git" }, @@ -2485,15 +2457,16 @@ }, "fudo-pkgs_3": { "inputs": { + "google-photo-uploader-flake": "google-photo-uploader-flake_2", "helpers": "helpers_3", "unstableNixpkgs": "unstableNixpkgs_3" }, "locked": { - "lastModified": 1703103386, - "narHash": "sha256-+hQr7V6rVfG1wt49kkC3BgbLnsOkSfuJLCEo/ERjIfE=", + "lastModified": 1706636056, + "narHash": "sha256-YP/yvkmiRecmQyzo5JCzeKxoue4nQKJSqLOQU2YU/Kk=", "ref": "refs/heads/master", - "rev": "f975b9b4d0c0187cf70ff3f533486ca30c471083", - "revCount": 260, + "rev": "23777dfea1db2118c730d40cae21844fe45e504f", + "revCount": 275, "type": "git", "url": "https://git.fudo.org/fudo-nix/pkgs.git" }, @@ -2513,16 +2486,16 @@ "filesystem-keys": "filesystem-keys", "fudo-pkgs": "fudo-pkgs_3", "nexus": "nexus", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_19", "service-passwords": "service-passwords", "service-secrets": "service-secrets", "site-secrets": "site-secrets", "ssh-keypairs": "ssh-keypairs", - "utils": "utils_21" + "utils": "utils_23" }, "locked": { - "lastModified": 1705426503, - "narHash": "sha256-OYtk0UKb7qb+9SdGlswLQjugIO6aQ3IgdAIntXd9tx0=", + "lastModified": 1707593250, + "narHash": "sha256-SF9H31fTTzF6tvo14ylc8OiBm8Ac1PqN/Ma+lWnO5N8=", "path": "/secrets", "type": "path" }, @@ -2595,6 +2568,84 @@ "type": "github" } }, + "gomod2nix": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1705314449, + "narHash": "sha256-yfQQ67dLejP0FLK76LKHbkzcQqNIrux6MFe32MMFGNQ=", + "owner": "nix-community", + "repo": "gomod2nix", + "rev": "30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1705314449, + "narHash": "sha256-yfQQ67dLejP0FLK76LKHbkzcQqNIrux6MFe32MMFGNQ=", + "owner": "nix-community", + "repo": "gomod2nix", + "rev": "30e3c3a9ec4ac8453282ca7f67fca9e1da12c3e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "gomod2nix", + "type": "github" + } + }, + "google-photo-uploader-flake": { + "inputs": { + "gomod2nix": "gomod2nix", + "nixpkgs": "nixpkgs_7", + "utils": "utils_7" + }, + "locked": { + "lastModified": 1706383993, + "narHash": "sha256-9tW9gK/1TLQQhOZQUtcrvmeuYkHo+WMLH0EG1q1W8Nk=", + "ref": "refs/heads/master", + "rev": "6b3dea996c6409b157a821c3f30df087d098edfd", + "revCount": 7, + "type": "git", + "url": "https://git.fudo.org/fudo-public/google-photo-uploader.git" + }, + "original": { + "type": "git", + "url": "https://git.fudo.org/fudo-public/google-photo-uploader.git" + } + }, + "google-photo-uploader-flake_2": { + "inputs": { + "gomod2nix": "gomod2nix_2", + "nixpkgs": "nixpkgs_12", + "utils": "utils_10" + }, + "locked": { + "lastModified": 1706383993, + "narHash": "sha256-9tW9gK/1TLQQhOZQUtcrvmeuYkHo+WMLH0EG1q1W8Nk=", + "ref": "refs/heads/master", + "rev": "6b3dea996c6409b157a821c3f30df087d098edfd", + "revCount": 7, + "type": "git", + "url": "https://git.fudo.org/fudo-public/google-photo-uploader.git" + }, + "original": { + "type": "git", + "url": "https://git.fudo.org/fudo-public/google-photo-uploader.git" + } + }, "grafana-module": { "inputs": { "arion": "arion_3", @@ -2664,22 +2715,6 @@ "type": "github" } }, - "haskell-flake_4": { - "locked": { - "lastModified": 1675296942, - "narHash": "sha256-u1X1sblozi5qYEcLp1hxcyo8FfDHnRUVX3dJ/tW19jY=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "c2cafce9d57bfca41794dc3b99c593155006c71e", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "0.1.0", - "repo": "haskell-flake", - "type": "github" - } - }, "helpers": { "inputs": { "clj-nix": "clj-nix", @@ -2709,7 +2744,7 @@ "snooper", "nixpkgs" ], - "utils": "utils_35" + "utils": "utils_37" }, "locked": { "lastModified": 1677792046, @@ -2733,7 +2768,7 @@ "suanni", "nixpkgs" ], - "utils": "utils_38" + "utils": "utils_40" }, "locked": { "lastModified": 1677792046, @@ -2757,7 +2792,7 @@ "tattler", "nixpkgs" ], - "utils": "utils_41" + "utils": "utils_43" }, "locked": { "lastModified": 1684439334, @@ -2783,7 +2818,7 @@ "notifierClj", "nixpkgs" ], - "utils": "utils_43" + "utils": "utils_45" }, "locked": { "lastModified": 1684439334, @@ -2804,8 +2839,8 @@ "inputs": { "clj-nix": "clj-nix_2", "clj2nix": "clj2nix_4", - "nixpkgs": "nixpkgs_7", - "utils": "utils_8" + "nixpkgs": "nixpkgs_9", + "utils": "utils_9" }, "locked": { "lastModified": 1683740681, @@ -2825,8 +2860,8 @@ "inputs": { "clj-nix": "clj-nix_3", "clj2nix": "clj2nix_5", - "nixpkgs": "nixpkgs_10", - "utils": "utils_10" + "nixpkgs": "nixpkgs_14", + "utils": "utils_12" }, "locked": { "lastModified": 1683740681, @@ -2852,7 +2887,7 @@ "nexus-client", "nixpkgs" ], - "utils": "utils_12" + "utils": "utils_14" }, "locked": { "lastModified": 1683740681, @@ -2878,7 +2913,7 @@ "nexus-crypto", "nixpkgs" ], - "utils": "utils_15" + "utils": "utils_17" }, "locked": { "lastModified": 1677792046, @@ -2904,7 +2939,7 @@ "nexus-server", "nixpkgs" ], - "utils": "utils_18" + "utils": "utils_20" }, "locked": { "lastModified": 1683740681, @@ -2929,7 +2964,7 @@ "nexus-client", "nixpkgs" ], - "utils": "utils_23" + "utils": "utils_25" }, "locked": { "lastModified": 1683740681, @@ -2954,7 +2989,7 @@ "nexus-crypto", "nixpkgs" ], - "utils": "utils_26" + "utils": "utils_28" }, "locked": { "lastModified": 1677792046, @@ -2979,7 +3014,7 @@ "nexus-server", "nixpkgs" ], - "utils": "utils_29" + "utils": "utils_31" }, "locked": { "lastModified": 1683740681, @@ -3004,11 +3039,11 @@ ] }, "locked": { - "lastModified": 1701009247, - "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", + "lastModified": 1704029560, + "narHash": "sha256-a4Iu7x1OP+uSYpqadOu8VCPY+MPF3+f6KIi+MAxlgyw=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "rev": "d5cbf433a6ae9cae05400189a8dbc6412a03ba16", "type": "github" }, "original": { @@ -3027,11 +3062,11 @@ ] }, "locked": { - "lastModified": 1701009247, - "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", + "lastModified": 1704029560, + "narHash": "sha256-a4Iu7x1OP+uSYpqadOu8VCPY+MPF3+f6KIi+MAxlgyw=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "rev": "d5cbf433a6ae9cae05400189a8dbc6412a03ba16", "type": "github" }, "original": { @@ -3050,34 +3085,11 @@ ] }, "locked": { - "lastModified": 1701009247, - "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", + "lastModified": 1704029560, + "narHash": "sha256-a4Iu7x1OP+uSYpqadOu8VCPY+MPF3+f6KIi+MAxlgyw=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, - "hercules-ci-effects_4": { - "inputs": { - "flake-parts": "flake-parts_8", - "nixpkgs": [ - "mail-server", - "arion", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1701009247, - "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "rev": "d5cbf433a6ae9cae05400189a8dbc6412a03ba16", "type": "github" }, "original": { @@ -3108,6 +3120,52 @@ "type": "github" } }, + "immich-container": { + "inputs": { + "arion": [ + "arion" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1707523346, + "narHash": "sha256-aGX32giqEUYGrs3Z8dOt6cst8TNoF3cATZyEOAS1220=", + "ref": "refs/heads/master", + "rev": "fd6cd5e3352bcef581d0ecd6f338f7b0bc85f437", + "revCount": 18, + "type": "git", + "url": "https://git.fudo.org/fudo-public/immich-container.git" + }, + "original": { + "type": "git", + "url": "https://git.fudo.org/fudo-public/immich-container.git" + } + }, + "lemmy-container": { + "inputs": { + "arion": [ + "arion" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1706310379, + "narHash": "sha256-VkHnaPBpkWoMCl4xtnfyxdOECwporks/fzcznWs1/VQ=", + "ref": "refs/heads/master", + "rev": "555a3eff5fc3cea4d8d214b08a2e140cd89f1853", + "revCount": 33, + "type": "git", + "url": "https://git.fudo.org/fudo-public/lemmy-container.git" + }, + "original": { + "type": "git", + "url": "https://git.fudo.org/fudo-public/lemmy-container.git" + } + }, "lemmy-docker": { "inputs": { "arion": [ @@ -3118,11 +3176,11 @@ ] }, "locked": { - "lastModified": 1705445346, - "narHash": "sha256-W/8I9550ZvO4XKNeInM6M1L3GhJQFU8SYNGy/g56T4c=", + "lastModified": 1705597965, + "narHash": "sha256-XzqJLlERpSaqmerGhIyEJa2aC+ZVNgJ3OufQKjdT8xY=", "ref": "refs/heads/master", - "rev": "15781aebfed726faea25bf929777d082677ce9f7", - "revCount": 87, + "rev": "b12aeeb09fced1c8990f2b11d95356cbac1d5bdd", + "revCount": 88, "type": "git", "url": "https://git.fudo.org/fudo-public/lemmy-docker.git" }, @@ -3133,17 +3191,19 @@ }, "mail-server": { "inputs": { - "arion": "arion_4", + "arion": [ + "arion" + ], "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1705092647, - "narHash": "sha256-gTD5KIC8+gOY5BMyfRky+g4R2jmQ4EwA9Vb7V1Jg6Rc=", + "lastModified": 1707341604, + "narHash": "sha256-0gHBWPhkIJKxmUit1m+MumCc3jt4aWdMhAPXgfZmMVw=", "ref": "refs/heads/master", - "rev": "7a9e23425975916ab7c6836c75f2c41a0c03d0b1", - "revCount": 257, + "rev": "293553c9ed805291f095260c224183902fee3e4c", + "revCount": 262, "type": "git", "url": "https://git.fudo.org/fudo-public/mail-server.git" }, @@ -3162,11 +3222,11 @@ ] }, "locked": { - "lastModified": 1705448666, - "narHash": "sha256-TUIMJWUG27YuoJ5jiFVHfEVYX3mCyCFnsSiv9kYaSRk=", + "lastModified": 1706557789, + "narHash": "sha256-LT/L75aU5LazOrjdBmzY01jjjU4ZkP/MwlKy7oWit7o=", "ref": "refs/heads/master", - "rev": "cbec5fe9e4dd0635f44cd343887eced846676921", - "revCount": 43, + "rev": "d3f9019ff0696497e397b2357301b183d30704aa", + "revCount": 78, "type": "git", "url": "https://git.fudo.org/fudo-public/mastodon-container.git" }, @@ -3205,11 +3265,11 @@ ] }, "locked": { - "lastModified": 1704673558, - "narHash": "sha256-OjVdyzSNbIK+i0PVepW+OQwtlUIWH2WrIqvf646WXK4=", + "lastModified": 1707412342, + "narHash": "sha256-/TSNDXfFJ2veoYLbqnnXWcG/SnVVCodguejuFVJy61g=", "ref": "refs/heads/master", - "rev": "5a7ec9d47c2b68da24ce5e42ee5bf749a7306856", - "revCount": 34, + "rev": "292536ff36d67ca14acf7238db3aab1226d2bc22", + "revCount": 37, "type": "git", "url": "https://git.fudo.org/fudo-public/nextcloud-container.git" }, @@ -3223,8 +3283,8 @@ "nexus-client": "nexus-client", "nexus-crypto": "nexus-crypto", "nexus-server": "nexus-server", - "nixpkgs": "nixpkgs_14", - "utils": "utils_20" + "nixpkgs": "nixpkgs_18", + "utils": "utils_22" }, "locked": { "lastModified": 1694023994, @@ -3248,7 +3308,7 @@ "nexus", "nixpkgs" ], - "utils": "utils_13" + "utils": "utils_15" }, "locked": { "lastModified": 1693890453, @@ -3271,7 +3331,7 @@ "nexus", "nixpkgs" ], - "utils": "utils_24" + "utils": "utils_26" }, "locked": { "lastModified": 1693890453, @@ -3295,7 +3355,7 @@ "nexus", "nixpkgs" ], - "utils": "utils_16" + "utils": "utils_18" }, "locked": { "lastModified": 1677792070, @@ -3318,7 +3378,7 @@ "nexus", "nixpkgs" ], - "utils": "utils_27" + "utils": "utils_29" }, "locked": { "lastModified": 1677792070, @@ -3342,7 +3402,7 @@ "nexus", "nixpkgs" ], - "utils": "utils_19" + "utils": "utils_21" }, "locked": { "lastModified": 1693890469, @@ -3365,7 +3425,7 @@ "nexus", "nixpkgs" ], - "utils": "utils_30" + "utils": "utils_32" }, "locked": { "lastModified": 1693890469, @@ -3389,7 +3449,7 @@ "nixpkgs": [ "nixpkgs" ], - "utils": "utils_31" + "utils": "utils_33" }, "locked": { "lastModified": 1694023994, @@ -3454,11 +3514,11 @@ }, "nixpkgsUnstable": { "locked": { - "lastModified": 1705316053, - "narHash": "sha256-J2Ey5mPFT8gdfL2XC0JTZvKaBw/b2pnyudEXFvl+dQM=", + "lastModified": 1707268954, + "narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c3e128f3c0ecc1fb04aef9f72b3dcc2f6cecf370", + "rev": "f8e2ebd66d097614d51a56a755450d4ae1632df1", "type": "github" }, "original": { @@ -3469,47 +3529,46 @@ }, "nixpkgs_10": { "locked": { - "lastModified": 1677624842, - "narHash": "sha256-4DF9DbDuK4/+KYx0L6XcPBeDHUFVCtzok2fWtwXtb5w=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d70f5cd5c3bef45f7f52698f39e7cc7a89daa7f0", - "type": "github" + "lastModified": 1699291058, + "narHash": "sha256-5ggduoaAMPHUy4riL+OrlAZE14Kh7JWX4oLEs22ZqfU=", + "path": "/nix/store/3s69yxbbl116zwga3i6cy7prplywq0bn-source", + "rev": "41de143fda10e33be0f47eab2bfe08a50f234267", + "type": "path" }, "original": { "id": "nixpkgs", - "ref": "nixos-22.11", "type": "indirect" } }, "nixpkgs_11": { "locked": { - "lastModified": 1673785507, - "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "lastModified": 1658285632, + "narHash": "sha256-zRS5S/hoeDGUbO+L95wXG9vJNwsSYcl93XiD0HQBXLk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "rev": "5342fc6fb59d0595d26883c3cadff16ce58e44f3", "type": "github" }, "original": { "owner": "NixOS", + "ref": "master", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_12": { "locked": { - "lastModified": 1673785507, - "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "lastModified": 1706098335, + "narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "rev": "a77ab169a83a4175169d78684ddd2e54486ac651", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-23.11", + "type": "indirect" } }, "nixpkgs_13": { @@ -3528,6 +3587,66 @@ } }, "nixpkgs_14": { + "locked": { + "lastModified": 1677624842, + "narHash": "sha256-4DF9DbDuK4/+KYx0L6XcPBeDHUFVCtzok2fWtwXtb5w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d70f5cd5c3bef45f7f52698f39e7cc7a89daa7f0", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-22.11", + "type": "indirect" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1673785507, + "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1673785507, + "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1673785507, + "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { "locked": { "lastModified": 1693771906, "narHash": "sha256-32EnPCaVjOiEERZ+o/2Ir7JH9pkfwJZJ27SKHNvt4yk=", @@ -3542,13 +3661,13 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_19": { "locked": { - "lastModified": 1705183652, - "narHash": "sha256-rnfkyUH0x72oHfiSDhuCHDHg3gFgF+lF8zkkg5Zihsw=", + "lastModified": 1707091808, + "narHash": "sha256-LahKBAfGbY836gtpVNnWwBTIzN7yf/uYM/S0g393r0Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "428544ae95eec077c7f823b422afae5f174dee4b", + "rev": "9f2ee8c91ac42da3ae6c6a1d21555f283458247e", "type": "github" }, "original": { @@ -3557,68 +3676,6 @@ "type": "indirect" } }, - "nixpkgs_16": { - "locked": { - "lastModified": 1701436327, - "narHash": "sha256-tRHbnoNI8SIM5O5xuxOmtSLnswEByzmnQcGGyNRjxsE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "91050ea1e57e50388fa87a3302ba12d188ef723a", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1701436327, - "narHash": "sha256-tRHbnoNI8SIM5O5xuxOmtSLnswEByzmnQcGGyNRjxsE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "91050ea1e57e50388fa87a3302ba12d188ef723a", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1673785507, - "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1673785507, - "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_2": { "locked": { "lastModified": 1637881340, @@ -3635,6 +3692,22 @@ } }, "nixpkgs_20": { + "locked": { + "lastModified": 1706913249, + "narHash": "sha256-x3M7iV++CsvRXI1fpyFPduGELUckZEhSv0XWnUopAG8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e92b6015881907e698782c77641aa49298330223", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { "locked": { "lastModified": 1673785507, "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", @@ -3649,21 +3722,6 @@ "type": "github" } }, - "nixpkgs_21": { - "locked": { - "lastModified": 1705331948, - "narHash": "sha256-qjQXfvrAT1/RKDFAMdl8Hw3m4tLVvMCc8fMqzJv0pP4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b8dd8be3c790215716e7c12b247f45ca525867e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-23.11", - "type": "indirect" - } - }, "nixpkgs_22": { "locked": { "lastModified": 1673785507, @@ -3696,17 +3754,17 @@ }, "nixpkgs_24": { "locked": { - "lastModified": 1673785507, - "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "lastModified": 1707514827, + "narHash": "sha256-Y+wqFkvikpE1epCx57PsGw+M1hX5aY5q/xgk+ebDwxI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "rev": "20f65b86b6485decb43c5498780c223571dd56ef", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-23.11", + "type": "indirect" } }, "nixpkgs_25": { @@ -3724,13 +3782,58 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_26": { "locked": { - "lastModified": 1701436327, - "narHash": "sha256-tRHbnoNI8SIM5O5xuxOmtSLnswEByzmnQcGGyNRjxsE=", + "lastModified": 1673785507, + "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "91050ea1e57e50388fa87a3302ba12d188ef723a", + "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_27": { + "locked": { + "lastModified": 1673785507, + "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1673785507, + "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1706913249, + "narHash": "sha256-x3M7iV++CsvRXI1fpyFPduGELUckZEhSv0XWnUopAG8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e92b6015881907e698782c77641aa49298330223", "type": "github" }, "original": { @@ -3771,6 +3874,37 @@ } }, "nixpkgs_6": { + "locked": { + "lastModified": 1658285632, + "narHash": "sha256-zRS5S/hoeDGUbO+L95wXG9vJNwsSYcl93XiD0HQBXLk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5342fc6fb59d0595d26883c3cadff16ce58e44f3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1706098335, + "narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a77ab169a83a4175169d78684ddd2e54486ac651", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-23.11", + "type": "indirect" + } + }, + "nixpkgs_8": { "locked": { "lastModified": 1673785507, "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", @@ -3785,7 +3919,7 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_9": { "locked": { "lastModified": 1677624842, "narHash": "sha256-4DF9DbDuK4/+KYx0L6XcPBeDHUFVCtzok2fWtwXtb5w=", @@ -3800,34 +3934,6 @@ "type": "indirect" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1699291058, - "narHash": "sha256-5ggduoaAMPHUy4riL+OrlAZE14Kh7JWX4oLEs22ZqfU=", - "path": "/nix/store/3s69yxbbl116zwga3i6cy7prplywq0bn-source", - "rev": "41de143fda10e33be0f47eab2bfe08a50f234267", - "type": "path" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1673785507, - "narHash": "sha256-EPUT8yVdvJhhjhbgnFWXXd4IUPKSOmww2+z4AmOdyPI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d06d765eeac716d8f1ca80f0935fd6fc951816ad", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, "nose": { "flake": false, "locked": { @@ -3851,7 +3957,7 @@ "tattler", "nixpkgs" ], - "utils": "utils_44" + "utils": "utils_46" }, "locked": { "lastModified": 1684784801, @@ -3889,7 +3995,7 @@ "nixpkgs": [ "nixpkgs" ], - "utils": "utils_32" + "utils": "utils_34" }, "locked": { "lastModified": 1686166350, @@ -3975,7 +4081,7 @@ "nixpkgs": [ "nixpkgs" ], - "utils": "utils_33" + "utils": "utils_35" }, "locked": { "lastModified": 1661201877, @@ -4021,13 +4127,15 @@ "fudo-pkgs": "fudo-pkgs_2", "fudo-secrets": "fudo-secrets", "grafana-module": "grafana-module", + "immich-container": "immich-container", + "lemmy-container": "lemmy-container", "lemmy-docker": "lemmy-docker", "mail-server": "mail-server", "mastodon-container": "mastodon-container", "matrix-module": "matrix-module", "nextcloud-container": "nextcloud-container", "nexus": "nexus_2", - "nixpkgs": "nixpkgs_21", + "nixpkgs": "nixpkgs_24", "nixpkgsUnstable": "nixpkgsUnstable", "objectifier": "objectifier", "pricebot": "pricebot", @@ -4116,7 +4224,7 @@ "nixpkgs": [ "nixpkgs" ], - "utils": "utils_36" + "utils": "utils_38" }, "locked": { "lastModified": 1701133174, @@ -4151,7 +4259,7 @@ "nixpkgs": [ "nixpkgs" ], - "utils": "utils_39" + "utils": "utils_41" }, "locked": { "lastModified": 1686169813, @@ -4212,6 +4320,66 @@ "type": "github" } }, + "systems_12": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_13": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_14": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_15": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_2": { "locked": { "lastModified": 1681028828, @@ -4339,7 +4507,7 @@ "nixpkgs" ], "notifierClj": "notifierClj", - "utils": "utils_45" + "utils": "utils_47" }, "locked": { "lastModified": 1692829006, @@ -4427,11 +4595,11 @@ }, "unstableNixpkgs_2": { "locked": { - "lastModified": 1693985761, - "narHash": "sha256-K5b+7j7Tt3+AqbWkcw+wMeqOAWyCD1MH26FPZyWXpdo=", + "lastModified": 1706191920, + "narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0bffda19b8af722f8069d09d8b6a24594c80b352", + "rev": "ae5c332cbb5827f6b1f02572496b141021de335f", "type": "github" }, "original": { @@ -4442,11 +4610,11 @@ }, "unstableNixpkgs_3": { "locked": { - "lastModified": 1693985761, - "narHash": "sha256-K5b+7j7Tt3+AqbWkcw+wMeqOAWyCD1MH26FPZyWXpdo=", + "lastModified": 1706191920, + "narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0bffda19b8af722f8069d09d8b6a24594c80b352", + "rev": "ae5c332cbb5827f6b1f02572496b141021de335f", "type": "github" }, "original": { @@ -4471,12 +4639,15 @@ } }, "utils_10": { + "inputs": { + "systems": "systems_5" + }, "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", "owner": "numtide", "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -4516,8 +4687,38 @@ } }, "utils_13": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_14": { + "locked": { + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_15": { "inputs": { - "systems": "systems_2" + "systems": "systems_6" }, "locked": { "lastModified": 1692799911, @@ -4533,7 +4734,7 @@ "type": "github" } }, - "utils_14": { + "utils_16": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -4548,43 +4749,13 @@ "type": "github" } }, - "utils_15": { - "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_16": { - "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "utils_17": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", "type": "github" }, "original": { @@ -4609,15 +4780,12 @@ } }, "utils_19": { - "inputs": { - "systems": "systems_3" - }, "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -4642,15 +4810,12 @@ } }, "utils_20": { - "inputs": { - "systems": "systems_4" - }, "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", "owner": "numtide", "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", "type": "github" }, "original": { @@ -4661,55 +4826,7 @@ }, "utils_21": { "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_22": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_23": { - "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_24": { - "inputs": { - "systems": "systems_6" + "systems": "systems_7" }, "locked": { "lastModified": 1692799911, @@ -4725,7 +4842,43 @@ "type": "github" } }, - "utils_25": { + "utils_22": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_23": { + "inputs": { + "systems": "systems_9" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_24": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -4740,7 +4893,7 @@ "type": "github" } }, - "utils_26": { + "utils_25": { "locked": { "lastModified": 1676283394, "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", @@ -4755,13 +4908,31 @@ "type": "github" } }, + "utils_26": { + "inputs": { + "systems": "systems_10" + }, + "locked": { + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "utils_27": { "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -4772,11 +4943,11 @@ }, "utils_28": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", "type": "github" }, "original": { @@ -4816,42 +4987,6 @@ } }, "utils_30": { - "inputs": { - "systems": "systems_7" - }, - "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_31": { - "inputs": { - "systems": "systems_8" - }, - "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_32": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -4866,13 +5001,49 @@ "type": "github" } }, - "utils_33": { + "utils_31": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_32": { + "inputs": { + "systems": "systems_11" + }, + "locked": { + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_33": { + "inputs": { + "systems": "systems_12" + }, + "locked": { + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", "type": "github" }, "original": { @@ -4897,6 +5068,36 @@ } }, "utils_35": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_36": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_37": { "locked": { "lastModified": 1676283394, "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", @@ -4911,9 +5112,9 @@ "type": "github" } }, - "utils_36": { + "utils_38": { "inputs": { - "systems": "systems_9" + "systems": "systems_13" }, "locked": { "lastModified": 1681202837, @@ -4929,7 +5130,7 @@ "type": "github" } }, - "utils_37": { + "utils_39": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -4944,36 +5145,6 @@ "type": "github" } }, - "utils_38": { - "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_39": { - "locked": { - "lastModified": 1678901627, - "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "utils_4": { "locked": { "lastModified": 1638122382, @@ -4991,11 +5162,11 @@ }, "utils_40": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", "type": "github" }, "original": { @@ -5006,11 +5177,11 @@ }, "utils_41": { "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "lastModified": 1678901627, + "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", "owner": "numtide", "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", "type": "github" }, "original": { @@ -5050,15 +5221,12 @@ } }, "utils_44": { - "inputs": { - "systems": "systems_10" - }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -5068,8 +5236,23 @@ } }, "utils_45": { + "locked": { + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_46": { "inputs": { - "systems": "systems_11" + "systems": "systems_14" }, "locked": { "lastModified": 1681202837, @@ -5085,7 +5268,25 @@ "type": "github" } }, - "utils_46": { + "utils_47": { + "inputs": { + "systems": "systems_15" + }, + "locked": { + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_48": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -5131,6 +5332,24 @@ } }, "utils_7": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_8": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -5145,7 +5364,7 @@ "type": "github" } }, - "utils_8": { + "utils_9": { "locked": { "lastModified": 1676283394, "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", @@ -5160,28 +5379,13 @@ "type": "github" } }, - "utils_9": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "wallfly": { "inputs": { "clj-nix": "clj-nix_15", "nixpkgs": [ "nixpkgs" ], - "utils": "utils_46" + "utils": "utils_48" }, "locked": { "lastModified": 1695759202, diff --git a/flake.nix b/flake.nix index 7bd94b9..d2dd806 100644 --- a/flake.nix +++ b/flake.nix @@ -98,6 +98,14 @@ }; }; + lemmy-container = { + url = "git+https://git.fudo.org/fudo-public/lemmy-container.git"; + inputs = { + nixpkgs.follows = "nixpkgs"; + arion.follows = "arion"; + }; + }; + authentik-container = { url = "git+https://git.fudo.org/fudo-nix/authentik-container.git"; inputs = { @@ -121,7 +129,18 @@ mail-server = { url = "git+https://git.fudo.org/fudo-public/mail-server.git"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs = { + arion.follows = "arion"; + nixpkgs.follows = "nixpkgs"; + }; + }; + + immich-container = { + url = "git+https://git.fudo.org/fudo-public/immich-container.git"; + inputs = { + arion.follows = "arion"; + nixpkgs.follows = "nixpkgs"; + }; }; authoritative-dns = { @@ -150,7 +169,8 @@ , objectifier, nexus, suanni, snooper, tattler, lemmy-docker , tesla-mate-container, mastodon-container, authentik-container , nextcloud-container, textfiles, matrix-module, mail-server - , authoritative-dns, frigate-container, grafana-module, ... }@inputs: + , authoritative-dns, frigate-container, grafana-module, lemmy-container + , immich-container, ... }@inputs: with nixpkgs.lib; let fudo-nixos-hosts = filterAttrs (hostname: hostOpts: hostOpts.nixos-system) @@ -232,6 +252,8 @@ authoritative-dns.nixosModules.default frigate-container.nixosModules.default grafana-module.nixosModules.default + lemmy-container.nixosModules.default + immich-container.nixosModules.default nexus.nixosModules.nexus-client nexus.nixosModules.nexus-server