# Copyright : # - Ryan Lahfa 2024 # # Ce logiciel est un programme informatique servant à déployer des # configurations de serveurs via NixOS. # # Ce logiciel est régi par la licence CeCILL soumise au droit français et # respectant les principes de diffusion des logiciels libres. Vous pouvez # utiliser, modifier et/ou redistribuer ce programme sous les conditions # de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA # sur le site "http://www.cecill.info". # # En contrepartie de l'accessibilité au code source et des droits de copie, # de modification et de redistribution accordés par cette licence, il n'est # offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, # seule une responsabilité restreinte pèse sur l'auteur du programme, le # titulaire des droits patrimoniaux et les concédants successifs. # # A cet égard l'attention de l'utilisateur est attirée sur les risques # associés au chargement, à l'utilisation, à la modification et/ou au # développement et à la reproduction du logiciel par l'utilisateur étant # donné sa spécificité de logiciel libre, qui peut le rendre complexe à # manipuler et qui le réserve donc à des développeurs et des professionnels # avertis possédant des connaissances informatiques approfondies. Les # utilisateurs sont donc invités à charger et tester l'adéquation du # logiciel à leurs besoins dans des conditions permettant d'assurer la # sécurité de leurs systèmes et ou de leurs données et, plus généralement, # à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. # # Le fait que vous puissiez accéder à cet en-tête signifie que vous avez # pris connaissance de la licence CeCILL, et que vous en avez accepté les # termes. { config, pkgs, lib, ... }: let cfg = config.dgn-chatops; inherit (lib) mkEnableOption mkIf; python3 = pkgs.python311; python3Pkgs = python3.pkgs; ircrobots = python3Pkgs.callPackage ./ircrobots.nix { }; tortoise-orm = python3Pkgs.callPackage ./tortoise-orm.nix { }; ps = python3Pkgs.makePythonPath [ ircrobots tortoise-orm python3Pkgs.ollama python3Pkgs.aiohttp python3Pkgs.loadcredential ]; in { options.dgn-chatops = { enable = mkEnableOption "the ChatOps layer"; }; # Our ChatOps bot. config = mkIf cfg.enable { systemd.services.irc-takumi = { description = "DGNum IRC automation bot, Takumi"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; environment = { PYTHONPATH = ps; }; serviceConfig = { RuntimeDirectory = "takumi"; StateDirectory = "takumi"; DynamicUser = true; ExecStart = "${lib.getExe python3} ${./takumi.py}"; }; }; }; }