feat: adding the configuration for discord bots

This commit is contained in:
Raphael 2025-02-02 23:43:31 +01:00
parent 7d2608a6e8
commit 852eab5386
7 changed files with 130 additions and 46 deletions

View file

@ -1,11 +1,20 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
{
imports = [
../global.nix
./hardware-configuration.nix
../../services/discord.nix
];
service = {
bot_discord = {
master = true;
music = true;
tempvoc = true;
ticket = true;
};
};
# Bootloader.
boot.loader = {
systemd-boot.enable = true;
@ -19,37 +28,6 @@
wireless.enable = false;
};
systemd.services = {
music = {
description = "Enium discord bot for music";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
User = "nobody";
WorkingDirectory = "/root/music";
ExecStart = "${pkgs.nodejs}/bin/npm start";
Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.nodejs}/bin";
Restart = "on-failure";
RestartSec = 5;
};
};
yagpdb = {
description = "Enium discord master bot";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
User = "nobody";
WorkingDirectory = "/root/yagpdb/cmd/yagpdb";
ExecStart = "/root/yagpdb/cmd/yagpdb/yagpdb -all -pa";
EnvironmentFile = "/root/yagpdb/cmd/yagpdb/sampleenvfile";
Restart = "on-failure";
RestartSec = 5;
};
};
};
programs = {
steam = {
enable = true;

View file

@ -53,7 +53,6 @@
dconf
fastfetch
git
go
home-manager
lego
libjpeg

View file

@ -0,0 +1,26 @@
{ config, pkgs, lib, ... }:
let
cfg = config.service.bot_discord.master;
in
{
config = lib.mkIf cfg {
environment.systemPackages = with pkgs; [
go
];
systemd.services.yagpdb = {
description = "Enium discord master bot";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
User = "nobody";
WorkingDirectory = "/opt/yagpdb/cmd/yagpdb";
ExecStart = "/opt/yagpdb/cmd/yagpdb/yagpdb -all -pa";
EnvironmentFile = "/opt/yagpdb/cmd/yagpdb/sampleenvfile";
Restart = "on-failure";
RestartSec = 5;
};
};
};
}

View file

@ -0,0 +1,26 @@
{ config, pkgs, lib, ... }:
let
cfg = config.service.bot_discord.music;
in
{
config = lib.mkIf cfg {
environment.systemPackages = with pkgs; [
nodejs
];
systemd.services.music = {
description = "Enium discord bot for music";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
User = "nobody";
WorkingDirectory = "/opt/music";
ExecStart = "${pkgs.nodejs}/bin/npm start";
Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.nodejs}/bin";
Restart = "on-failure";
RestartSec = 5;
};
};
};
}

View file

@ -1,18 +1,21 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let
cfg = config.service.bot_discord.tempvoc;
in
{
config = lib.mkIf cfg {
environment.systemPackages = with pkgs; [
nodejs
];
systemd.services.ticket = {
tempvoc = {
systemd.services.tempvoc = {
description = "Enium discord bot for tempvoc";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
User = "nobody";
WorkingDirectory = "/root/tempvoc";
WorkingDirectory = "/opt/tempvoc";
ExecStart = "${pkgs.nodejs}/bin/npm start";
Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.nodejs}/bin";
Restart = "on-failure";

View file

@ -1,6 +1,10 @@
{ config, pkgs, ... }:
{ config, pkgs, lib, ... }:
let
cfg = config.service.bot_discord.ticket;
in
{
config = lib.mkIf cfg {
environment.systemPackages = with pkgs; [
nodejs
];
@ -11,7 +15,7 @@
serviceConfig = {
Type = "simple";
User = "nobody";
WorkingDirectory = "/root/ticket";
WorkingDirectory = "/opt/ticket";
ExecStart = "${pkgs.nodejs}/bin/npm start";
Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.nodejs}/bin";
Restart = "on-failure";

48
services/discord.nix Normal file
View file

@ -0,0 +1,48 @@
{ config, pkgs, lib, ... }:
let
master_bot = import ./bot_discord/master.nix {
inherit config pkgs lib;
};
music_bot = import ./bot_discord/music.nix {
inherit config pkgs lib;
};
tempvoc_bot = import ./bot_discord/tempvoc.nix {
inherit config pkgs lib;
};
ticket_bot = import ./bot_discord/ticket.nix {
inherit config pkgs lib;
};
cfg = config.service.bot_discord;
in
{
imports = [
master_bot
music_bot
tempvoc_bot
ticket_bot
];
options.service.bot_discord = {
master = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable master bot";
};
music = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable music bot";
};
tempvoc = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable tempvoc bot";
};
ticket = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable ticket bot";
};
};
}