librespeed,graphical: minor fixes
This commit is contained in:
parent
1c8bfba590
commit
3cf2fdce63
|
@ -2,5 +2,6 @@
|
||||||
services.librespeed = {
|
services.librespeed = {
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "speed.kyouma.net";
|
domain = "speed.kyouma.net";
|
||||||
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
#"eDP-1, 2560x1600@60, 0x0, 1, bitdepth, 10"
|
#"eDP-1, 2560x1600@60, 0x0, 1, bitdepth, 10"
|
||||||
#"eDP-1, 1920x1200@60, 0x0, 1, bitdepth, 10"
|
#"eDP-1, 1920x1200@60, 0x0, 1, bitdepth, 10"
|
||||||
"desc:Dell Inc. AW3225QF FXK2YZ3, 3840x2160@240,5280x0,1, bitdepth,10, vrr,2"
|
"desc:Dell Inc. AW3225QF FXK2YZ3, 3840x2160@240,5280x0,1, bitdepth,10, vrr,2"
|
||||||
"desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-350,1, bitdepth,10, transform,1"
|
"desc:GIGA-BYTE TECHNOLOGY CO. LTD. AORUS AD27QD 19320B000455, 2560x1440@144,3840x-280,1, bitdepth,10, transform,1"
|
||||||
",preferred,auto,1"
|
",preferred,auto,1"
|
||||||
];
|
];
|
||||||
workspace = [
|
workspace = [
|
||||||
|
|
|
@ -107,10 +107,10 @@ in {
|
||||||
'';
|
'';
|
||||||
default = {};
|
default = {};
|
||||||
type = with types; nullOr (attrsOf (oneOf [
|
type = with types; nullOr (attrsOf (oneOf [
|
||||||
bool
|
(nullOr bool)
|
||||||
int
|
int
|
||||||
str
|
str
|
||||||
null
|
package
|
||||||
]));
|
]));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -130,11 +130,14 @@ in {
|
||||||
services.nginx.virtualHosts = lib.mkIf cfg.configureNginx {
|
services.nginx.virtualHosts = lib.mkIf cfg.configureNginx {
|
||||||
${cfg.domain} = {
|
${cfg.domain} = {
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://${cfg.settings.bind_address}:${toString cfg.settings.listen_port}";
|
root = cfg.settings.speed_test_dir;
|
||||||
recommendedProxySettings = true;
|
|
||||||
};
|
};
|
||||||
|
locations."/backend/".extraConfig = "return 301 https://$host:${toString cfg.settings.listen_port}$request_uri;";
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
|
extraConfig = ''
|
||||||
|
gzip off;
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
security.acme.certs = lib.mkIf cfg.configureNginx {
|
security.acme.certs = lib.mkIf cfg.configureNginx {
|
||||||
|
@ -144,7 +147,7 @@ in {
|
||||||
services.librespeed.servers = lib.mkIf (cfg.domain != null) [
|
services.librespeed.servers = lib.mkIf (cfg.domain != null) [
|
||||||
{
|
{
|
||||||
name = cfg.domain;
|
name = cfg.domain;
|
||||||
server = "https://${cfg.domain}";
|
server = "//${cfg.domain}:${toString cfg.settings.listen_port}";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
services.librespeed.settings = let
|
services.librespeed.settings = let
|
||||||
|
@ -153,14 +156,15 @@ in {
|
||||||
assets = pkgs.runCommand "librespeed-assets" {
|
assets = pkgs.runCommand "librespeed-assets" {
|
||||||
preferLocal = true;
|
preferLocal = true;
|
||||||
|
|
||||||
serverList = ''
|
serversList = ''
|
||||||
function get_servers() {
|
function get_servers() {
|
||||||
return ${builtins.toJSON cfg.servers}
|
return ${builtins.toJSON cfg.servers}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
} ''
|
} ''
|
||||||
cp -r ${pkgs.librespeed-rust}/assets $out
|
cp -r ${pkgs.librespeed-rust}/assets $out
|
||||||
cat >$out/server_list.js <<<"$serverList"
|
chmod 666 $out/servers_list.js
|
||||||
|
cat >$out/servers_list.js <<<"$serversList"
|
||||||
substitute ${pkgs.librespeed-rust}/assets/index.html $out/index.html \
|
substitute ${pkgs.librespeed-rust}/assets/index.html $out/index.html \
|
||||||
--replace-fail "LibreSpeed Example" ${lib.escapeShellArg (lib.escapeXML cfg.pageTitle)} \
|
--replace-fail "LibreSpeed Example" ${lib.escapeShellArg (lib.escapeXML cfg.pageTitle)} \
|
||||||
--replace-fail "PUT@YOUR_EMAIL.HERE" ${lib.escapeShellArg (lib.escapeXML cfg.contactEmail)} \
|
--replace-fail "PUT@YOUR_EMAIL.HERE" ${lib.escapeShellArg (lib.escapeXML cfg.contactEmail)} \
|
||||||
|
@ -168,26 +172,27 @@ in {
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
speed_test_dir = assets;
|
speed_test_dir = assets;
|
||||||
bind_address = mkDefault (if cfg.configureNginx then "127.0.0.1" else "0.0.0.0");
|
bind_address = mkDefault (if cfg.configureNginx then "::" else "::");
|
||||||
listen_port = mkDefault 8989;
|
listen_port = mkDefault 8989;
|
||||||
base_url = mkDefault "backend";
|
base_url = mkDefault "backend";
|
||||||
worker_threads = mkDefault "auto";
|
worker_threads = mkDefault "auto";
|
||||||
|
|
||||||
database_type = mkDefault "none";
|
|
||||||
database_file = mkIf (cfg.settings.database_type == "sqlite") mkDefault "/var/lib/librespeed/speedtest.sqlite";
|
|
||||||
|
|
||||||
#librespeed-rust will fail to start if the following config parameters are omitted.
|
#librespeed-rust will fail to start if the following config parameters are omitted.
|
||||||
ipinfo_api_key = mkIf (!cfg.secrets ? "ipinfo_api_key") "";
|
ipinfo_api_key = mkIf (!cfg.secrets ? "ipinfo_api_key") "";
|
||||||
stats_password = mkIf (!cfg.secrets ? "stats_password") "";
|
stats_password = mkIf (!cfg.secrets ? "stats_password") "";
|
||||||
tls_key_file = mkDefault "";
|
tls_key_file = mkDefault "/run/credentials/librespeed.service/key.pem";
|
||||||
tls_cet_file = mkDefault "";
|
tls_cet_file = mkDefault "/run/credentials/librespeed.service/cert.pem";
|
||||||
|
|
||||||
enable_tls = mkDefault false;
|
enable_tls = mkDefault true;
|
||||||
|
} // rec {
|
||||||
|
database_type = mkDefault "none";
|
||||||
|
database_file = mkIf (database_type == "sqlite") "/var/lib/librespeed/speedtest.sqlite";
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services = let
|
systemd.services = let
|
||||||
configFile = let
|
configFile = let
|
||||||
anyToString = arg: if (lib.isBool arg) then
|
mapValue = arg: if (lib.isBool arg) then
|
||||||
lib.boolToString arg
|
lib.boolToString arg
|
||||||
else if (lib.isInt arg) then
|
else if (lib.isInt arg) then
|
||||||
toString arg
|
toString arg
|
||||||
|
@ -195,8 +200,9 @@ in {
|
||||||
in
|
in
|
||||||
with lib; pipe cfg.settings [
|
with lib; pipe cfg.settings [
|
||||||
(filterAttrs (_: val: val != null))
|
(filterAttrs (_: val: val != null))
|
||||||
(mapAttrs (name: val: "${path}=${anyToString val}"))
|
(mapAttrs (name: val: "${name}=${mapValue val}"))
|
||||||
(concatLines attrValues)
|
(attrValues)
|
||||||
|
(concatLines)
|
||||||
(pkgs.writeText "${cfg.package.name}-config.toml")
|
(pkgs.writeText "${cfg.package.name}-config.toml")
|
||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
|
@ -239,6 +245,11 @@ in {
|
||||||
|
|
||||||
DynamicUser = true;
|
DynamicUser = true;
|
||||||
|
|
||||||
|
LoadCredential = [
|
||||||
|
"cert.pem:${config.security.acme.certs.${cfg.domain}.directory}/cert.pem"
|
||||||
|
"key.pem:${config.security.acme.certs.${cfg.domain}.directory}/key.pem"
|
||||||
|
];
|
||||||
|
|
||||||
ExecStartPre = lib.mkIf (!cfg.secrets ? "ipinfo_api_key") "${lib.getExe cfg.package} --update-ipdb";
|
ExecStartPre = lib.mkIf (!cfg.secrets ? "ipinfo_api_key") "${lib.getExe cfg.package} --update-ipdb";
|
||||||
ExecStart = "${lib.getExe cfg.package} -c ${if (cfg.secrets == {}) then configFile else "\${RUNTIME_DIRECTORY%%:*}/config.toml"}";
|
ExecStart = "${lib.getExe cfg.package} -c ${if (cfg.secrets == {}) then configFile else "\${RUNTIME_DIRECTORY%%:*}/config.toml"}";
|
||||||
WorkingDirectory = "/var/cache/librespeed";
|
WorkingDirectory = "/var/cache/librespeed";
|
||||||
|
|
|
@ -32,5 +32,6 @@ rustPlatform.buildRustPackage {
|
||||||
homepage = "https://github.com/librespeed/speedtest-rust";
|
homepage = "https://github.com/librespeed/speedtest-rust";
|
||||||
license = lib.licenses.lgpl3Plus;
|
license = lib.licenses.lgpl3Plus;
|
||||||
maintainers = with lib.maintainers; [ snaki ];
|
maintainers = with lib.maintainers; [ snaki ];
|
||||||
|
mainProgram = "librespeed-rs";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue