+8
nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+8
nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
···
+2
nixos/doc/manual/release-notes/rl-2211.section.md
+2
nixos/doc/manual/release-notes/rl-2211.section.md
···- [endlessh-go](https://github.com/shizunge/endlessh-go), an SSH tarpit that exposes Prometheus metrics. Available as [services.endlessh-go](#opt-services.endlessh-go.enable).
···- [endlessh-go](https://github.com/shizunge/endlessh-go), an SSH tarpit that exposes Prometheus metrics. Available as [services.endlessh-go](#opt-services.endlessh-go.enable).+- [Garage](https://garagehq.deuxfleurs.fr/), a simple object storage server for geodistributed deployments, alternative to MinIO. Available as [services.garage](#opt-services.garage.enable).
+1
nixos/modules/module-list.nix
+1
nixos/modules/module-list.nix
···
+91
nixos/modules/services/web-servers/garage.nix
+91
nixos/modules/services/web-servers/garage.nix
···
···+description = lib.mdDoc "Garage log level, see <https://garagehq.deuxfleurs.fr/documentation/quick-start/#launching-the-garage-server> for examples.";+description = lib.mdDoc "The metadata directory, put this on a fast disk (e.g. SSD) if possible.";+description = lib.mdDoc "The main data storage, put this on your large storage (e.g. high capacity HDD)";+description = lib.mdDoc "Garage replication mode, defaults to none, see: <https://garagehq.deuxfleurs.fr/reference_manual/configuration.html#replication_mode> for reference.";+description = lib.mdDoc "Garage configuration, see <https://garagehq.deuxfleurs.fr/reference_manual/configuration.html> for reference.";+StateDirectory = mkIf (hasPrefix "/var/lib/garage" cfg.settings.data_dir && hasPrefix "/var/lib/garage" cfg.settings.metadata_dir) "garage";
+1
nixos/tests/all-tests.nix
+1
nixos/tests/all-tests.nix
+169
nixos/tests/garage.nix
+169
nixos/tests/garage.nix
···
···+key_creation_regex = re.compile('Key name: (?P<key_name>.*)\nKey ID: (?P<key_id>.*)\nSecret key: (?P<secret_key>.*)')+return S3Key(key_name=m.group('key_name'), key_id=m.group('key_id'), secret_key=m.group('secret_key'))+assert (node.succeed(f"curl -H 'Host: {url}' http://localhost:3902")).strip() == 'hello world'