hangitbot/flake.nix

102 lines
3.1 KiB
Nix
Raw Normal View History

2023-12-24 10:48:40 +00:00
{
nixConfig = rec {
experimental-features = [ "nix-command" "flakes" ];
substituters = [
# Replace official cache with a mirror located in China
#
# Feel free to remove this line if you are not in China
"https://mirrors.ustc.edu.cn/nix-channels/store"
"https://mirrors.ustc.edu.cn/nix-channels/store" # 中科大
"https://mirrors.tuna.tsinghua.edu.cn/nix-channels/store" #清华
"https://mirrors.bfsu.edu.cn/nix-channels/store" # 北外
"https://mirror.sjtu.edu.cn/nix-channels/store" #交大
#"https://cache.nixos.org"
];
trusted-substituters = substituters;
trusted-users = [
"coder"
];
};
inputs = {
naersk.url = "github:nix-community/naersk/master";
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, utils, naersk }:
utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
naersk-lib = pkgs.callPackage naersk { };
in
{
2023-12-29 06:53:04 +00:00
defaultPackage = naersk-lib.buildPackage {
src = ./.;
buildInputs = with pkgs; [
pkg-config
openssl
];
};
2024-01-08 05:03:12 +00:00
2023-12-24 10:48:40 +00:00
devShell = with pkgs; mkShell {
buildInputs = [
cargo
rustc
rustfmt
pre-commit
rustPackages.clippy
pkg-config
openssl
gcc
sqlite
];
RUST_SRC_PATH = rustPlatform.rustLibSrc;
};
2024-01-08 05:03:12 +00:00
nixosModule = {config, pkgs, lib, ...}: with lib;
let
cfg = config.services.hangitbot;
in {
options.services.hangitbot = {
enable = mkEnableOption "hangitbot service";
token = mkOption {
type = types.str;
example = "12345678:AAAAAAAAAAAAAAAAAAAAAAAAATOKEN";
description = lib.mdDoc "Telegram bot token";
};
tgUri = mkOption {
type = types.str;
default = "https://api.telegram.org";
example = "https://api.telegram.org";
description = lib.mdDoc "Custom telegram api URI";
};
2024-01-18 09:19:37 +00:00
groupBanned = mkOption {
type = types.listOf types.int;
default = [];
description = lib.mdDoc "GroupID blacklisted";
};
2024-01-08 05:03:12 +00:00
extraOptions = mkOption {
type = types.str;
description = lib.mdDoc "Extra option for bot.";
2024-01-18 09:19:37 +00:00
default = "";
2024-01-08 05:03:12 +00:00
};
};
config = let
2024-01-18 09:19:37 +00:00
args = "${cfg.extraOptions} ${if cfg?tgUri then "--api-uri ${escapeShellArg cfg.tgUri}" else ""} ${if cfg?groupBanned then concatStringsSep " " (lists.concatMap (group: ["-b ${group}"]) cfg.groupBanned) else ""}";
2024-01-08 05:03:12 +00:00
in mkIf cfg.enable {
systemd.services.hangitbot = {
wantedBy = ["multi-uesr.target"];
serviceconfig.ExecStart = "${pkgs.hangitbot}/bin/hangitbot ${args} ${escapeShellArg cfg.token}";
};
};
};
2023-12-24 10:48:40 +00:00
});
}