diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index b132808ad06d..d1cda0d84e96 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -737,6 +737,7 @@ ./services/networking/blocky.nix ./services/networking/charybdis.nix ./services/networking/cjdns.nix + ./services/networking/cloudflare-dyndns.nix ./services/networking/cntlm.nix ./services/networking/connman.nix ./services/networking/consul.nix diff --git a/nixos/modules/services/networking/cloudflare-dyndns.nix b/nixos/modules/services/networking/cloudflare-dyndns.nix new file mode 100644 index 000000000000..ab5b1a08539a --- /dev/null +++ b/nixos/modules/services/networking/cloudflare-dyndns.nix @@ -0,0 +1,93 @@ +{ config, pkgs, lib, ... }: + +with lib; + +let + cfg = config.services.cloudflare-dyndns; +in +{ + options = { + services.cloudflare-dyndns = { + enable = mkEnableOption "Cloudflare Dynamic DNS Client"; + + apiTokenFile = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + The path to a file containing the CloudFlare API token. + + The file must have the form `CLOUDFLARE_API_TOKEN=...` + ''; + }; + + domains = mkOption { + type = types.listOf types.str; + default = [ ]; + description = '' + List of domain names to update records for. + ''; + }; + + proxied = mkOption { + type = types.bool; + default = false; + description = '' + Whether this is a DNS-only record, or also being proxied through CloudFlare. + ''; + }; + + ipv4 = mkOption { + type = types.bool; + default = true; + description = '' + Whether to enable setting IPv4 A records. + ''; + }; + + ipv6 = mkOption { + type = types.bool; + default = false; + description = '' + Whether to enable setting IPv6 AAAA records. + ''; + }; + + deleteMissing = mkOption { + type = types.bool; + default = false; + description = '' + Whether to delete the record when no IP address is found. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + systemd.services.cloudflare-dyndns = { + description = "CloudFlare Dynamic DNS Client"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + startAt = "*:0/5"; + + environment = { + CLOUDFLARE_DOMAINS = toString cfg.domains; + }; + + serviceConfig = { + Type = "simple"; + DynamicUser = true; + StateDirectory = "cloudflare-dyndns"; + EnvironmentFile = cfg.apiTokenFile; + ExecStart = + let + args = [ "--cache-file /var/lib/cloudflare-dyndns/ip.cache" ] + ++ (if cfg.ipv4 then [ "-4" ] else [ "-no-4" ]) + ++ (if cfg.ipv6 then [ "-6" ] else [ "-no-6" ]) + ++ optional cfg.deleteMissing "--delete-missing" + ++ optional cfg.proxied "--proxied"; + in + "${pkgs.cloudflare-dyndns}/bin/cloudflare-dyndns ${toString args}"; + }; + }; + }; +} diff --git a/pkgs/applications/networking/cloudflare-dyndns/default.nix b/pkgs/applications/networking/cloudflare-dyndns/default.nix new file mode 100644 index 000000000000..ee7573cf713d --- /dev/null +++ b/pkgs/applications/networking/cloudflare-dyndns/default.nix @@ -0,0 +1,53 @@ +{ buildPythonApplication +, attrs +, click +, cloudflare +, fetchFromGitHub +, lib +, poetry +, pydantic +, pytestCheckHook +, requests +}: + +buildPythonApplication rec { + pname = "cloudflare-dyndns"; + version = "4.1"; + + src = fetchFromGitHub { + owner = "kissgyorgy"; + repo = pname; + rev = "v${version}"; + hash = "sha256-6Q5fpJ+HuQ+hc3xTtB5tR43pn9WZ0nZZR723iLAkpis="; + }; + + format = "pyproject"; + + nativeBuildInputs = [ poetry ]; + + propagatedBuildInputs = [ + attrs + click + cloudflare + pydantic + requests + ]; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace 'click = "^7.0"' 'click = "*"' + ''; + + checkInputs = [ pytestCheckHook ]; + + disabledTests = [ + "test_get_ipv4" + ]; + + meta = with lib; { + description = " CloudFlare Dynamic DNS client "; + homepage = "https://github.com/kissgyorgy/cloudflare-dyndns"; + license = licenses.mit; + maintainers = with maintainers; [ lovesegfault ]; + }; +} diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 1cd6bfe5bdee..26a517116547 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -39,10 +39,10 @@ "owner": "akamai", "provider-source-address": "registry.terraform.io/akamai/akamai", "repo": "terraform-provider-akamai", - "rev": "v1.12.1", - "sha256": "sha256-UQD1RiXIRcP0CvVO8Tx/qkBhRD3LFj/KI3WP/yKeBek=", - "vendorSha256": "sha256-GZFLnKHk6YaMwFGgy79ric388EMIH6NUVw4JVLNxWZY=", - "version": "1.12.1" + "rev": "v2.0.0", + "sha256": "sha256-LcqP4gO1dhNaLkpaZIRxmC8B7DUTLC1fPZutohBqKSQ=", + "vendorSha256": "sha256-Vu5vyCEkZNf8TXryDalI5RKM/hjWeEkXbnYLhGwc2y8=", + "version": "2.0.0" }, "alicloud": { "deleteVendor": true, @@ -103,28 +103,28 @@ "owner": "hashicorp", "provider-source-address": "registry.terraform.io/hashicorp/aws", "repo": "terraform-provider-aws", - "rev": "v4.11.0", - "sha256": "sha256-d7edKXwjktpHGMxL/sAowOjiGdsAk9cdGVMgj0uIVIg=", - "vendorSha256": "sha256-xQ9EbzwLfRZuBzytJ4SpoEIYJ9DuN+eWPy7RRg4jPkU=", - "version": "4.11.0" + "rev": "v4.12.1", + "sha256": "sha256-z19DTiio6dXIgTmOxehOjIno6XhSUIS/YFtXKocq2Kk=", + "vendorSha256": "sha256-zxOiLStuGuylsKTJteR/9Xs/XcVgDlihCBmnMNLTTd4=", + "version": "4.12.1" }, "azuread": { "owner": "hashicorp", "provider-source-address": "registry.terraform.io/hashicorp/azuread", "repo": "terraform-provider-azuread", - "rev": "v2.21.0", - "sha256": "sha256-H2G9n9pvDF1VKXC773ubRFzGYZJeAj+t/V89omxmcps=", + "rev": "v2.22.0", + "sha256": "sha256-x3SRTGCokEZGoG2l46PSelI8+FkHp5sbDdd14Iyei54=", "vendorSha256": null, - "version": "2.21.0" + "version": "2.22.0" }, "azurerm": { "owner": "hashicorp", "provider-source-address": "registry.terraform.io/hashicorp/azurerm", "repo": "terraform-provider-azurerm", - "rev": "v3.3.0", - "sha256": "sha256-ZkyuZ2q9V2CKuXGUcDI5X3O21y8xtZiYGPnl5mIjuZc=", + "rev": "v3.4.0", + "sha256": "sha256-hfjwlW7tbs/b7mvtbmFnNXr82b2exCRC4WxfCdZ6bbw=", "vendorSha256": null, - "version": "3.3.0" + "version": "3.4.0" }, "azurestack": { "owner": "hashicorp", @@ -375,19 +375,19 @@ "owner": "fastly", "provider-source-address": "registry.terraform.io/fastly/fastly", "repo": "terraform-provider-fastly", - "rev": "v1.1.3", - "sha256": "sha256-zkZ3ZORky0OmM5YvDU30lqpIhO7f49imW+pWjndXSwQ=", + "rev": "v1.1.4", + "sha256": "sha256-sLVeVXVCvhSx51B4unYEOs0UpNsChF9guB22gpsratw=", "vendorSha256": null, - "version": "1.1.3" + "version": "1.1.4" }, "flexibleengine": { "owner": "FlexibleEngineCloud", "provider-source-address": "registry.terraform.io/FlexibleEngineCloud/flexibleengine", "repo": "terraform-provider-flexibleengine", - "rev": "v1.28.0", - "sha256": "sha256-UeRgbPHwKZ6HfoHOG3yYLFhv6GqzGhLB3fETYWq6k7A=", - "vendorSha256": "sha256-/Z8VbNtwBYROyzvhwFwpmyGMWF1LeWEKxgwbFd9M+Gw=", - "version": "1.28.0" + "rev": "v1.29.0", + "sha256": "sha256-HPcJRLP20fDt3qr2edkol2jXSsWLotJkx13ZV7n7w8g=", + "vendorSha256": "sha256-De4NRWTdE4QutQkB0m0YlJg6LNysxi4bSSIxYY6lRP0=", + "version": "1.29.0" }, "fortios": { "owner": "fortinetdev", @@ -411,10 +411,10 @@ "owner": "integrations", "provider-source-address": "registry.terraform.io/integrations/github", "repo": "terraform-provider-github", - "rev": "v4.23.0", - "sha256": "sha256-N7PFLh7qr8OPB92ePLS1B/KexipKV5LFRWvrxdS8cGk=", + "rev": "v4.24.1", + "sha256": "sha256-1fwHMN2HIVl+8ZL7OtP1U5ORc41e7Tm3qEpMqIgWL20=", "vendorSha256": null, - "version": "4.23.0" + "version": "4.24.1" }, "gitlab": { "owner": "gitlabhq", @@ -665,10 +665,10 @@ "owner": "logicmonitor", "provider-source-address": "registry.terraform.io/logicmonitor/logicmonitor", "repo": "terraform-provider-logicmonitor", - "rev": "v2.0.0", - "sha256": "sha256-wamP36zV5HZ1qQlNZWIZyAYx/jOiRO1ODQpcd10Sl4w=", + "rev": "v2.0.1", + "sha256": "sha256-LW88NTWwzGrpOpliVqc1AOjxaZ4p/8gq9twEpjY3FzE=", "vendorSha256": null, - "version": "2.0.0" + "version": "2.0.1" }, "lxd": { "owner": "terraform-lxd", @@ -1026,10 +1026,10 @@ "owner": "splunk-terraform", "provider-source-address": "registry.terraform.io/splunk-terraform/signalfx", "repo": "terraform-provider-signalfx", - "rev": "v6.12.1", - "sha256": "sha256-JmkuYv3vDCSUuD69+dw8fG4EvuDMhfImlfmZslp8AfQ=", - "vendorSha256": "sha256-hI0yz796+xxAFQg+O/2g5ueNx/wrx/40DlQyxtx11aQ=", - "version": "6.12.1" + "rev": "v6.13.0", + "sha256": "sha256-te5+WjbvU7RV22o22iWu8rGEnBfPkZNzkigziOlxMQg=", + "vendorSha256": "sha256-yWqUsObvABwmA6V9ecz8SFtk1Bhdq2/dUpnNLKQtuNM=", + "version": "6.13.0" }, "skytap": { "owner": "skytap", @@ -1062,10 +1062,10 @@ "owner": "spotinst", "provider-source-address": "registry.terraform.io/spotinst/spotinst", "repo": "terraform-provider-spotinst", - "rev": "v1.73.1", - "sha256": "sha256-tA80gL0IJVO0g+sXdXLYgW1a0hLP0rnQCUtLAS9Y614=", - "vendorSha256": "sha256-25h8VMeXKWth06+5ZBibDWvjWyJmKM64k0zhkUsIYeM=", - "version": "1.73.1" + "rev": "v1.73.2", + "sha256": "sha256-Q5DNFJ1g6jfHQVYF5Xf5Phx/4b2nbUvE651JNp/zgJg=", + "vendorSha256": "sha256-szdzI/42RExYQlHnm178RM3wlKOLax+nwgRVzonxXoI=", + "version": "1.73.2" }, "stackpath": { "owner": "stackpath", diff --git a/pkgs/development/python-modules/s3-credentials/default.nix b/pkgs/development/python-modules/s3-credentials/default.nix index dd142cd09c79..ac87288033ce 100644 --- a/pkgs/development/python-modules/s3-credentials/default.nix +++ b/pkgs/development/python-modules/s3-credentials/default.nix @@ -12,7 +12,7 @@ buildPythonPackage rec { pname = "s3-credentials"; - version = "0.10"; + version = "0.11"; format = "setuptools"; disabled = pythonOlder "3.6"; @@ -21,7 +21,7 @@ buildPythonPackage rec { owner = "simonw"; repo = pname; rev = version; - hash = "sha256-JgqKmZG3K4JwQ1Bzw2oll/LQ1njA9wFhX0/uYr9XjAU="; + hash = "sha256-t6Q+/2k93cEk+eeFm9aOvZNb1IcUzt66iApfH2FvHbw="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/twitch-python/default.nix b/pkgs/development/python-modules/twitch-python/default.nix index d4910cfdbe9d..c11e8bd4fdaa 100644 --- a/pkgs/development/python-modules/twitch-python/default.nix +++ b/pkgs/development/python-modules/twitch-python/default.nix @@ -2,11 +2,11 @@ buildPythonPackage rec { pname = "twitch-python"; - version = "0.0.19"; + version = "0.0.20"; src = fetchPypi { inherit pname version; - sha256 = "b0b02abdd33458e4ffabc632aa6a6779f3599e188819632551353b6c5553f5c5"; + sha256 = "sha256-bgnXIQuOCrtoknZ9ciB56zWxTCnncM2032TVaey6oXw="; }; disabled = !isPy3k; diff --git a/pkgs/development/tools/go-toml/default.nix b/pkgs/development/tools/go-toml/default.nix index add3780de5fd..accc8390995e 100644 --- a/pkgs/development/tools/go-toml/default.nix +++ b/pkgs/development/tools/go-toml/default.nix @@ -1,19 +1,21 @@ -{ lib, buildGoPackage, fetchFromGitHub }: +{ lib, buildGoModule, fetchFromGitHub }: -buildGoPackage rec { +buildGoModule rec { pname = "go-toml"; - version = "1.9.4"; + version = "2.0.0"; src = fetchFromGitHub { owner = "pelletier"; repo = pname; rev = "v${version}"; - sha256 = "sha256-1ENmSeo3TtTvhgwtbmq+O9n9fD/FqSUiCrSplkJNTTg="; + sha256 = "sha256-NdUD+QpqKU5CaY2vBEop6hoK6z1Ok4Dn+W9eUHaGFb4="; }; - goPackagePath = "github.com/pelletier/go-toml"; + vendorSha256 = "sha256-TuyrtUAbT++S3glpCD603KV6QMkOFv5FgnPpYcMjy1I="; - excludedPackages = [ "cmd/tomltestgen" ]; + excludedPackages = [ "cmd/gotoml-test-decoder" "cmd/tomltestgen" ]; + + ldflags = [ "-s" "-w" ]; meta = with lib; { description = "Go library for the TOML language"; diff --git a/pkgs/tools/misc/pouf/default.nix b/pkgs/tools/misc/pouf/default.nix index 9a6520453938..06a1e37836de 100644 --- a/pkgs/tools/misc/pouf/default.nix +++ b/pkgs/tools/misc/pouf/default.nix @@ -6,16 +6,18 @@ rustPlatform.buildRustPackage rec { pname = "pouf"; - version = "0.4.1"; + version = "0.4.3"; src = fetchFromGitHub { owner = "mothsart"; repo = pname; rev = version; - sha256 = "0q7kj6x61xci8piax6vg3bsm9di11li7pm84vj13iwahdydhs1hn"; + sha256 = "1dgk2g13hz64vdx9sqkixl0321cnfnhrm7hxp68vwfcfx3gvfjv8"; }; - cargoSha256 = "128fgdp74lyv5k054cdjxzwmyb5cyy0jq0a9l4bsc34122mznnq7"; + cargoSha256 = "0ipyc9l9kr7izh3dmvczq1i7al56yiaz20yaarz8bpsfcrmgwy3s"; + + postInstall = "make PREFIX=$out copy-data"; meta = with lib; { description = "A cli program for produce fake datas."; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 945d75fe6f3b..2440a37ca92c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2961,6 +2961,8 @@ with pkgs; cloudflared = callPackage ../applications/networking/cloudflared { }; + cloudflare-dyndns = python3Packages.cloudflare-dyndns; + cloudmonkey = callPackage ../tools/virtualization/cloudmonkey { }; clib = callPackage ../tools/package-management/clib { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f071ef698b5e..73f2ff1cf3b9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -1736,6 +1736,8 @@ in { cloudflare = callPackage ../development/python-modules/cloudflare { }; + cloudflare-dyndns = callPackage ../applications/networking/cloudflare-dyndns { }; + cloudpickle = callPackage ../development/python-modules/cloudpickle { }; cloudscraper = callPackage ../development/python-modules/cloudscraper { };