From 12e71839730c23086df9ec0a66f921c9a95324be Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 7 Jul 2025 13:35:12 -0500 Subject: [PATCH] feat: opencloud test --- modules/config/instances/config/opencloud.nix | 38 +++++++++++++ .../userSettings/config/assistant/default.nix | 2 +- modules/home/gui/apps/code/zed/default.nix | 2 +- .../gui/desktop/hypr/land/config/bind.nix | 11 ++-- modules/nixos/services/acme/default.nix | 1 + modules/nixos/services/opencloud/default.nix | 56 +++++++++++++++++++ 6 files changed, 103 insertions(+), 7 deletions(-) create mode 100644 modules/config/instances/config/opencloud.nix create mode 100644 modules/nixos/services/opencloud/default.nix diff --git a/modules/config/instances/config/opencloud.nix b/modules/config/instances/config/opencloud.nix new file mode 100644 index 0000000..56f4e2b --- /dev/null +++ b/modules/config/instances/config/opencloud.nix @@ -0,0 +1,38 @@ +{ moduleFunctions }: +let + inherit (moduleFunctions.instancesFunctions) + domain0 + servicePath + sslPath + sopsPath + ; + + label = "OpenCloud"; + name = "opencloud"; + subdomain = "cloud"; + domain = "${subdomain}.${domain0}"; +in +{ + label = label; + name = name; + email = { + address0 = "noreply@${domain0}"; + }; + sops = { + path0 = "${sopsPath}/${name}"; + }; + domains = { + url0 = domain; + }; + subdomain = subdomain; + paths = { + path0 = "${servicePath}/${label}"; + }; + ports = { + port0 = 9200; + }; + ssl = { + cert = "${sslPath}/${subdomain}.${domain0}/fullchain.pem"; + key = "${sslPath}/${subdomain}.${domain0}/key.pem"; + }; +} diff --git a/modules/home/gui/apps/code/zed/config/userSettings/config/assistant/default.nix b/modules/home/gui/apps/code/zed/config/userSettings/config/assistant/default.nix index 729c207..71ff3aa 100755 --- a/modules/home/gui/apps/code/zed/config/userSettings/config/assistant/default.nix +++ b/modules/home/gui/apps/code/zed/config/userSettings/config/assistant/default.nix @@ -11,7 +11,7 @@ let localhost = web.localhost.address0; in { - assistant = { + agent = { enabled = true; default_model = { provider = "zed.dev"; diff --git a/modules/home/gui/apps/code/zed/default.nix b/modules/home/gui/apps/code/zed/default.nix index 142d84b..7d2d81f 100755 --- a/modules/home/gui/apps/code/zed/default.nix +++ b/modules/home/gui/apps/code/zed/default.nix @@ -23,7 +23,7 @@ in { programs.zed-editor = { enable = true; - package = packagePath; + # package = packagePath; extraPackages = extraPackagesPath; extensions = extensionsPath; userKeymaps = userKeymapsPath; diff --git a/modules/home/gui/desktop/hypr/land/config/bind.nix b/modules/home/gui/desktop/hypr/land/config/bind.nix index 82d2bd7..1df8cbc 100755 --- a/modules/home/gui/desktop/hypr/land/config/bind.nix +++ b/modules/home/gui/desktop/hypr/land/config/bind.nix @@ -84,11 +84,7 @@ let "3, movetoworkspacesilent, 3" "4, movetoworkspacesilent, 4" "5, movetoworkspacesilent, 5" - # Window Move - "C, movewindow, l" - "A, movewindow, u" - "E, movewindow, d" - "I, movewindow, r" + ]; shiftBinds = builtins.map (x: "SHIFT, " + x) [ @@ -108,10 +104,15 @@ let "3, movetoworkspacesilent, 3" "4, movetoworkspacesilent, 4" "5, movetoworkspacesilent, 5" + # Window Move "Left, movewindow, l" "Up, movewindow, u" "Down, movewindow, d" "Right, movewindow, r" + "C, movewindow, l" + "A, movewindow, u" + "E, movewindow, d" + "I, movewindow, r" ]; functionBinds = builtins.map (x: " , " + x) [ diff --git a/modules/nixos/services/acme/default.nix b/modules/nixos/services/acme/default.nix index 06fd49c..b02564c 100755 --- a/modules/nixos/services/acme/default.nix +++ b/modules/nixos/services/acme/default.nix @@ -41,6 +41,7 @@ in "searx" "syncthing" "vaultwarden" + "opencloud" ] ) ++ (map diff --git a/modules/nixos/services/opencloud/default.nix b/modules/nixos/services/opencloud/default.nix new file mode 100644 index 0000000..4b2180c --- /dev/null +++ b/modules/nixos/services/opencloud/default.nix @@ -0,0 +1,56 @@ +{ flake, ... }: +let + inherit (flake.config.machines.devices) ceres; + inherit (flake.config.services.instances) opencloud web; + service = opencloud; + localhost = web.localhost.address1; + host = service.domains.url0; +in +{ + services = { + opencloud = { + enable = true; + url = "https://${host}:${service.ports.port0}"; + port = service.ports.port0; + address = localhost; + stateDir = "/var/lib/${service.name}"; + environment = { + OC_INSECURE = "false"; + }; + }; + caddy = { + virtualHosts = { + "${host}" = { + extraConfig = '' + reverse_proxy ${localhost}:${toString service.ports.port0} + + tls ${service.ssl.cert} ${service.ssl.key} + ''; + }; + }; + }; + }; + fileSystems."/var/lib/${service.name}" = { + device = service.paths.path0; + fsType = "none"; + options = [ + "bind" + ]; + depends = [ + ceres.storage0.mount + ]; + }; + + systemd.tmpfiles.rules = [ + "Z ${service.paths.path0} 755 ${service.name} ${service.name} -" + # "Z ${service.sops.path0} 755 ${service.name} ${service.name} -" + ]; + + networking = { + firewall = { + allowedTCPPorts = [ + service.ports.port0 + ]; + }; + }; +}