From 7721a89e135adafd6b6f331d2c21ce9599f2622b Mon Sep 17 00:00:00 2001 From: Dmitriy Pleshevskiy Date: Thu, 29 Jun 2023 00:54:46 +0300 Subject: [PATCH] host/canigou: add yagpt telegram bot service --- .agenix_config.nix | Bin 4605 -> 4714 bytes Makefile | 3 +- flake.lock | 26 +++++++++++++++++- flake.nix | 6 ++++ nixos/hosts/canigou/default.nix | 1 + nixos/hosts/canigou/services/telegram-bot.nix | 12 ++++++++ nixos/hosts/default.nix | 6 ++++ secrets/yandexgpt-tg-bot-env.age | Bin 0 -> 1472 bytes 8 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 nixos/hosts/canigou/services/telegram-bot.nix create mode 100644 secrets/yandexgpt-tg-bot-env.age diff --git a/.agenix_config.nix b/.agenix_config.nix index 69aa4dce88c8283b79715ab23645cfca7db548b5..c1dea4490412ee3aaf8bcc292460b499b0bd2c8b 100644 GIT binary patch literal 4714 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 literal 4605 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 diff --git a/Makefile b/Makefile index c43625d..994bb3b 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,8 @@ NIX_LOCK := nix flake lock DEPS_MY := \ myneovim \ - vnetod + vnetod \ + yagpt_ts_bot DEPS_NIXOS := \ nixpkgs \ diff --git a/flake.lock b/flake.lock index e2a93d0..94492e2 100644 --- a/flake.lock +++ b/flake.lock @@ -672,7 +672,8 @@ "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", "vnetod": "vnetod", - "wired": "wired" + "wired": "wired", + "yagpt_tg_bot": "yagpt_tg_bot" } }, "rust-overlay": { @@ -823,6 +824,29 @@ "repo": "wired-notify", "type": "github" } + }, + "yagpt_tg_bot": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1687989096, + "narHash": "sha256-BwQ3tx3aXcOg0QzAdBgloINwzlz9EZsB2DePVlOHGEs=", + "ref": "refs/heads/main", + "rev": "d96a2d8416f29f122650b198b8c0ea1a7b2a71e7", + "revCount": 3, + "type": "git", + "url": "https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot" + }, + "original": { + "type": "git", + "url": "https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index ab246ec..05c844f 100644 --- a/flake.nix +++ b/flake.nix @@ -41,6 +41,12 @@ inputs.flake-utils.follows = "flake-utils"; }; + yagpt_tg_bot = { + url = "git+https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "flake-utils"; + }; + mailserver = { url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/nixos/hosts/canigou/default.nix b/nixos/hosts/canigou/default.nix index f0a91ca..621fc3e 100644 --- a/nixos/hosts/canigou/default.nix +++ b/nixos/hosts/canigou/default.nix @@ -16,6 +16,7 @@ in ./services/wireguard.nix ./services/miniflux.nix + ./services/telegram-bot.nix ]; boot.kernelPackages = pkgs.linuxPackages_6_1; diff --git a/nixos/hosts/canigou/services/telegram-bot.nix b/nixos/hosts/canigou/services/telegram-bot.nix new file mode 100644 index 0000000..5813a9c --- /dev/null +++ b/nixos/hosts/canigou/services/telegram-bot.nix @@ -0,0 +1,12 @@ +{ config, ... }: + +{ + services.yandexgpt_telegram_bot = { + enabled = true; + environmentFile = config.age.secrets.yandexgpt-tg-bot-env.path; + }; + + age.secrets.yandexgpt-tg-bot-env = { + file = ../../../../secrets/yandexgpt-tg-bot-env.age; + }; +} diff --git a/nixos/hosts/default.nix b/nixos/hosts/default.nix index f8bac7d..ddf5680 100644 --- a/nixos/hosts/default.nix +++ b/nixos/hosts/default.nix @@ -2,6 +2,7 @@ let hardware = inputs.hardware.nixosModules; + yagpt_tg_bot = inputs.yagpt_tg_bot.nixosModules; in { home = { @@ -9,6 +10,7 @@ in extraModules = [ hardware.common-gpu-amd + yagpt_tg_bot.default ../modules/nix.nix ../modules/wireguard-client.nix ../../home/users/jan @@ -52,6 +54,10 @@ in canigou = { system = "x86_64-linux"; + extraModules = [ + yagpt_tg_bot.default + ]; + targetHost = (import ./canigou/data.secret.nix).addr; }; } diff --git a/secrets/yandexgpt-tg-bot-env.age b/secrets/yandexgpt-tg-bot-env.age new file mode 100644 index 0000000000000000000000000000000000000000..0c581c9036fcc22a79c4d3be8e6d9ecca325e723 GIT binary patch literal 1472 zcmV;x1wZ-#M@dveQdv+`0G~REku6;=Uf@@*q!yUq`W?jLt6{f0^o_V5LKILcMcE8d zCSMV}ZjsMS{@5Kib{NV_3VZ;^E6DB`n0vR#l6MMrsgEAaKSmw@3+vHdV=K%xBplxj z%t=2NQ09~Zm3gjxk(N$yu`%e?Aheq-|0Y9~8<62yG(IY1f-5jZYD_fJfhCe5*ny6g zP>K5*+^uZD36jT*t;4>D5>0HAR(}hEedsjwsJLKtx_=b+Ikb%ZnDF4ZUOI&JRl*9v zELBcF$$}54AYdq)-tKJTu}t5+Dw39&qJ|$$k+tSN$P)VM18IE0!uRu;d7_{W*KO(e zd|LJvq zLsZUO3UuN{ANunO-3Mc2660K0CV6IPpzDbxYVbf7VZPk9o8CEG9_da1#V4 z&_d%8M5ZcV>nrhi;raPZrVT4eq?frADyWDK_>V4my+YMN8%`M%ci%tp-HRXOSjE>u z>vcyV+w=x&nWy6u!sZ91CT6ZO^p+o?*VUoFSjKT2u#;Z!Wi@Sp6O7l(&U3l;>TaP; zS=L{Iwz37+(LgBza=t(YFMPu4)R9iNH@ku0lbUYwn5OkSzi;QxhauWpV7go=9IV7A zLVQtff*W55E(m_Mon8y%JJ=PyNA9_f1}tGj?zyBW=YtmF9Gy??AG@y7AZj%*8NQxG zM)Nj1N+^6Dt0P<_XG=2f?IE8l>UMkQxt-_#lUv$9u9NVNsD`FLw9wi6VZFrs+6Qdh zX@LxGP@UIVRoHQB(LmvVafVx(Znyem%SUya4PcD&tt*MWf3`;zZ1+9#v@eU>krkxw z7oBww%5(hVK5zJ+sskus>TjX=puLL)Y!(N}|4bdK%t2!TAc{&NepX{0hW24Uu)G9_ zPRUb1okuT>r>o@&KJdX`28A$R=dA0S4Q8xoiU94(tnuC-(f{HKy0srhh;H9MNwS^G zRHqshrH(n8@O`(stV{|RdwA(?H4gya0ZtOeebic)e(k)QGsrrN0JO#MUuvg%@tOpI zHTW(84uFzt*peeVg(B~q0l6ixblh6Lv=w3r4nI?1WGdVPlqC5vvv{nW0!%d1^gBmc zubHP=*;>R_kVO;YqEM%J+s?^!+Y!O|jcky4?PF{?@b_-hpNh0Mn4$|wIQH5{0I zbU<{rN0q==(gnq1MD*cjK?R=I&P&d!5SX2R6cm1khngp5j{>-b6B$t+PxKcZ)!3xj zmSR+g;YHmAtnN`}okIq5<{YrLslh`}T(17W%P@LV>J=f8a{Vrs^@1YWq98!cpOp|( zWL4T~n*LlQYGx!?7HcQkep0d zLhE1Z9pkTygk+4xT4(NVd<3pQ=~lCC7IW%lK9qcjV_Z-{Mwt3En2&DoMEqG|dvuTu z%zmFzGu*316X)LAv_^w{K9kTo$c6rP?ft~KNJC2@2vZg>jX5aFZ~x#u`xpA5e=ngq aO2WH!3UI1Vze`}YMhEFq1ay}_1J&Vecht22 literal 0 HcmV?d00001