aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2024-06-10 13:13:11 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2024-06-11 00:18:33 +0200
commit1c90c0dd73b5b74612be736ac8deeaa4547e2c26 (patch)
tree80a7bfcecd7478fb42c57616f706c90441475b88
parente8d50f14185867d490f002aa5c408343ea5ea062 (diff)
downloadNix-1c90c0dd73b5b74612be736ac8deeaa4547e2c26.tar.gz
Nix-1c90c0dd73b5b74612be736ac8deeaa4547e2c26.tar.zst
Nix-1c90c0dd73b5b74612be736ac8deeaa4547e2c26.zip
Migrate to borg backup
-rw-r--r--deploy/flake.lock140
-rw-r--r--flake.lock140
-rw-r--r--flakes/flake.lock138
-rw-r--r--flakes/private/chatons/flake.lock2
-rw-r--r--flakes/private/environment/flake.nix41
-rw-r--r--flakes/private/mail-relay/flake.lock2
-rw-r--r--flakes/private/milters/flake.lock2
-rw-r--r--flakes/private/monitoring/flake.lock2
-rw-r--r--flakes/private/opendmarc/flake.lock2
-rw-r--r--flakes/private/ssh/flake.lock2
-rw-r--r--flakes/private/system/flake.lock2
-rw-r--r--systems/backup-2/databases/mariadb_replication.nix1
-rw-r--r--systems/backup-2/flake.lock26
-rw-r--r--systems/dilion/flake.lock10
-rw-r--r--systems/eldiron/base.nix14
-rw-r--r--systems/eldiron/borg_backup.nix241
-rw-r--r--systems/eldiron/databases/openldap/default.nix3
-rw-r--r--systems/eldiron/duply_backup.nix278
-rw-r--r--systems/eldiron/flake.lock26
-rw-r--r--systems/eldiron/ftp.nix4
-rw-r--r--systems/eldiron/gitolite/default.nix16
-rw-r--r--systems/eldiron/pub/default.nix3
-rw-r--r--systems/eldiron/websites/cloud/default.nix9
-rw-r--r--systems/eldiron/websites/commento/default.nix3
-rw-r--r--systems/eldiron/websites/cryptpad/default.nix3
-rw-r--r--systems/eldiron/websites/tools/default.nix15
-rw-r--r--systems/monitoring-1/flake.lock18
-rw-r--r--systems/monitoring-1/monitoring-master.nix6
-rw-r--r--systems/quatresaisons/flake.lock10
-rw-r--r--systems/zoldene/flake.lock6
30 files changed, 817 insertions, 348 deletions
diff --git a/deploy/flake.lock b/deploy/flake.lock
index 6242197..eb767b5 100644
--- a/deploy/flake.lock
+++ b/deploy/flake.lock
@@ -150,7 +150,7 @@
150 }, 150 },
151 "locked": { 151 "locked": {
152 "lastModified": 1, 152 "lastModified": 1,
153 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 153 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
154 "path": "../../flakes/private/chatons", 154 "path": "../../flakes/private/chatons",
155 "type": "path" 155 "type": "path"
156 }, 156 },
@@ -165,7 +165,7 @@
165 }, 165 },
166 "locked": { 166 "locked": {
167 "lastModified": 1, 167 "lastModified": 1,
168 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 168 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
169 "path": "../../flakes/private/chatons", 169 "path": "../../flakes/private/chatons",
170 "type": "path" 170 "type": "path"
171 }, 171 },
@@ -565,7 +565,7 @@
565 "environment": { 565 "environment": {
566 "locked": { 566 "locked": {
567 "lastModified": 1, 567 "lastModified": 1,
568 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 568 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
569 "path": "../environment", 569 "path": "../environment",
570 "type": "path" 570 "type": "path"
571 }, 571 },
@@ -577,7 +577,7 @@
577 "environment_10": { 577 "environment_10": {
578 "locked": { 578 "locked": {
579 "lastModified": 1, 579 "lastModified": 1,
580 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 580 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
581 "path": "../environment", 581 "path": "../environment",
582 "type": "path" 582 "type": "path"
583 }, 583 },
@@ -589,7 +589,7 @@
589 "environment_11": { 589 "environment_11": {
590 "locked": { 590 "locked": {
591 "lastModified": 1, 591 "lastModified": 1,
592 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 592 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
593 "path": "../environment", 593 "path": "../environment",
594 "type": "path" 594 "type": "path"
595 }, 595 },
@@ -601,7 +601,7 @@
601 "environment_12": { 601 "environment_12": {
602 "locked": { 602 "locked": {
603 "lastModified": 1, 603 "lastModified": 1,
604 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 604 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
605 "path": "../environment", 605 "path": "../environment",
606 "type": "path" 606 "type": "path"
607 }, 607 },
@@ -613,7 +613,7 @@
613 "environment_13": { 613 "environment_13": {
614 "locked": { 614 "locked": {
615 "lastModified": 1, 615 "lastModified": 1,
616 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 616 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
617 "path": "../environment", 617 "path": "../environment",
618 "type": "path" 618 "type": "path"
619 }, 619 },
@@ -625,7 +625,7 @@
625 "environment_14": { 625 "environment_14": {
626 "locked": { 626 "locked": {
627 "lastModified": 1, 627 "lastModified": 1,
628 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 628 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
629 "path": "../environment", 629 "path": "../environment",
630 "type": "path" 630 "type": "path"
631 }, 631 },
@@ -637,7 +637,7 @@
637 "environment_15": { 637 "environment_15": {
638 "locked": { 638 "locked": {
639 "lastModified": 1, 639 "lastModified": 1,
640 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 640 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
641 "path": "../environment", 641 "path": "../environment",
642 "type": "path" 642 "type": "path"
643 }, 643 },
@@ -649,7 +649,7 @@
649 "environment_16": { 649 "environment_16": {
650 "locked": { 650 "locked": {
651 "lastModified": 1, 651 "lastModified": 1,
652 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 652 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
653 "path": "../environment", 653 "path": "../environment",
654 "type": "path" 654 "type": "path"
655 }, 655 },
@@ -661,7 +661,7 @@
661 "environment_17": { 661 "environment_17": {
662 "locked": { 662 "locked": {
663 "lastModified": 1, 663 "lastModified": 1,
664 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 664 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
665 "path": "../environment", 665 "path": "../environment",
666 "type": "path" 666 "type": "path"
667 }, 667 },
@@ -673,7 +673,7 @@
673 "environment_18": { 673 "environment_18": {
674 "locked": { 674 "locked": {
675 "lastModified": 1, 675 "lastModified": 1,
676 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 676 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
677 "path": "../../flakes/private/environment", 677 "path": "../../flakes/private/environment",
678 "type": "path" 678 "type": "path"
679 }, 679 },
@@ -685,7 +685,7 @@
685 "environment_19": { 685 "environment_19": {
686 "locked": { 686 "locked": {
687 "lastModified": 1, 687 "lastModified": 1,
688 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 688 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
689 "path": "../environment", 689 "path": "../environment",
690 "type": "path" 690 "type": "path"
691 }, 691 },
@@ -697,7 +697,7 @@
697 "environment_2": { 697 "environment_2": {
698 "locked": { 698 "locked": {
699 "lastModified": 1, 699 "lastModified": 1,
700 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 700 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
701 "path": "../../flakes/private/environment", 701 "path": "../../flakes/private/environment",
702 "type": "path" 702 "type": "path"
703 }, 703 },
@@ -709,7 +709,7 @@
709 "environment_20": { 709 "environment_20": {
710 "locked": { 710 "locked": {
711 "lastModified": 1, 711 "lastModified": 1,
712 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 712 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
713 "path": "../environment", 713 "path": "../environment",
714 "type": "path" 714 "type": "path"
715 }, 715 },
@@ -721,7 +721,7 @@
721 "environment_21": { 721 "environment_21": {
722 "locked": { 722 "locked": {
723 "lastModified": 1, 723 "lastModified": 1,
724 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 724 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
725 "path": "../environment", 725 "path": "../environment",
726 "type": "path" 726 "type": "path"
727 }, 727 },
@@ -733,7 +733,7 @@
733 "environment_22": { 733 "environment_22": {
734 "locked": { 734 "locked": {
735 "lastModified": 1, 735 "lastModified": 1,
736 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 736 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
737 "path": "../../flakes/private/environment", 737 "path": "../../flakes/private/environment",
738 "type": "path" 738 "type": "path"
739 }, 739 },
@@ -745,7 +745,7 @@
745 "environment_23": { 745 "environment_23": {
746 "locked": { 746 "locked": {
747 "lastModified": 1, 747 "lastModified": 1,
748 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 748 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
749 "path": "../environment", 749 "path": "../environment",
750 "type": "path" 750 "type": "path"
751 }, 751 },
@@ -757,7 +757,7 @@
757 "environment_24": { 757 "environment_24": {
758 "locked": { 758 "locked": {
759 "lastModified": 1, 759 "lastModified": 1,
760 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 760 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
761 "path": "../environment", 761 "path": "../environment",
762 "type": "path" 762 "type": "path"
763 }, 763 },
@@ -769,7 +769,7 @@
769 "environment_25": { 769 "environment_25": {
770 "locked": { 770 "locked": {
771 "lastModified": 1, 771 "lastModified": 1,
772 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 772 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
773 "path": "../environment", 773 "path": "../environment",
774 "type": "path" 774 "type": "path"
775 }, 775 },
@@ -781,7 +781,7 @@
781 "environment_26": { 781 "environment_26": {
782 "locked": { 782 "locked": {
783 "lastModified": 1, 783 "lastModified": 1,
784 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 784 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
785 "path": "../environment", 785 "path": "../environment",
786 "type": "path" 786 "type": "path"
787 }, 787 },
@@ -793,7 +793,7 @@
793 "environment_27": { 793 "environment_27": {
794 "locked": { 794 "locked": {
795 "lastModified": 1, 795 "lastModified": 1,
796 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 796 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
797 "path": "../environment", 797 "path": "../environment",
798 "type": "path" 798 "type": "path"
799 }, 799 },
@@ -805,7 +805,7 @@
805 "environment_28": { 805 "environment_28": {
806 "locked": { 806 "locked": {
807 "lastModified": 1, 807 "lastModified": 1,
808 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 808 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
809 "path": "../environment", 809 "path": "../environment",
810 "type": "path" 810 "type": "path"
811 }, 811 },
@@ -817,7 +817,7 @@
817 "environment_29": { 817 "environment_29": {
818 "locked": { 818 "locked": {
819 "lastModified": 1, 819 "lastModified": 1,
820 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 820 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
821 "path": "../environment", 821 "path": "../environment",
822 "type": "path" 822 "type": "path"
823 }, 823 },
@@ -829,7 +829,7 @@
829 "environment_3": { 829 "environment_3": {
830 "locked": { 830 "locked": {
831 "lastModified": 1, 831 "lastModified": 1,
832 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 832 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
833 "path": "../environment", 833 "path": "../environment",
834 "type": "path" 834 "type": "path"
835 }, 835 },
@@ -841,7 +841,7 @@
841 "environment_30": { 841 "environment_30": {
842 "locked": { 842 "locked": {
843 "lastModified": 1, 843 "lastModified": 1,
844 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 844 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
845 "path": "../environment", 845 "path": "../environment",
846 "type": "path" 846 "type": "path"
847 }, 847 },
@@ -853,7 +853,7 @@
853 "environment_31": { 853 "environment_31": {
854 "locked": { 854 "locked": {
855 "lastModified": 1, 855 "lastModified": 1,
856 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 856 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
857 "path": "../environment", 857 "path": "../environment",
858 "type": "path" 858 "type": "path"
859 }, 859 },
@@ -865,7 +865,7 @@
865 "environment_32": { 865 "environment_32": {
866 "locked": { 866 "locked": {
867 "lastModified": 1, 867 "lastModified": 1,
868 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 868 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
869 "path": "../environment", 869 "path": "../environment",
870 "type": "path" 870 "type": "path"
871 }, 871 },
@@ -877,7 +877,7 @@
877 "environment_4": { 877 "environment_4": {
878 "locked": { 878 "locked": {
879 "lastModified": 1, 879 "lastModified": 1,
880 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 880 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
881 "path": "../environment", 881 "path": "../environment",
882 "type": "path" 882 "type": "path"
883 }, 883 },
@@ -889,7 +889,7 @@
889 "environment_5": { 889 "environment_5": {
890 "locked": { 890 "locked": {
891 "lastModified": 1, 891 "lastModified": 1,
892 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 892 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
893 "path": "../environment", 893 "path": "../environment",
894 "type": "path" 894 "type": "path"
895 }, 895 },
@@ -901,7 +901,7 @@
901 "environment_6": { 901 "environment_6": {
902 "locked": { 902 "locked": {
903 "lastModified": 1, 903 "lastModified": 1,
904 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 904 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
905 "path": "../environment", 905 "path": "../environment",
906 "type": "path" 906 "type": "path"
907 }, 907 },
@@ -913,7 +913,7 @@
913 "environment_7": { 913 "environment_7": {
914 "locked": { 914 "locked": {
915 "lastModified": 1, 915 "lastModified": 1,
916 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 916 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
917 "path": "../environment", 917 "path": "../environment",
918 "type": "path" 918 "type": "path"
919 }, 919 },
@@ -925,7 +925,7 @@
925 "environment_8": { 925 "environment_8": {
926 "locked": { 926 "locked": {
927 "lastModified": 1, 927 "lastModified": 1,
928 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 928 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
929 "path": "../../flakes/private/environment", 929 "path": "../../flakes/private/environment",
930 "type": "path" 930 "type": "path"
931 }, 931 },
@@ -937,7 +937,7 @@
937 "environment_9": { 937 "environment_9": {
938 "locked": { 938 "locked": {
939 "lastModified": 1, 939 "lastModified": 1,
940 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 940 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
941 "path": "../environment", 941 "path": "../environment",
942 "type": "path" 942 "type": "path"
943 }, 943 },
@@ -2708,7 +2708,7 @@
2708 }, 2708 },
2709 "locked": { 2709 "locked": {
2710 "lastModified": 1, 2710 "lastModified": 1,
2711 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 2711 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
2712 "path": "../../flakes/private/mail-relay", 2712 "path": "../../flakes/private/mail-relay",
2713 "type": "path" 2713 "type": "path"
2714 }, 2714 },
@@ -2724,7 +2724,7 @@
2724 }, 2724 },
2725 "locked": { 2725 "locked": {
2726 "lastModified": 1, 2726 "lastModified": 1,
2727 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 2727 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
2728 "path": "../../flakes/private/mail-relay", 2728 "path": "../../flakes/private/mail-relay",
2729 "type": "path" 2729 "type": "path"
2730 }, 2730 },
@@ -2783,7 +2783,7 @@
2783 }, 2783 },
2784 "locked": { 2784 "locked": {
2785 "lastModified": 1, 2785 "lastModified": 1,
2786 "narHash": "sha256-bmglD7CvrNkfOtMTTLlDAGhmY4YPcZD3Qrxv0CBk5B8=", 2786 "narHash": "sha256-SDGk4cPZd8Io+ludWjpvu+LCK24STcYb77x9wMOIomQ=",
2787 "path": "../flakes", 2787 "path": "../flakes",
2788 "type": "path" 2788 "type": "path"
2789 }, 2789 },
@@ -2876,7 +2876,7 @@
2876 }, 2876 },
2877 "locked": { 2877 "locked": {
2878 "lastModified": 1, 2878 "lastModified": 1,
2879 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 2879 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
2880 "path": "../../flakes/private/milters", 2880 "path": "../../flakes/private/milters",
2881 "type": "path" 2881 "type": "path"
2882 }, 2882 },
@@ -2894,7 +2894,7 @@
2894 }, 2894 },
2895 "locked": { 2895 "locked": {
2896 "lastModified": 1, 2896 "lastModified": 1,
2897 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2897 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2898 "path": "../../flakes/private/monitoring", 2898 "path": "../../flakes/private/monitoring",
2899 "type": "path" 2899 "type": "path"
2900 }, 2900 },
@@ -2912,7 +2912,7 @@
2912 }, 2912 },
2913 "locked": { 2913 "locked": {
2914 "lastModified": 1, 2914 "lastModified": 1,
2915 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2915 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2916 "path": "../../flakes/private/monitoring", 2916 "path": "../../flakes/private/monitoring",
2917 "type": "path" 2917 "type": "path"
2918 }, 2918 },
@@ -2930,7 +2930,7 @@
2930 }, 2930 },
2931 "locked": { 2931 "locked": {
2932 "lastModified": 1, 2932 "lastModified": 1,
2933 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2933 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2934 "path": "../../flakes/private/monitoring", 2934 "path": "../../flakes/private/monitoring",
2935 "type": "path" 2935 "type": "path"
2936 }, 2936 },
@@ -2948,7 +2948,7 @@
2948 }, 2948 },
2949 "locked": { 2949 "locked": {
2950 "lastModified": 1, 2950 "lastModified": 1,
2951 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2951 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2952 "path": "../../flakes/private/monitoring", 2952 "path": "../../flakes/private/monitoring",
2953 "type": "path" 2953 "type": "path"
2954 }, 2954 },
@@ -3832,7 +3832,7 @@
3832 }, 3832 },
3833 "locked": { 3833 "locked": {
3834 "lastModified": 1, 3834 "lastModified": 1,
3835 "narHash": "sha256-90nIfmXTv1DCJThIjtlNtnkMxefYJMHLp0CHmIekgDc=", 3835 "narHash": "sha256-TxR75+H0GF5b7jczbvnQi1FltOmOQctMaW5o2Zd7aUI=",
3836 "path": "../systems/backup-2", 3836 "path": "../systems/backup-2",
3837 "type": "path" 3837 "type": "path"
3838 }, 3838 },
@@ -3855,7 +3855,7 @@
3855 }, 3855 },
3856 "locked": { 3856 "locked": {
3857 "lastModified": 1, 3857 "lastModified": 1,
3858 "narHash": "sha256-kUhSjG2OtbZMeIEykJGKUC2RovZ1prxXc8aIckE0auI=", 3858 "narHash": "sha256-w85YTOSyrw/C1rEp0O9jAONCKbuiHej3Q95OU21WNKo=",
3859 "path": "../systems/dilion", 3859 "path": "../systems/dilion",
3860 "type": "path" 3860 "type": "path"
3861 }, 3861 },
@@ -3903,7 +3903,7 @@
3903 }, 3903 },
3904 "locked": { 3904 "locked": {
3905 "lastModified": 1, 3905 "lastModified": 1,
3906 "narHash": "sha256-20vFVAd2/24Q0Lewy0eNXf94eTY96cFE8mPeKtvT5jY=", 3906 "narHash": "sha256-rJy4sjNt6TIB+FhVEbAWEXcRq0vm0IV0PiDJKy9BHC0=",
3907 "path": "../systems/eldiron", 3907 "path": "../systems/eldiron",
3908 "type": "path" 3908 "type": "path"
3909 }, 3909 },
@@ -3929,7 +3929,7 @@
3929 }, 3929 },
3930 "locked": { 3930 "locked": {
3931 "lastModified": 1, 3931 "lastModified": 1,
3932 "narHash": "sha256-BHpsgdt0NuJHTVvfTrsnNlOZdSBtPy/cTidd8sEIhx4=", 3932 "narHash": "sha256-yfTJOJJc+bOYgXNcY1ardOEfpT+lRSojgiHi68LKgqU=",
3933 "path": "../systems/monitoring-1", 3933 "path": "../systems/monitoring-1",
3934 "type": "path" 3934 "type": "path"
3935 }, 3935 },
@@ -3954,7 +3954,7 @@
3954 }, 3954 },
3955 "locked": { 3955 "locked": {
3956 "lastModified": 1, 3956 "lastModified": 1,
3957 "narHash": "sha256-lT2cXjUGDFOzRtqF4p0oyFCR4gv+VEjthk4FMbOzrL0=", 3957 "narHash": "sha256-cbrcKbfMRDK4ukn4FpwwfVNtK0JZF0pr8s1PFm1AEyY=",
3958 "path": "../systems/quatresaisons", 3958 "path": "../systems/quatresaisons",
3959 "type": "path" 3959 "type": "path"
3960 }, 3960 },
@@ -3974,7 +3974,7 @@
3974 }, 3974 },
3975 "locked": { 3975 "locked": {
3976 "lastModified": 1, 3976 "lastModified": 1,
3977 "narHash": "sha256-Q+U6JxtY67jVPjuzfwrjSGmIM73kIRrjKm0ihbUxPGQ=", 3977 "narHash": "sha256-2w+JMDIUudMpqNQ5IJhrSRlY8EDAOaf+sBfYUSGfepY=",
3978 "path": "../systems/zoldene", 3978 "path": "../systems/zoldene",
3979 "type": "path" 3979 "type": "path"
3980 }, 3980 },
@@ -7141,7 +7141,7 @@
7141 }, 7141 },
7142 "locked": { 7142 "locked": {
7143 "lastModified": 1, 7143 "lastModified": 1,
7144 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 7144 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
7145 "path": "../../flakes/private/opendmarc", 7145 "path": "../../flakes/private/opendmarc",
7146 "type": "path" 7146 "type": "path"
7147 }, 7147 },
@@ -7480,7 +7480,7 @@
7480 }, 7480 },
7481 "locked": { 7481 "locked": {
7482 "lastModified": 1, 7482 "lastModified": 1,
7483 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 7483 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
7484 "path": "../../flakes/private/chatons", 7484 "path": "../../flakes/private/chatons",
7485 "type": "path" 7485 "type": "path"
7486 }, 7486 },
@@ -7492,7 +7492,7 @@
7492 "private-environment": { 7492 "private-environment": {
7493 "locked": { 7493 "locked": {
7494 "lastModified": 1, 7494 "lastModified": 1,
7495 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 7495 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7496 "path": "../../flakes/private/environment", 7496 "path": "../../flakes/private/environment",
7497 "type": "path" 7497 "type": "path"
7498 }, 7498 },
@@ -7504,7 +7504,7 @@
7504 "private-environment_2": { 7504 "private-environment_2": {
7505 "locked": { 7505 "locked": {
7506 "lastModified": 1, 7506 "lastModified": 1,
7507 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 7507 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7508 "path": "../../flakes/private/environment", 7508 "path": "../../flakes/private/environment",
7509 "type": "path" 7509 "type": "path"
7510 }, 7510 },
@@ -7523,7 +7523,7 @@
7523 }, 7523 },
7524 "locked": { 7524 "locked": {
7525 "lastModified": 1, 7525 "lastModified": 1,
7526 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 7526 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
7527 "path": "../../flakes/private/milters", 7527 "path": "../../flakes/private/milters",
7528 "type": "path" 7528 "type": "path"
7529 }, 7529 },
@@ -7541,7 +7541,7 @@
7541 }, 7541 },
7542 "locked": { 7542 "locked": {
7543 "lastModified": 1, 7543 "lastModified": 1,
7544 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 7544 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
7545 "path": "../../flakes/private/monitoring", 7545 "path": "../../flakes/private/monitoring",
7546 "type": "path" 7546 "type": "path"
7547 }, 7547 },
@@ -7576,7 +7576,7 @@
7576 }, 7576 },
7577 "locked": { 7577 "locked": {
7578 "lastModified": 1, 7578 "lastModified": 1,
7579 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 7579 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
7580 "path": "../../flakes/private/opendmarc", 7580 "path": "../../flakes/private/opendmarc",
7581 "type": "path" 7581 "type": "path"
7582 }, 7582 },
@@ -7637,7 +7637,7 @@
7637 }, 7637 },
7638 "locked": { 7638 "locked": {
7639 "lastModified": 1, 7639 "lastModified": 1,
7640 "narHash": "sha256-gjapO6CZFeLMHUlhqBVZu5P+IJzJaPu4pnuTep4ZSuM=", 7640 "narHash": "sha256-uqftr7R3cVYwWuu8Xl6VbPVL2pqapv1bfmMJpq3LnZ4=",
7641 "path": "../../flakes/private/ssh", 7641 "path": "../../flakes/private/ssh",
7642 "type": "path" 7642 "type": "path"
7643 }, 7643 },
@@ -7656,7 +7656,7 @@
7656 }, 7656 },
7657 "locked": { 7657 "locked": {
7658 "lastModified": 1, 7658 "lastModified": 1,
7659 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 7659 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
7660 "path": "../../flakes/private/system", 7660 "path": "../../flakes/private/system",
7661 "type": "path" 7661 "type": "path"
7662 }, 7662 },
@@ -7675,7 +7675,7 @@
7675 }, 7675 },
7676 "locked": { 7676 "locked": {
7677 "lastModified": 1, 7677 "lastModified": 1,
7678 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 7678 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
7679 "path": "../../flakes/private/system", 7679 "path": "../../flakes/private/system",
7680 "type": "path" 7680 "type": "path"
7681 }, 7681 },
@@ -8347,7 +8347,7 @@
8347 }, 8347 },
8348 "locked": { 8348 "locked": {
8349 "lastModified": 1, 8349 "lastModified": 1,
8350 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 8350 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
8351 "path": "./private/chatons", 8351 "path": "./private/chatons",
8352 "type": "path" 8352 "type": "path"
8353 }, 8353 },
@@ -8359,7 +8359,7 @@
8359 "s-private-environment": { 8359 "s-private-environment": {
8360 "locked": { 8360 "locked": {
8361 "lastModified": 1, 8361 "lastModified": 1,
8362 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 8362 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
8363 "path": "./private/environment", 8363 "path": "./private/environment",
8364 "type": "path" 8364 "type": "path"
8365 }, 8365 },
@@ -8375,7 +8375,7 @@
8375 }, 8375 },
8376 "locked": { 8376 "locked": {
8377 "lastModified": 1, 8377 "lastModified": 1,
8378 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 8378 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
8379 "path": "./private/mail-relay", 8379 "path": "./private/mail-relay",
8380 "type": "path" 8380 "type": "path"
8381 }, 8381 },
@@ -8394,7 +8394,7 @@
8394 }, 8394 },
8395 "locked": { 8395 "locked": {
8396 "lastModified": 1, 8396 "lastModified": 1,
8397 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 8397 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
8398 "path": "./private/milters", 8398 "path": "./private/milters",
8399 "type": "path" 8399 "type": "path"
8400 }, 8400 },
@@ -8412,7 +8412,7 @@
8412 }, 8412 },
8413 "locked": { 8413 "locked": {
8414 "lastModified": 1, 8414 "lastModified": 1,
8415 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 8415 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
8416 "path": "./private/monitoring", 8416 "path": "./private/monitoring",
8417 "type": "path" 8417 "type": "path"
8418 }, 8418 },
@@ -8447,7 +8447,7 @@
8447 }, 8447 },
8448 "locked": { 8448 "locked": {
8449 "lastModified": 1, 8449 "lastModified": 1,
8450 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 8450 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
8451 "path": "./private/opendmarc", 8451 "path": "./private/opendmarc",
8452 "type": "path" 8452 "type": "path"
8453 }, 8453 },
@@ -8508,7 +8508,7 @@
8508 }, 8508 },
8509 "locked": { 8509 "locked": {
8510 "lastModified": 1, 8510 "lastModified": 1,
8511 "narHash": "sha256-gjapO6CZFeLMHUlhqBVZu5P+IJzJaPu4pnuTep4ZSuM=", 8511 "narHash": "sha256-uqftr7R3cVYwWuu8Xl6VbPVL2pqapv1bfmMJpq3LnZ4=",
8512 "path": "./private/ssh", 8512 "path": "./private/ssh",
8513 "type": "path" 8513 "type": "path"
8514 }, 8514 },
@@ -8527,7 +8527,7 @@
8527 }, 8527 },
8528 "locked": { 8528 "locked": {
8529 "lastModified": 1, 8529 "lastModified": 1,
8530 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 8530 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
8531 "path": "./private/system", 8531 "path": "./private/system",
8532 "type": "path" 8532 "type": "path"
8533 }, 8533 },
@@ -9140,7 +9140,7 @@
9140 }, 9140 },
9141 "locked": { 9141 "locked": {
9142 "lastModified": 1, 9142 "lastModified": 1,
9143 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9143 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9144 "path": "../../flakes/private/system", 9144 "path": "../../flakes/private/system",
9145 "type": "path" 9145 "type": "path"
9146 }, 9146 },
@@ -9159,7 +9159,7 @@
9159 }, 9159 },
9160 "locked": { 9160 "locked": {
9161 "lastModified": 1, 9161 "lastModified": 1,
9162 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9162 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9163 "path": "../../flakes/private/system", 9163 "path": "../../flakes/private/system",
9164 "type": "path" 9164 "type": "path"
9165 }, 9165 },
@@ -9178,7 +9178,7 @@
9178 }, 9178 },
9179 "locked": { 9179 "locked": {
9180 "lastModified": 1, 9180 "lastModified": 1,
9181 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9181 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9182 "path": "../../flakes/private/system", 9182 "path": "../../flakes/private/system",
9183 "type": "path" 9183 "type": "path"
9184 }, 9184 },
@@ -9197,7 +9197,7 @@
9197 }, 9197 },
9198 "locked": { 9198 "locked": {
9199 "lastModified": 1, 9199 "lastModified": 1,
9200 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9200 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9201 "path": "../../flakes/private/system", 9201 "path": "../../flakes/private/system",
9202 "type": "path" 9202 "type": "path"
9203 }, 9203 },
diff --git a/flake.lock b/flake.lock
index 260f1e4..f252167 100644
--- a/flake.lock
+++ b/flake.lock
@@ -150,7 +150,7 @@
150 }, 150 },
151 "locked": { 151 "locked": {
152 "lastModified": 1, 152 "lastModified": 1,
153 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 153 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
154 "path": "../../flakes/private/chatons", 154 "path": "../../flakes/private/chatons",
155 "type": "path" 155 "type": "path"
156 }, 156 },
@@ -165,7 +165,7 @@
165 }, 165 },
166 "locked": { 166 "locked": {
167 "lastModified": 1, 167 "lastModified": 1,
168 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 168 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
169 "path": "../../flakes/private/chatons", 169 "path": "../../flakes/private/chatons",
170 "type": "path" 170 "type": "path"
171 }, 171 },
@@ -565,7 +565,7 @@
565 "environment": { 565 "environment": {
566 "locked": { 566 "locked": {
567 "lastModified": 1, 567 "lastModified": 1,
568 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 568 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
569 "path": "../environment", 569 "path": "../environment",
570 "type": "path" 570 "type": "path"
571 }, 571 },
@@ -577,7 +577,7 @@
577 "environment_10": { 577 "environment_10": {
578 "locked": { 578 "locked": {
579 "lastModified": 1, 579 "lastModified": 1,
580 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 580 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
581 "path": "../environment", 581 "path": "../environment",
582 "type": "path" 582 "type": "path"
583 }, 583 },
@@ -589,7 +589,7 @@
589 "environment_11": { 589 "environment_11": {
590 "locked": { 590 "locked": {
591 "lastModified": 1, 591 "lastModified": 1,
592 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 592 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
593 "path": "../environment", 593 "path": "../environment",
594 "type": "path" 594 "type": "path"
595 }, 595 },
@@ -601,7 +601,7 @@
601 "environment_12": { 601 "environment_12": {
602 "locked": { 602 "locked": {
603 "lastModified": 1, 603 "lastModified": 1,
604 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 604 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
605 "path": "../environment", 605 "path": "../environment",
606 "type": "path" 606 "type": "path"
607 }, 607 },
@@ -613,7 +613,7 @@
613 "environment_13": { 613 "environment_13": {
614 "locked": { 614 "locked": {
615 "lastModified": 1, 615 "lastModified": 1,
616 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 616 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
617 "path": "../environment", 617 "path": "../environment",
618 "type": "path" 618 "type": "path"
619 }, 619 },
@@ -625,7 +625,7 @@
625 "environment_14": { 625 "environment_14": {
626 "locked": { 626 "locked": {
627 "lastModified": 1, 627 "lastModified": 1,
628 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 628 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
629 "path": "../environment", 629 "path": "../environment",
630 "type": "path" 630 "type": "path"
631 }, 631 },
@@ -637,7 +637,7 @@
637 "environment_15": { 637 "environment_15": {
638 "locked": { 638 "locked": {
639 "lastModified": 1, 639 "lastModified": 1,
640 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 640 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
641 "path": "../environment", 641 "path": "../environment",
642 "type": "path" 642 "type": "path"
643 }, 643 },
@@ -649,7 +649,7 @@
649 "environment_16": { 649 "environment_16": {
650 "locked": { 650 "locked": {
651 "lastModified": 1, 651 "lastModified": 1,
652 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 652 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
653 "path": "../environment", 653 "path": "../environment",
654 "type": "path" 654 "type": "path"
655 }, 655 },
@@ -661,7 +661,7 @@
661 "environment_17": { 661 "environment_17": {
662 "locked": { 662 "locked": {
663 "lastModified": 1, 663 "lastModified": 1,
664 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 664 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
665 "path": "../environment", 665 "path": "../environment",
666 "type": "path" 666 "type": "path"
667 }, 667 },
@@ -673,7 +673,7 @@
673 "environment_18": { 673 "environment_18": {
674 "locked": { 674 "locked": {
675 "lastModified": 1, 675 "lastModified": 1,
676 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 676 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
677 "path": "../../flakes/private/environment", 677 "path": "../../flakes/private/environment",
678 "type": "path" 678 "type": "path"
679 }, 679 },
@@ -685,7 +685,7 @@
685 "environment_19": { 685 "environment_19": {
686 "locked": { 686 "locked": {
687 "lastModified": 1, 687 "lastModified": 1,
688 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 688 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
689 "path": "../environment", 689 "path": "../environment",
690 "type": "path" 690 "type": "path"
691 }, 691 },
@@ -697,7 +697,7 @@
697 "environment_2": { 697 "environment_2": {
698 "locked": { 698 "locked": {
699 "lastModified": 1, 699 "lastModified": 1,
700 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 700 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
701 "path": "../../flakes/private/environment", 701 "path": "../../flakes/private/environment",
702 "type": "path" 702 "type": "path"
703 }, 703 },
@@ -709,7 +709,7 @@
709 "environment_20": { 709 "environment_20": {
710 "locked": { 710 "locked": {
711 "lastModified": 1, 711 "lastModified": 1,
712 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 712 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
713 "path": "../environment", 713 "path": "../environment",
714 "type": "path" 714 "type": "path"
715 }, 715 },
@@ -721,7 +721,7 @@
721 "environment_21": { 721 "environment_21": {
722 "locked": { 722 "locked": {
723 "lastModified": 1, 723 "lastModified": 1,
724 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 724 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
725 "path": "../environment", 725 "path": "../environment",
726 "type": "path" 726 "type": "path"
727 }, 727 },
@@ -733,7 +733,7 @@
733 "environment_22": { 733 "environment_22": {
734 "locked": { 734 "locked": {
735 "lastModified": 1, 735 "lastModified": 1,
736 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 736 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
737 "path": "../../flakes/private/environment", 737 "path": "../../flakes/private/environment",
738 "type": "path" 738 "type": "path"
739 }, 739 },
@@ -745,7 +745,7 @@
745 "environment_23": { 745 "environment_23": {
746 "locked": { 746 "locked": {
747 "lastModified": 1, 747 "lastModified": 1,
748 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 748 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
749 "path": "../environment", 749 "path": "../environment",
750 "type": "path" 750 "type": "path"
751 }, 751 },
@@ -757,7 +757,7 @@
757 "environment_24": { 757 "environment_24": {
758 "locked": { 758 "locked": {
759 "lastModified": 1, 759 "lastModified": 1,
760 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 760 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
761 "path": "../environment", 761 "path": "../environment",
762 "type": "path" 762 "type": "path"
763 }, 763 },
@@ -769,7 +769,7 @@
769 "environment_25": { 769 "environment_25": {
770 "locked": { 770 "locked": {
771 "lastModified": 1, 771 "lastModified": 1,
772 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 772 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
773 "path": "../environment", 773 "path": "../environment",
774 "type": "path" 774 "type": "path"
775 }, 775 },
@@ -781,7 +781,7 @@
781 "environment_26": { 781 "environment_26": {
782 "locked": { 782 "locked": {
783 "lastModified": 1, 783 "lastModified": 1,
784 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 784 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
785 "path": "../environment", 785 "path": "../environment",
786 "type": "path" 786 "type": "path"
787 }, 787 },
@@ -793,7 +793,7 @@
793 "environment_27": { 793 "environment_27": {
794 "locked": { 794 "locked": {
795 "lastModified": 1, 795 "lastModified": 1,
796 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 796 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
797 "path": "../environment", 797 "path": "../environment",
798 "type": "path" 798 "type": "path"
799 }, 799 },
@@ -805,7 +805,7 @@
805 "environment_28": { 805 "environment_28": {
806 "locked": { 806 "locked": {
807 "lastModified": 1, 807 "lastModified": 1,
808 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 808 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
809 "path": "../environment", 809 "path": "../environment",
810 "type": "path" 810 "type": "path"
811 }, 811 },
@@ -817,7 +817,7 @@
817 "environment_29": { 817 "environment_29": {
818 "locked": { 818 "locked": {
819 "lastModified": 1, 819 "lastModified": 1,
820 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 820 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
821 "path": "../environment", 821 "path": "../environment",
822 "type": "path" 822 "type": "path"
823 }, 823 },
@@ -829,7 +829,7 @@
829 "environment_3": { 829 "environment_3": {
830 "locked": { 830 "locked": {
831 "lastModified": 1, 831 "lastModified": 1,
832 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 832 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
833 "path": "../environment", 833 "path": "../environment",
834 "type": "path" 834 "type": "path"
835 }, 835 },
@@ -841,7 +841,7 @@
841 "environment_30": { 841 "environment_30": {
842 "locked": { 842 "locked": {
843 "lastModified": 1, 843 "lastModified": 1,
844 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 844 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
845 "path": "../environment", 845 "path": "../environment",
846 "type": "path" 846 "type": "path"
847 }, 847 },
@@ -853,7 +853,7 @@
853 "environment_31": { 853 "environment_31": {
854 "locked": { 854 "locked": {
855 "lastModified": 1, 855 "lastModified": 1,
856 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 856 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
857 "path": "../environment", 857 "path": "../environment",
858 "type": "path" 858 "type": "path"
859 }, 859 },
@@ -865,7 +865,7 @@
865 "environment_32": { 865 "environment_32": {
866 "locked": { 866 "locked": {
867 "lastModified": 1, 867 "lastModified": 1,
868 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 868 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
869 "path": "../environment", 869 "path": "../environment",
870 "type": "path" 870 "type": "path"
871 }, 871 },
@@ -877,7 +877,7 @@
877 "environment_4": { 877 "environment_4": {
878 "locked": { 878 "locked": {
879 "lastModified": 1, 879 "lastModified": 1,
880 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 880 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
881 "path": "../environment", 881 "path": "../environment",
882 "type": "path" 882 "type": "path"
883 }, 883 },
@@ -889,7 +889,7 @@
889 "environment_5": { 889 "environment_5": {
890 "locked": { 890 "locked": {
891 "lastModified": 1, 891 "lastModified": 1,
892 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 892 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
893 "path": "../environment", 893 "path": "../environment",
894 "type": "path" 894 "type": "path"
895 }, 895 },
@@ -901,7 +901,7 @@
901 "environment_6": { 901 "environment_6": {
902 "locked": { 902 "locked": {
903 "lastModified": 1, 903 "lastModified": 1,
904 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 904 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
905 "path": "../environment", 905 "path": "../environment",
906 "type": "path" 906 "type": "path"
907 }, 907 },
@@ -913,7 +913,7 @@
913 "environment_7": { 913 "environment_7": {
914 "locked": { 914 "locked": {
915 "lastModified": 1, 915 "lastModified": 1,
916 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 916 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
917 "path": "../environment", 917 "path": "../environment",
918 "type": "path" 918 "type": "path"
919 }, 919 },
@@ -925,7 +925,7 @@
925 "environment_8": { 925 "environment_8": {
926 "locked": { 926 "locked": {
927 "lastModified": 1, 927 "lastModified": 1,
928 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 928 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
929 "path": "../../flakes/private/environment", 929 "path": "../../flakes/private/environment",
930 "type": "path" 930 "type": "path"
931 }, 931 },
@@ -937,7 +937,7 @@
937 "environment_9": { 937 "environment_9": {
938 "locked": { 938 "locked": {
939 "lastModified": 1, 939 "lastModified": 1,
940 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 940 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
941 "path": "../environment", 941 "path": "../environment",
942 "type": "path" 942 "type": "path"
943 }, 943 },
@@ -2664,7 +2664,7 @@
2664 }, 2664 },
2665 "locked": { 2665 "locked": {
2666 "lastModified": 1, 2666 "lastModified": 1,
2667 "narHash": "sha256-bmglD7CvrNkfOtMTTLlDAGhmY4YPcZD3Qrxv0CBk5B8=", 2667 "narHash": "sha256-SDGk4cPZd8Io+ludWjpvu+LCK24STcYb77x9wMOIomQ=",
2668 "path": "./flakes", 2668 "path": "./flakes",
2669 "type": "path" 2669 "type": "path"
2670 }, 2670 },
@@ -2783,7 +2783,7 @@
2783 }, 2783 },
2784 "locked": { 2784 "locked": {
2785 "lastModified": 1, 2785 "lastModified": 1,
2786 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 2786 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
2787 "path": "../../flakes/private/mail-relay", 2787 "path": "../../flakes/private/mail-relay",
2788 "type": "path" 2788 "type": "path"
2789 }, 2789 },
@@ -2799,7 +2799,7 @@
2799 }, 2799 },
2800 "locked": { 2800 "locked": {
2801 "lastModified": 1, 2801 "lastModified": 1,
2802 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 2802 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
2803 "path": "../../flakes/private/mail-relay", 2803 "path": "../../flakes/private/mail-relay",
2804 "type": "path" 2804 "type": "path"
2805 }, 2805 },
@@ -2892,7 +2892,7 @@
2892 }, 2892 },
2893 "locked": { 2893 "locked": {
2894 "lastModified": 1, 2894 "lastModified": 1,
2895 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 2895 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
2896 "path": "../../flakes/private/milters", 2896 "path": "../../flakes/private/milters",
2897 "type": "path" 2897 "type": "path"
2898 }, 2898 },
@@ -2910,7 +2910,7 @@
2910 }, 2910 },
2911 "locked": { 2911 "locked": {
2912 "lastModified": 1, 2912 "lastModified": 1,
2913 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2913 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2914 "path": "../../flakes/private/monitoring", 2914 "path": "../../flakes/private/monitoring",
2915 "type": "path" 2915 "type": "path"
2916 }, 2916 },
@@ -2928,7 +2928,7 @@
2928 }, 2928 },
2929 "locked": { 2929 "locked": {
2930 "lastModified": 1, 2930 "lastModified": 1,
2931 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2931 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2932 "path": "../../flakes/private/monitoring", 2932 "path": "../../flakes/private/monitoring",
2933 "type": "path" 2933 "type": "path"
2934 }, 2934 },
@@ -2946,7 +2946,7 @@
2946 }, 2946 },
2947 "locked": { 2947 "locked": {
2948 "lastModified": 1, 2948 "lastModified": 1,
2949 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2949 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2950 "path": "../../flakes/private/monitoring", 2950 "path": "../../flakes/private/monitoring",
2951 "type": "path" 2951 "type": "path"
2952 }, 2952 },
@@ -2964,7 +2964,7 @@
2964 }, 2964 },
2965 "locked": { 2965 "locked": {
2966 "lastModified": 1, 2966 "lastModified": 1,
2967 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2967 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2968 "path": "../../flakes/private/monitoring", 2968 "path": "../../flakes/private/monitoring",
2969 "type": "path" 2969 "type": "path"
2970 }, 2970 },
@@ -3848,7 +3848,7 @@
3848 }, 3848 },
3849 "locked": { 3849 "locked": {
3850 "lastModified": 1, 3850 "lastModified": 1,
3851 "narHash": "sha256-90nIfmXTv1DCJThIjtlNtnkMxefYJMHLp0CHmIekgDc=", 3851 "narHash": "sha256-TxR75+H0GF5b7jczbvnQi1FltOmOQctMaW5o2Zd7aUI=",
3852 "path": "../systems/backup-2", 3852 "path": "../systems/backup-2",
3853 "type": "path" 3853 "type": "path"
3854 }, 3854 },
@@ -3871,7 +3871,7 @@
3871 }, 3871 },
3872 "locked": { 3872 "locked": {
3873 "lastModified": 1, 3873 "lastModified": 1,
3874 "narHash": "sha256-kUhSjG2OtbZMeIEykJGKUC2RovZ1prxXc8aIckE0auI=", 3874 "narHash": "sha256-w85YTOSyrw/C1rEp0O9jAONCKbuiHej3Q95OU21WNKo=",
3875 "path": "../systems/dilion", 3875 "path": "../systems/dilion",
3876 "type": "path" 3876 "type": "path"
3877 }, 3877 },
@@ -3919,7 +3919,7 @@
3919 }, 3919 },
3920 "locked": { 3920 "locked": {
3921 "lastModified": 1, 3921 "lastModified": 1,
3922 "narHash": "sha256-20vFVAd2/24Q0Lewy0eNXf94eTY96cFE8mPeKtvT5jY=", 3922 "narHash": "sha256-rJy4sjNt6TIB+FhVEbAWEXcRq0vm0IV0PiDJKy9BHC0=",
3923 "path": "../systems/eldiron", 3923 "path": "../systems/eldiron",
3924 "type": "path" 3924 "type": "path"
3925 }, 3925 },
@@ -3945,7 +3945,7 @@
3945 }, 3945 },
3946 "locked": { 3946 "locked": {
3947 "lastModified": 1, 3947 "lastModified": 1,
3948 "narHash": "sha256-BHpsgdt0NuJHTVvfTrsnNlOZdSBtPy/cTidd8sEIhx4=", 3948 "narHash": "sha256-yfTJOJJc+bOYgXNcY1ardOEfpT+lRSojgiHi68LKgqU=",
3949 "path": "../systems/monitoring-1", 3949 "path": "../systems/monitoring-1",
3950 "type": "path" 3950 "type": "path"
3951 }, 3951 },
@@ -3970,7 +3970,7 @@
3970 }, 3970 },
3971 "locked": { 3971 "locked": {
3972 "lastModified": 1, 3972 "lastModified": 1,
3973 "narHash": "sha256-lT2cXjUGDFOzRtqF4p0oyFCR4gv+VEjthk4FMbOzrL0=", 3973 "narHash": "sha256-cbrcKbfMRDK4ukn4FpwwfVNtK0JZF0pr8s1PFm1AEyY=",
3974 "path": "../systems/quatresaisons", 3974 "path": "../systems/quatresaisons",
3975 "type": "path" 3975 "type": "path"
3976 }, 3976 },
@@ -3990,7 +3990,7 @@
3990 }, 3990 },
3991 "locked": { 3991 "locked": {
3992 "lastModified": 1, 3992 "lastModified": 1,
3993 "narHash": "sha256-Q+U6JxtY67jVPjuzfwrjSGmIM73kIRrjKm0ihbUxPGQ=", 3993 "narHash": "sha256-2w+JMDIUudMpqNQ5IJhrSRlY8EDAOaf+sBfYUSGfepY=",
3994 "path": "../systems/zoldene", 3994 "path": "../systems/zoldene",
3995 "type": "path" 3995 "type": "path"
3996 }, 3996 },
@@ -7157,7 +7157,7 @@
7157 }, 7157 },
7158 "locked": { 7158 "locked": {
7159 "lastModified": 1, 7159 "lastModified": 1,
7160 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 7160 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
7161 "path": "../../flakes/private/opendmarc", 7161 "path": "../../flakes/private/opendmarc",
7162 "type": "path" 7162 "type": "path"
7163 }, 7163 },
@@ -7496,7 +7496,7 @@
7496 }, 7496 },
7497 "locked": { 7497 "locked": {
7498 "lastModified": 1, 7498 "lastModified": 1,
7499 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 7499 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
7500 "path": "../../flakes/private/chatons", 7500 "path": "../../flakes/private/chatons",
7501 "type": "path" 7501 "type": "path"
7502 }, 7502 },
@@ -7508,7 +7508,7 @@
7508 "private-environment": { 7508 "private-environment": {
7509 "locked": { 7509 "locked": {
7510 "lastModified": 1, 7510 "lastModified": 1,
7511 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 7511 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7512 "path": "../../flakes/private/environment", 7512 "path": "../../flakes/private/environment",
7513 "type": "path" 7513 "type": "path"
7514 }, 7514 },
@@ -7520,7 +7520,7 @@
7520 "private-environment_2": { 7520 "private-environment_2": {
7521 "locked": { 7521 "locked": {
7522 "lastModified": 1, 7522 "lastModified": 1,
7523 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 7523 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7524 "path": "../../flakes/private/environment", 7524 "path": "../../flakes/private/environment",
7525 "type": "path" 7525 "type": "path"
7526 }, 7526 },
@@ -7539,7 +7539,7 @@
7539 }, 7539 },
7540 "locked": { 7540 "locked": {
7541 "lastModified": 1, 7541 "lastModified": 1,
7542 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 7542 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
7543 "path": "../../flakes/private/milters", 7543 "path": "../../flakes/private/milters",
7544 "type": "path" 7544 "type": "path"
7545 }, 7545 },
@@ -7557,7 +7557,7 @@
7557 }, 7557 },
7558 "locked": { 7558 "locked": {
7559 "lastModified": 1, 7559 "lastModified": 1,
7560 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 7560 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
7561 "path": "../../flakes/private/monitoring", 7561 "path": "../../flakes/private/monitoring",
7562 "type": "path" 7562 "type": "path"
7563 }, 7563 },
@@ -7592,7 +7592,7 @@
7592 }, 7592 },
7593 "locked": { 7593 "locked": {
7594 "lastModified": 1, 7594 "lastModified": 1,
7595 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 7595 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
7596 "path": "../../flakes/private/opendmarc", 7596 "path": "../../flakes/private/opendmarc",
7597 "type": "path" 7597 "type": "path"
7598 }, 7598 },
@@ -7653,7 +7653,7 @@
7653 }, 7653 },
7654 "locked": { 7654 "locked": {
7655 "lastModified": 1, 7655 "lastModified": 1,
7656 "narHash": "sha256-gjapO6CZFeLMHUlhqBVZu5P+IJzJaPu4pnuTep4ZSuM=", 7656 "narHash": "sha256-uqftr7R3cVYwWuu8Xl6VbPVL2pqapv1bfmMJpq3LnZ4=",
7657 "path": "../../flakes/private/ssh", 7657 "path": "../../flakes/private/ssh",
7658 "type": "path" 7658 "type": "path"
7659 }, 7659 },
@@ -7672,7 +7672,7 @@
7672 }, 7672 },
7673 "locked": { 7673 "locked": {
7674 "lastModified": 1, 7674 "lastModified": 1,
7675 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 7675 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
7676 "path": "../../flakes/private/system", 7676 "path": "../../flakes/private/system",
7677 "type": "path" 7677 "type": "path"
7678 }, 7678 },
@@ -7691,7 +7691,7 @@
7691 }, 7691 },
7692 "locked": { 7692 "locked": {
7693 "lastModified": 1, 7693 "lastModified": 1,
7694 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 7694 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
7695 "path": "../../flakes/private/system", 7695 "path": "../../flakes/private/system",
7696 "type": "path" 7696 "type": "path"
7697 }, 7697 },
@@ -8363,7 +8363,7 @@
8363 }, 8363 },
8364 "locked": { 8364 "locked": {
8365 "lastModified": 1, 8365 "lastModified": 1,
8366 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 8366 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
8367 "path": "./private/chatons", 8367 "path": "./private/chatons",
8368 "type": "path" 8368 "type": "path"
8369 }, 8369 },
@@ -8375,7 +8375,7 @@
8375 "s-private-environment": { 8375 "s-private-environment": {
8376 "locked": { 8376 "locked": {
8377 "lastModified": 1, 8377 "lastModified": 1,
8378 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 8378 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
8379 "path": "./private/environment", 8379 "path": "./private/environment",
8380 "type": "path" 8380 "type": "path"
8381 }, 8381 },
@@ -8391,7 +8391,7 @@
8391 }, 8391 },
8392 "locked": { 8392 "locked": {
8393 "lastModified": 1, 8393 "lastModified": 1,
8394 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 8394 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
8395 "path": "./private/mail-relay", 8395 "path": "./private/mail-relay",
8396 "type": "path" 8396 "type": "path"
8397 }, 8397 },
@@ -8410,7 +8410,7 @@
8410 }, 8410 },
8411 "locked": { 8411 "locked": {
8412 "lastModified": 1, 8412 "lastModified": 1,
8413 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 8413 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
8414 "path": "./private/milters", 8414 "path": "./private/milters",
8415 "type": "path" 8415 "type": "path"
8416 }, 8416 },
@@ -8428,7 +8428,7 @@
8428 }, 8428 },
8429 "locked": { 8429 "locked": {
8430 "lastModified": 1, 8430 "lastModified": 1,
8431 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 8431 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
8432 "path": "./private/monitoring", 8432 "path": "./private/monitoring",
8433 "type": "path" 8433 "type": "path"
8434 }, 8434 },
@@ -8463,7 +8463,7 @@
8463 }, 8463 },
8464 "locked": { 8464 "locked": {
8465 "lastModified": 1, 8465 "lastModified": 1,
8466 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 8466 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
8467 "path": "./private/opendmarc", 8467 "path": "./private/opendmarc",
8468 "type": "path" 8468 "type": "path"
8469 }, 8469 },
@@ -8524,7 +8524,7 @@
8524 }, 8524 },
8525 "locked": { 8525 "locked": {
8526 "lastModified": 1, 8526 "lastModified": 1,
8527 "narHash": "sha256-gjapO6CZFeLMHUlhqBVZu5P+IJzJaPu4pnuTep4ZSuM=", 8527 "narHash": "sha256-uqftr7R3cVYwWuu8Xl6VbPVL2pqapv1bfmMJpq3LnZ4=",
8528 "path": "./private/ssh", 8528 "path": "./private/ssh",
8529 "type": "path" 8529 "type": "path"
8530 }, 8530 },
@@ -8543,7 +8543,7 @@
8543 }, 8543 },
8544 "locked": { 8544 "locked": {
8545 "lastModified": 1, 8545 "lastModified": 1,
8546 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 8546 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
8547 "path": "./private/system", 8547 "path": "./private/system",
8548 "type": "path" 8548 "type": "path"
8549 }, 8549 },
@@ -9149,7 +9149,7 @@
9149 }, 9149 },
9150 "locked": { 9150 "locked": {
9151 "lastModified": 1, 9151 "lastModified": 1,
9152 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9152 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9153 "path": "../../flakes/private/system", 9153 "path": "../../flakes/private/system",
9154 "type": "path" 9154 "type": "path"
9155 }, 9155 },
@@ -9168,7 +9168,7 @@
9168 }, 9168 },
9169 "locked": { 9169 "locked": {
9170 "lastModified": 1, 9170 "lastModified": 1,
9171 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9171 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9172 "path": "../../flakes/private/system", 9172 "path": "../../flakes/private/system",
9173 "type": "path" 9173 "type": "path"
9174 }, 9174 },
@@ -9187,7 +9187,7 @@
9187 }, 9187 },
9188 "locked": { 9188 "locked": {
9189 "lastModified": 1, 9189 "lastModified": 1,
9190 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9190 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9191 "path": "../../flakes/private/system", 9191 "path": "../../flakes/private/system",
9192 "type": "path" 9192 "type": "path"
9193 }, 9193 },
@@ -9206,7 +9206,7 @@
9206 }, 9206 },
9207 "locked": { 9207 "locked": {
9208 "lastModified": 1, 9208 "lastModified": 1,
9209 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9209 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9210 "path": "../../flakes/private/system", 9210 "path": "../../flakes/private/system",
9211 "type": "path" 9211 "type": "path"
9212 }, 9212 },
diff --git a/flakes/flake.lock b/flakes/flake.lock
index 991a73b..b954e98 100644
--- a/flakes/flake.lock
+++ b/flakes/flake.lock
@@ -150,7 +150,7 @@
150 }, 150 },
151 "locked": { 151 "locked": {
152 "lastModified": 1, 152 "lastModified": 1,
153 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 153 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
154 "path": "../../flakes/private/chatons", 154 "path": "../../flakes/private/chatons",
155 "type": "path" 155 "type": "path"
156 }, 156 },
@@ -165,7 +165,7 @@
165 }, 165 },
166 "locked": { 166 "locked": {
167 "lastModified": 1, 167 "lastModified": 1,
168 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 168 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
169 "path": "../../flakes/private/chatons", 169 "path": "../../flakes/private/chatons",
170 "type": "path" 170 "type": "path"
171 }, 171 },
@@ -545,7 +545,7 @@
545 "environment": { 545 "environment": {
546 "locked": { 546 "locked": {
547 "lastModified": 1, 547 "lastModified": 1,
548 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 548 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
549 "path": "../environment", 549 "path": "../environment",
550 "type": "path" 550 "type": "path"
551 }, 551 },
@@ -557,7 +557,7 @@
557 "environment_10": { 557 "environment_10": {
558 "locked": { 558 "locked": {
559 "lastModified": 1, 559 "lastModified": 1,
560 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 560 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
561 "path": "../environment", 561 "path": "../environment",
562 "type": "path" 562 "type": "path"
563 }, 563 },
@@ -569,7 +569,7 @@
569 "environment_11": { 569 "environment_11": {
570 "locked": { 570 "locked": {
571 "lastModified": 1, 571 "lastModified": 1,
572 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 572 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
573 "path": "../environment", 573 "path": "../environment",
574 "type": "path" 574 "type": "path"
575 }, 575 },
@@ -581,7 +581,7 @@
581 "environment_12": { 581 "environment_12": {
582 "locked": { 582 "locked": {
583 "lastModified": 1, 583 "lastModified": 1,
584 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 584 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
585 "path": "../environment", 585 "path": "../environment",
586 "type": "path" 586 "type": "path"
587 }, 587 },
@@ -593,7 +593,7 @@
593 "environment_13": { 593 "environment_13": {
594 "locked": { 594 "locked": {
595 "lastModified": 1, 595 "lastModified": 1,
596 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 596 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
597 "path": "../environment", 597 "path": "../environment",
598 "type": "path" 598 "type": "path"
599 }, 599 },
@@ -605,7 +605,7 @@
605 "environment_14": { 605 "environment_14": {
606 "locked": { 606 "locked": {
607 "lastModified": 1, 607 "lastModified": 1,
608 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 608 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
609 "path": "../environment", 609 "path": "../environment",
610 "type": "path" 610 "type": "path"
611 }, 611 },
@@ -617,7 +617,7 @@
617 "environment_15": { 617 "environment_15": {
618 "locked": { 618 "locked": {
619 "lastModified": 1, 619 "lastModified": 1,
620 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 620 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
621 "path": "../environment", 621 "path": "../environment",
622 "type": "path" 622 "type": "path"
623 }, 623 },
@@ -629,7 +629,7 @@
629 "environment_16": { 629 "environment_16": {
630 "locked": { 630 "locked": {
631 "lastModified": 1, 631 "lastModified": 1,
632 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 632 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
633 "path": "../environment", 633 "path": "../environment",
634 "type": "path" 634 "type": "path"
635 }, 635 },
@@ -641,7 +641,7 @@
641 "environment_17": { 641 "environment_17": {
642 "locked": { 642 "locked": {
643 "lastModified": 1, 643 "lastModified": 1,
644 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 644 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
645 "path": "../environment", 645 "path": "../environment",
646 "type": "path" 646 "type": "path"
647 }, 647 },
@@ -653,7 +653,7 @@
653 "environment_18": { 653 "environment_18": {
654 "locked": { 654 "locked": {
655 "lastModified": 1, 655 "lastModified": 1,
656 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 656 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
657 "path": "../../flakes/private/environment", 657 "path": "../../flakes/private/environment",
658 "type": "path" 658 "type": "path"
659 }, 659 },
@@ -665,7 +665,7 @@
665 "environment_19": { 665 "environment_19": {
666 "locked": { 666 "locked": {
667 "lastModified": 1, 667 "lastModified": 1,
668 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 668 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
669 "path": "../environment", 669 "path": "../environment",
670 "type": "path" 670 "type": "path"
671 }, 671 },
@@ -677,7 +677,7 @@
677 "environment_2": { 677 "environment_2": {
678 "locked": { 678 "locked": {
679 "lastModified": 1, 679 "lastModified": 1,
680 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 680 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
681 "path": "../../flakes/private/environment", 681 "path": "../../flakes/private/environment",
682 "type": "path" 682 "type": "path"
683 }, 683 },
@@ -689,7 +689,7 @@
689 "environment_20": { 689 "environment_20": {
690 "locked": { 690 "locked": {
691 "lastModified": 1, 691 "lastModified": 1,
692 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 692 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
693 "path": "../environment", 693 "path": "../environment",
694 "type": "path" 694 "type": "path"
695 }, 695 },
@@ -701,7 +701,7 @@
701 "environment_21": { 701 "environment_21": {
702 "locked": { 702 "locked": {
703 "lastModified": 1, 703 "lastModified": 1,
704 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 704 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
705 "path": "../environment", 705 "path": "../environment",
706 "type": "path" 706 "type": "path"
707 }, 707 },
@@ -713,7 +713,7 @@
713 "environment_22": { 713 "environment_22": {
714 "locked": { 714 "locked": {
715 "lastModified": 1, 715 "lastModified": 1,
716 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 716 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
717 "path": "../../flakes/private/environment", 717 "path": "../../flakes/private/environment",
718 "type": "path" 718 "type": "path"
719 }, 719 },
@@ -725,7 +725,7 @@
725 "environment_23": { 725 "environment_23": {
726 "locked": { 726 "locked": {
727 "lastModified": 1, 727 "lastModified": 1,
728 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 728 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
729 "path": "../environment", 729 "path": "../environment",
730 "type": "path" 730 "type": "path"
731 }, 731 },
@@ -737,7 +737,7 @@
737 "environment_24": { 737 "environment_24": {
738 "locked": { 738 "locked": {
739 "lastModified": 1, 739 "lastModified": 1,
740 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 740 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
741 "path": "../environment", 741 "path": "../environment",
742 "type": "path" 742 "type": "path"
743 }, 743 },
@@ -749,7 +749,7 @@
749 "environment_25": { 749 "environment_25": {
750 "locked": { 750 "locked": {
751 "lastModified": 1, 751 "lastModified": 1,
752 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 752 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
753 "path": "../environment", 753 "path": "../environment",
754 "type": "path" 754 "type": "path"
755 }, 755 },
@@ -761,7 +761,7 @@
761 "environment_26": { 761 "environment_26": {
762 "locked": { 762 "locked": {
763 "lastModified": 1, 763 "lastModified": 1,
764 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 764 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
765 "path": "../environment", 765 "path": "../environment",
766 "type": "path" 766 "type": "path"
767 }, 767 },
@@ -773,7 +773,7 @@
773 "environment_27": { 773 "environment_27": {
774 "locked": { 774 "locked": {
775 "lastModified": 1, 775 "lastModified": 1,
776 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 776 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
777 "path": "../environment", 777 "path": "../environment",
778 "type": "path" 778 "type": "path"
779 }, 779 },
@@ -785,7 +785,7 @@
785 "environment_28": { 785 "environment_28": {
786 "locked": { 786 "locked": {
787 "lastModified": 1, 787 "lastModified": 1,
788 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 788 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
789 "path": "../environment", 789 "path": "../environment",
790 "type": "path" 790 "type": "path"
791 }, 791 },
@@ -797,7 +797,7 @@
797 "environment_29": { 797 "environment_29": {
798 "locked": { 798 "locked": {
799 "lastModified": 1, 799 "lastModified": 1,
800 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 800 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
801 "path": "../environment", 801 "path": "../environment",
802 "type": "path" 802 "type": "path"
803 }, 803 },
@@ -809,7 +809,7 @@
809 "environment_3": { 809 "environment_3": {
810 "locked": { 810 "locked": {
811 "lastModified": 1, 811 "lastModified": 1,
812 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 812 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
813 "path": "../environment", 813 "path": "../environment",
814 "type": "path" 814 "type": "path"
815 }, 815 },
@@ -821,7 +821,7 @@
821 "environment_30": { 821 "environment_30": {
822 "locked": { 822 "locked": {
823 "lastModified": 1, 823 "lastModified": 1,
824 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 824 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
825 "path": "../environment", 825 "path": "../environment",
826 "type": "path" 826 "type": "path"
827 }, 827 },
@@ -833,7 +833,7 @@
833 "environment_31": { 833 "environment_31": {
834 "locked": { 834 "locked": {
835 "lastModified": 1, 835 "lastModified": 1,
836 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 836 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
837 "path": "../environment", 837 "path": "../environment",
838 "type": "path" 838 "type": "path"
839 }, 839 },
@@ -845,7 +845,7 @@
845 "environment_32": { 845 "environment_32": {
846 "locked": { 846 "locked": {
847 "lastModified": 1, 847 "lastModified": 1,
848 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 848 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
849 "path": "../environment", 849 "path": "../environment",
850 "type": "path" 850 "type": "path"
851 }, 851 },
@@ -857,7 +857,7 @@
857 "environment_4": { 857 "environment_4": {
858 "locked": { 858 "locked": {
859 "lastModified": 1, 859 "lastModified": 1,
860 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 860 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
861 "path": "../environment", 861 "path": "../environment",
862 "type": "path" 862 "type": "path"
863 }, 863 },
@@ -869,7 +869,7 @@
869 "environment_5": { 869 "environment_5": {
870 "locked": { 870 "locked": {
871 "lastModified": 1, 871 "lastModified": 1,
872 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 872 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
873 "path": "../environment", 873 "path": "../environment",
874 "type": "path" 874 "type": "path"
875 }, 875 },
@@ -881,7 +881,7 @@
881 "environment_6": { 881 "environment_6": {
882 "locked": { 882 "locked": {
883 "lastModified": 1, 883 "lastModified": 1,
884 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 884 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
885 "path": "../environment", 885 "path": "../environment",
886 "type": "path" 886 "type": "path"
887 }, 887 },
@@ -893,7 +893,7 @@
893 "environment_7": { 893 "environment_7": {
894 "locked": { 894 "locked": {
895 "lastModified": 1, 895 "lastModified": 1,
896 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 896 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
897 "path": "../environment", 897 "path": "../environment",
898 "type": "path" 898 "type": "path"
899 }, 899 },
@@ -905,7 +905,7 @@
905 "environment_8": { 905 "environment_8": {
906 "locked": { 906 "locked": {
907 "lastModified": 1, 907 "lastModified": 1,
908 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 908 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
909 "path": "../../flakes/private/environment", 909 "path": "../../flakes/private/environment",
910 "type": "path" 910 "type": "path"
911 }, 911 },
@@ -917,7 +917,7 @@
917 "environment_9": { 917 "environment_9": {
918 "locked": { 918 "locked": {
919 "lastModified": 1, 919 "lastModified": 1,
920 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 920 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
921 "path": "../environment", 921 "path": "../environment",
922 "type": "path" 922 "type": "path"
923 }, 923 },
@@ -2688,7 +2688,7 @@
2688 }, 2688 },
2689 "locked": { 2689 "locked": {
2690 "lastModified": 1, 2690 "lastModified": 1,
2691 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 2691 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
2692 "path": "../../flakes/private/mail-relay", 2692 "path": "../../flakes/private/mail-relay",
2693 "type": "path" 2693 "type": "path"
2694 }, 2694 },
@@ -2704,7 +2704,7 @@
2704 }, 2704 },
2705 "locked": { 2705 "locked": {
2706 "lastModified": 1, 2706 "lastModified": 1,
2707 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 2707 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
2708 "path": "../../flakes/private/mail-relay", 2708 "path": "../../flakes/private/mail-relay",
2709 "type": "path" 2709 "type": "path"
2710 }, 2710 },
@@ -2797,7 +2797,7 @@
2797 }, 2797 },
2798 "locked": { 2798 "locked": {
2799 "lastModified": 1, 2799 "lastModified": 1,
2800 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 2800 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
2801 "path": "../../flakes/private/milters", 2801 "path": "../../flakes/private/milters",
2802 "type": "path" 2802 "type": "path"
2803 }, 2803 },
@@ -2815,7 +2815,7 @@
2815 }, 2815 },
2816 "locked": { 2816 "locked": {
2817 "lastModified": 1, 2817 "lastModified": 1,
2818 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2818 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2819 "path": "../../flakes/private/monitoring", 2819 "path": "../../flakes/private/monitoring",
2820 "type": "path" 2820 "type": "path"
2821 }, 2821 },
@@ -2833,7 +2833,7 @@
2833 }, 2833 },
2834 "locked": { 2834 "locked": {
2835 "lastModified": 1, 2835 "lastModified": 1,
2836 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2836 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2837 "path": "../../flakes/private/monitoring", 2837 "path": "../../flakes/private/monitoring",
2838 "type": "path" 2838 "type": "path"
2839 }, 2839 },
@@ -2851,7 +2851,7 @@
2851 }, 2851 },
2852 "locked": { 2852 "locked": {
2853 "lastModified": 1, 2853 "lastModified": 1,
2854 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2854 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2855 "path": "../../flakes/private/monitoring", 2855 "path": "../../flakes/private/monitoring",
2856 "type": "path" 2856 "type": "path"
2857 }, 2857 },
@@ -2869,7 +2869,7 @@
2869 }, 2869 },
2870 "locked": { 2870 "locked": {
2871 "lastModified": 1, 2871 "lastModified": 1,
2872 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2872 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2873 "path": "../../flakes/private/monitoring", 2873 "path": "../../flakes/private/monitoring",
2874 "type": "path" 2874 "type": "path"
2875 }, 2875 },
@@ -3753,7 +3753,7 @@
3753 }, 3753 },
3754 "locked": { 3754 "locked": {
3755 "lastModified": 1, 3755 "lastModified": 1,
3756 "narHash": "sha256-90nIfmXTv1DCJThIjtlNtnkMxefYJMHLp0CHmIekgDc=", 3756 "narHash": "sha256-TxR75+H0GF5b7jczbvnQi1FltOmOQctMaW5o2Zd7aUI=",
3757 "path": "../systems/backup-2", 3757 "path": "../systems/backup-2",
3758 "type": "path" 3758 "type": "path"
3759 }, 3759 },
@@ -3776,7 +3776,7 @@
3776 }, 3776 },
3777 "locked": { 3777 "locked": {
3778 "lastModified": 1, 3778 "lastModified": 1,
3779 "narHash": "sha256-kUhSjG2OtbZMeIEykJGKUC2RovZ1prxXc8aIckE0auI=", 3779 "narHash": "sha256-w85YTOSyrw/C1rEp0O9jAONCKbuiHej3Q95OU21WNKo=",
3780 "path": "../systems/dilion", 3780 "path": "../systems/dilion",
3781 "type": "path" 3781 "type": "path"
3782 }, 3782 },
@@ -3824,7 +3824,7 @@
3824 }, 3824 },
3825 "locked": { 3825 "locked": {
3826 "lastModified": 1, 3826 "lastModified": 1,
3827 "narHash": "sha256-20vFVAd2/24Q0Lewy0eNXf94eTY96cFE8mPeKtvT5jY=", 3827 "narHash": "sha256-rJy4sjNt6TIB+FhVEbAWEXcRq0vm0IV0PiDJKy9BHC0=",
3828 "path": "../systems/eldiron", 3828 "path": "../systems/eldiron",
3829 "type": "path" 3829 "type": "path"
3830 }, 3830 },
@@ -3850,7 +3850,7 @@
3850 }, 3850 },
3851 "locked": { 3851 "locked": {
3852 "lastModified": 1, 3852 "lastModified": 1,
3853 "narHash": "sha256-BHpsgdt0NuJHTVvfTrsnNlOZdSBtPy/cTidd8sEIhx4=", 3853 "narHash": "sha256-yfTJOJJc+bOYgXNcY1ardOEfpT+lRSojgiHi68LKgqU=",
3854 "path": "../systems/monitoring-1", 3854 "path": "../systems/monitoring-1",
3855 "type": "path" 3855 "type": "path"
3856 }, 3856 },
@@ -3875,7 +3875,7 @@
3875 }, 3875 },
3876 "locked": { 3876 "locked": {
3877 "lastModified": 1, 3877 "lastModified": 1,
3878 "narHash": "sha256-lT2cXjUGDFOzRtqF4p0oyFCR4gv+VEjthk4FMbOzrL0=", 3878 "narHash": "sha256-cbrcKbfMRDK4ukn4FpwwfVNtK0JZF0pr8s1PFm1AEyY=",
3879 "path": "../systems/quatresaisons", 3879 "path": "../systems/quatresaisons",
3880 "type": "path" 3880 "type": "path"
3881 }, 3881 },
@@ -3895,7 +3895,7 @@
3895 }, 3895 },
3896 "locked": { 3896 "locked": {
3897 "lastModified": 1, 3897 "lastModified": 1,
3898 "narHash": "sha256-Q+U6JxtY67jVPjuzfwrjSGmIM73kIRrjKm0ihbUxPGQ=", 3898 "narHash": "sha256-2w+JMDIUudMpqNQ5IJhrSRlY8EDAOaf+sBfYUSGfepY=",
3899 "path": "../systems/zoldene", 3899 "path": "../systems/zoldene",
3900 "type": "path" 3900 "type": "path"
3901 }, 3901 },
@@ -6984,7 +6984,7 @@
6984 }, 6984 },
6985 "locked": { 6985 "locked": {
6986 "lastModified": 1, 6986 "lastModified": 1,
6987 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 6987 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
6988 "path": "../../flakes/private/opendmarc", 6988 "path": "../../flakes/private/opendmarc",
6989 "type": "path" 6989 "type": "path"
6990 }, 6990 },
@@ -7323,7 +7323,7 @@
7323 }, 7323 },
7324 "locked": { 7324 "locked": {
7325 "lastModified": 1, 7325 "lastModified": 1,
7326 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 7326 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
7327 "path": "../../flakes/private/chatons", 7327 "path": "../../flakes/private/chatons",
7328 "type": "path" 7328 "type": "path"
7329 }, 7329 },
@@ -7335,7 +7335,7 @@
7335 "private-environment": { 7335 "private-environment": {
7336 "locked": { 7336 "locked": {
7337 "lastModified": 1, 7337 "lastModified": 1,
7338 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 7338 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7339 "path": "../../flakes/private/environment", 7339 "path": "../../flakes/private/environment",
7340 "type": "path" 7340 "type": "path"
7341 }, 7341 },
@@ -7347,7 +7347,7 @@
7347 "private-environment_2": { 7347 "private-environment_2": {
7348 "locked": { 7348 "locked": {
7349 "lastModified": 1, 7349 "lastModified": 1,
7350 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 7350 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7351 "path": "../../flakes/private/environment", 7351 "path": "../../flakes/private/environment",
7352 "type": "path" 7352 "type": "path"
7353 }, 7353 },
@@ -7366,7 +7366,7 @@
7366 }, 7366 },
7367 "locked": { 7367 "locked": {
7368 "lastModified": 1, 7368 "lastModified": 1,
7369 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 7369 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
7370 "path": "../../flakes/private/milters", 7370 "path": "../../flakes/private/milters",
7371 "type": "path" 7371 "type": "path"
7372 }, 7372 },
@@ -7384,7 +7384,7 @@
7384 }, 7384 },
7385 "locked": { 7385 "locked": {
7386 "lastModified": 1, 7386 "lastModified": 1,
7387 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 7387 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
7388 "path": "../../flakes/private/monitoring", 7388 "path": "../../flakes/private/monitoring",
7389 "type": "path" 7389 "type": "path"
7390 }, 7390 },
@@ -7419,7 +7419,7 @@
7419 }, 7419 },
7420 "locked": { 7420 "locked": {
7421 "lastModified": 1, 7421 "lastModified": 1,
7422 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 7422 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
7423 "path": "../../flakes/private/opendmarc", 7423 "path": "../../flakes/private/opendmarc",
7424 "type": "path" 7424 "type": "path"
7425 }, 7425 },
@@ -7480,7 +7480,7 @@
7480 }, 7480 },
7481 "locked": { 7481 "locked": {
7482 "lastModified": 1, 7482 "lastModified": 1,
7483 "narHash": "sha256-gjapO6CZFeLMHUlhqBVZu5P+IJzJaPu4pnuTep4ZSuM=", 7483 "narHash": "sha256-uqftr7R3cVYwWuu8Xl6VbPVL2pqapv1bfmMJpq3LnZ4=",
7484 "path": "../../flakes/private/ssh", 7484 "path": "../../flakes/private/ssh",
7485 "type": "path" 7485 "type": "path"
7486 }, 7486 },
@@ -7499,7 +7499,7 @@
7499 }, 7499 },
7500 "locked": { 7500 "locked": {
7501 "lastModified": 1, 7501 "lastModified": 1,
7502 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 7502 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
7503 "path": "../../flakes/private/system", 7503 "path": "../../flakes/private/system",
7504 "type": "path" 7504 "type": "path"
7505 }, 7505 },
@@ -7518,7 +7518,7 @@
7518 }, 7518 },
7519 "locked": { 7519 "locked": {
7520 "lastModified": 1, 7520 "lastModified": 1,
7521 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 7521 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
7522 "path": "../../flakes/private/system", 7522 "path": "../../flakes/private/system",
7523 "type": "path" 7523 "type": "path"
7524 }, 7524 },
@@ -8229,7 +8229,7 @@
8229 }, 8229 },
8230 "locked": { 8230 "locked": {
8231 "lastModified": 1, 8231 "lastModified": 1,
8232 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 8232 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
8233 "path": "./private/chatons", 8233 "path": "./private/chatons",
8234 "type": "path" 8234 "type": "path"
8235 }, 8235 },
@@ -8241,7 +8241,7 @@
8241 "s-private-environment": { 8241 "s-private-environment": {
8242 "locked": { 8242 "locked": {
8243 "lastModified": 1, 8243 "lastModified": 1,
8244 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 8244 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
8245 "path": "./private/environment", 8245 "path": "./private/environment",
8246 "type": "path" 8246 "type": "path"
8247 }, 8247 },
@@ -8257,7 +8257,7 @@
8257 }, 8257 },
8258 "locked": { 8258 "locked": {
8259 "lastModified": 1, 8259 "lastModified": 1,
8260 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 8260 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
8261 "path": "./private/mail-relay", 8261 "path": "./private/mail-relay",
8262 "type": "path" 8262 "type": "path"
8263 }, 8263 },
@@ -8276,7 +8276,7 @@
8276 }, 8276 },
8277 "locked": { 8277 "locked": {
8278 "lastModified": 1, 8278 "lastModified": 1,
8279 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 8279 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
8280 "path": "./private/milters", 8280 "path": "./private/milters",
8281 "type": "path" 8281 "type": "path"
8282 }, 8282 },
@@ -8294,7 +8294,7 @@
8294 }, 8294 },
8295 "locked": { 8295 "locked": {
8296 "lastModified": 1, 8296 "lastModified": 1,
8297 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 8297 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
8298 "path": "./private/monitoring", 8298 "path": "./private/monitoring",
8299 "type": "path" 8299 "type": "path"
8300 }, 8300 },
@@ -8329,7 +8329,7 @@
8329 }, 8329 },
8330 "locked": { 8330 "locked": {
8331 "lastModified": 1, 8331 "lastModified": 1,
8332 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 8332 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
8333 "path": "./private/opendmarc", 8333 "path": "./private/opendmarc",
8334 "type": "path" 8334 "type": "path"
8335 }, 8335 },
@@ -8390,7 +8390,7 @@
8390 }, 8390 },
8391 "locked": { 8391 "locked": {
8392 "lastModified": 1, 8392 "lastModified": 1,
8393 "narHash": "sha256-gjapO6CZFeLMHUlhqBVZu5P+IJzJaPu4pnuTep4ZSuM=", 8393 "narHash": "sha256-uqftr7R3cVYwWuu8Xl6VbPVL2pqapv1bfmMJpq3LnZ4=",
8394 "path": "./private/ssh", 8394 "path": "./private/ssh",
8395 "type": "path" 8395 "type": "path"
8396 }, 8396 },
@@ -8409,7 +8409,7 @@
8409 }, 8409 },
8410 "locked": { 8410 "locked": {
8411 "lastModified": 1, 8411 "lastModified": 1,
8412 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 8412 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
8413 "path": "./private/system", 8413 "path": "./private/system",
8414 "type": "path" 8414 "type": "path"
8415 }, 8415 },
@@ -9015,7 +9015,7 @@
9015 }, 9015 },
9016 "locked": { 9016 "locked": {
9017 "lastModified": 1, 9017 "lastModified": 1,
9018 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9018 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9019 "path": "../../flakes/private/system", 9019 "path": "../../flakes/private/system",
9020 "type": "path" 9020 "type": "path"
9021 }, 9021 },
@@ -9034,7 +9034,7 @@
9034 }, 9034 },
9035 "locked": { 9035 "locked": {
9036 "lastModified": 1, 9036 "lastModified": 1,
9037 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9037 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9038 "path": "../../flakes/private/system", 9038 "path": "../../flakes/private/system",
9039 "type": "path" 9039 "type": "path"
9040 }, 9040 },
@@ -9053,7 +9053,7 @@
9053 }, 9053 },
9054 "locked": { 9054 "locked": {
9055 "lastModified": 1, 9055 "lastModified": 1,
9056 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9056 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9057 "path": "../../flakes/private/system", 9057 "path": "../../flakes/private/system",
9058 "type": "path" 9058 "type": "path"
9059 }, 9059 },
@@ -9072,7 +9072,7 @@
9072 }, 9072 },
9073 "locked": { 9073 "locked": {
9074 "lastModified": 1, 9074 "lastModified": 1,
9075 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 9075 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
9076 "path": "../../flakes/private/system", 9076 "path": "../../flakes/private/system",
9077 "type": "path" 9077 "type": "path"
9078 }, 9078 },
diff --git a/flakes/private/chatons/flake.lock b/flakes/private/chatons/flake.lock
index 5e84cc2..2925f6c 100644
--- a/flakes/private/chatons/flake.lock
+++ b/flakes/private/chatons/flake.lock
@@ -3,7 +3,7 @@
3 "environment": { 3 "environment": {
4 "locked": { 4 "locked": {
5 "lastModified": 1, 5 "lastModified": 1,
6 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 6 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7 "path": "../environment", 7 "path": "../environment",
8 "type": "path" 8 "type": "path"
9 }, 9 },
diff --git a/flakes/private/environment/flake.nix b/flakes/private/environment/flake.nix
index 24cbb7a..49b203e 100644
--- a/flakes/private/environment/flake.nix
+++ b/flakes/private/environment/flake.nix
@@ -369,6 +369,36 @@
369 }; 369 };
370 }; 370 };
371 }; 371 };
372 borg_backup = mkOption {
373 description = ''
374 Remote backup with borg/borgmatic
375 '';
376 type = submodule {
377 options = {
378 password = mkOption { type = str; description = "Password for encrypting files"; };
379 remotes = mkOption {
380 type = attrsOf (submodule {
381 options = {
382 remote = mkOption {
383 type = functionTo str;
384 example = literalExample ''
385 bucket: "ssh://some_host/${bucket}";
386 '';
387 description = ''
388 Function.
389 Takes a bucket name as argument and returns a url
390 '';
391 };
392 sshRsyncPort = mkOption { type = str; default = "22"; description = "SSH port"; };
393 sshRsyncHost = mkOption { type = nullOr str; default = null; description = "SSH host"; };
394
395 sshKnownHosts = mkOption { type = nullOr str; default = null; description = "Ssh known hosts"; };
396 };
397 });
398 };
399 };
400 };
401 };
372 backup = mkOption { 402 backup = mkOption {
373 description = '' 403 description = ''
374 Remote backup with duplicity 404 Remote backup with duplicity
@@ -379,6 +409,9 @@
379 remotes = mkOption { 409 remotes = mkOption {
380 type = attrsOf (submodule { 410 type = attrsOf (submodule {
381 options = { 411 options = {
412 remote_type = mkOption {
413 type = enum [ "s3" "rsync" ];
414 };
382 remote = mkOption { 415 remote = mkOption {
383 type = functionTo str; 416 type = functionTo str;
384 example = literalExample '' 417 example = literalExample ''
@@ -389,8 +422,12 @@
389 Takes a bucket name as argument and returns a url 422 Takes a bucket name as argument and returns a url
390 ''; 423 '';
391 }; 424 };
392 accessKeyId = mkOption { type = str; description = "Remote access-key"; }; 425 sshRsyncPort = mkOption { type = str; default = "22"; description = "SSH port for rsync"; };
393 secretAccessKey = mkOption { type = str; description = "Remote access secret"; }; 426 sshRsyncHost = mkOption { type = nullOr str; default = null; description = "SSH host for rsync"; };
427
428 sshKnownHosts = mkOption { type = nullOr str; default = null; description = "Ssh known hosts"; };
429 s3AccessKeyId = mkOption { type = nullOr str; default = null; description = "Remote access-key"; };
430 s3SecretAccessKey = mkOption { type = nullOr str; default = null; description = "Remote access secret"; };
394 }; 431 };
395 }); 432 });
396 }; 433 };
diff --git a/flakes/private/mail-relay/flake.lock b/flakes/private/mail-relay/flake.lock
index d1447b7..69406f1 100644
--- a/flakes/private/mail-relay/flake.lock
+++ b/flakes/private/mail-relay/flake.lock
@@ -3,7 +3,7 @@
3 "environment": { 3 "environment": {
4 "locked": { 4 "locked": {
5 "lastModified": 1, 5 "lastModified": 1,
6 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 6 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7 "path": "../environment", 7 "path": "../environment",
8 "type": "path" 8 "type": "path"
9 }, 9 },
diff --git a/flakes/private/milters/flake.lock b/flakes/private/milters/flake.lock
index e2366fa..31d3d4c 100644
--- a/flakes/private/milters/flake.lock
+++ b/flakes/private/milters/flake.lock
@@ -3,7 +3,7 @@
3 "environment": { 3 "environment": {
4 "locked": { 4 "locked": {
5 "lastModified": 1, 5 "lastModified": 1,
6 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 6 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7 "path": "../environment", 7 "path": "../environment",
8 "type": "path" 8 "type": "path"
9 }, 9 },
diff --git a/flakes/private/monitoring/flake.lock b/flakes/private/monitoring/flake.lock
index e76ca08..ed94c2b 100644
--- a/flakes/private/monitoring/flake.lock
+++ b/flakes/private/monitoring/flake.lock
@@ -3,7 +3,7 @@
3 "environment": { 3 "environment": {
4 "locked": { 4 "locked": {
5 "lastModified": 1, 5 "lastModified": 1,
6 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 6 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7 "path": "../environment", 7 "path": "../environment",
8 "type": "path" 8 "type": "path"
9 }, 9 },
diff --git a/flakes/private/opendmarc/flake.lock b/flakes/private/opendmarc/flake.lock
index a2eea1a..e9a1014 100644
--- a/flakes/private/opendmarc/flake.lock
+++ b/flakes/private/opendmarc/flake.lock
@@ -3,7 +3,7 @@
3 "environment": { 3 "environment": {
4 "locked": { 4 "locked": {
5 "lastModified": 1, 5 "lastModified": 1,
6 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 6 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7 "path": "../environment", 7 "path": "../environment",
8 "type": "path" 8 "type": "path"
9 }, 9 },
diff --git a/flakes/private/ssh/flake.lock b/flakes/private/ssh/flake.lock
index d1447b7..69406f1 100644
--- a/flakes/private/ssh/flake.lock
+++ b/flakes/private/ssh/flake.lock
@@ -3,7 +3,7 @@
3 "environment": { 3 "environment": {
4 "locked": { 4 "locked": {
5 "lastModified": 1, 5 "lastModified": 1,
6 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 6 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
7 "path": "../environment", 7 "path": "../environment",
8 "type": "path" 8 "type": "path"
9 }, 9 },
diff --git a/flakes/private/system/flake.lock b/flakes/private/system/flake.lock
index 49fb3b5..ec1b023 100644
--- a/flakes/private/system/flake.lock
+++ b/flakes/private/system/flake.lock
@@ -19,7 +19,7 @@
19 "environment": { 19 "environment": {
20 "locked": { 20 "locked": {
21 "lastModified": 1, 21 "lastModified": 1,
22 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 22 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
23 "path": "../environment", 23 "path": "../environment",
24 "type": "path" 24 "type": "path"
25 }, 25 },
diff --git a/systems/backup-2/databases/mariadb_replication.nix b/systems/backup-2/databases/mariadb_replication.nix
index 6616de0..f113219 100644
--- a/systems/backup-2/databases/mariadb_replication.nix
+++ b/systems/backup-2/databases/mariadb_replication.nix
@@ -161,7 +161,6 @@ in
161 --gtid \ 161 --gtid \
162 --master-data \ 162 --master-data \
163 --flush-privileges \ 163 --flush-privileges \
164 --ignore-database=netdata \
165 --all-databases > $filename 164 --all-databases > $filename
166 ${pkgs.gzip}/bin/gzip $filename 165 ${pkgs.gzip}/bin/gzip $filename
167 ''; 166 '';
diff --git a/systems/backup-2/flake.lock b/systems/backup-2/flake.lock
index 7d5992e..645214d 100644
--- a/systems/backup-2/flake.lock
+++ b/systems/backup-2/flake.lock
@@ -22,7 +22,7 @@
22 }, 22 },
23 "locked": { 23 "locked": {
24 "lastModified": 1, 24 "lastModified": 1,
25 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 25 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
26 "path": "../../flakes/private/chatons", 26 "path": "../../flakes/private/chatons",
27 "type": "path" 27 "type": "path"
28 }, 28 },
@@ -74,7 +74,7 @@
74 "environment": { 74 "environment": {
75 "locked": { 75 "locked": {
76 "lastModified": 1, 76 "lastModified": 1,
77 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 77 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
78 "path": "../environment", 78 "path": "../environment",
79 "type": "path" 79 "type": "path"
80 }, 80 },
@@ -86,7 +86,7 @@
86 "environment_2": { 86 "environment_2": {
87 "locked": { 87 "locked": {
88 "lastModified": 1, 88 "lastModified": 1,
89 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 89 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
90 "path": "../../flakes/private/environment", 90 "path": "../../flakes/private/environment",
91 "type": "path" 91 "type": "path"
92 }, 92 },
@@ -98,7 +98,7 @@
98 "environment_3": { 98 "environment_3": {
99 "locked": { 99 "locked": {
100 "lastModified": 1, 100 "lastModified": 1,
101 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 101 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
102 "path": "../environment", 102 "path": "../environment",
103 "type": "path" 103 "type": "path"
104 }, 104 },
@@ -110,7 +110,7 @@
110 "environment_4": { 110 "environment_4": {
111 "locked": { 111 "locked": {
112 "lastModified": 1, 112 "lastModified": 1,
113 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 113 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
114 "path": "../environment", 114 "path": "../environment",
115 "type": "path" 115 "type": "path"
116 }, 116 },
@@ -122,7 +122,7 @@
122 "environment_5": { 122 "environment_5": {
123 "locked": { 123 "locked": {
124 "lastModified": 1, 124 "lastModified": 1,
125 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 125 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
126 "path": "../environment", 126 "path": "../environment",
127 "type": "path" 127 "type": "path"
128 }, 128 },
@@ -134,7 +134,7 @@
134 "environment_6": { 134 "environment_6": {
135 "locked": { 135 "locked": {
136 "lastModified": 1, 136 "lastModified": 1,
137 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 137 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
138 "path": "../environment", 138 "path": "../environment",
139 "type": "path" 139 "type": "path"
140 }, 140 },
@@ -146,7 +146,7 @@
146 "environment_7": { 146 "environment_7": {
147 "locked": { 147 "locked": {
148 "lastModified": 1, 148 "lastModified": 1,
149 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 149 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
150 "path": "../environment", 150 "path": "../environment",
151 "type": "path" 151 "type": "path"
152 }, 152 },
@@ -352,7 +352,7 @@
352 }, 352 },
353 "locked": { 353 "locked": {
354 "lastModified": 1, 354 "lastModified": 1,
355 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 355 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
356 "path": "../../flakes/private/mail-relay", 356 "path": "../../flakes/private/mail-relay",
357 "type": "path" 357 "type": "path"
358 }, 358 },
@@ -371,7 +371,7 @@
371 }, 371 },
372 "locked": { 372 "locked": {
373 "lastModified": 1, 373 "lastModified": 1,
374 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 374 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
375 "path": "../../flakes/private/milters", 375 "path": "../../flakes/private/milters",
376 "type": "path" 376 "type": "path"
377 }, 377 },
@@ -389,7 +389,7 @@
389 }, 389 },
390 "locked": { 390 "locked": {
391 "lastModified": 1, 391 "lastModified": 1,
392 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 392 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
393 "path": "../../flakes/private/monitoring", 393 "path": "../../flakes/private/monitoring",
394 "type": "path" 394 "type": "path"
395 }, 395 },
@@ -925,7 +925,7 @@
925 }, 925 },
926 "locked": { 926 "locked": {
927 "lastModified": 1, 927 "lastModified": 1,
928 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 928 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
929 "path": "../../flakes/private/opendmarc", 929 "path": "../../flakes/private/opendmarc",
930 "type": "path" 930 "type": "path"
931 }, 931 },
@@ -1104,7 +1104,7 @@
1104 }, 1104 },
1105 "locked": { 1105 "locked": {
1106 "lastModified": 1, 1106 "lastModified": 1,
1107 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 1107 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
1108 "path": "../../flakes/private/system", 1108 "path": "../../flakes/private/system",
1109 "type": "path" 1109 "type": "path"
1110 }, 1110 },
diff --git a/systems/dilion/flake.lock b/systems/dilion/flake.lock
index ce8bb8f..a20d25b 100644
--- a/systems/dilion/flake.lock
+++ b/systems/dilion/flake.lock
@@ -59,7 +59,7 @@
59 "environment": { 59 "environment": {
60 "locked": { 60 "locked": {
61 "lastModified": 1, 61 "lastModified": 1,
62 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 62 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
63 "path": "../../flakes/private/environment", 63 "path": "../../flakes/private/environment",
64 "type": "path" 64 "type": "path"
65 }, 65 },
@@ -71,7 +71,7 @@
71 "environment_2": { 71 "environment_2": {
72 "locked": { 72 "locked": {
73 "lastModified": 1, 73 "lastModified": 1,
74 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 74 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
75 "path": "../environment", 75 "path": "../environment",
76 "type": "path" 76 "type": "path"
77 }, 77 },
@@ -83,7 +83,7 @@
83 "environment_3": { 83 "environment_3": {
84 "locked": { 84 "locked": {
85 "lastModified": 1, 85 "lastModified": 1,
86 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 86 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
87 "path": "../environment", 87 "path": "../environment",
88 "type": "path" 88 "type": "path"
89 }, 89 },
@@ -207,7 +207,7 @@
207 }, 207 },
208 "locked": { 208 "locked": {
209 "lastModified": 1, 209 "lastModified": 1,
210 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 210 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
211 "path": "../../flakes/private/monitoring", 211 "path": "../../flakes/private/monitoring",
212 "type": "path" 212 "type": "path"
213 }, 213 },
@@ -599,7 +599,7 @@
599 }, 599 },
600 "locked": { 600 "locked": {
601 "lastModified": 1, 601 "lastModified": 1,
602 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 602 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
603 "path": "../../flakes/private/system", 603 "path": "../../flakes/private/system",
604 "type": "path" 604 "type": "path"
605 }, 605 },
diff --git a/systems/eldiron/base.nix b/systems/eldiron/base.nix
index a77a438..5308ddb 100644
--- a/systems/eldiron/base.nix
+++ b/systems/eldiron/base.nix
@@ -118,6 +118,7 @@
118 ./buildbot 118 ./buildbot
119 ./coturn.nix 119 ./coturn.nix
120 ./dns.nix 120 ./dns.nix
121 ./borg_backup.nix
121 ./duply_backup.nix 122 ./duply_backup.nix
122 ./gemini 123 ./gemini
123 ./gitolite 124 ./gitolite
@@ -132,6 +133,19 @@
132 ./vpn 133 ./vpn
133 ]; 134 ];
134 135
136 services.borgBackup.enable = true;
137 services.borgBackup.profiles.global = {
138 bucket = "global";
139 hash = false;
140 remotes = [ "attilax" ];
141 ignoredPaths = [
142 "udev"
143 "portables"
144 "machines"
145 "nixos"
146 "nixos-containers"
147 ];
148 };
135 myServices.buildbot.enable = true; 149 myServices.buildbot.enable = true;
136 myServices.databases.enable = true; 150 myServices.databases.enable = true;
137 myServices.gitolite.enable = true; 151 myServices.gitolite.enable = true;
diff --git a/systems/eldiron/borg_backup.nix b/systems/eldiron/borg_backup.nix
new file mode 100644
index 0000000..9956a46
--- /dev/null
+++ b/systems/eldiron/borg_backup.nix
@@ -0,0 +1,241 @@
1{ lib, pkgs, config, name, ... }:
2
3let
4 cfg = config.myEnv.borg_backup;
5 varDir = "/var/lib/borgbackup";
6 borg_args = "--encryption repokey --make-parent-dirs init create prune compact check";
7 borg_backup_full_with_ignored = pkgs.writeScriptBin "borg_full_with_ignored" ''
8 #!${pkgs.stdenv.shell}
9
10 if [ -z "$1" -o "$1" = "-h" -o "$1" = "--help" ]; then
11 echo "borg_full_with_ignored /path/to/borgmatic.yaml"
12 echo "Does a full backup including directories with .duplicity-ignore"
13 exit 1
14 fi
15 ${pkgs.borgmatic}/bin/borgmatic -c "$1" --override 'storage.archive_name_format="{hostname}-with-ignored-{now:%Y-%m-%dT%H:%M:%S.%f}"' --override 'location.exclude_if_present=[]' ${borg_args}
16 '';
17 borg_backup = pkgs.writeScriptBin "borg_backup" ''
18 #!${pkgs.stdenv.shell}
19
20 declare -a profiles
21 profiles=()
22 ${builtins.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList (k: v: map (remote: [
23 ''profiles+=("${remote}_${k}")''
24 ]) v.remotes) config.services.borgBackup.profiles))}
25
26 if [ -f "${varDir}/last_backup_profile" ]; then
27 last_backup=$(cat ${varDir}/last_backup_profile)
28 for i in "''${!profiles[@]}"; do
29 if [[ "''${profiles[$i]}" = "$last_backup" ]]; then
30 break
31 fi
32 done
33 ((i+=1))
34 profiles=("''${profiles[@]:$i}" "''${profiles[@]:0:$i}")
35 fi
36
37 # timeout in minutes
38 timeout="''${1:-180}"
39 timeout_timestamp=$(date +%s -d "$timeout minutes")
40 for profile in "''${profiles[@]}"; do
41 if [ $(date +%s -d "now") -ge "$timeout_timestamp" ]; then
42 break
43 fi
44
45 touch "${varDir}/$profile.log"
46 ${pkgs.borgmatic}/bin/borgmatic -c "${config.secrets.location}/borg_backup/$profile/borgmatic.yaml" ${borg_args} >> ${varDir}/$profile.log
47 [[ $? = 0 ]] || echo -e "Error when doing backup for $profile, see above or logs in ${varDir}/$profile.log\n---------------------------------------" >&2
48 echo "$profile" > ${varDir}/last_backup_profile
49 done
50 '';
51
52 check_backups = pkgs.writeScriptBin "borg_list_not_backuped" ''
53 #!${pkgs.stdenv.shell}
54
55 do_check() {
56 local dir="$1" path ignored_path
57 find "$dir" -mindepth 1 -maxdepth 1 | while IFS= read -r path; do
58 if ${pkgs.gnugrep}/bin/grep -qFx "$path" ${config.secrets.fullPaths."borg_backup/backuped_list"}; then
59 continue
60 elif ${pkgs.gnugrep}/bin/grep -q "^$path/" ${config.secrets.fullPaths."borg_backup/backuped_list"}; then
61 do_check "$path"
62 else
63 while IFS= read -r ignored_path; do
64 if [[ "$path" =~ ^$ignored_path$ ]]; then
65 continue 2
66 fi
67 done < ${config.secrets.fullPaths."borg_backup/ignored_list"}
68 printf '%s\n' "$path"
69 fi
70 done
71 }
72
73 do_check /var/lib
74 '';
75 borgProfile = profile: remote: bucket: builtins.toJSON {
76 location = {
77 source_directories = map (p: "${profile.rootDir}/${p}") profile.includedPaths;
78 repositories = [
79 { path = cfg.remotes.${remote}.remote bucket; label = "backupserver"; }
80 ];
81 one_file_system = false;
82 exclude_if_present = [".duplicity-ignore"];
83 source_directories_must_exist = profile.directoriesMustExist;
84 borgmatic_source_directory = "${varDir}/${profile.bucket}/.borgmatic";
85 };
86 storage = {
87 encryption_passphrase = profile.password;
88 ssh_command = "ssh -i ${config.secrets.fullPaths."borg_backup/identity"}";
89 compression = "zlib";
90 borg_base_directory = "${varDir}/${profile.bucket}";
91 };
92 retention = {
93 keep_within = "10d";
94 keep_daily = 30;
95 };
96 };
97in
98{
99 options = {
100 services.borgBackup.enable = lib.mkOption {
101 type = lib.types.bool;
102 default = false;
103 description = ''
104 Whether to enable remote backups.
105 '';
106 };
107 services.borgBackup.profiles = lib.mkOption {
108 type = lib.types.attrsOf (lib.types.submodule {
109 options = {
110 hash = lib.mkOption {
111 type = lib.types.bool;
112 default = true;
113 description = ''
114 Hash bucket and directory names
115 '';
116 };
117 rootDir = lib.mkOption {
118 type = lib.types.path;
119 default = "/var/lib";
120 description = ''
121 Path to backup
122 '';
123 };
124 password = lib.mkOption {
125 type = lib.types.str;
126 default = cfg.password;
127 description = ''
128 password to use to encrypt data
129 '';
130 };
131 directoriesMustExist = lib.mkOption {
132 type = lib.types.bool;
133 default = true;
134 description = ''
135 Raise error if backuped directory doesn't exist
136 '';
137 };
138 bucket = lib.mkOption {
139 type = lib.types.str;
140 description = ''
141 Bucket to use
142 '';
143 };
144 remotes = lib.mkOption {
145 type = lib.types.listOf lib.types.str;
146 description = ''
147 Remotes to use for backup
148 '';
149 };
150 includedPaths = lib.mkOption {
151 type = lib.types.listOf lib.types.str;
152 default = [];
153 description = ''
154 Included paths (subdirs of rootDir)
155 '';
156 };
157 excludeFile = lib.mkOption {
158 type = lib.types.lines;
159 default = "";
160 description = ''
161 Content to put in exclude file
162 '';
163 };
164 ignoredPaths = lib.mkOption {
165 type = lib.types.listOf lib.types.str;
166 default = [];
167 description = ''
168 List of paths to ignore when checking non-backed-up directories
169 Can use (POSIX extended) regex
170 '';
171 };
172 };
173 });
174 };
175 };
176
177 config = lib.mkIf config.services.borgBackup.enable {
178 system.activationScripts.borg_backup = ''
179 install -m 0700 -o root -g root -d ${varDir}
180 '';
181 secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (k: v:
182 let
183 bucket = if v.hash or true then builtins.hashString "sha256" v.bucket else v.bucket;
184 in map (remote: [
185 (lib.nameValuePair "borg_backup/${remote}_${k}/borgmatic.yaml" {
186 permissions = "0400";
187 text = borgProfile v remote bucket;
188 })
189 (lib.nameValuePair "borg_backup/${remote}_${k}" {
190 permissions = "0700";
191 isDir = true;
192 })
193 ]) v.remotes) config.services.borgBackup.profiles)) // {
194 "borg_backup/identity" = {
195 permissions = "0400";
196 text = "{{ .ssl_keys.borg_backup }}";
197 };
198 "borg_backup/ignored_list" = {
199 permissions = "0400";
200 text = let
201 ignored = map
202 (v: map (p: "${v.rootDir}/${p}") v.ignoredPaths)
203 (builtins.attrValues config.services.borgBackup.profiles);
204 in builtins.concatStringsSep "\n" (lib.flatten ignored);
205 };
206 "borg_backup/backuped_list" = {
207 permissions = "0400";
208 text = let
209 included = map
210 (v: map (p: "${v.rootDir}/${p}") v.includedPaths)
211 (builtins.attrValues config.services.borgBackup.profiles);
212 in builtins.concatStringsSep "\n" (lib.flatten included);
213 };
214 };
215
216 programs.ssh.knownHostsFiles = [
217 (pkgs.writeText
218 "borg_backup_known_hosts"
219 (builtins.concatStringsSep
220 "\n"
221 (builtins.filter
222 (v: v != null)
223 (builtins.map
224 (v: v.sshKnownHosts)
225 (builtins.attrValues cfg.remotes)
226 )
227 )
228 )
229 )
230 ];
231 environment.systemPackages = [ pkgs.borgbackup pkgs.borgmatic borg_backup_full_with_ignored borg_backup check_backups ];
232 services.cron = {
233 enable = true;
234 systemCronJobs = [
235 "0 0 * * * root ${borg_backup}/bin/borg_backup 300"
236 ];
237
238 };
239
240 };
241}
diff --git a/systems/eldiron/databases/openldap/default.nix b/systems/eldiron/databases/openldap/default.nix
index 7cd15da..fcab337 100644
--- a/systems/eldiron/databases/openldap/default.nix
+++ b/systems/eldiron/databases/openldap/default.nix
@@ -103,6 +103,9 @@ in
103 }; 103 };
104 users.users.openldap.extraGroups = [ "keys" ]; 104 users.users.openldap.extraGroups = [ "keys" ];
105 networking.firewall.allowedTCPPorts = [ 636 389 ]; 105 networking.firewall.allowedTCPPorts = [ 636 389 ];
106 services.borgBackup.profiles.global.includedPaths = [
107 "openldap"
108 ];
106 109
107 security.acme.certs."ldap" = { 110 security.acme.certs."ldap" = {
108 group = "openldap"; 111 group = "openldap";
diff --git a/systems/eldiron/duply_backup.nix b/systems/eldiron/duply_backup.nix
index 590d125..5143302 100644
--- a/systems/eldiron/duply_backup.nix
+++ b/systems/eldiron/duply_backup.nix
@@ -3,29 +3,108 @@
3let 3let
4 cfg = config.myEnv.backup; 4 cfg = config.myEnv.backup;
5 varDir = "/var/lib/duply"; 5 varDir = "/var/lib/duply";
6 duplyProfile = profile: remote: prefix: '' 6 default_action = "pre_bkp_purge_purgeFull_purgeIncr";
7 GPG_PW="${cfg.password}" 7 duply_backup_full_with_ignored = pkgs.writeScriptBin "duply_full_with_ignored" ''
8 TARGET="${cfg.remotes.${remote}.remote profile.bucket}${prefix}" 8 #!${pkgs.stdenv.shell}
9 export AWS_ACCESS_KEY_ID="${cfg.remotes.${remote}.accessKeyId}" 9
10 export AWS_SECRET_ACCESS_KEY="${cfg.remotes.${remote}.secretAccessKey}" 10 export DUPLY_FULL_BACKUP_WITH_IGNORED=yes
11 if [ -z "$1" -o "$1" = "-h" -o "$1" = "--help" ]; then
12 echo "duply_full_with_ignored /path/to/profile"
13 echo "Does a full backup including directories with .duplicity-ignore"
14 exit 1
15 fi
16 ${pkgs.duply}/bin/duply "$1" pre_full --force
17 '';
18 duply_backup = pkgs.writeScriptBin "duply_backup" ''
19 #!${pkgs.stdenv.shell}
20
21 declare -a profiles
22 profiles=()
23 ${builtins.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList (k: v: map (remote: [
24 ''profiles+=("${remote}_${k}")''
25 ]) v.remotes) config.services.duplyBackup.profiles))}
26
27 if [ -f "${varDir}/last_backup_profile" ]; then
28 last_backup=$(cat ${varDir}/last_backup_profile)
29 for i in "''${!profiles[@]}"; do
30 if [[ "''${profiles[$i]}" = "$last_backup" ]]; then
31 break
32 fi
33 done
34 ((i+=1))
35 profiles=("''${profiles[@]:$i}" "''${profiles[@]:0:$i}")
36 fi
37
38 # timeout in minutes
39 timeout="''${1:-180}"
40 timeout_timestamp=$(date +%s -d "$timeout minutes")
41 for profile in "''${profiles[@]}"; do
42 if [ $(date +%s -d "now") -ge "$timeout_timestamp" ]; then
43 break
44 fi
45
46 touch "${varDir}/$profile.log"
47 ${pkgs.duply}/bin/duply ${config.secrets.location}/backup/$profile/ ${default_action} --force >> ${varDir}/$profile.log
48 [[ $? = 0 ]] || echo -e "Error when doing backup for $profile, see above or logs in ${varDir}/$profile.log\n---------------------------------------" >&2
49 echo "$profile" > ${varDir}/last_backup_profile
50 done
51 '';
52
53 check_backups = pkgs.writeScriptBin "duply_list_not_backuped" ''
54 #!${pkgs.stdenv.shell}
55
56 do_check() {
57 local dir="$1" path ignored_path
58 find "$dir" -mindepth 1 -maxdepth 1 | while IFS= read -r path; do
59 if ${pkgs.gnugrep}/bin/grep -qFx "$path" ${config.secrets.fullPaths."backup/backuped_list"}; then
60 continue
61 elif ${pkgs.gnugrep}/bin/grep -q "^$path/" ${config.secrets.fullPaths."backup/backuped_list"}; then
62 do_check "$path"
63 else
64 while IFS= read -r ignored_path; do
65 if [[ "$path" =~ ^$ignored_path$ ]]; then
66 continue 2
67 fi
68 done < ${config.secrets.fullPaths."backup/ignored_list"}
69 printf '%s\n' "$path"
70 fi
71 done
72 }
73
74 do_check /var/lib
75 '';
76 duplyProfile = profile: remote: bucket: let
77 remote' = cfg.remotes.${remote};
78 in ''
79 if [ -z "$DUPLY_FULL_BACKUP_WITH_IGNORED" ]; then
80 GPG_PW="${cfg.password}"
81 fi
82 TARGET="${remote'.remote bucket}"
83 ${lib.optionalString (remote'.remote_type == "s3") ''
84 export AWS_ACCESS_KEY_ID="${remote'.s3AccessKeyId}"
85 export AWS_SECRET_ACCESS_KEY="${remote'.s3SecretAccessKey}"
86 ''}
87 ${lib.optionalString (remote'.remote_type == "rsync") ''
88 DUPL_PARAMS="$DUPL_PARAMS --ssh-options=-oIdentityFile='${config.secrets.fullPaths."backup/identity"}' "
89 ''}
11 SOURCE="${profile.rootDir}" 90 SOURCE="${profile.rootDir}"
12 FILENAME=".duplicity-ignore" 91 if [ -z "$DUPLY_FULL_BACKUP_WITH_IGNORED" ]; then
13 DUPL_PARAMS="$DUPL_PARAMS --exclude-if-present '$FILENAME'" 92 FILENAME=".duplicity-ignore"
93 DUPL_PARAMS="$DUPL_PARAMS --exclude-if-present '$FILENAME'"
94 fi
14 VERBOSITY=4 95 VERBOSITY=4
15 ARCH_DIR="${varDir}/caches" 96 ARCH_DIR="${varDir}/caches"
97 DUPL_PYTHON_BIN=""
16 98
17 # Do a full backup after 1 month 99 # Do a full backup after 6 month
18 MAX_FULLBKP_AGE=1M 100 MAX_FULLBKP_AGE=6M
19 DUPL_PARAMS="$DUPL_PARAMS --allow-source-mismatch --exclude-other-filesystems --full-if-older-than $MAX_FULLBKP_AGE " 101 DUPL_PARAMS="$DUPL_PARAMS --allow-source-mismatch --full-if-older-than $MAX_FULLBKP_AGE "
20 # Backups older than 2months are deleted 102 # Backups older than 1months are deleted
21 MAX_AGE=2M 103 MAX_AGE=1M
22 # Keep 2 full backups 104 # Keep 1 full backup
23 MAX_FULL_BACKUPS=2 105 MAX_FULL_BACKUPS=1
24 MAX_FULLS_WITH_INCRS=2 106 MAX_FULLS_WITH_INCRS=1
25 ''; 107 '';
26 action = "bkp_purge_purgeFull_purgeIncr";
27 varName = k: remoteName:
28 if remoteName == "eriomem" then k else remoteName + "_" + k;
29in 108in
30{ 109{
31 options = { 110 options = {
@@ -39,26 +118,46 @@ in
39 services.duplyBackup.profiles = lib.mkOption { 118 services.duplyBackup.profiles = lib.mkOption {
40 type = lib.types.attrsOf (lib.types.submodule { 119 type = lib.types.attrsOf (lib.types.submodule {
41 options = { 120 options = {
121 hash = lib.mkOption {
122 type = lib.types.bool;
123 default = true;
124 description = ''
125 Hash bucket and directory names
126 '';
127 };
128 excludeRootDir = lib.mkOption {
129 type = lib.types.bool;
130 default = true;
131 description = ''
132 Exclude root dir in exclusion file
133 '';
134 };
42 rootDir = lib.mkOption { 135 rootDir = lib.mkOption {
43 type = lib.types.path; 136 type = lib.types.path;
137 default = "/var/lib";
44 description = '' 138 description = ''
45 Path to backup 139 Path to backup
46 ''; 140 '';
47 }; 141 };
48 bucket = lib.mkOption { 142 bucket = lib.mkOption {
49 type = lib.types.str; 143 type = lib.types.str;
50 default = "immae-${name}";
51 description = '' 144 description = ''
52 Bucket to use 145 Bucket to use
53 ''; 146 '';
54 }; 147 };
55 remotes = lib.mkOption { 148 remotes = lib.mkOption {
56 type = lib.types.listOf lib.types.str; 149 type = lib.types.listOf lib.types.str;
57 default = ["eriomem"];
58 description = '' 150 description = ''
59 Remotes to use for backup 151 Remotes to use for backup
60 ''; 152 '';
61 }; 153 };
154 includedPaths = lib.mkOption {
155 type = lib.types.listOf lib.types.str;
156 default = [];
157 description = ''
158 Included paths (subdirs of rootDir)
159 '';
160 };
62 excludeFile = lib.mkOption { 161 excludeFile = lib.mkOption {
63 type = lib.types.lines; 162 type = lib.types.lines;
64 default = ""; 163 default = "";
@@ -66,6 +165,14 @@ in
66 Content to put in exclude file 165 Content to put in exclude file
67 ''; 166 '';
68 }; 167 };
168 ignoredPaths = lib.mkOption {
169 type = lib.types.listOf lib.types.str;
170 default = [];
171 description = ''
172 List of paths to ignore when checking non-backed-up directories
173 Can use (POSIX extended) regex
174 '';
175 };
69 }; 176 };
70 }); 177 });
71 }; 178 };
@@ -76,76 +183,91 @@ in
76 install -m 0700 -o root -g root -d ${varDir} ${varDir}/caches 183 install -m 0700 -o root -g root -d ${varDir} ${varDir}/caches
77 ''; 184 '';
78 secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (k: v: 185 secrets.keys = lib.listToAttrs (lib.flatten (lib.mapAttrsToList (k: v:
79 map (remote: [ 186 let
80 (lib.nameValuePair "backup/${varName k remote}/conf" { 187 bucket = if v.hash or true then builtins.hashString "sha256" v.bucket else v.bucket;
188 in map (remote: [
189 (lib.nameValuePair "backup/${remote}_${k}/conf" {
81 permissions = "0400"; 190 permissions = "0400";
82 text = duplyProfile v remote "${k}/"; 191 text = duplyProfile v remote bucket;
83 }) 192 })
84 (lib.nameValuePair "backup/${varName k remote}/exclude" { 193 (lib.nameValuePair "backup/${remote}_${k}/exclude" {
85 permissions = "0400"; 194 permissions = "0400";
86 text = v.excludeFile; 195 text = v.excludeFile + (builtins.concatStringsSep "\n" (map (p: "+ ${v.rootDir}/${p}") v.includedPaths)) + (lib.optionalString v.excludeRootDir ''
196
197 - **
198 '');
87 }) 199 })
88 (lib.nameValuePair "backup/${varName k remote}" { 200 (lib.nameValuePair "backup/${remote}_${k}/pre" {
201 keyDependencies = [
202 pkgs.bash
203 pkgs.rsync
204 ];
89 permissions = "0500"; 205 permissions = "0500";
206 text = let
207 remote' = cfg.remotes.${remote};
208 in ''
209 #!${pkgs.stdenv.shell}
210
211 ${lib.optionalString (remote'.remote_type == "rsync") ''
212 # Recreate directory structure before synchronizing
213 mkdir -p ${varDir}/rsync_remotes/${remote}/${bucket}
214 ${pkgs.rsync}/bin/rsync -av -e \
215 "ssh -p ${remote'.sshRsyncPort} -oIdentityFile=${config.secrets.fullPaths."backup/identity"}" \
216 "${varDir}/rsync_remotes/${remote}/" \
217 ${remote'.sshRsyncHost}:
218 ''}
219 '';
220 })
221 (lib.nameValuePair "backup/${remote}_${k}" {
222 permissions = "0700";
90 isDir = true; 223 isDir = true;
91 }) 224 })
92 ]) v.remotes) config.services.duplyBackup.profiles)); 225 ]) v.remotes) config.services.duplyBackup.profiles)) // {
226 "backup/identity" = {
227 permissions = "0400";
228 text = "{{ .ssl_keys.duply_backup }}";
229 };
230 "backup/ignored_list" = {
231 permissions = "0400";
232 text = let
233 ignored = map
234 (v: map (p: "${v.rootDir}/${p}") v.ignoredPaths)
235 (builtins.attrValues config.services.duplyBackup.profiles);
236 in builtins.concatStringsSep "\n" (lib.flatten ignored);
237 };
238 "backup/backuped_list" = {
239 permissions = "0400";
240 text = let
241 included = map
242 (v: map (p: "${v.rootDir}/${p}") v.includedPaths)
243 (builtins.attrValues config.services.duplyBackup.profiles);
244 in builtins.concatStringsSep "\n" (lib.flatten included);
245 };
246 };
93 247
248 programs.ssh.knownHostsFiles = [
249 (pkgs.writeText
250 "duply_backup_known_hosts"
251 (builtins.concatStringsSep
252 "\n"
253 (builtins.filter
254 (v: v != null)
255 (builtins.map
256 (v: v.sshKnownHosts)
257 (builtins.attrValues cfg.remotes)
258 )
259 )
260 )
261 )
262 ];
263 environment.systemPackages = [ pkgs.duply check_backups duply_backup_full_with_ignored duply_backup ];
94 services.cron = { 264 services.cron = {
95 enable = true; 265 enable = true;
96 systemCronJobs = let 266 systemCronJobs = [
97 backups = pkgs.writeScript "backups" '' 267 "0 0 * * * root ${duply_backup}/bin/duply_backup 90"
98 #!${pkgs.stdenv.shell} 268 ];
99
100 ${builtins.concatStringsSep "\n" (lib.flatten (lib.mapAttrsToList (k: v:
101 map (remote: [
102 ''
103 touch ${varDir}/${varName k remote}.log
104 ${pkgs.duply}/bin/duply ${config.secrets.fullPaths."backup/${varName k remote}"}/ ${action} --force >> ${varDir}/${varName k remote}.log
105 [[ $? = 0 ]] || echo -e "Error when doing backup for ${varName k remote}, see above\n---------------------------------------" >&2
106 ''
107 ]) v.remotes
108 ) config.services.duplyBackup.profiles))}
109 '';
110 in
111 [
112 "0 2 * * * root ${backups}"
113 ];
114 269
115 }; 270 };
116 271
117 security.pki.certificateFiles = [
118 (pkgs.fetchurl {
119 url = "http://downloads.e.eriomem.net/eriomemca.pem";
120 sha256 = "1ixx4c6j3m26j8dp9a3dkvxc80v1nr5aqgmawwgs06bskasqkvvh";
121 })
122 ];
123
124 myServices.monitoring.fromMasterActivatedPlugins = [ "eriomem" ];
125 myServices.monitoring.fromMasterObjects.service = [
126 {
127 service_description = "eriomem backup is up and not full";
128 host_name = config.hostEnv.fqdn;
129 use = "external-service";
130 check_command = "check_backup_eriomem";
131
132 check_interval = 120;
133 notification_interval = "1440";
134
135 servicegroups = "webstatus-backup";
136 }
137
138 {
139 service_description = "ovh backup is up and not full";
140 host_name = config.hostEnv.fqdn;
141 use = "external-service";
142 check_command = "check_ok";
143
144 check_interval = 120;
145 notification_interval = "1440";
146
147 servicegroups = "webstatus-backup";
148 }
149 ];
150 }; 272 };
151} 273}
diff --git a/systems/eldiron/flake.lock b/systems/eldiron/flake.lock
index 27d4d5b..58291c5 100644
--- a/systems/eldiron/flake.lock
+++ b/systems/eldiron/flake.lock
@@ -129,7 +129,7 @@
129 "environment": { 129 "environment": {
130 "locked": { 130 "locked": {
131 "lastModified": 1, 131 "lastModified": 1,
132 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 132 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
133 "path": "../environment", 133 "path": "../environment",
134 "type": "path" 134 "type": "path"
135 }, 135 },
@@ -141,7 +141,7 @@
141 "environment_2": { 141 "environment_2": {
142 "locked": { 142 "locked": {
143 "lastModified": 1, 143 "lastModified": 1,
144 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 144 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
145 "path": "../environment", 145 "path": "../environment",
146 "type": "path" 146 "type": "path"
147 }, 147 },
@@ -153,7 +153,7 @@
153 "environment_3": { 153 "environment_3": {
154 "locked": { 154 "locked": {
155 "lastModified": 1, 155 "lastModified": 1,
156 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 156 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
157 "path": "../environment", 157 "path": "../environment",
158 "type": "path" 158 "type": "path"
159 }, 159 },
@@ -165,7 +165,7 @@
165 "environment_4": { 165 "environment_4": {
166 "locked": { 166 "locked": {
167 "lastModified": 1, 167 "lastModified": 1,
168 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 168 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
169 "path": "../environment", 169 "path": "../environment",
170 "type": "path" 170 "type": "path"
171 }, 171 },
@@ -177,7 +177,7 @@
177 "environment_5": { 177 "environment_5": {
178 "locked": { 178 "locked": {
179 "lastModified": 1, 179 "lastModified": 1,
180 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 180 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
181 "path": "../environment", 181 "path": "../environment",
182 "type": "path" 182 "type": "path"
183 }, 183 },
@@ -189,7 +189,7 @@
189 "environment_6": { 189 "environment_6": {
190 "locked": { 190 "locked": {
191 "lastModified": 1, 191 "lastModified": 1,
192 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 192 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
193 "path": "../environment", 193 "path": "../environment",
194 "type": "path" 194 "type": "path"
195 }, 195 },
@@ -1989,7 +1989,7 @@
1989 }, 1989 },
1990 "locked": { 1990 "locked": {
1991 "lastModified": 1, 1991 "lastModified": 1,
1992 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 1992 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
1993 "path": "../../flakes/private/chatons", 1993 "path": "../../flakes/private/chatons",
1994 "type": "path" 1994 "type": "path"
1995 }, 1995 },
@@ -2001,7 +2001,7 @@
2001 "private-environment": { 2001 "private-environment": {
2002 "locked": { 2002 "locked": {
2003 "lastModified": 1, 2003 "lastModified": 1,
2004 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 2004 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
2005 "path": "../../flakes/private/environment", 2005 "path": "../../flakes/private/environment",
2006 "type": "path" 2006 "type": "path"
2007 }, 2007 },
@@ -2020,7 +2020,7 @@
2020 }, 2020 },
2021 "locked": { 2021 "locked": {
2022 "lastModified": 1, 2022 "lastModified": 1,
2023 "narHash": "sha256-VhRXb3AAlSKwkq4BfVmoKzkLxEaAFGjYLAFETTZuhjE=", 2023 "narHash": "sha256-bWNhkERypwoog3lphO0xURJ4xt58CZEWKn7So7A5mtM=",
2024 "path": "../../flakes/private/milters", 2024 "path": "../../flakes/private/milters",
2025 "type": "path" 2025 "type": "path"
2026 }, 2026 },
@@ -2038,7 +2038,7 @@
2038 }, 2038 },
2039 "locked": { 2039 "locked": {
2040 "lastModified": 1, 2040 "lastModified": 1,
2041 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 2041 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
2042 "path": "../../flakes/private/monitoring", 2042 "path": "../../flakes/private/monitoring",
2043 "type": "path" 2043 "type": "path"
2044 }, 2044 },
@@ -2073,7 +2073,7 @@
2073 }, 2073 },
2074 "locked": { 2074 "locked": {
2075 "lastModified": 1, 2075 "lastModified": 1,
2076 "narHash": "sha256-/vQ6FGFc53r79yiQrzF0NWTbRd4RKf8QiPSDhmiCciU=", 2076 "narHash": "sha256-fntajNe0urhuR0NbTOQZLTMhtHnd7p6PVuuEf0oAoFg=",
2077 "path": "../../flakes/private/opendmarc", 2077 "path": "../../flakes/private/opendmarc",
2078 "type": "path" 2078 "type": "path"
2079 }, 2079 },
@@ -2134,7 +2134,7 @@
2134 }, 2134 },
2135 "locked": { 2135 "locked": {
2136 "lastModified": 1, 2136 "lastModified": 1,
2137 "narHash": "sha256-gjapO6CZFeLMHUlhqBVZu5P+IJzJaPu4pnuTep4ZSuM=", 2137 "narHash": "sha256-uqftr7R3cVYwWuu8Xl6VbPVL2pqapv1bfmMJpq3LnZ4=",
2138 "path": "../../flakes/private/ssh", 2138 "path": "../../flakes/private/ssh",
2139 "type": "path" 2139 "type": "path"
2140 }, 2140 },
@@ -2153,7 +2153,7 @@
2153 }, 2153 },
2154 "locked": { 2154 "locked": {
2155 "lastModified": 1, 2155 "lastModified": 1,
2156 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 2156 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
2157 "path": "../../flakes/private/system", 2157 "path": "../../flakes/private/system",
2158 "type": "path" 2158 "type": "path"
2159 }, 2159 },
diff --git a/systems/eldiron/ftp.nix b/systems/eldiron/ftp.nix
index 6aa1afc..e5bc0f5 100644
--- a/systems/eldiron/ftp.nix
+++ b/systems/eldiron/ftp.nix
@@ -30,6 +30,10 @@ in
30 }; 30 };
31 31
32 config = lib.mkIf config.myServices.ftp.enable { 32 config = lib.mkIf config.myServices.ftp.enable {
33 services.borgBackup.profiles.global.ignoredPaths = [
34 "ftp/test_ftp"
35 "proftpd/authorized_keys"
36 ];
33 myServices.dns.zones."immae.eu".subdomains.ftp = 37 myServices.dns.zones."immae.eu".subdomains.ftp =
34 with config.myServices.dns.helpers; ips servers.eldiron.ips.main; 38 with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
35 39
diff --git a/systems/eldiron/gitolite/default.nix b/systems/eldiron/gitolite/default.nix
index 1885234..0882c18 100644
--- a/systems/eldiron/gitolite/default.nix
+++ b/systems/eldiron/gitolite/default.nix
@@ -11,6 +11,22 @@ in {
11 }; 11 };
12 12
13 config = lib.mkIf cfg.enable { 13 config = lib.mkIf cfg.enable {
14 services.borgBackup.profiles.global.ignoredPaths = [
15 "gitolite/.nix-.*"
16 "gitolite/.ssh"
17 "gitolite/.vim.*"
18 "gitolite/.bash_history"
19 ];
20 services.borgBackup.profiles.global.includedPaths = [
21 "gitolite/gitolite_ldap_groups.sh"
22 "gitolite/projects.list"
23 "gitolite/.gitolite.rc"
24 "gitolite/.gitolite"
25 "gitolite/repositories/github"
26 "gitolite/repositories/testing.git"
27 "gitolite/repositories/gitolite-admin.git"
28
29 ];
14 myServices.dns.zones."immae.eu".subdomains.git = 30 myServices.dns.zones."immae.eu".subdomains.git =
15 with config.myServices.dns.helpers; ips servers.eldiron.ips.main; 31 with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
16 32
diff --git a/systems/eldiron/pub/default.nix b/systems/eldiron/pub/default.nix
index ca8122a..847e9d0 100644
--- a/systems/eldiron/pub/default.nix
+++ b/systems/eldiron/pub/default.nix
@@ -40,6 +40,9 @@ in
40 }; 40 };
41 41
42 config = lib.mkIf config.myServices.pub.enable { 42 config = lib.mkIf config.myServices.pub.enable {
43 services.borgBackup.profiles.global.ignoredPaths = [
44 "pub/.nix-.*"
45 ];
43 myServices.dns.zones."immae.eu".subdomains.pub = 46 myServices.dns.zones."immae.eu".subdomains.pub =
44 with config.myServices.dns.helpers; ips servers.eldiron.ips.main; 47 with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
45 48
diff --git a/systems/eldiron/websites/cloud/default.nix b/systems/eldiron/websites/cloud/default.nix
index e1df883..c859f32 100644
--- a/systems/eldiron/websites/cloud/default.nix
+++ b/systems/eldiron/websites/cloud/default.nix
@@ -9,6 +9,15 @@ in {
9 }; 9 };
10 10
11 config = lib.mkIf cfg.enable { 11 config = lib.mkIf cfg.enable {
12 services.borgBackup.profiles.global.includedPaths = [
13 "nextcloud/appdata_occ80acffb591"
14 "nextcloud/files_external"
15 "nextcloud/config"
16 #"nextcloud/gpxpod"
17 "nextcloud/.ocdata"
18 "nextcloud/.htaccess"
19 "nextcloud/index.html"
20 ];
12 myServices.dns.zones."immae.eu".subdomains.cloud = 21 myServices.dns.zones."immae.eu".subdomains.cloud =
13 with config.myServices.dns.helpers; ips servers.eldiron.ips.main; 22 with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
14 23
diff --git a/systems/eldiron/websites/commento/default.nix b/systems/eldiron/websites/commento/default.nix
index c5131b8..9abc180 100644
--- a/systems/eldiron/websites/commento/default.nix
+++ b/systems/eldiron/websites/commento/default.nix
@@ -12,6 +12,9 @@ in
12 enable = lib.mkEnableOption "Enable commento website"; 12 enable = lib.mkEnableOption "Enable commento website";
13 }; 13 };
14 config = lib.mkIf cfg.enable { 14 config = lib.mkIf cfg.enable {
15 services.borgBackup.profiles.global.includedPaths = [
16 "vhost/tools.immae.eu/commento"
17 ];
15 myServices.dns.zones."immae.eu".subdomains.commento = 18 myServices.dns.zones."immae.eu".subdomains.commento =
16 with config.myServices.dns.helpers; ips servers.eldiron.ips.main; 19 with config.myServices.dns.helpers; ips servers.eldiron.ips.main;
17 20
diff --git a/systems/eldiron/websites/cryptpad/default.nix b/systems/eldiron/websites/cryptpad/default.nix
index 4635548..34a51cd 100644
--- a/systems/eldiron/websites/cryptpad/default.nix
+++ b/systems/eldiron/websites/cryptpad/default.nix
@@ -75,6 +75,9 @@ in
75 inherit domain port; 75 inherit domain port;
76 config = configFile; 76 config = configFile;
77 }; 77 };
78 services.borgBackup.profiles.global.includedPaths = [
79 "cryptpad/immaeEu"
80 ];
78 services.websites.env.tools.modules = [ "proxy_wstunnel" ]; 81 services.websites.env.tools.modules = [ "proxy_wstunnel" ];
79 security.acme.certs.eldiron.extraDomainNames = [ domain ]; 82 security.acme.certs.eldiron.extraDomainNames = [ domain ];
80 services.websites.env.tools.vhostConfs.cryptpad = { 83 services.websites.env.tools.vhostConfs.cryptpad = {
diff --git a/systems/eldiron/websites/tools/default.nix b/systems/eldiron/websites/tools/default.nix
index b591190..46e6a9f 100644
--- a/systems/eldiron/websites/tools/default.nix
+++ b/systems/eldiron/websites/tools/default.nix
@@ -110,6 +110,21 @@ in {
110 ]; 110 ];
111 }; 111 };
112 112
113 services.borgBackup.profiles.global.ignoredPaths = [
114 "duply"
115 "kanboard"
116 "ntfy"
117 ];
118 services.borgBackup.profiles.global.includedPaths = [
119 "paste"
120 "dokuwiki/conf"
121 "dokuwiki/data"
122 "phpbb"
123 "shaarli/cache"
124 "shaarli/pagecache"
125 "shaarli/tmp"
126 ];
127
113 myServices.chatonsProperties.services = { 128 myServices.chatonsProperties.services = {
114 adminer = adminer.chatonsProperties; 129 adminer = adminer.chatonsProperties;
115 dokuwiki = dokuwiki.chatonsProperties; 130 dokuwiki = dokuwiki.chatonsProperties;
diff --git a/systems/monitoring-1/flake.lock b/systems/monitoring-1/flake.lock
index c69d09a..28d2415 100644
--- a/systems/monitoring-1/flake.lock
+++ b/systems/monitoring-1/flake.lock
@@ -22,7 +22,7 @@
22 }, 22 },
23 "locked": { 23 "locked": {
24 "lastModified": 1, 24 "lastModified": 1,
25 "narHash": "sha256-ptLDqa3BTCX2orio9YgGsOwYa5bsz2DWn6TrtR2B45w=", 25 "narHash": "sha256-Deh1qsi1UFskPSAwq2sUGyPeh7hVVHct8hhy4o6fEzE=",
26 "path": "../../flakes/private/chatons", 26 "path": "../../flakes/private/chatons",
27 "type": "path" 27 "type": "path"
28 }, 28 },
@@ -74,7 +74,7 @@
74 "environment": { 74 "environment": {
75 "locked": { 75 "locked": {
76 "lastModified": 1, 76 "lastModified": 1,
77 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 77 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
78 "path": "../environment", 78 "path": "../environment",
79 "type": "path" 79 "type": "path"
80 }, 80 },
@@ -86,7 +86,7 @@
86 "environment_2": { 86 "environment_2": {
87 "locked": { 87 "locked": {
88 "lastModified": 1, 88 "lastModified": 1,
89 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 89 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
90 "path": "../../flakes/private/environment", 90 "path": "../../flakes/private/environment",
91 "type": "path" 91 "type": "path"
92 }, 92 },
@@ -98,7 +98,7 @@
98 "environment_3": { 98 "environment_3": {
99 "locked": { 99 "locked": {
100 "lastModified": 1, 100 "lastModified": 1,
101 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 101 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
102 "path": "../environment", 102 "path": "../environment",
103 "type": "path" 103 "type": "path"
104 }, 104 },
@@ -110,7 +110,7 @@
110 "environment_4": { 110 "environment_4": {
111 "locked": { 111 "locked": {
112 "lastModified": 1, 112 "lastModified": 1,
113 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 113 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
114 "path": "../environment", 114 "path": "../environment",
115 "type": "path" 115 "type": "path"
116 }, 116 },
@@ -122,7 +122,7 @@
122 "environment_5": { 122 "environment_5": {
123 "locked": { 123 "locked": {
124 "lastModified": 1, 124 "lastModified": 1,
125 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 125 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
126 "path": "../environment", 126 "path": "../environment",
127 "type": "path" 127 "type": "path"
128 }, 128 },
@@ -259,7 +259,7 @@
259 }, 259 },
260 "locked": { 260 "locked": {
261 "lastModified": 1, 261 "lastModified": 1,
262 "narHash": "sha256-1sEwMNWSytfyn4Rh5gUJACwCNgaTLdMDkO9hEr5OB7M=", 262 "narHash": "sha256-XdgjCex3Izb2hID+EBVj0YsEE5xvc+I416I2fHpi1LE=",
263 "path": "../../flakes/private/mail-relay", 263 "path": "../../flakes/private/mail-relay",
264 "type": "path" 264 "type": "path"
265 }, 265 },
@@ -277,7 +277,7 @@
277 }, 277 },
278 "locked": { 278 "locked": {
279 "lastModified": 1, 279 "lastModified": 1,
280 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 280 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
281 "path": "../../flakes/private/monitoring", 281 "path": "../../flakes/private/monitoring",
282 "type": "path" 282 "type": "path"
283 }, 283 },
@@ -735,7 +735,7 @@
735 }, 735 },
736 "locked": { 736 "locked": {
737 "lastModified": 1, 737 "lastModified": 1,
738 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 738 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
739 "path": "../../flakes/private/system", 739 "path": "../../flakes/private/system",
740 "type": "path" 740 "type": "path"
741 }, 741 },
diff --git a/systems/monitoring-1/monitoring-master.nix b/systems/monitoring-1/monitoring-master.nix
index 09319b8..e9362d9 100644
--- a/systems/monitoring-1/monitoring-master.nix
+++ b/systems/monitoring-1/monitoring-master.nix
@@ -74,11 +74,11 @@ in
74 group = "naemon"; 74 group = "naemon";
75 permissions = "0400"; 75 permissions = "0400";
76 text = '' 76 text = ''
77 export AWS_ACCESS_KEY_ID="${v.accessKeyId}" 77 export AWS_ACCESS_KEY_ID="${v.s3AccessKeyId}"
78 export AWS_SECRET_ACCESS_KEY="${v.secretAccessKey}" 78 export AWS_SECRET_ACCESS_KEY="${v.s3SecretAccessKey}"
79 export BASE_URL="${v.remote "immae-eldiron"}" 79 export BASE_URL="${v.remote "immae-eldiron"}"
80 ''; 80 '';
81 }) config.myEnv.backup.remotes; 81 }) (lib.filterAttrs (k: v: v.remote_type == "s3") config.myEnv.backup.remotes);
82 82
83 services.naemon.extraConfig = '' 83 services.naemon.extraConfig = ''
84 broker_module=${pkgs.naemon-livestatus}/lib/naemon-livestatus/livestatus.so ${config.services.naemon.runDir}/live 84 broker_module=${pkgs.naemon-livestatus}/lib/naemon-livestatus/livestatus.so ${config.services.naemon.runDir}/live
diff --git a/systems/quatresaisons/flake.lock b/systems/quatresaisons/flake.lock
index 4cb49da..5534558 100644
--- a/systems/quatresaisons/flake.lock
+++ b/systems/quatresaisons/flake.lock
@@ -59,7 +59,7 @@
59 "environment": { 59 "environment": {
60 "locked": { 60 "locked": {
61 "lastModified": 1, 61 "lastModified": 1,
62 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 62 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
63 "path": "../../flakes/private/environment", 63 "path": "../../flakes/private/environment",
64 "type": "path" 64 "type": "path"
65 }, 65 },
@@ -71,7 +71,7 @@
71 "environment_2": { 71 "environment_2": {
72 "locked": { 72 "locked": {
73 "lastModified": 1, 73 "lastModified": 1,
74 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 74 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
75 "path": "../environment", 75 "path": "../environment",
76 "type": "path" 76 "type": "path"
77 }, 77 },
@@ -83,7 +83,7 @@
83 "environment_3": { 83 "environment_3": {
84 "locked": { 84 "locked": {
85 "lastModified": 1, 85 "lastModified": 1,
86 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 86 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
87 "path": "../environment", 87 "path": "../environment",
88 "type": "path" 88 "type": "path"
89 }, 89 },
@@ -239,7 +239,7 @@
239 }, 239 },
240 "locked": { 240 "locked": {
241 "lastModified": 1, 241 "lastModified": 1,
242 "narHash": "sha256-Lpe56lKWhlMQiQoCgvMJuqJtJ8+szDldjqMAGyt2U3U=", 242 "narHash": "sha256-VZjf9fXcyeS3LpVW6NvzJpiJuEtJsGlOOfH8XwL8CdI=",
243 "path": "../../flakes/private/monitoring", 243 "path": "../../flakes/private/monitoring",
244 "type": "path" 244 "type": "path"
245 }, 245 },
@@ -712,7 +712,7 @@
712 }, 712 },
713 "locked": { 713 "locked": {
714 "lastModified": 1, 714 "lastModified": 1,
715 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 715 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
716 "path": "../../flakes/private/system", 716 "path": "../../flakes/private/system",
717 "type": "path" 717 "type": "path"
718 }, 718 },
diff --git a/systems/zoldene/flake.lock b/systems/zoldene/flake.lock
index 86e91e6..fb95d03 100644
--- a/systems/zoldene/flake.lock
+++ b/systems/zoldene/flake.lock
@@ -59,7 +59,7 @@
59 "environment": { 59 "environment": {
60 "locked": { 60 "locked": {
61 "lastModified": 1, 61 "lastModified": 1,
62 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 62 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
63 "path": "../environment", 63 "path": "../environment",
64 "type": "path" 64 "type": "path"
65 }, 65 },
@@ -436,7 +436,7 @@
436 "private-environment": { 436 "private-environment": {
437 "locked": { 437 "locked": {
438 "lastModified": 1, 438 "lastModified": 1,
439 "narHash": "sha256-VO82m/95IcX3xxJ63wcLh3hXzXDRFKUohYil/18pBSY=", 439 "narHash": "sha256-Kj3j/3B8V8IHbeSZ3ho33C7ktOcTle2h6dKEWWfVuvU=",
440 "path": "../../flakes/private/environment", 440 "path": "../../flakes/private/environment",
441 "type": "path" 441 "type": "path"
442 }, 442 },
@@ -455,7 +455,7 @@
455 }, 455 },
456 "locked": { 456 "locked": {
457 "lastModified": 1, 457 "lastModified": 1,
458 "narHash": "sha256-+s9C1mPCXRA44AC0Fg+B2uD6UiK0JfUA0F8fhceH0lQ=", 458 "narHash": "sha256-ufaclDTTnoB7xLOCOY4EretrBp70rSmk0YzcVfglbLA=",
459 "path": "../../flakes/private/system", 459 "path": "../../flakes/private/system",
460 "type": "path" 460 "type": "path"
461 }, 461 },