diff options
Diffstat (limited to 'modules/garage/default.nix')
| -rw-r--r-- | modules/garage/default.nix | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/modules/garage/default.nix b/modules/garage/default.nix new file mode 100644 index 0000000..9bc2998 --- /dev/null +++ b/modules/garage/default.nix @@ -0,0 +1,58 @@ +{ self, config, lib, pkgs, ... }: + +with self.lib.nginx; +{ + services.garage = { + enable = true; + package = pkgs.garage_0_9_0; + settings = { + replication_mode = 3; + metadata_dir = "/var/lib/garage/meta"; + data_dir = "/var/lib/garage/data"; + db_engine = "lmdb"; + + compression_level = 2; + + rpc_bind_addr = "${config.wireguard.v4.address}:3901"; + rpc_public_addr = "${config.wireguard.v4.address}:3901"; + rpc_secret = "37e1edc5a5eefb8901ca314bcfbd21cb803fbfb0a780b80a547fddf641284503"; + + bootstrap_peers = [ ]; + + s3_api = { + s3_region = "cdn"; + api_bind_addr = "127.0.0.1:3900"; + root_domain = "s3.vapor.systems"; + }; + + s3_web = { + bind_addr = "127.0.0.1:3902"; + root_domain = "web.vapor.systems"; + index = "index.html"; + }; + }; + }; + + security.acme.certs = { + "vapor.systems" = { + extraDomainNames = [ "*.vapor.systems" ]; + }; + "gnulag.net" = { + extraDomainNames = [ "*.gnulag.net" ]; + }; + "linuxmasterrace.org" = { + extraDomainNames = [ "*.linuxmasterrace.org" ]; + }; + }; + + services.nginx = { + enable = true; + virtualHosts = { + "s3.vapor.systems" = (proxyDomain "vapor.systems" "http://127.0.0.1:3900/"); + "web.vapor.systems" = (proxyDomain "vapor.systems" "http://127.0.0.1:3902/"); + "gnulag.net" = (proxyDomain "gnulag.net" "http://127.0.0.1:3902/"); + "linuxmasterrace.org" = (proxyDomain "linuxmasterrace.org" "http://127.0.0.1:3902/"); + "dash.linuxmasterrace.org" = (proxyDomain "linuxmasterrace.org" "http://127.0.0.1:3902/"); + }; + }; +} |
