diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index e55b7c07349f..15b5ee49584b 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -9734,6 +9734,12 @@ githubId = 36667224; name = "Yingchi Long"; }; + IncredibleLaser = { + github = "IncredibleLaser"; + githubId = 45564436; + matrix = "@incrediblelaser:tchncs.de"; + name = "Gereon Schomber"; + }; indexyz = { email = "indexyz@pm.me"; github = "5aaee9"; @@ -14811,12 +14817,6 @@ name = "Marcin MikuĊ‚a"; keys = [ { fingerprint = "5547 2A56 AC30 69C9 15C8 B98D 997F 71FA 1D74 6E37"; } ]; }; - milahu = { - email = "milahu@gmail.com"; - github = "milahu"; - githubId = 12958815; - name = "Milan Hauth"; - }; milesbreslin = { email = "milesbreslin@gmail.com"; github = "MilesBreslin"; diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index e983039c86cf..4324a151e2ea 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -63,6 +63,8 @@ - [waagent](https://github.com/Azure/WALinuxAgent), the Microsoft Azure Linux Agent (waagent) manages Linux provisioning and VM interaction with the Azure Fabric Controller. Available with [services.waagent](options.html#opt-services.waagent.enable). +- [duckdns](https://www.duckdns.org), free dynamic DNS. Available with [services.duckdns](options.html#opt-services.duckdns.enable) + - [nostr-rs-relay](https://git.sr.ht/~gheartsfield/nostr-rs-relay/), This is a nostr relay, written in Rust. Available as [services.nostr-rs-relay](options.html#opt-services.nostr-rs-relay.enable). - [Actual Budget](https://actualbudget.org/), a local-first personal finance app. Available as [services.actual](#opt-services.actual.enable). @@ -153,6 +155,9 @@ - `vscode-utils.buildVscodeExtension` now requires pname as an argument +- The behavior of `services.hostapd.radios..networks..authentication.enableRecommendedPairwiseCiphers` was changed to not include `CCMP-256` anymore. + Since all configured pairwise ciphers have to be supported by the radio, this caused startup failures on many devices which is hard to debug in hostapd. + - `nerdfonts` has been separated into individual font packages under the namespace `nerd-fonts`. The directories for font files have changed from `$out/share/fonts/{opentype,truetype}/NerdFonts` to `$out/share/fonts/{opentype,truetype}/NerdFonts/`, where `` can be found in the diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 9fe8e3be6477..92e8db5ee8e1 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -763,6 +763,7 @@ ./services/misc/disnix.nix ./services/misc/docker-registry.nix ./services/misc/domoticz.nix + ./services/misc/duckdns.nix ./services/misc/duckling.nix ./services/misc/dwm-status.nix ./services/misc/dysnomia.nix diff --git a/nixos/modules/services/networking/hostapd.nix b/nixos/modules/services/networking/hostapd.nix index 82ece277f187..8635dea738ce 100644 --- a/nixos/modules/services/networking/hostapd.nix +++ b/nixos/modules/services/networking/hostapd.nix @@ -11,7 +11,6 @@ let attrNames attrValues concatLists - concatMap concatMapStrings concatStringsSep count @@ -34,11 +33,9 @@ let mkOption mkPackageOption mkRemovedOptionModule - optional optionalAttrs optionalString optionals - singleton stringLength toLower types @@ -710,7 +707,7 @@ in { pairwiseCiphers = mkOption { default = ["CCMP"]; - example = ["CCMP-256" "GCMP-256"]; + example = ["GCMP" "GCMP-256"]; type = types.listOf types.str; description = '' Set of accepted cipher suites (encryption algorithms) for pairwise keys (unicast packets). @@ -719,7 +716,8 @@ in { Please refer to the hostapd documentation for allowed values. Generally, only CCMP or GCMP modes should be considered safe options. Most devices support CCMP while - GCMP is often only available with devices supporting WiFi 5 (IEEE 802.11ac) or higher. + GCMP and GCMP-256 is often only available with devices supporting WiFi 5 (IEEE 802.11ac) or higher. + CCMP-256 support is rare. ''; }; @@ -906,7 +904,7 @@ in { bssCfg = bssSubmod.config; pairwiseCiphers = concatStringsSep " " (unique (bssCfg.authentication.pairwiseCiphers - ++ optionals bssCfg.authentication.enableRecommendedPairwiseCiphers ["CCMP" "CCMP-256" "GCMP" "GCMP-256"])); + ++ optionals bssCfg.authentication.enableRecommendedPairwiseCiphers ["CCMP" "GCMP" "GCMP-256"])); in { settings = { ssid = bssCfg.ssid; diff --git a/nixos/modules/services/web-apps/dolibarr.nix b/nixos/modules/services/web-apps/dolibarr.nix index 3f9f853e3b25..136720ef67b4 100644 --- a/nixos/modules/services/web-apps/dolibarr.nix +++ b/nixos/modules/services/web-apps/dolibarr.nix @@ -1,49 +1,81 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: let - inherit (lib) any boolToString concatStringsSep isBool isString mapAttrsToList mkDefault mkEnableOption mkIf mkMerge mkOption optionalAttrs types mkPackageOption; + inherit (lib) + any + boolToString + concatStringsSep + isBool + isString + mapAttrsToList + mkDefault + mkEnableOption + mkIf + mkMerge + mkOption + optionalAttrs + types + mkPackageOption + ; package = cfg.package.override { inherit (cfg) stateDir; }; cfg = config.services.dolibarr; vhostCfg = lib.optionalAttrs (cfg.nginx != null) config.services.nginx.virtualHosts."${cfg.domain}"; - mkConfigFile = filename: settings: + mkConfigFile = + filename: settings: let # hack in special logic for secrets so we read them from a separate file avoiding the nix store - secretKeys = [ "force_install_databasepass" "dolibarr_main_db_pass" "dolibarr_main_instance_unique_id" ]; + secretKeys = [ + "force_install_databasepass" + "dolibarr_main_db_pass" + "dolibarr_main_instance_unique_id" + ]; - toStr = k: v: - if (any (str: k == str) secretKeys) then v - else if isString v then "'${v}'" - else if isBool v then boolToString v - else if v == null then "null" - else toString v - ; + toStr = + k: v: + if (any (str: k == str) secretKeys) then + v + else if isString v then + "'${v}'" + else if isBool v then + boolToString v + else if v == null then + "null" + else + toString v; in - pkgs.writeText filename '' - for details."; }; nginx = mkOption { - type = types.nullOr (types.submodule ( - lib.recursiveUpdate - (import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) - { + type = types.nullOr ( + types.submodule ( + lib.recursiveUpdate (import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) { # enable encryption by default, # as sensitive login and Dolibarr (ERP) data should not be transmitted in clear text. options.forceSSL.default = true; options.enableACME.default = true; } - )); + ) + ); default = null; example = lib.literalExpression '' { @@ -158,17 +196,23 @@ in } ''; description = '' - With this option, you can customize an nginx virtual host which already has sensible defaults for Dolibarr. - Set to {} if you do not need any customization to the virtual host. - If enabled, then by default, the {option}`serverName` is - `''${domain}`, - SSL is active, and certificates are acquired via ACME. - If this is set to null (the default), no nginx virtualHost will be configured. + With this option, you can customize an nginx virtual host which already has sensible defaults for Dolibarr. + Set to {} if you do not need any customization to the virtual host. + If enabled, then by default, the {option}`serverName` is + `''${domain}`, + SSL is active, and certificates are acquired via ACME. + If this is set to null (the default), no nginx virtualHost will be configured. ''; }; poolConfig = mkOption { - type = with types; attrsOf (oneOf [ str int bool ]); + type = + with types; + attrsOf (oneOf [ + str + int + bool + ]); default = { "pm" = "dynamic"; "pm.max_children" = 32; @@ -188,138 +232,144 @@ in config = mkIf cfg.enable (mkMerge [ { - assertions = [ - { assertion = cfg.database.createLocally -> cfg.database.user == cfg.user; - message = "services.dolibarr.database.user must match services.dolibarr.user if the database is to be automatically provisioned"; - } - ]; - - services.dolibarr.settings = { - dolibarr_main_url_root = "https://${cfg.domain}"; - dolibarr_main_document_root = "${package}/htdocs"; - dolibarr_main_url_root_alt = "/custom"; - dolibarr_main_data_root = "${cfg.stateDir}/documents"; - - dolibarr_main_db_host = cfg.database.host; - dolibarr_main_db_port = toString cfg.database.port; - dolibarr_main_db_name = cfg.database.name; - dolibarr_main_db_prefix = "llx_"; - dolibarr_main_db_user = cfg.database.user; - dolibarr_main_db_pass = mkIf (cfg.database.passwordFile != null) '' - file_get_contents("${cfg.database.passwordFile}") - ''; - dolibarr_main_db_type = "mysqli"; - dolibarr_main_db_character_set = mkDefault "utf8"; - dolibarr_main_db_collation = mkDefault "utf8_unicode_ci"; - - # Authentication settings - dolibarr_main_authentication = mkDefault "dolibarr"; - - # Security settings - dolibarr_main_prod = true; - dolibarr_main_force_https = vhostCfg.forceSSL or false; - dolibarr_main_restrict_os_commands = "${pkgs.mariadb}/bin/mysqldump, ${pkgs.mariadb}/bin/mysql"; - dolibarr_nocsrfcheck = false; - dolibarr_main_instance_unique_id = '' - file_get_contents("${cfg.stateDir}/dolibarr_main_instance_unique_id") - ''; - dolibarr_mailing_limit_sendbyweb = false; - }; - - systemd.tmpfiles.rules = [ - "d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group}" - "d '${cfg.stateDir}/documents' 0750 ${cfg.user} ${cfg.group}" - "f '${cfg.stateDir}/conf.php' 0660 ${cfg.user} ${cfg.group}" - "L '${cfg.stateDir}/install.forced.php' - ${cfg.user} ${cfg.group} - ${mkConfigFile "install.forced.php" install}" - ]; - - services.mysql = mkIf cfg.database.createLocally { - enable = mkDefault true; - package = mkDefault pkgs.mariadb; - ensureDatabases = [ cfg.database.name ]; - ensureUsers = [ - { name = cfg.database.user; - ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; }; + assertions = [ + { + assertion = cfg.database.createLocally -> cfg.database.user == cfg.user; + message = "services.dolibarr.database.user must match services.dolibarr.user if the database is to be automatically provisioned"; } ]; - }; - services.nginx.enable = mkIf (cfg.nginx != null) true; - services.nginx.virtualHosts."${cfg.domain}" = mkIf (cfg.nginx != null) (lib.mkMerge [ - cfg.nginx - ({ - root = lib.mkForce "${package}/htdocs"; - locations."/".index = "index.php"; - locations."~ [^/]\\.php(/|$)" = { + services.dolibarr.settings = { + dolibarr_main_url_root = "https://${cfg.domain}"; + dolibarr_main_document_root = "${package}/htdocs"; + dolibarr_main_url_root_alt = "/custom"; + dolibarr_main_data_root = "${cfg.stateDir}/documents"; + + dolibarr_main_db_host = cfg.database.host; + dolibarr_main_db_port = toString cfg.database.port; + dolibarr_main_db_name = cfg.database.name; + dolibarr_main_db_prefix = "llx_"; + dolibarr_main_db_user = cfg.database.user; + dolibarr_main_db_pass = mkIf (cfg.database.passwordFile != null) '' + file_get_contents("${cfg.database.passwordFile}") + ''; + dolibarr_main_db_type = "mysqli"; + dolibarr_main_db_character_set = mkDefault "utf8"; + dolibarr_main_db_collation = mkDefault "utf8_unicode_ci"; + + # Authentication settings + dolibarr_main_authentication = mkDefault "dolibarr"; + + # Security settings + dolibarr_main_prod = true; + dolibarr_main_force_https = vhostCfg.forceSSL or false; + dolibarr_main_restrict_os_commands = "${pkgs.mariadb}/bin/mysqldump, ${pkgs.mariadb}/bin/mysql"; + dolibarr_nocsrfcheck = false; + dolibarr_main_instance_unique_id = '' + file_get_contents("${cfg.stateDir}/dolibarr_main_instance_unique_id") + ''; + dolibarr_mailing_limit_sendbyweb = false; + }; + + systemd.tmpfiles.rules = [ + "d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group}" + "d '${cfg.stateDir}/documents' 0750 ${cfg.user} ${cfg.group}" + "f '${cfg.stateDir}/conf.php' 0660 ${cfg.user} ${cfg.group}" + "L '${cfg.stateDir}/install.forced.php' - ${cfg.user} ${cfg.group} - ${mkConfigFile "install.forced.php" install}" + ]; + + services.mysql = mkIf cfg.database.createLocally { + enable = mkDefault true; + package = mkDefault pkgs.mariadb; + ensureDatabases = [ cfg.database.name ]; + ensureUsers = [ + { + name = cfg.database.user; + ensurePermissions = { + "${cfg.database.name}.*" = "ALL PRIVILEGES"; + }; + } + ]; + }; + + services.nginx.enable = mkIf (cfg.nginx != null) true; + services.nginx.virtualHosts."${cfg.domain}" = mkIf (cfg.nginx != null) ( + lib.mkMerge [ + cfg.nginx + ({ + root = lib.mkForce "${package}/htdocs"; + locations."/".index = "index.php"; + locations."~ [^/]\\.php(/|$)" = { + extraConfig = '' + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:${config.services.phpfpm.pools.dolibarr.socket}; + ''; + }; + }) + ] + ); + + systemd.services."phpfpm-dolibarr".after = mkIf cfg.database.createLocally [ "mysql.service" ]; + services.phpfpm.pools.dolibarr = { + inherit (cfg) user group; + phpPackage = pkgs.php.buildEnv { + extensions = { enabled, all }: enabled ++ [ all.calendar ]; + # recommended by dolibarr web application extraConfig = '' - fastcgi_split_path_info ^(.+?\.php)(/.*)$; - fastcgi_pass unix:${config.services.phpfpm.pools.dolibarr.socket}; + session.use_strict_mode = 1 + session.cookie_samesite = "Lax" + ; open_basedir = "${package}/htdocs, ${cfg.stateDir}" + allow_url_fopen = 0 + disable_functions = "pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals" ''; }; - }) - ]); - systemd.services."phpfpm-dolibarr".after = mkIf cfg.database.createLocally [ "mysql.service" ]; - services.phpfpm.pools.dolibarr = { - inherit (cfg) user group; - phpPackage = pkgs.php.buildEnv { - extensions = { enabled, all }: enabled ++ [ all.calendar ]; - # recommended by dolibarr web application - extraConfig = '' - session.use_strict_mode = 1 - session.cookie_samesite = "Lax" - ; open_basedir = "${package}/htdocs, ${cfg.stateDir}" - allow_url_fopen = 0 - disable_functions = "pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_get_handler, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, pcntl_async_signals" + settings = { + "listen.mode" = "0660"; + "listen.owner" = cfg.user; + "listen.group" = cfg.group; + } // cfg.poolConfig; + }; + + # there are several challenges with dolibarr and NixOS which we can address here + # - the dolibarr installer cannot be entirely automated, though it can partially be by including a file called install.forced.php + # - the dolibarr installer requires write access to its config file during installation, though not afterwards + # - the dolibarr config file generally holds secrets generated by the installer, though the config file is a php file so we can read and write these secrets from an external file + systemd.services.dolibarr-config = { + description = "dolibarr configuration file management via NixOS"; + wantedBy = [ "multi-user.target" ]; + + script = '' + # extract the 'main instance unique id' secret that the dolibarr installer generated for us, store it in a file for use by our own NixOS generated configuration file + ${pkgs.php}/bin/php -r "include '${cfg.stateDir}/conf.php'; file_put_contents('${cfg.stateDir}/dolibarr_main_instance_unique_id', \$dolibarr_main_instance_unique_id);" + + # replace configuration file generated by installer with the NixOS generated configuration file + install -m 440 ${mkConfigFile "conf.php" cfg.settings} '${cfg.stateDir}/conf.php' ''; + + serviceConfig = { + Type = "oneshot"; + User = cfg.user; + Group = cfg.group; + RemainAfterExit = "yes"; + }; + + unitConfig = { + ConditionFileNotEmpty = "${cfg.stateDir}/conf.php"; + }; }; - settings = { - "listen.mode" = "0660"; - "listen.owner" = cfg.user; - "listen.group" = cfg.group; - } // cfg.poolConfig; - }; - - # there are several challenges with dolibarr and NixOS which we can address here - # - the dolibarr installer cannot be entirely automated, though it can partially be by including a file called install.forced.php - # - the dolibarr installer requires write access to its config file during installation, though not afterwards - # - the dolibarr config file generally holds secrets generated by the installer, though the config file is a php file so we can read and write these secrets from an external file - systemd.services.dolibarr-config = { - description = "dolibarr configuration file management via NixOS"; - wantedBy = [ "multi-user.target" ]; - - script = '' - # extract the 'main instance unique id' secret that the dolibarr installer generated for us, store it in a file for use by our own NixOS generated configuration file - ${pkgs.php}/bin/php -r "include '${cfg.stateDir}/conf.php'; file_put_contents('${cfg.stateDir}/dolibarr_main_instance_unique_id', \$dolibarr_main_instance_unique_id);" - - # replace configuration file generated by installer with the NixOS generated configuration file - install -m 644 ${mkConfigFile "conf.php" cfg.settings} '${cfg.stateDir}/conf.php' - ''; - - serviceConfig = { - Type = "oneshot"; - User = cfg.user; - Group = cfg.group; - RemainAfterExit = "yes"; + users.users.dolibarr = mkIf (cfg.user == "dolibarr") { + isSystemUser = true; + group = cfg.group; }; - unitConfig = { - ConditionFileNotEmpty = "${cfg.stateDir}/conf.php"; + users.groups = optionalAttrs (cfg.group == "dolibarr") { + dolibarr = { }; }; - }; - - users.users.dolibarr = mkIf (cfg.user == "dolibarr" ) { - isSystemUser = true; - group = cfg.group; - }; - - users.groups = optionalAttrs (cfg.group == "dolibarr") { - dolibarr = { }; - }; - } - (mkIf (cfg.nginx != null) { - users.users."${config.services.nginx.group}".extraGroups = mkIf (cfg.nginx != null) [ cfg.group ]; - }) -]); + } + (mkIf (cfg.nginx != null) { + users.users."${config.services.nginx.group}".extraGroups = mkIf (cfg.nginx != null) [ cfg.group ]; + }) + ]); } diff --git a/pkgs/applications/maui/booth.nix b/pkgs/applications/maui/booth.nix index 1d9a8e9568df..adf9a1b68cdf 100644 --- a/pkgs/applications/maui/booth.nix +++ b/pkgs/applications/maui/booth.nix @@ -53,6 +53,6 @@ mkDerivation { mainProgram = "booth"; homepage = "https://invent.kde.org/maui/booth"; license = licenses.gpl3Plus; - maintainers = with maintainers; [ milahu ]; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/by-name/ho/home-manager/package.nix b/pkgs/by-name/ho/home-manager/package.nix index 81f2cede3ac6..6b24aca0cc08 100644 --- a/pkgs/by-name/ho/home-manager/package.nix +++ b/pkgs/by-name/ho/home-manager/package.nix @@ -19,14 +19,14 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "home-manager"; - version = "0-unstable-2024-12-12"; + version = "0-unstable-2024-12-23"; src = fetchFromGitHub { name = "home-manager-source"; owner = "nix-community"; repo = "home-manager"; - rev = "3066cc58f552421a2c5414e78407fa5603405b1e"; - hash = "sha256-e9YAMReFV1fDPcZLFC2pa4k/8TloSXeX0z2VysNMAoA="; + rev = "f1b1786ea77739dcd181b920d430e30fb1608b8a"; + hash = "sha256-f9UyHMTb+BwF6RDZ8eO9HOkSlKeeSPBlcYhMmV1UNIk="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ko/koboldcpp/package.nix b/pkgs/by-name/ko/koboldcpp/package.nix index 499c5ddd3fe1..1c5b60219bde 100644 --- a/pkgs/by-name/ko/koboldcpp/package.nix +++ b/pkgs/by-name/ko/koboldcpp/package.nix @@ -3,31 +3,28 @@ fetchFromGitHub, stdenv, makeWrapper, - gitUpdater, python3Packages, tk, addDriverRunpath, apple-sdk_12, + darwinMinVersionHook, koboldLiteSupport ? true, config, cudaPackages ? { }, - openblasSupport ? !stdenv.hostPlatform.isDarwin, - openblas, - cublasSupport ? config.cudaSupport, # You can find a full list here: https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - # For example if you're on an GTX 1080 that means you're using "Pascal" and you need to pass "sm_60" + # For example if you're on an RTX 3060 that means you're using "Ampere" and you need to pass "sm_86" cudaArches ? cudaPackages.cudaFlags.realArches or [ ], clblastSupport ? stdenv.hostPlatform.isLinux, clblast, ocl-icd, - vulkanSupport ? true, + vulkanSupport ? (!stdenv.hostPlatform.isDarwin), vulkan-loader, metalSupport ? stdenv.hostPlatform.isDarwin, nix-update-script, @@ -44,13 +41,13 @@ let in effectiveStdenv.mkDerivation (finalAttrs: { pname = "koboldcpp"; - version = "1.79.1"; + version = "1.80.1"; src = fetchFromGitHub { owner = "LostRuins"; repo = "koboldcpp"; rev = "refs/tags/v${finalAttrs.version}"; - hash = "sha256-RHeEI6mJklGF7BQXxLwxSr1xD6GsI9+fio888UxKru0="; + hash = "sha256-CgJzYF8FnHk0zKdysGJWLnNo/MND24AbQdjRbDtv0II="; }; enableParallelBuilding = true; @@ -65,8 +62,10 @@ effectiveStdenv.mkDerivation (finalAttrs: { buildInputs = [ tk ] ++ finalAttrs.pythonInputs - ++ lib.optionals stdenv.hostPlatform.isDarwin [ apple-sdk_12 ] - ++ lib.optionals openblasSupport [ openblas ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + apple-sdk_12 + (darwinMinVersionHook "10.15") + ] ++ lib.optionals cublasSupport [ cudaPackages.libcublas cudaPackages.cuda_nvcc @@ -82,7 +81,6 @@ effectiveStdenv.mkDerivation (finalAttrs: { pythonPath = finalAttrs.pythonInputs; makeFlags = [ - (makeBool "LLAMA_OPENBLAS" openblasSupport) (makeBool "LLAMA_CUBLAS" cublasSupport) (makeBool "LLAMA_CLBLAST" clblastSupport) (makeBool "LLAMA_VULKAN" vulkanSupport) diff --git a/pkgs/by-name/ma/managarr/package.nix b/pkgs/by-name/ma/managarr/package.nix new file mode 100644 index 000000000000..715ec001e6b1 --- /dev/null +++ b/pkgs/by-name/ma/managarr/package.nix @@ -0,0 +1,30 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + perl, +}: + +rustPlatform.buildRustPackage rec { + pname = "managarr"; + version = "0.4.2"; + + src = fetchFromGitHub { + owner = "Dark-Alex-17"; + repo = "managarr"; + tag = "v${version}"; + hash = "sha256-OxGFubtMsGnR8cWDKkeAgryY095uydA3LzE5SS0dspQ="; + }; + + cargoHash = "sha256-bws4LwpJGfq0hCA2Fq51uCMvr0arbayppq1jvDrILZI="; + + nativeBuildInputs = [ perl ]; + + meta = { + description = "TUI and CLI to manage your Servarrs"; + homepage = "https://github.com/Dark-Alex-17/managarr"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.IncredibleLaser ]; + mainProgram = "managarr"; + }; +} diff --git a/pkgs/by-name/sq/sqlitestudio/package.nix b/pkgs/by-name/sq/sqlitestudio/package.nix index 0dbab2e7c509..3f6f302a5b12 100644 --- a/pkgs/by-name/sq/sqlitestudio/package.nix +++ b/pkgs/by-name/sq/sqlitestudio/package.nix @@ -11,13 +11,13 @@ }: stdenv.mkDerivation rec { pname = "sqlitestudio"; - version = "3.4.10"; + version = "3.4.12"; src = fetchFromGitHub { owner = "pawelsalawa"; repo = "sqlitestudio"; rev = version; - hash = "sha256-M0k+DpHXl0UA7uGRlAz3ksUk5qI2olz9dd+jmuBZuXU="; + hash = "sha256-KPHiJTAxRQ3ZNnkKpfj877vTHEPRKNwy7wHfseftukQ="; }; nativeBuildInputs = diff --git a/pkgs/by-name/st/structorizer/package.nix b/pkgs/by-name/st/structorizer/package.nix index 6b464a467401..c29d388c0c84 100644 --- a/pkgs/by-name/st/structorizer/package.nix +++ b/pkgs/by-name/st/structorizer/package.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { pname = "structorizer"; - version = "3.32-23"; + version = "3.32-24"; desktopItems = [ (makeDesktopItem { @@ -42,7 +42,7 @@ stdenv.mkDerivation rec { owner = "fesch"; repo = "Structorizer.Desktop"; rev = version; - hash = "sha256-fqvQH4DRl+R0laGOnfWgFz67JSAdUzrws4k7gmQ3S7A="; + hash = "sha256-bzo8lUdjCPf22AF++Q9YnvuQp89M2T1cLixuEDHWX6U="; }; patches = [ diff --git a/pkgs/by-name/ub/ubports-click/package.nix b/pkgs/by-name/ub/ubports-click/package.nix new file mode 100644 index 000000000000..c6597596e206 --- /dev/null +++ b/pkgs/by-name/ub/ubports-click/package.nix @@ -0,0 +1,178 @@ +{ + fetchFromGitLab, + fetchpatch, + gitUpdater, + lib, + stdenv, + testers, + autoreconfHook, + dbus, + dbus-test-runner, + dpkg, + getopt, + glib, + gobject-introspection, + json-glib, + libgee, + perl, + pkg-config, + properties-cpp, + python3Packages, + vala, + wrapGAppsHook3, +}: + +let + self = python3Packages.buildPythonApplication rec { + pname = "click"; + version = "0.5.2"; + format = "other"; + + src = fetchFromGitLab { + owner = "ubports"; + repo = "development/core/click"; + rev = version; + hash = "sha256-AV3n6tghvpV/6Ew6Lokf8QAGBIMbHFAnp6G4pefVn+8="; + }; + + patches = [ + # Remove when version > 0.5.2 + (fetchpatch { + name = "0001-click-fix-Wimplicit-function-declaration.patch"; + url = "https://gitlab.com/ubports/development/core/click/-/commit/8f654978a12e6f9a0b6ff64296ec5565e3ff5cd0.patch"; + hash = "sha256-kio+DdtuagUNYEosyQY3q3H+dJM3cLQRW9wUKUcpUTY="; + }) + + # Remove when version > 0.5.2 + (fetchpatch { + name = "0002-click-Add-uid_t-and-gid_t-to-the-ctypes-_typemap.patch"; + url = "https://gitlab.com/ubports/development/core/click/-/commit/cbcd23b08b02fa122434e1edd69c2b3dcb6a8793.patch"; + hash = "sha256-QaWRhxO61wAzULVqPLdJrLuBCr3+NhKmQlEPuYq843I="; + }) + ]; + + postPatch = '' + # These should be proper Requires, using the header needs their headers + substituteInPlace lib/click/click-*.pc.in \ + --replace-fail 'Requires.private' 'Requires' + + # Don't completely override PKG_CONFIG_PATH + substituteInPlace click_package/tests/Makefile.am \ + --replace-fail 'PKG_CONFIG_PATH=$(top_builddir)/lib/click' 'PKG_CONFIG_PATH=$(top_builddir)/lib/click:$(PKG_CONFIG_PATH)' + + patchShebangs bin/click + ''; + + strictDeps = true; + + pkgsBuildBuild = [ + pkg-config + ]; + + nativeBuildInputs = [ + autoreconfHook + dbus-test-runner # Always checking for this + getopt + gobject-introspection + perl + pkg-config + vala + wrapGAppsHook3 + ]; + + buildInputs = [ + glib + json-glib + libgee + properties-cpp + ]; + + propagatedBuildInputs = with python3Packages; [ + python-debian + pygobject3 + setuptools + ]; + + nativeCheckInputs = [ + dbus + dpkg + python3Packages.unittestCheckHook + ]; + + checkInputs = with python3Packages; [ + python-apt + six + ]; + + preConfigure = '' + export click_cv_perl_vendorlib=$out/${perl.libPrefix} + export PYTHON_INSTALL_FLAGS="--prefix=$out" + ''; + + configureFlags = [ + "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system" + "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user" + ]; + + enableParallelBuilding = true; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + + disabledTestPaths = [ + # From apt: Unable to determine a suitable packaging system type + "click_package/tests/integration/test_signatures.py" + "click_package/tests/test_build.py" + "click_package/tests/test_install.py" + "click_package/tests/test_scripts.py" + ]; + + preCheck = '' + export HOME=$TMP + + # tests recompile some files for loaded predefines, doesn't use any optimisation level for it + # makes test output harder to read, so make the warning go away + export NIX_CFLAGS_COMPILE+=" -U_FORTIFY_SOURCE" + + # Haven'tbeen able to get them excluded via disabledTest{s,Paths}, just deleting them + for path in $disabledTestPaths; do + rm -v $path + done + ''; + + preFixup = '' + makeWrapperArgs+=( + --prefix LD_LIBRARY_PATH : "$out/lib" + ) + ''; + + passthru = { + updateScript = gitUpdater { }; + }; + + meta = { + description = "Tool to build click packages, mainly used for Ubuntu Touch"; + homepage = "https://gitlab.com/ubports/development/core/click"; + changelog = "https://gitlab.com/ubports/development/core/click/-/blob/${version}/ChangeLog"; + license = lib.licenses.gpl3Only; + mainProgram = "click"; + maintainers = + with lib.maintainers; + [ + ilyakooo0 + ] + ++ lib.teams.lomiri.members; + platforms = lib.platforms.linux; + pkgConfigModules = [ + "click-0.4" + ]; + }; + }; +in +self +// { + passthru = self.passthru // { + tests.pkg-config = testers.hasPkgConfigModules { + package = self; + }; + }; +} diff --git a/pkgs/by-name/wa/waymore/package.nix b/pkgs/by-name/wa/waymore/package.nix new file mode 100644 index 000000000000..155e5c3c97ef --- /dev/null +++ b/pkgs/by-name/wa/waymore/package.nix @@ -0,0 +1,51 @@ +{ + lib, + fetchFromGitHub, + python3Packages, + waymore, + testers, +}: + +python3Packages.buildPythonApplication rec { + pname = "waymore"; + version = "4.7"; + + src = fetchFromGitHub { + owner = "xnl-h4ck3r"; + repo = "waymore"; + tag = "v${version}"; + hash = "sha256-oaswuXQPdAl2XExwEWnSN15roqNj9OVUr1Y1vsX461o="; + }; + + preBuild = '' + export HOME=$(mktemp -d) + ''; + + build-system = with python3Packages; [ + setuptools + ]; + + dependencies = with python3Packages; [ + requests + termcolor + pyyaml + psutil + uritools + tldextract + ]; + + passthru.tests.version = testers.testVersion { + package = waymore; + command = "waymore --version"; + version = "Waymore - v${version}"; + }; + + meta = { + description = "Find way more from the Wayback Machine"; + homepage = "https://github.com/xnl-h4ck3r/waymore"; + changelog = "https://github.com/xnl-h4ck3r/waymore/releases/tag/v${version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ genga898 ]; + mainProgram = "waymore"; + }; +} diff --git a/pkgs/desktops/deepin/apps/deepin-editor/default.nix b/pkgs/desktops/deepin/apps/deepin-editor/default.nix index 096a353224d4..28ec4b9600e2 100644 --- a/pkgs/desktops/deepin/apps/deepin-editor/default.nix +++ b/pkgs/desktops/deepin/apps/deepin-editor/default.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation rec { pname = "deepin-editor"; - version = "6.5.2"; + version = "6.5.8"; src = fetchFromGitHub { owner = "linuxdeepin"; repo = pname; rev = version; - hash = "sha256-Z3fsnjo4Pcu1e8lKvWdWBhpoOFFy0dSrI2HehRYKJ0k="; + hash = "sha256-QMq7DIggMhY4EseIa7/tvgxGwZn07OitOm1YjrzMFHg="; }; nativeBuildInputs = [ diff --git a/pkgs/development/libraries/qt-6/modules/qtbase/default.nix b/pkgs/development/libraries/qt-6/modules/qtbase/default.nix index e183b35393d7..7065eae8e631 100644 --- a/pkgs/development/libraries/qt-6/modules/qtbase/default.nix +++ b/pkgs/development/libraries/qt-6/modules/qtbase/default.nix @@ -322,7 +322,6 @@ stdenv.mkDerivation rec { lgpl3Plus ]; maintainers = with maintainers; [ - milahu nickcao LunNova ]; diff --git a/pkgs/development/libraries/qt-6/modules/qtwebengine/default.nix b/pkgs/development/libraries/qt-6/modules/qtwebengine/default.nix index 149e02e99c68..1a7da3ed6c67 100644 --- a/pkgs/development/libraries/qt-6/modules/qtwebengine/default.nix +++ b/pkgs/development/libraries/qt-6/modules/qtwebengine/default.nix @@ -66,6 +66,7 @@ bootstrap_cmds, cctools, xcbuild, + fetchpatch, }: qtModule { @@ -114,6 +115,15 @@ qtModule { # Override locales install path so they go to QtWebEngine's $out ./locales-path.patch + + # Fix build of vendored xnnpack on aarch64/gcc14 + # FIXME: remove when upstream updates + (fetchpatch { + url = "https://github.com/google/XNNPACK/commit/1b11a8b0620afe8c047304273674c4c57c289755.patch"; + stripLen = 1; + extraPrefix = "src/3rdparty/chromium/third_party/xnnpack/src/"; + hash = "sha256-GUESVNR88I1K2V5xr0e09ec4j2eselMhNN06+PCcINM="; + }) ]; postPatch = diff --git a/pkgs/development/libraries/qt-6/qtModule.nix b/pkgs/development/libraries/qt-6/qtModule.nix index afcabcd02dc0..a4813a0c29e6 100644 --- a/pkgs/development/libraries/qt-6/qtModule.nix +++ b/pkgs/development/libraries/qt-6/qtModule.nix @@ -66,7 +66,6 @@ stdenv.mkDerivation ( lgpl3Plus ]; maintainers = with maintainers; [ - milahu nickcao ]; platforms = platforms.unix; diff --git a/pkgs/development/python-modules/flask-security/default.nix b/pkgs/development/python-modules/flask-security/default.nix index 558880850878..be4d066c8655 100644 --- a/pkgs/development/python-modules/flask-security/default.nix +++ b/pkgs/development/python-modules/flask-security/default.nix @@ -64,6 +64,11 @@ buildPythonPackage rec { hash = "sha256-RGRwgrDFe+0v8NYyajMikdoi1DQf1I+B5y8KJyF+cZs="; }; + patches = [ + # https://github.com/pallets-eco/flask-security/pull/1040 + ./fix_test_basic.patch + ]; + build-system = [ flit-core ]; # flask-login>=0.6.2 not satisfied by version 0.7.0.dev0 diff --git a/pkgs/development/python-modules/flask-security/fix_test_basic.patch b/pkgs/development/python-modules/flask-security/fix_test_basic.patch new file mode 100644 index 000000000000..f7ecfd8e9433 --- /dev/null +++ b/pkgs/development/python-modules/flask-security/fix_test_basic.patch @@ -0,0 +1,13 @@ +diff --git a/tests/test_basic.py b/tests/test_basic.py +index d52be429..09dfa8e4 100644 +--- a/tests/test_basic.py ++++ b/tests/test_basic.py +@@ -157,6 +157,8 @@ def test_authenticate_with_subdomain_next(app, client, get_message): + + @pytest.mark.settings(subdomain="auth") + def test_authenticate_with_root_domain_next(app, client, get_message): ++ # As of Flask 3.1 this must be explicitly set. ++ app.subdomain_matching = True + app.config["SERVER_NAME"] = "lp.com" + app.config["SECURITY_REDIRECT_ALLOW_SUBDOMAINS"] = True + data = dict(email="matt@lp.com", password="password") \ No newline at end of file diff --git a/pkgs/development/python-modules/httpx-oauth/default.nix b/pkgs/development/python-modules/httpx-oauth/default.nix index affd324967bc..41234fda1d2a 100644 --- a/pkgs/development/python-modules/httpx-oauth/default.nix +++ b/pkgs/development/python-modules/httpx-oauth/default.nix @@ -15,14 +15,14 @@ buildPythonPackage rec { pname = "httpx-oauth"; - version = "0.16.0"; + version = "0.16.1"; pyproject = true; src = fetchFromGitHub { owner = "frankie567"; repo = "httpx-oauth"; tag = "v${version}"; - hash = "sha256-KM+GaBC3jOhMsTVdUixsEjm47j28qeFmFKbI7fnVSG4="; + hash = "sha256-/2IBAEZrK0Do7t9g+MWsKuIlcg0ANCfOoagVwTbBso8="; }; build-system = [ diff --git a/pkgs/development/python-modules/kserve/default.nix b/pkgs/development/python-modules/kserve/default.nix index c0f878a78ed4..2fc4813f1a7a 100644 --- a/pkgs/development/python-modules/kserve/default.nix +++ b/pkgs/development/python-modules/kserve/default.nix @@ -49,14 +49,14 @@ buildPythonPackage rec { pname = "kserve"; - version = "0.14.0"; + version = "0.14.1"; pyproject = true; src = fetchFromGitHub { owner = "kserve"; repo = "kserve"; - rev = "refs/tags/v${version}"; - hash = "sha256-N/IgiTiyBNw7WQWxcUJlXU+Q9o3UUaduD9ZBKwu0uRE="; + tag = "v${version}"; + hash = "sha256-VwuUXANjshV4fN0i54Fs0zubHY81UtQcCV14JwMpXwA="; }; sourceRoot = "${src.name}/python/kserve"; @@ -64,6 +64,7 @@ buildPythonPackage rec { pythonRelaxDeps = [ "fastapi" "httpx" + "numpy" "prometheus-client" "protobuf" "uvicorn" diff --git a/pkgs/development/python-modules/libuuu/default.nix b/pkgs/development/python-modules/libuuu/default.nix index d824c2379877..bdb5ad84f38d 100644 --- a/pkgs/development/python-modules/libuuu/default.nix +++ b/pkgs/development/python-modules/libuuu/default.nix @@ -12,12 +12,12 @@ buildPythonPackage rec { pname = "libuuu"; - version = "1.5.182"; + version = "1.5.182.post1"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-k6JwGxYeFbGNl7zcuKN6SbRq8Z4yD1dXXL3ORyGqhYE="; + hash = "sha256-Hf0GwhrzKQL5w+OXQ39yuG4xmbk/1HgCCdCulIORSU8="; }; build-system = [ diff --git a/pkgs/development/python-modules/slugid/default.nix b/pkgs/development/python-modules/slugid/default.nix index cc695e5f2dbd..3e9a885a6023 100644 --- a/pkgs/development/python-modules/slugid/default.nix +++ b/pkgs/development/python-modules/slugid/default.nix @@ -24,6 +24,6 @@ buildPythonPackage rec { description = "URL-safe base64 UUID encoder for generating 22 character slugs"; homepage = "https://github.com/taskcluster/slugid.py"; license = licenses.mpl20; - maintainers = with maintainers; [ milahu ]; + maintainers = with maintainers; [ ]; }; } diff --git a/pkgs/development/tools/click/dbus-test-runner.patch b/pkgs/development/tools/click/dbus-test-runner.patch deleted file mode 100644 index c705cf99aa7c..000000000000 --- a/pkgs/development/tools/click/dbus-test-runner.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/click_package/Makefile.am b/click_package/Makefile.am -index 4981d74..9df9e79 100644 ---- a/click_package/Makefile.am -+++ b/click_package/Makefile.am -@@ -1,5 +1,3 @@ --SUBDIRS = tests -- - noinst_SCRIPTS = paths.py - CLEANFILES = $(noinst_SCRIPTS) - -diff --git a/configure.ac b/configure.ac -index 8f4dc9e..adbd366 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -52,8 +52,6 @@ PKG_CHECK_MODULES([SERVICE], [ - AC_SUBST([SERVICE_CFLAGS]) - AC_SUBST([SERVICE_LIBS]) - --AC_CHECK_PROG(DBUS_TEST_RUNNER_CHECK,dbus-test-runner,yes) --AS_IF([test "${DBUS_TEST_RUNNER_CHECK}" != "yes"], [AC_MSG_ERROR([dbus-test-runner not found])]) - AC_CHECK_PROG(GDBUS_CHECK,gdbus,yes) - AS_IF([test "${GDBUS_CHECK}" != "yes"], [AC_MSG_ERROR([gdbus (glib) not found])]) - diff --git a/pkgs/development/tools/click/default.nix b/pkgs/development/tools/click/default.nix deleted file mode 100644 index 97950147254c..000000000000 --- a/pkgs/development/tools/click/default.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ - lib, - fetchFromGitLab, - buildPythonApplication, - autoreconfHook, - python-debian, - perl, - vala, - pkg-config, - libgee, - json-glib, - properties-cpp, - gobject-introspection, - getopt, - setuptools, - pygobject3, - wrapGAppsHook3, -}: - -buildPythonApplication { - pname = "click"; - version = "unstable-2023-02-22"; - format = "other"; - - src = fetchFromGitLab { - owner = "ubports"; - repo = "development/core/click"; - rev = "aaf2735e8e6cbeaf2e429c70136733513a81718a"; - hash = "sha256-pNu995/w3tbz15QQVdVYBnWnAoZmqWj1DN/5PZZ0iZw="; - }; - - postPatch = '' - # These should be proper Requires, using the header needs their headers - substituteInPlace lib/click/click-*.pc.in \ - --replace 'Requires.private' 'Requires' - ''; - - configureFlags = [ - "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system" - "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user" - ]; - - preFixup = '' - makeWrapperArgs+=( - --prefix LD_LIBRARY_PATH : "$out/lib" - ) - ''; - - preConfigure = '' - export click_cv_perl_vendorlib=$out/${perl.libPrefix} - export PYTHON_INSTALL_FLAGS="--prefix=$out" - ''; - - nativeBuildInputs = [ - autoreconfHook - perl - pkg-config - gobject-introspection - vala - getopt - wrapGAppsHook3 - ]; - - # Tests were omitted for time constraint reasons - doCheck = false; - - enableParallelBuilding = true; - - patches = [ - # dbus-test-runner not packaged yet, otherwise build-time dependency even when not running tests - ./dbus-test-runner.patch - ]; - - buildInputs = [ - libgee - json-glib - properties-cpp - ]; - - propagatedBuildInputs = [ - python-debian - pygobject3 - setuptools - ]; - - meta = { - description = "Tool to build click packages. Mainly used for Ubuntu Touch"; - homepage = "https://gitlab.com/ubports/development/core/click"; - license = lib.licenses.gpl3Only; - maintainers = with lib.maintainers; [ - ilyakooo0 - OPNA2608 - ]; - platforms = lib.platforms.linux; - }; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8a932bbeafa0..a13e7a522e22 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -6940,8 +6940,6 @@ with pkgs; llvmPackages = llvmPackages_18; }; - ubports-click = python3Packages.callPackage ../development/tools/click { }; - urweb = callPackage ../development/compilers/urweb { icu = icu67; };