From 2babff5576b3860fc328182589cfb3e201248f40 Mon Sep 17 00:00:00 2001 From: servius Date: Thu, 12 Feb 2026 19:04:13 +0530 Subject: [PATCH] feat: Added cloudflare cli to add / remove dns entries from cli --- AGENTS.md | 5 +++++ home/programs/cfcli.nix | 27 +++++++++++++++++++++++++++ home/programs/default.nix | 1 + secrets/secrets.yaml | 10 ++++++++-- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 home/programs/cfcli.nix diff --git a/AGENTS.md b/AGENTS.md index b3560400..ebd81da8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -162,6 +162,11 @@ sessionVariables.BROWSER = if device.isDarwin then "open" else "xdg-open"; just add program myprogram # Creates home/programs/myprogram.nix and adds import ``` +### Adding a new dns entry +```bash +cfcli add --type A foobar.bazbar.biz 192.168.0.1 +``` + ### Creating a Module 1. Determine location: `modules/nixos/`, `modules/darwin/`, or `modules/home/` diff --git a/home/programs/cfcli.nix b/home/programs/cfcli.nix new file mode 100644 index 00000000..dcbe9a97 --- /dev/null +++ b/home/programs/cfcli.nix @@ -0,0 +1,27 @@ +{ + pkgs, + lib, + config, + ... +}: { + sops.secrets."cloudflare/darksailor_dev_api_key" = {}; + home.packages = [ + # (pkgs.stdenv.mkDerivation { + # pname = "cfcli"; + # version = "0.1.0"; + # buildInputs = [pkgs.cloudflare-cli]; + # nativeBuildInputs = [pkgs.makeWrapper]; + # installPhase = '' + # $out/bin/cfcli \ + # --run "export CF_API_KEY=\`cat -v ${config.sops.secrets."cloudflare/darksailor_dev_api_key".path}\`" + # ''; + # }) + (pkgs.writeShellScriptBin + "cfcli" + '' + #!/bin/sh + export CF_API_KEY="$(cat -v ${config.sops.secrets."cloudflare/darksailor_dev_api_key".path})" + exec ${pkgs.cloudflare-cli}/bin/cfcli "$@" + '') + ]; +} diff --git a/home/programs/default.nix b/home/programs/default.nix index 2b39b2a9..18fcab79 100644 --- a/home/programs/default.nix +++ b/home/programs/default.nix @@ -79,5 +79,6 @@ ./yt-dlp.nix ./zoxide.nix ./attic.nix + ./cfcli.nix ]; } diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index 6fae197d..b40842dd 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -15,6 +15,7 @@ hetzner: api_key: ENC[AES256_GCM,data:8lDAf8wyM5b7SH/TaQxXyfITStiiO0obDMdWuRHHxHA=,iv:tHwpmW1Unr8DQXOUKutqyssOKOxtNYMIEc2aMXcmSbE=,tag:N2o9tsdaeoi/cm0ETf3UTQ==,type:str] cloudflare: api_key: ENC[AES256_GCM,data:t8kBhlFUxIqjV9f6eJboUrYMAmi5sH3serhD8gBZHVKAAiuy4HHlpg==,iv:xm1EBj5xqnfLYRIJ3XJ0VgyTubG7PMvKrkmlk86YTsE=,tag:0APDuhkAaxv/ozNPVsANLg==,type:str] + darksailor_dev_api_key: ENC[AES256_GCM,data:yjVAEGZb8EvZeVGNpr7ICSTIZo1Ogzs4mRrl6ofA+vyK6hTOO0f9qg==,iv:7h7AIyromPFJDpj9pAUVzYKsSjmLx/PA+r9rSb9fYzI=,tag:INjhzLzAaZGgz2TeYIYoIw==,type:str] openai: api_key: ENC[AES256_GCM,data:d6z9TySB6r2myUYu4u9aZwdoy1qL+DdU4MIuel1lFMMKD4XAqn5U9Vc3t5sJ/E3hDXud,iv:500n8CY8Qd/tg+MuT+RDRAyjgy6E9Aolud/2KrRyyqk=,tag:nCowF/czJMkYoNuSl1c3ZA==,type:str] openrouter: @@ -95,6 +96,11 @@ excalidraw: attic: jwt_secret: ENC[AES256_GCM,data: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,iv:jwzQBWv+AeNxxCs63ei3sxUPgHCoYN3BVkJW4c9FGPk=,tag:rdhdj7eFldLJxb+b5wn6jQ==,type:str] token: ENC[AES256_GCM,data:/zYPOfi60zzf5FtzK3MGHpkDn8V8KiTd0crVfvIaBW6mBMJWacXZsbCsT4eQF6SlfZTcjl9FtGQXRTtH0och82X+7106g0lROZ//FOuMH1cXSxOQraOmtCwESTRoxhcoMdvzKM27BDp0YW/eG6Z2kNT8d/jLSTwu2bTS9tUQ0evzy8G4yjyv0BTNOXHNRe5rKzrzYHKGtn+awF9Kj05/xUCh4NHxmPFIkwWNr0KWRk8d6ME/3PS0U5j1jqaZTwNbfl1J1Kphv7FnchaQvLqeaUNU8aKCTr7nneQfIGVkBORrtHnyL3aa4eAp/aR8u+0LlfYhmam0wrRPT8PENjWDiwneIMVtiq3v6TUHdsy/jlHevFp1X0V1oyOUxLLPWG0ip26J/QyFjMD1KBwn1T+Rg/Pnqji+sDkeZ6WXC/vR1637tGSOspbFukmnnQVwtIwBCfefPjPxi3U2/A8hyG6mE0sNfJVCWa2M2K3fg/Fc0XhDAo6etGhYoO3Cx7uLQh16LUU2nvWgdECtuGFsEGWvn0dbm94xp2j2Rt1f+6+iARtJZDMHEA+RLMBkILaqZHYV29dkHnSmzCmrniqJxK6mDPh40zhrARAPv9JtTnX7Dj1qX8/Zj16h7VrnjUiRBwpOdxb1a5X/ilbnbjw1LA06ucIsosGWS5NHytpIT1TCHtZy1mx54NbchK3r6v4bCPhTy9LD6cTEo3KTqG5acDRh/rh31BPV8iKIcwnPtRgq5u4uxaGM2RoS5OeS83AhZ+/v2pQbUQRlMwPG3VoxdJJJRIXPbSoABBzRVTueMDEr4KA2YpSfQHYE37dFBlnWZFDn0Dm1qvsOWdca/dnDyxcnRJQdbj32KYRy6OnnteiumYplTqVHEpjGvn0xEeMmUqrWCc9Wp9FtwkS6lfcHOtmKye8t6c9P2BI/7jqYFrvVc9UJdOS3G+n4uXKwIDnuPBG4VL2RSEAldF0wrMlCST7Lb+GrrsoJkMMtf93hAWkrz0e31+U7kmy/Zt8ved36bqHMJGsCe9je0df9aoth6BqTUUJ6057BZBFTEZCVFMTjAA08qaDJsbR46ITlUdM6gLiH+NHMnu/EgOBZSH0X4i75sNV5sCNemzcBfWFP2LcvMEK0xQ3sR0BhhfzJQuo05W7uHlOgGX5mjWPSiXhwBNeTkJSA+cRVgUZrBCAovUgUw00cM+8+Cg==,iv:kmp24YYznSgErvWkn3/hoC7R8Z+M3HJHBBY3uLLlgwg=,tag:yT9/NXuA+sRztMkhA8/Xwg==,type:str] +livekit: + key_name: ENC[AES256_GCM,data:CIaPrnAXDiaYXWrumKjnR9Nu5T0=,iv:eD+5aRyVLRSiSj+7X7xYZ239OonI920Etbtg9zjbkT8=,tag:kJ8KzFenML/Jh2a2+8XRQA==,type:str] + key_secret: ENC[AES256_GCM,data:n0SH6SLYXOwdjJ5nNku0Pg6/DZxmYG7iLfNNDbKlvF9DiCDxfn2ag1fToxWGz0qrAvqV6b3PdD123BURDzJ+gQ==,iv:1Pix12Pxr/kX/SqRWHOaSdccIZTQsSoFVGXYNyx2Rfo=,tag:QG1qDJPBUUtlih+TcXXsRQ==,type:str] +coturn: + static_auth_secret: ENC[AES256_GCM,data:osEBYgWGZl+SnqVV1G9IxMys/qDm6WTtj4nILYVw0klDjiB6vd21yA0ik/rLv9E6Y539uMCk3oB0NS7I72U1hQ==,iv:jruS3vfe0fVHY67qNhEgaCEp/9cR57UIu8a/LhdTC1o=,tag:vhxXhh9u4bOSu/lxINjvew==,type:str] sops: age: - recipient: age1pw7kluxp7872c63ne4jecq75glj060jkmqwzkk6esatuyck9egfswufdpk @@ -106,7 +112,7 @@ sops: VGZKdHpVeFRpQUxtSEkyaEhLMlBJcGsKLb0DvPNZosPBUuiX6qz1s5IO5INQh8CK ZtXTVClwMSmaUYhdSB2gKFrKVZHXTJZ4oAL5t/BpC0pOHyr+o96T3Q== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-02-12T10:48:21Z" - mac: ENC[AES256_GCM,data:ebIkeYC2QLzvT4TXZqBczAD/idrXCjyjpcxx+2B3J0apZk0c5xfo25eRkcpOaHfPJ3Uy2uHeRJsCYAs2ZupSPDNFsx0s3xayAddQrrllZ8rgiJ/5vfHTRraDJgbyjGoYV1gTfmfeCBLVQCTP0dA3Pg1BDIEw/P2fdW0HILwy8zg=,iv:gOMLlrG1NiQv/WgRShqa/o4MOZLtMd3Evn/VUkw4ckQ=,tag:M50g6VDQFAFL+jTmephPSA==,type:str] + lastmodified: "2026-02-12T13:19:01Z" + mac: ENC[AES256_GCM,data:IVU1PbDwH1JKG3qPOtmfMZr7BJ7zR/UGQ167Tyf62w5V1gaiVoeqjD8/MR6OSvhMDNYxjJXRKg9E9N8q4JRxok34v5zOfqWchnXEP9wIS39kgsYJ1Hra7hOryd5n49/Xkwyen6f1VSe1nkKtldWS9XHwDBZRrSE+kaXcZTQmKIY=,iv:WLRVIEzR0MFsY6EAgyXZCHQz/xD4cSaeikA8nZqHy38=,tag:+TyOvwWkHa4fHYonKBfxyg==,type:str] unencrypted_suffix: _unencrypted version: 3.11.0