From 09b70ceb238661badbde18f7a10628224fa1b059 Mon Sep 17 00:00:00 2001 From: emily Date: Fri, 27 Sep 2024 00:06:27 +0200 Subject: [PATCH] librespeed,graphical: minor fixes --- modules/graphical/hyprland.nix | 2 +- modules/librespeed/default.nix | 43 ++++++++++++++++++++------------ pkgs/librespeed-rust/default.nix | 1 + 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/modules/graphical/hyprland.nix b/modules/graphical/hyprland.nix index 9c05672..96dafe6 100644 --- a/modules/graphical/hyprland.nix +++ b/modules/graphical/hyprland.nix @@ -119,7 +119,7 @@ #"eDP-1, 2560x1600@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: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" ]; workspace = [ diff --git a/modules/librespeed/default.nix b/modules/librespeed/default.nix index 2214525..7b4da9a 100644 --- a/modules/librespeed/default.nix +++ b/modules/librespeed/default.nix @@ -107,10 +107,10 @@ in { ''; default = {}; type = with types; nullOr (attrsOf (oneOf [ - bool + (nullOr bool) int str - null + package ])); }; }; @@ -130,11 +130,14 @@ in { services.nginx.virtualHosts = lib.mkIf cfg.configureNginx { ${cfg.domain} = { locations."/" = { - proxyPass = "http://${cfg.settings.bind_address}:${toString cfg.settings.listen_port}"; - recommendedProxySettings = true; + root = cfg.settings.speed_test_dir; }; + locations."backend/".extraConfig = "return 301 https://$host:${toString cfg.settings.listen_port}$request_uri;"; enableACME = true; forceSSL = true; + extraConfig = '' + gzip off; + ''; }; }; security.acme.certs = lib.mkIf cfg.configureNginx { @@ -144,7 +147,7 @@ in { services.librespeed.servers = lib.mkIf (cfg.domain != null) [ { name = cfg.domain; - server = "https://${cfg.domain}"; + server = "//${cfg.domain}:${toString cfg.settings.listen_port}"; } ]; services.librespeed.settings = let @@ -153,14 +156,15 @@ in { assets = pkgs.runCommand "librespeed-assets" { preferLocal = true; - serverList = '' + serversList = '' function get_servers() { return ${builtins.toJSON cfg.servers} } ''; } '' 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 \ --replace-fail "LibreSpeed Example" ${lib.escapeShellArg (lib.escapeXML cfg.pageTitle)} \ --replace-fail "PUT@YOUR_EMAIL.HERE" ${lib.escapeShellArg (lib.escapeXML cfg.contactEmail)} \ @@ -168,26 +172,27 @@ in { ''; in { 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; base_url = mkDefault "backend"; 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. ipinfo_api_key = mkIf (!cfg.secrets ? "ipinfo_api_key") ""; stats_password = mkIf (!cfg.secrets ? "stats_password") ""; - tls_key_file = mkDefault ""; - tls_cet_file = mkDefault ""; + tls_key_file = mkDefault "/run/credentials/librespeed.service/key.pem"; + 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 configFile = let - anyToString = arg: if (lib.isBool arg) then + mapValue = arg: if (lib.isBool arg) then lib.boolToString arg else if (lib.isInt arg) then toString arg @@ -195,8 +200,9 @@ in { in with lib; pipe cfg.settings [ (filterAttrs (_: val: val != null)) - (mapAttrs (name: val: "${path}=${anyToString val}")) - (concatLines attrValues) + (mapAttrs (name: val: "${name}=${mapValue val}")) + (attrValues) + (concatLines) (pkgs.writeText "${cfg.package.name}-config.toml") ]; in { @@ -239,6 +245,11 @@ in { 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"; ExecStart = "${lib.getExe cfg.package} -c ${if (cfg.secrets == {}) then configFile else "\${RUNTIME_DIRECTORY%%:*}/config.toml"}"; WorkingDirectory = "/var/cache/librespeed"; diff --git a/pkgs/librespeed-rust/default.nix b/pkgs/librespeed-rust/default.nix index 8fc838d..a09896b 100644 --- a/pkgs/librespeed-rust/default.nix +++ b/pkgs/librespeed-rust/default.nix @@ -32,5 +32,6 @@ rustPlatform.buildRustPackage { homepage = "https://github.com/librespeed/speedtest-rust"; license = lib.licenses.lgpl3Plus; maintainers = with lib.maintainers; [ snaki ]; + mainProgram = "librespeed-rs"; }; }