mirror of
https://github.com/Gerg-L/nixos.git
synced 2025-12-10 00:43:56 -05:00
vocard: use nix for configuration
This commit is contained in:
parent
bf8e99ce0e
commit
4f0a7c169c
5 changed files with 273 additions and 287 deletions
|
|
@ -0,0 +1,94 @@
|
||||||
|
{ link, lavalinkPlugins }:
|
||||||
|
{
|
||||||
|
|
||||||
|
server = {
|
||||||
|
http2.enabled = false;
|
||||||
|
port = link.portStr;
|
||||||
|
address = link.ipv4;
|
||||||
|
};
|
||||||
|
lavalink = {
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
dependency = "dev.lavalink.youtube:youtube-plugin:1.11.5";
|
||||||
|
enabled = true;
|
||||||
|
snapshot = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
server = {
|
||||||
|
#password = "";
|
||||||
|
|
||||||
|
bufferDurationMs = 400;
|
||||||
|
filters = {
|
||||||
|
channelMix = true;
|
||||||
|
distortion = true;
|
||||||
|
equalizer = true;
|
||||||
|
karaoke = true;
|
||||||
|
lowPass = true;
|
||||||
|
rotation = true;
|
||||||
|
timescale = true;
|
||||||
|
tremolo = true;
|
||||||
|
vibrato = true;
|
||||||
|
volume = true;
|
||||||
|
};
|
||||||
|
frameBufferDurationMs = 5000;
|
||||||
|
gc-warnings = true;
|
||||||
|
nonAllocatingFrameBuffer = false;
|
||||||
|
opusEncodingQuality = 10;
|
||||||
|
playerUpdateInterval = 5;
|
||||||
|
resamplingQuality = "LOW";
|
||||||
|
soundcloudSearchEnabled = true;
|
||||||
|
sources = {
|
||||||
|
bandcamp = true;
|
||||||
|
http = true;
|
||||||
|
local = false;
|
||||||
|
nico = true;
|
||||||
|
soundcloud = true;
|
||||||
|
twitch = true;
|
||||||
|
vimeo = true;
|
||||||
|
youtube = false;
|
||||||
|
};
|
||||||
|
trackStuckThresholdMs = 10000;
|
||||||
|
useSeekGhosting = true;
|
||||||
|
youtubePlaylistLoadLimit = 6;
|
||||||
|
youtubeSearchEnabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
logging = {
|
||||||
|
file.path = null;
|
||||||
|
|
||||||
|
level = {
|
||||||
|
"dev.lavalink.youtube.http.YoutubeOauth2Handler" = "INFO";
|
||||||
|
lavalink = "INFO";
|
||||||
|
root = "INFO";
|
||||||
|
};
|
||||||
|
request = {
|
||||||
|
enabled = true;
|
||||||
|
includeClientInfo = true;
|
||||||
|
includeHeaders = false;
|
||||||
|
includePayload = true;
|
||||||
|
includeQueryString = true;
|
||||||
|
maxPayloadLength = 10000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
metrics.prometheus.enabled = false;
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
pluginsDir = lavalinkPlugins;
|
||||||
|
youtube = {
|
||||||
|
allowDirectPlaylistIds = true;
|
||||||
|
allowDirectVideoIds = true;
|
||||||
|
allowSearch = true;
|
||||||
|
clients = [ "TVHTML5EMBEDDED" ];
|
||||||
|
enabled = true;
|
||||||
|
oauth = {
|
||||||
|
enabled = true;
|
||||||
|
#refreshToken = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
sentry = {
|
||||||
|
dsn = "";
|
||||||
|
environment = "";
|
||||||
|
};
|
||||||
|
}
|
||||||
146
nixosConfigurations/gerg-desktop/services/vocard/_settings.nix
Normal file
146
nixosConfigurations/gerg-desktop/services/vocard/_settings.nix
Normal file
|
|
@ -0,0 +1,146 @@
|
||||||
|
{
|
||||||
|
link,
|
||||||
|
ferretLink,
|
||||||
|
p,
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
activity = [
|
||||||
|
{
|
||||||
|
name = "/help";
|
||||||
|
status = "online";
|
||||||
|
type = "listening";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
aliases = {
|
||||||
|
connect = [ "join" ];
|
||||||
|
leave = [
|
||||||
|
"stop"
|
||||||
|
"bye"
|
||||||
|
];
|
||||||
|
play = [ "p" ];
|
||||||
|
view = [ "v" ];
|
||||||
|
};
|
||||||
|
bot_access_user = [ ];
|
||||||
|
client_id = p."vocard/client_id";
|
||||||
|
cooldowns = {
|
||||||
|
connect = [
|
||||||
|
2
|
||||||
|
30
|
||||||
|
];
|
||||||
|
"playlist view" = [
|
||||||
|
1
|
||||||
|
30
|
||||||
|
];
|
||||||
|
};
|
||||||
|
default_controller = {
|
||||||
|
default_buttons = [
|
||||||
|
[
|
||||||
|
"back"
|
||||||
|
"resume"
|
||||||
|
"skip"
|
||||||
|
{ stop = "red"; }
|
||||||
|
"add"
|
||||||
|
]
|
||||||
|
[ "tracks" ]
|
||||||
|
];
|
||||||
|
disableButtonText = false;
|
||||||
|
embeds = {
|
||||||
|
active = {
|
||||||
|
author = {
|
||||||
|
icon_url = "@@bot_icon@@";
|
||||||
|
name = "Music Controller | @@channel_name@@";
|
||||||
|
};
|
||||||
|
color = "@@track_color@@";
|
||||||
|
description = "**Now Playing: ```[@@track_name@@]```\nLink: [Click Me](@@track_url@@) | Requester: @@requester@@ | DJ: @@dj@@**";
|
||||||
|
footer.text = "Queue Length: @@queue_length@@ | Duration: @@track_duration@@ | Volume: @@volume@@% {{loop_mode != 'Off' ?? | Repeat: @@loop_mode@@}}";
|
||||||
|
image = "@@track_thumbnail@@";
|
||||||
|
};
|
||||||
|
inactive = {
|
||||||
|
color = "@@default_embed_color@@";
|
||||||
|
description = "[Support](@@server_invite_link@@) | [Invite](@@invite_link@@) | [Questionnaire](https://forms.gle/Qm8vjBfg2kp13YGD7)";
|
||||||
|
image = "https://i.imgur.com/dIFBwU7.png";
|
||||||
|
title.name = "There are no songs playing right now";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
default_max_queue = 1000;
|
||||||
|
default_voice_status_template = "{{@@track_name@@ != 'None' ?? @@track_source_emoji@@ Now Playing: @@track_name@@ // Waiting for song requests}}";
|
||||||
|
embed_color = "0xb3b3b3";
|
||||||
|
genius_token = "YOUR_GENIUS_TOKEN";
|
||||||
|
ipc_client = {
|
||||||
|
enable = false;
|
||||||
|
host = "127.0.0.1";
|
||||||
|
password = "YOUR_PASSWORD";
|
||||||
|
port = 8000;
|
||||||
|
secure = false;
|
||||||
|
};
|
||||||
|
logging = {
|
||||||
|
file = {
|
||||||
|
enable = false;
|
||||||
|
path = "./logs";
|
||||||
|
};
|
||||||
|
level = {
|
||||||
|
discord = "INFO";
|
||||||
|
ipc_client = "INFO";
|
||||||
|
vocard = "INFO";
|
||||||
|
};
|
||||||
|
max-history = 30;
|
||||||
|
};
|
||||||
|
lyrics_platform = "lyrist";
|
||||||
|
mongodb_name = "vocard";
|
||||||
|
mongodb_url = ferretLink.url;
|
||||||
|
nodes.DEFAULT = {
|
||||||
|
host = link.ipv4;
|
||||||
|
identifier = "DEFAULT";
|
||||||
|
password = p."vocard/password";
|
||||||
|
inherit (link) port;
|
||||||
|
secure = false;
|
||||||
|
};
|
||||||
|
prefix = "?";
|
||||||
|
sources_settings = {
|
||||||
|
apple = {
|
||||||
|
color = "0xE298C4";
|
||||||
|
emoji = "<:applemusic:994844332374884413>";
|
||||||
|
};
|
||||||
|
bandcamp = {
|
||||||
|
color = "0x6F98A7";
|
||||||
|
emoji = "<:bandcamp:864694003811221526>";
|
||||||
|
};
|
||||||
|
reddit = {
|
||||||
|
color = "0xFF5700";
|
||||||
|
emoji = "<:reddit:996007566863773717>";
|
||||||
|
};
|
||||||
|
soundcloud = {
|
||||||
|
color = "0xFF7700";
|
||||||
|
emoji = "<:soundcloud:852729280027033632>";
|
||||||
|
};
|
||||||
|
spotify = {
|
||||||
|
color = "0x1DB954";
|
||||||
|
emoji = "<:spotify:826661996615172146>";
|
||||||
|
};
|
||||||
|
tiktok = {
|
||||||
|
color = "0x74ECE9";
|
||||||
|
emoji = "<:tiktok:996007689798811698>";
|
||||||
|
};
|
||||||
|
twitch = {
|
||||||
|
color = "0x9B4AFF";
|
||||||
|
emoji = "<:twitch:852729278285086741>";
|
||||||
|
};
|
||||||
|
vimeo = {
|
||||||
|
color = "0x1ABCEA";
|
||||||
|
emoji = "<:vimeo:864694001919721473>";
|
||||||
|
};
|
||||||
|
youtube = {
|
||||||
|
color = "0xFF0000";
|
||||||
|
emoji = "<:youtube:826661982760992778>";
|
||||||
|
};
|
||||||
|
"youtube music" = {
|
||||||
|
color = "0xFF0000";
|
||||||
|
emoji = "<:youtube:826661982760992778>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
spotify_client_id = p."vocard/spotify_client_id";
|
||||||
|
spotify_client_secret = p."vocard/spotify_client_secret";
|
||||||
|
token = p."vocard/token";
|
||||||
|
version = "v2.6.9";
|
||||||
|
}
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
server: # REST and WS server
|
|
||||||
port: 2333
|
|
||||||
address: 0.0.0.0
|
|
||||||
http2:
|
|
||||||
enabled: false # Whether to enable HTTP/2 support
|
|
||||||
plugins:
|
|
||||||
youtube:
|
|
||||||
enabled: true
|
|
||||||
allowSearch: true # Whether "ytsearch:" and "ytmsearch:" can be used.
|
|
||||||
allowDirectVideoIds: true # Whether just video IDs can match. If false, only complete URLs will be loaded.
|
|
||||||
allowDirectPlaylistIds: true # Whether just playlist IDs can match. If false, only complete URLs will be loaded.
|
|
||||||
# The clients to use for track loading. See below for a list of valid clients.
|
|
||||||
# Clients are queried in the order they are given (so the first client is queried first and so on...)
|
|
||||||
clients:
|
|
||||||
- TVHTML5EMBEDDED
|
|
||||||
oauth:
|
|
||||||
enabled: true
|
|
||||||
# Set with env vars
|
|
||||||
#refreshToken: ""
|
|
||||||
lavalink:
|
|
||||||
plugins:
|
|
||||||
- dependency: "dev.lavalink.youtube:youtube-plugin:1.11.5"
|
|
||||||
snapshot: false
|
|
||||||
# setting "enabled: true" is the bare minimum to get OAuth working.
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
# Set with env vars
|
|
||||||
#pluginsDir: ""
|
|
||||||
server:
|
|
||||||
|
|
||||||
# Set with env vars
|
|
||||||
#password: ""
|
|
||||||
sources:
|
|
||||||
youtube: false
|
|
||||||
bandcamp: true
|
|
||||||
soundcloud: true
|
|
||||||
twitch: true
|
|
||||||
vimeo: true
|
|
||||||
nico: true
|
|
||||||
http: true
|
|
||||||
local: false
|
|
||||||
filters: # All filters are enabled by default
|
|
||||||
volume: true
|
|
||||||
equalizer: true
|
|
||||||
karaoke: true
|
|
||||||
timescale: true
|
|
||||||
tremolo: true
|
|
||||||
vibrato: true
|
|
||||||
distortion: true
|
|
||||||
rotation: true
|
|
||||||
channelMix: true
|
|
||||||
lowPass: true
|
|
||||||
nonAllocatingFrameBuffer: false # Setting to true reduces the number of allocations made by each player at the expense of frame rebuilding (e.g. non-instantaneous volume changes)
|
|
||||||
bufferDurationMs: 400 # The duration of the NAS buffer. Higher values fare better against longer GC pauses. Duration <= 0 to disable JDA-NAS. Minimum of 40ms, lower values may introduce pauses.
|
|
||||||
frameBufferDurationMs: 5000 # How many milliseconds of audio to keep buffered
|
|
||||||
opusEncodingQuality: 10 # Opus encoder quality. Valid values range from 0 to 10, where 10 is best quality but is the most expensive on the CPU.
|
|
||||||
resamplingQuality: LOW # Quality of resampling operations. Valid values are LOW, MEDIUM and HIGH, where HIGH uses the most CPU.
|
|
||||||
trackStuckThresholdMs: 10000 # The threshold for how long a track can be stuck. A track is stuck if does not return any audio data.
|
|
||||||
useSeekGhosting: true # Seek ghosting is the effect where whilst a seek is in progress, the audio buffer is read from until empty, or until seek is ready.
|
|
||||||
youtubePlaylistLoadLimit: 6 # Number of pages at 100 each
|
|
||||||
playerUpdateInterval: 5 # How frequently to send player updates to clients, in seconds
|
|
||||||
youtubeSearchEnabled: true
|
|
||||||
soundcloudSearchEnabled: true
|
|
||||||
gc-warnings: true
|
|
||||||
#ratelimit:
|
|
||||||
#ipBlocks: ["1.0.0.0/8", "..."] # list of ip blocks
|
|
||||||
#excludedIps: ["...", "..."] # ips which should be explicit excluded from usage by lavalink
|
|
||||||
#strategy: "RotateOnBan" # RotateOnBan | LoadBalance | NanoSwitch | RotatingNanoSwitch
|
|
||||||
#searchTriggersFail: true # Whether a search 429 should trigger marking the ip as failing
|
|
||||||
#retryLimit: -1 # -1 = use default lavaplayer value | 0 = infinity | >0 = retry will happen this numbers times
|
|
||||||
#youtubeConfig: # Required for avoiding all age restrictions by YouTube, some restricted videos still can be played without.
|
|
||||||
#email: "" # Email of Google account
|
|
||||||
#password: "" # Password of Google account
|
|
||||||
#httpConfig: # Useful for blocking bad-actors from ip-grabbing your music node and attacking it, this way only the http proxy will be attacked
|
|
||||||
#proxyHost: "localhost" # Hostname of the proxy, (ip or domain)
|
|
||||||
#proxyPort: 3128 # Proxy port, 3128 is the default for squidProxy
|
|
||||||
#proxyUser: "" # Optional user for basic authentication fields, leave blank if you don't use basic auth
|
|
||||||
#proxyPassword: "" # Password for basic authentication
|
|
||||||
|
|
||||||
metrics:
|
|
||||||
prometheus:
|
|
||||||
enabled: false
|
|
||||||
endpoint: /metrics
|
|
||||||
|
|
||||||
|
|
||||||
sentry:
|
|
||||||
dsn: ""
|
|
||||||
environment: ""
|
|
||||||
|
|
||||||
logging:
|
|
||||||
file:
|
|
||||||
path: null
|
|
||||||
level:
|
|
||||||
root: INFO
|
|
||||||
lavalink: INFO
|
|
||||||
dev.lavalink.youtube.http.YoutubeOauth2Handler: INFO
|
|
||||||
|
|
||||||
request:
|
|
||||||
enabled: true
|
|
||||||
includeClientInfo: true
|
|
||||||
includeHeaders: false
|
|
||||||
includeQueryString: true
|
|
||||||
includePayload: true
|
|
||||||
maxPayloadLength: 10000
|
|
||||||
|
|
||||||
logback:
|
|
||||||
rollingpolicy:
|
|
||||||
max-file-size: 1GB
|
|
||||||
max-history: 30
|
|
||||||
|
|
@ -1,157 +0,0 @@
|
||||||
{
|
|
||||||
"token": "@token@",
|
|
||||||
"client_id": "@client_id@",
|
|
||||||
"spotify_client_id": "@spotify_client_id@",
|
|
||||||
"spotify_client_secret": "@spotify_client_secret@",
|
|
||||||
"genius_token": "YOUR_GENIUS_TOKEN",
|
|
||||||
"mongodb_url": "0.0.0.0",
|
|
||||||
"mongodb_name": "vocard",
|
|
||||||
"nodes": {
|
|
||||||
"DEFAULT": {
|
|
||||||
"host": "0.0.0.0",
|
|
||||||
"port": 2333,
|
|
||||||
"password": "@password@",
|
|
||||||
"secure": false,
|
|
||||||
"identifier": "DEFAULT"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"prefix": "?",
|
|
||||||
"activity": [
|
|
||||||
{
|
|
||||||
"type": "listening",
|
|
||||||
"name": "/help",
|
|
||||||
"status": "online"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"logging": {
|
|
||||||
"file": {
|
|
||||||
"path": "./logs",
|
|
||||||
"enable": false
|
|
||||||
},
|
|
||||||
"level": {
|
|
||||||
"discord": "INFO",
|
|
||||||
"vocard": "INFO",
|
|
||||||
"ipc_client": "INFO"
|
|
||||||
},
|
|
||||||
"max-history": 30
|
|
||||||
},
|
|
||||||
"bot_access_user": [],
|
|
||||||
"embed_color": "0xb3b3b3",
|
|
||||||
"default_max_queue": 1000,
|
|
||||||
"lyrics_platform": "lyrist",
|
|
||||||
"ipc_client": {
|
|
||||||
"host": "127.0.0.1",
|
|
||||||
"port": 8000,
|
|
||||||
"password": "YOUR_PASSWORD",
|
|
||||||
"secure": false,
|
|
||||||
"enable": false
|
|
||||||
},
|
|
||||||
"sources_settings": {
|
|
||||||
"youtube": {
|
|
||||||
"emoji": "<:youtube:826661982760992778>",
|
|
||||||
"color": "0xFF0000"
|
|
||||||
},
|
|
||||||
"youtube music": {
|
|
||||||
"emoji": "<:youtube:826661982760992778>",
|
|
||||||
"color": "0xFF0000"
|
|
||||||
},
|
|
||||||
"spotify": {
|
|
||||||
"emoji": "<:spotify:826661996615172146>",
|
|
||||||
"color": "0x1DB954"
|
|
||||||
},
|
|
||||||
"soundcloud": {
|
|
||||||
"emoji": "<:soundcloud:852729280027033632>",
|
|
||||||
"color": "0xFF7700"
|
|
||||||
},
|
|
||||||
"twitch": {
|
|
||||||
"emoji": "<:twitch:852729278285086741>",
|
|
||||||
"color": "0x9B4AFF"
|
|
||||||
},
|
|
||||||
"bandcamp": {
|
|
||||||
"emoji": "<:bandcamp:864694003811221526>",
|
|
||||||
"color": "0x6F98A7"
|
|
||||||
},
|
|
||||||
"vimeo": {
|
|
||||||
"emoji": "<:vimeo:864694001919721473>",
|
|
||||||
"color": "0x1ABCEA"
|
|
||||||
},
|
|
||||||
"apple": {
|
|
||||||
"emoji": "<:applemusic:994844332374884413>",
|
|
||||||
"color": "0xE298C4"
|
|
||||||
},
|
|
||||||
"reddit": {
|
|
||||||
"emoji": "<:reddit:996007566863773717>",
|
|
||||||
"color": "0xFF5700"
|
|
||||||
},
|
|
||||||
"tiktok": {
|
|
||||||
"emoji": "<:tiktok:996007689798811698>",
|
|
||||||
"color": "0x74ECE9"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default_controller": {
|
|
||||||
"embeds": {
|
|
||||||
"active": {
|
|
||||||
"description": "**Now Playing: ```[@@track_name@@]```\nLink: [Click Me](@@track_url@@) | Requester: @@requester@@ | DJ: @@dj@@**",
|
|
||||||
"footer": {
|
|
||||||
"text": "Queue Length: @@queue_length@@ | Duration: @@track_duration@@ | Volume: @@volume@@% {{loop_mode != 'Off' ?? | Repeat: @@loop_mode@@}}"
|
|
||||||
},
|
|
||||||
"image": "@@track_thumbnail@@",
|
|
||||||
"author": {
|
|
||||||
"name": "Music Controller | @@channel_name@@",
|
|
||||||
"icon_url": "@@bot_icon@@"
|
|
||||||
},
|
|
||||||
"color": "@@track_color@@"
|
|
||||||
},
|
|
||||||
"inactive": {
|
|
||||||
"title": {
|
|
||||||
"name": "There are no songs playing right now"
|
|
||||||
},
|
|
||||||
"description": "[Support](@@server_invite_link@@) | [Invite](@@invite_link@@) | [Questionnaire](https://forms.gle/Qm8vjBfg2kp13YGD7)",
|
|
||||||
"image": "https://i.imgur.com/dIFBwU7.png",
|
|
||||||
"color": "@@default_embed_color@@"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"default_buttons": [
|
|
||||||
[
|
|
||||||
"back",
|
|
||||||
"resume",
|
|
||||||
"skip",
|
|
||||||
{
|
|
||||||
"stop": "red"
|
|
||||||
},
|
|
||||||
"add"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"tracks"
|
|
||||||
]
|
|
||||||
],
|
|
||||||
"disableButtonText": false
|
|
||||||
},
|
|
||||||
"default_voice_status_template": "{{@@track_name@@ != 'None' ?? @@track_source_emoji@@ Now Playing: @@track_name@@ // Waiting for song requests}}",
|
|
||||||
"cooldowns": {
|
|
||||||
"connect": [
|
|
||||||
2,
|
|
||||||
30
|
|
||||||
],
|
|
||||||
"playlist view": [
|
|
||||||
1,
|
|
||||||
30
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"aliases": {
|
|
||||||
"connect": [
|
|
||||||
"join"
|
|
||||||
],
|
|
||||||
"leave": [
|
|
||||||
"stop",
|
|
||||||
"bye"
|
|
||||||
],
|
|
||||||
"play": [
|
|
||||||
"p"
|
|
||||||
],
|
|
||||||
"view": [
|
|
||||||
"v"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"version": "v2.6.9"
|
|
||||||
}
|
|
||||||
|
|
@ -2,8 +2,18 @@
|
||||||
self',
|
self',
|
||||||
lib,
|
lib,
|
||||||
config,
|
config,
|
||||||
|
pkgs,
|
||||||
}:
|
}:
|
||||||
|
let
|
||||||
|
link = config.local.links.lavalink;
|
||||||
|
ferretLink = config.local.links.ferretdb;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
local.links = {
|
||||||
|
lavalink = { };
|
||||||
|
ferretdb.protocol = "mongodb";
|
||||||
|
};
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
secrets =
|
secrets =
|
||||||
{
|
{
|
||||||
|
|
@ -36,23 +46,12 @@
|
||||||
"vocard.service"
|
"vocard.service"
|
||||||
"lavalink.service"
|
"lavalink.service"
|
||||||
];
|
];
|
||||||
content =
|
content = builtins.toJSON (
|
||||||
builtins.replaceStrings
|
import ./_settings.nix {
|
||||||
[
|
inherit link ferretLink;
|
||||||
"@token@"
|
p = config.sops.placeholder;
|
||||||
"@client_id@"
|
}
|
||||||
"@spotify_client_id@"
|
);
|
||||||
"@spotify_client_secret@"
|
|
||||||
"@password@"
|
|
||||||
]
|
|
||||||
(map (x: config.sops.placeholder.${x}) [
|
|
||||||
"vocard/token"
|
|
||||||
"vocard/client_id"
|
|
||||||
"vocard/spotify_client_id"
|
|
||||||
"vocard/spotify_client_secret"
|
|
||||||
"vocard/password"
|
|
||||||
])
|
|
||||||
(builtins.readFile ./settings.json);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -88,10 +87,20 @@
|
||||||
"network-online.target"
|
"network-online.target"
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.LAVALINK_PLUGINS_DIR = self'.packages.lavalinkPlugins;
|
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${lib.getExe self'.packages.lavalink} --spring.config.location='file:${./application.yml}'";
|
ExecStart =
|
||||||
|
let
|
||||||
|
configFile = pkgs.writeText "application.yml" (
|
||||||
|
builtins.toJSON (
|
||||||
|
import ./_application.nix {
|
||||||
|
inherit link;
|
||||||
|
inherit (self'.packages) lavalinkPlugins;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
in
|
||||||
|
|
||||||
|
"${lib.getExe self'.packages.lavalink} --spring.config.location='file:${configFile}'";
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
EnvironmentFile = config.sops.secrets.lavalink.path;
|
EnvironmentFile = config.sops.secrets.lavalink.path;
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
|
|
@ -100,7 +109,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.ferretdb.enable = true;
|
services.ferretdb = {
|
||||||
|
enable = true;
|
||||||
|
settings.FERRETDB_LISTEN_ADDR = ferretLink.tuple;
|
||||||
|
};
|
||||||
|
|
||||||
systemd.mounts = [
|
systemd.mounts = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue