diff --git a/doc/languages-frameworks/index.md b/doc/languages-frameworks/index.md index b49653db4461..8aef3ffd062f 100644 --- a/doc/languages-frameworks/index.md +++ b/doc/languages-frameworks/index.md @@ -60,7 +60,6 @@ android.section.md astal.section.md beam.section.md chicken.section.md -rocq.section.md cosmic.section.md crystal.section.md cuda.section.md @@ -96,6 +95,7 @@ pkg-config.section.md python.section.md qt.section.md r.section.md +rocq.section.md ruby.section.md rust.section.md scheme.section.md diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 3c6075bbec2a..ad8ec30c076d 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -20404,6 +20404,12 @@ githubId = 47303199; name = "Simon Gutgesell"; }; + nonplay = { + name = "Artem Ostrasev"; + email = "nonplay@bxteam.org"; + github = "NONPLAYT"; + githubId = 76615486; + }; noodlez1232 = { email = "contact@nathanielbarragan.xyz"; matrix = "@noodlez1232:matrix.org"; @@ -30263,6 +30269,12 @@ githubId = 36118348; keys = [ { fingerprint = "69C9 876B 5797 1B2E 11C5 7C39 80A1 F76F C9F9 54AE"; } ]; }; + wiyba = { + name = "Dmitry Shmakov"; + email = "contact@wiyba.org"; + github = "wiyba"; + githubId = 81859776; + }; wizardlink = { name = "wizardlink"; email = "contact@thewizard.link"; diff --git a/nixos/doc/manual/release-notes/rl-2611.section.md b/nixos/doc/manual/release-notes/rl-2611.section.md index 2107c31ea368..f1b37bf1dd93 100644 --- a/nixos/doc/manual/release-notes/rl-2611.section.md +++ b/nixos/doc/manual/release-notes/rl-2611.section.md @@ -97,6 +97,16 @@ - The `shell_interact()` function on interactive runs of NixOS VM tests has been deprecated. Use the SSH backdoor instead. +- [services.netbox](#opt-services.netbox.enable) has received a number of updates: + - Default settings can now be introspected at [](#opt-services.netbox.settings). + - Environment files can now be passed at [](#opt-services.netbox.environmentFiles). + - When Django [secret key](#opt-services.netbox.secretKeyFile) or [API token peppers](#opt-services.netbox.apiTokenPepperFiles) + remain unset, random values will automatically be generated and stored below `/var/lib/netbox`. + - Multiple peppers can now be maintained, which allows for pepper rotation. + - All options to bind the gunicorn socket have been unified in [](#opt-services.netbox.bind) + and the default changed to a UNIX domain socket. + - A cookie-cutter nginx vhost can be enabled at [](#opt-services.netbox.nginx.enable). + - `security.run0.enableSudoAlias` now uses the `run0-sudo-shim` instead of a shell-script to improve compatibility. - With `system.etc.overlay.mutable = false`, NixOS now ships an empty `/etc/machine-id` in the image. Previously the file was absent and systemd logged `System cannot boot: Missing /etc/machine-id and /etc/ is read-only` while `ConditionFirstBoot` fired on every boot. With this change, systemd now overlays a transient ID from `/run/machine-id` for the session, and `systemd-machine-id-commit.service` has `ConditionFirstBoot` so it writes the machine-id through to a persistent backing file when one is bind-mounted over `/etc/machine-id`. To persist the machine-id across reboots, bind-mount a writable file containing `uninitialized` over `/etc/machine-id` from the initrd, or set `systemd.machine_id=` on the kernel command line (use `systemd.machine_id=firmware` to derive a stable ID on hardware that supports it). diff --git a/nixos/modules/services/matrix/matrix-authentication-service.nix b/nixos/modules/services/matrix/matrix-authentication-service.nix index 18648d2e3451..4b57643e4090 100644 --- a/nixos/modules/services/matrix/matrix-authentication-service.nix +++ b/nixos/modules/services/matrix/matrix-authentication-service.nix @@ -45,9 +45,7 @@ let pruned; configFile = format.generate "config.yaml" finalSettings; - extraConfigFiles = lib.imap0 ( - i: _: "$CREDENTIALS_DIRECTORY/config-${toString i}" - ) cfg.extraConfigFiles; + extraConfigFiles = lib.imap0 (i: _: "%d/config-${toString i}") cfg.extraConfigFiles; runtimeConfig = "/run/matrix-authentication-service/config.yaml"; in { diff --git a/nixos/modules/services/web-apps/netbox.nix b/nixos/modules/services/web-apps/netbox.nix index 65f761373cda..d74c9c926b80 100644 --- a/nixos/modules/services/web-apps/netbox.nix +++ b/nixos/modules/services/web-apps/netbox.nix @@ -6,118 +6,433 @@ }: let - cfg = config.services.netbox; - pythonFmt = pkgs.formats.pythonVars { }; - staticDir = cfg.dataDir + "/static"; + inherit (lib) + any + attrValues + mkChangedOptionModule + mkEnableOption + mkOption + mkRemovedOptionModule + mkRenamedOptionModule + optionalString + types + ; - settingsFile = pythonFmt.generate "netbox-settings.py" cfg.settings; + cfg = config.services.netbox; + pythonVars = pkgs.formats.pythonVars { }; + + settingsFile = pythonVars.generate "netbox-settings.py" cfg.settings; extraConfigFile = pkgs.writeTextFile { name = "netbox-extraConfig.py"; text = cfg.extraConfig; }; configFile = pkgs.concatText "configuration.py" [ + nixosOptionsConfig settingsFile extraConfigFile ]; + secretKeyFile = + if cfg.secretKeyFile != null then cfg.secretKeyFile else "${cfg.dataDir}/secret.key"; - pkg = - (cfg.package.overrideAttrs (old: { + nixosOptionsConfig = pkgs.writeTextFile { + name = "netbox-nixos-options.py"; + text = '' + with open("${secretKeyFile}", "r") as file: + SECRET_KEY = file.readline() + + API_TOKEN_PEPPERS = { + ${lib.concatStringsSep "\n" ( + lib.mapAttrsToList (id: file: '' + ${id}: open("${file}", "r").read().strip(), + '') cfg.apiTokenPepperFiles + )} + } + ''; + }; + + enableLDAP = cfg.ldapConfigFile != null; + + finalPackage = + (cfg.package.overrideAttrs (prev: { installPhase = - old.installPhase + prev.installPhase + '' ln -s ${configFile} $out/opt/netbox/netbox/netbox/configuration.py '' - + lib.optionalString cfg.enableLdap '' - ln -s ${cfg.ldapConfigPath} $out/opt/netbox/netbox/netbox/ldap_config.py + + lib.optionalString enableLDAP '' + ln -s ${cfg.ldapConfigFile} $out/opt/netbox/netbox/netbox/ldap_config.py ''; })).override { inherit (cfg) plugins; }; - netboxManageScript = - with pkgs; - (writeScriptBin "netbox-manage" '' - #!${stdenv.shell} - export PYTHONPATH=${pkg.pythonPath} + + netboxManageScript = ( + pkgs.writeShellScriptBin "netbox-manage" '' + set -a + ${lib.concatMapStringsSep "\n" (envFile: '' + . "${envFile}" + '') cfg.environmentFiles} + set +a + export PYTHONPATH=${finalPackage.pythonPath} case "$(whoami)" in - "root") - ${util-linux}/bin/runuser -u netbox -- ${pkg}/bin/netbox "$@";; - "netbox") - ${pkg}/bin/netbox "$@";; - *) - echo "This must be run by either by root 'netbox' user" + "root") + ${lib.getExe' pkgs.util-linux "runuser"} ${ + lib.cli.toCommandLineShellGNU { } { + preserve-environment = true; + user = "netbox"; + supp-group = if cfg.redis.createLocally then config.services.redis.servers.netbox.group else null; + } + } -- ${finalPackage}/bin/netbox "$@";; + "netbox") + exec ${finalPackage}/bin/netbox "$@";; + *) + echo "This must be run by either the root or the 'netbox' user." >&2 + exit 1 esac - ''); + '' + ); in { + imports = [ + (mkChangedOptionModule + [ "services" "netbox" "apiTokenPeppersFile" ] + [ "services" "netbox" "apiTokenPepperFiles" ] + (config: { + "1" = config.services.netbox.apiTokenPeppersFile; + }) + ) + (mkRemovedOptionModule [ "services" "netbox" "listenAddress" ] '' + Use `services.netbox.bind` with : format instead. + '') + (mkRemovedOptionModule [ "services" "netbox" "port" ] '' + Use `services.netbox.bind` with : format instead. + '') + (mkRemovedOptionModule [ "services" "netbox" "unixSocket" ] '' + Use `services.netbox.bind` with unix: format instead. + '') + (mkRemovedOptionModule [ "services" "netbox" "keycloakClientSecret" ] '' + Too much granularity hurts maintainability. Please configure secret key loading via `services.netbox.extraConfig` instead. + '') + (mkRemovedOptionModule [ "services" "netbox" "enableLdap" ] '' + LDAP support is automatically enabled when `services.netbox.ldapConfigFile` is configured. + '') + (mkRenamedOptionModule + [ "services" "netbox" "ldapConfigPath" ] + [ "services" "netbox" "ldapConfigFile" ] + ) + (mkRemovedOptionModule [ "services" "nginx" "gunicornArgs" ] '' + Removed in favor of `services.netbox.gunicorn.extraArgs`, an attribute set passed to `lib.cli.toCommandLineGNU`. + '') + ]; + options.services.netbox = { enable = lib.mkOption { - type = lib.types.bool; + type = types.bool; default = false; description = '' - Enable Netbox. + Whether to enable Netbox, a DCIM and IPAM source of truth. - This module requires a reverse proxy that serves `/static` separately. - See this [example](https://github.com/netbox-community/netbox/blob/develop/contrib/nginx.conf/) on how to configure this. + This module requires setting up a reverse proxy and has native support + for nginx. Additionally, the NetBox project has example configurations + for [nginx] and the [Apache httpd] server. + + The important change to make is to serve `/static` from + `''${config.services.netbox.settings.STATIC_ROOT}`. + + [nginx]: https://github.com/netbox-community/netbox/blob/main/contrib/nginx.conf + [Apache httpd]: https://github.com/netbox-community/netbox/blob/main/contrib/apache.conf + ''; + }; + + environmentFiles = mkOption { + type = with types; listOf path; + default = [ ]; + description = '' + Environment files loaded into all NetBox services and consumable in + {option}`services.netbox.extraConfig`. ''; }; settings = lib.mkOption { description = '' - Configuration options to set in `configuration.py`. - See the [documentation](https://docs.netbox.dev/en/stable/configuration/) for more possible options. + The main {file}`configuration.py` to set up NetBox. + + Can be used to define flat and nested key-value pairs. Check the \ + [NetBox documentation] for possible options. + + ::: {.tip} + Use {option}`services.netbox.extraConfig` to extend this file with Python code. + ::: + + [NetBox documentation]: https://netboxlabs.com/docs/netbox/configuration/#configuration-file ''; - default = { }; - - type = lib.types.submodule { - freeformType = pythonFmt.type; - + type = types.submodule { + freeformType = pythonVars.type; options = { ALLOWED_HOSTS = lib.mkOption { - type = with lib.types; listOf str; + type = with types; listOf str; default = [ "*" ]; description = '' A list of valid fully-qualified domain names (FQDNs) and/or IP addresses that can be used to reach the NetBox service. ''; }; + + STATIC_ROOT = mkOption { + type = types.path; + readOnly = true; + default = "${cfg.dataDir}/static/"; + defaultText = lib.literalExpression "$${config.services.netbox.dataDir}/static/"; + description = '' + Path to the collected static assets, served below `/static/`. + ''; + }; + + MEDIA_ROOT = mkOption { + type = types.path; + readOnly = true; + default = "${cfg.dataDir}/media/"; + defaultText = lib.literalExpression "$${config.services.netbox.dataDir}/media"; + description = '' + Path where uploaded media is stored. + ''; + }; + + REPORTS_ROOT = mkOption { + type = types.path; + readOnly = true; + default = "${cfg.dataDir}/reports/"; + defaultText = lib.literalExpression "$${config.services.netbox.dataDir}/reports"; + description = '' + Path where generated reports are stored. + ''; + }; + + SCRIPTS_ROOT = mkOption { + type = types.path; + readOnly = true; + default = "${cfg.dataDir}/scripts/"; + defaultText = lib.literalExpression "$${config.services.netbox.dataDir}/scripts"; + description = '' + Path where scripts are stored. + ''; + }; + + DATABASES = mkOption { + type = with types; attrsOf (attrsOf str); + default = { + "default" = { + NAME = "netbox"; + USER = "netbox"; + HOST = "/run/postgresql"; + }; + }; + description = '' + Configuration for one or multiple [database] backends. + + At least one database named `default` must be defined. + + [database]: https://netbox.readthedocs.io/en/stable/configuration/required-parameters/#database + ''; + }; + + # Redis database settings. Redis is used for caching and for queuing + # background tasks such as webhook events. A separate configuration + # exists for each. Full connection details are required in both + # sections, and it is strongly recommended to use two separate database + # IDs. + REDIS = { + tasks = { + URL = mkOption { + type = types.str; + default = "unix://${config.services.redis.servers.netbox.unixSocket}?db=0"; + defaultText = lib.literalExpression "unix://$${config.services.redis.servers.netbox.unixSocket}?db=0"; + description = '' + Redis database connection for queuing background tasks. + + > It is highly recommended to keep the task and cache + > databases separate. Using the same database number on the + > same Redis instance for both may result in queued background + > tasks being lost during cache flushing events. + + + ''; + }; + }; + caching = { + URL = mkOption { + type = types.str; + default = "unix://${config.services.redis.servers.netbox.unixSocket}?db=1"; + defaultText = "unix://$${config.services.redis.servers.netbox.unixSocket}?db=0"; + description = '' + Redis database connection for caching. + + > It is highly recommended to keep the task and cache + > databases separate. Using the same database number on the + > same Redis instance for both may result in queued background + > tasks being lost during cache flushing events. + + + ''; + }; + }; + }; + + REMOTE_AUTH_BACKEND = mkOption { + type = + with types; + oneOf [ + str + (listOf str) + ]; + default = + if enableLDAP then + "netbox.authentication.LDAPBackend" + else + "netbox.authentication.RemoteUserBackend"; + defaultText = lib.literalExpression '' + if config.services.netbox.ldapConfigFile != null then + "netbox.authentication.LDAPBackend" + else + "netbox.authentication.RemoteUserBackend" + ''; + description = '' + One or multiple [backends] used for authenticating external users. + + When multiple backends are specified, they are tried in order. + + [backends]: https://netbox.readthedocs.io/en/stable/configuration/remote-authentication/#remote_auth_backend + ''; + }; + + LOGGING = mkOption { + type = pythonVars.type; + default = { + version = 1; + + formatters.precise.format = "[%(levelname)s@%(name)s] %(message)s"; + + handlers.console = { + class = "logging.StreamHandler"; + formatter = "precise"; + }; + + # log to console/systemd instead of file + root = { + level = "INFO"; + handlers = [ "console" ]; + }; + }; + description = '' + [Logging configuration] based on the Python [`logging.config`] module. + + [`logging.config`]: https://docs.python.org/3/library/logging.config.html + [Logging configuration]: https://netboxlabs.com/docs/netbox/configuration/system/#logging + ''; + }; }; }; }; - listenAddress = lib.mkOption { - type = lib.types.str; - default = "[::1]"; + extraConfig = lib.mkOption { + type = types.lines; + default = ""; + example = '' + from os import environ + + # https://python-social-auth.readthedocs.io/en/latest/backends/oidc.html + # From the environment: + SOCIAL_AUTH_OIDC_SECRET = environ.get("OIDC_CLIENT_SECRET") + + # From a file: + with open("/run/keys/oidc-client-secret") as fd: + SOCIAL_AUTH_OIDC_SECRET = fd.read().strip() + ''; description = '' - Address the server will listen on. - Ignored if `unixSocket` is set. + Additional lines that are appended to {file}`configuration.py`. + + This option supports native Python code and can be used for reading + secrets from files or the environment into configuration variables: + + Possible options can be found in the [NetBox documentation] or, for + authentication purposes, in the [Python Social Auth] documentation. + + [NetBox documentation]: https://netboxlabs.com/docs/netbox/configuration/ + [Python Social Auth]: https://python-social-auth.readthedocs.io/en/latest/backends/index.html# ''; }; - unixSocket = lib.mkOption { - type = lib.types.nullOr lib.types.str; - default = null; + bind = lib.mkOption { + type = types.str; + default = "unix:/run/netbox/netbox.sock"; + example = "[::1]:8001"; description = '' - Enable Unix Socket for the server to listen on. - `listenAddress` and `port` will be ignored. + IP and port or Unix domain socket path to bind the HTTP socket to. + + ::: {.tip} + This setting will be passed to gunicorn's [--bind] flag. + ::: + + [--bind]: https://gunicorn.org/reference/settings/#bind ''; - example = "/run/netbox/netbox.sock"; }; - gunicornArgs = lib.mkOption { - type = lib.types.listOf lib.types.str; - default = [ ]; - description = "extra args for gunicorn when serving netbox"; - example = [ - "--workers" - "9" - ]; + gunicorn.extraArgs = lib.mkOption { + type = types.attrsOf types.str; + default = { }; + description = '' + Extra arguments passed the Gunicorn process that runs NetBox. + + See for possible flags. + ''; + example = lib.literalExpression '' + { + workers = 9; + ]; + ''; + }; + + nginx = { + enable = mkEnableOption "nginx and configure a virtual host"; + + hostname = mkOption { + type = types.str; + example = "netbox.example.com"; + description = '' + The hostname for which an nginx virtual host should be created. + + ::: {.tip} + Customize the virtual host through + `services.nginx.virtualHosts.''${config.services.netbox.nginx.hostname}`. + ::: + ''; + }; + }; + + redis.createLocally = mkOption { + type = types.bool; + default = true; + description = '' + Whether to enable and set up a Redis database for NetBox locally. + ''; + }; + + postgresql.createLocally = mkOption { + type = types.bool; + default = true; + description = '' + Whether to enable and set up PostgreSQL locally. + + This will automatically created a database and a local user, that can + authenticate over Unix domain sockets with `SO_PEERCRED`. + ''; }; package = lib.mkOption { - type = lib.types.package; + type = types.package; default = if lib.versionAtLeast config.system.stateVersion "26.05" then pkgs.netbox_4_5 else pkgs.netbox_4_4; defaultText = lib.literalExpression '' @@ -130,17 +445,8 @@ in ''; }; - port = lib.mkOption { - type = lib.types.port; - default = 8001; - description = '' - Port the server will listen on. - Ignored if `unixSocket` is set. - ''; - }; - plugins = lib.mkOption { - type = with lib.types; functionTo (listOf package); + type = with types; functionTo (listOf package); default = _: [ ]; defaultText = lib.literalExpression '' python3Packages: with python3Packages; []; @@ -151,7 +457,7 @@ in }; dataDir = lib.mkOption { - type = lib.types.str; + type = types.str; default = "/var/lib/netbox"; description = '' Storage path of netbox. @@ -159,46 +465,71 @@ in }; secretKeyFile = lib.mkOption { - type = lib.types.path; + type = + with types; + nullOr (pathWith { + inStore = false; + }); + default = null; description = '' - Path to a file containing the secret key. + Path to a file containing the [secret key]. + + The secret key is used for hashing passwords and signing HTTP cookies. + It can be rotated without data loss; however all existing user sessions + will be invalidated. + + ::: {.note} + If unset, a random secret will be created automatically at + `/var/lib/netbox/secret.key`. + ::: + + [secret key]: https://netboxlabs.com/docs/netbox/configuration/required-parameters/#secret_key ''; }; - apiTokenPeppersFile = lib.mkOption { - type = with lib.types; nullOr path; + apiTokenPepperFiles = lib.mkOption { + type = + with types; + attrsOf (pathWith { + inStore = false; + }); + default = { + "1" = "${cfg.dataDir}/pepper.1"; + }; + defaultText = lib.literalExpression '' + { + "1" = "''${config.services.netbox.dataDir}/pepper.1"; + } + ''; + example = { + "1" = "/run/keys/netbox-pepper-old"; + "2" = "/run/keys/netbox-pepper-current"; + }; description = '' - Path to a file containing the API_TOKEN_PEPPER that will be configured for the pepper_id with the id 1. - This is required for netbox >= 4.5. For generating this pepper, - [consider using `$INSTALL_ROOT/netbox/generate_secret_key.py`](https://netboxlabs.com/docs/netbox/configuration/required-parameters/#api_token_peppers) + Mapping of cryptographic pepper IDs to files containing the pepper values. + + Peppers provide an additional secret input in hashing operations. They + are required for v2 API tokens (NetBox 4.5+). + + ::: {.note} + By default a random pepper will be created automatically at + `/var/lib/netbox/pepper.1` and configured with pepper ID 1. + ::: + + [cryptographic peppers]: https://netboxlabs.com/docs/netbox/configuration/required-parameters/#api_token_peppers ''; }; - extraConfig = lib.mkOption { - type = lib.types.lines; - default = ""; + ldapConfigFile = lib.mkOption { + type = with types; nullOr path; + default = null; description = '' - Additional lines of configuration appended to the `configuration.py`. - See the [documentation](https://docs.netbox.dev/en/stable/configuration/) for more possible options. - ''; - }; + Path to the [LDAP configuration] file, also known as {file}`ldap_config.py`. - enableLdap = lib.mkOption { - type = lib.types.bool; - default = false; - description = '' - Enable LDAP-Authentication for Netbox. + When set, will automatically load the `django-auth-ldap` plugin and + configure {option}`services.netbox.settings.REMOTE_AUTH_BACKEND`. - This requires a configuration file being pass through `ldapConfigPath`. - ''; - }; - - ldapConfigPath = lib.mkOption { - type = lib.types.path; - default = ""; - description = '' - Path to the Configuration-File for LDAP-Authentication, will be loaded as `ldap_config.py`. - See the [documentation](https://netbox.readthedocs.io/en/stable/installation/6-ldap/#configuration) for possible options. + [LDAP configuration]: https://netbox.readthedocs.io/en/stable/installation/6-ldap/#configuration ''; example = '' import ldap @@ -226,197 +557,206 @@ in AUTH_LDAP_FIND_GROUP_PERMS = True ''; }; - keycloakClientSecret = lib.mkOption { - type = with lib.types; nullOr path; - default = null; - description = '' - File that contains the keycloak client secret. - ''; - }; }; - config = lib.mkIf cfg.enable { - services.netbox = { - plugins = lib.mkIf cfg.enableLdap (ps: [ ps.django-auth-ldap ]); - settings = { - STATIC_ROOT = staticDir; - MEDIA_ROOT = "${cfg.dataDir}/media"; - REPORTS_ROOT = "${cfg.dataDir}/reports"; - SCRIPTS_ROOT = "${cfg.dataDir}/scripts"; - - GIT_PATH = "${pkgs.gitMinimal}/bin/git"; - - DATABASES = { - "default" = { - NAME = "netbox"; - USER = "netbox"; - HOST = "/run/postgresql"; - }; - }; - - # Redis database settings. Redis is used for caching and for queuing - # background tasks such as webhook events. A separate configuration - # exists for each. Full connection details are required in both - # sections, and it is strongly recommended to use two separate database - # IDs. - REDIS = { - tasks = { - URL = "unix://${config.services.redis.servers.netbox.unixSocket}?db=0"; - SSL = false; - }; - caching = { - URL = "unix://${config.services.redis.servers.netbox.unixSocket}?db=1"; - SSL = false; - }; - }; - - REMOTE_AUTH_BACKEND = lib.mkIf cfg.enableLdap "netbox.authentication.LDAPBackend"; - - LOGGING = lib.mkDefault { - version = 1; - - formatters.precise.format = "[%(levelname)s@%(name)s] %(message)s"; - - handlers.console = { - class = "logging.StreamHandler"; - formatter = "precise"; - }; - - # log to console/systemd instead of file - root = { - level = "INFO"; - handlers = [ "console" ]; - }; - }; - }; - - extraConfig = '' - with open("${cfg.secretKeyFile}", "r") as file: - SECRET_KEY = file.readline() - '' - + (lib.optionalString (cfg.apiTokenPeppersFile != null) '' - with open("${cfg.apiTokenPeppersFile}", "r") as pepper_file: - API_TOKEN_PEPPERS = { - 1: pepper_file.readline(), - }; - '') - + (lib.optionalString (cfg.keycloakClientSecret != null) '' - with open("${cfg.keycloakClientSecret}", "r") as file: - SOCIAL_AUTH_KEYCLOAK_SECRET = file.readline() - ''); - }; - - services.redis.servers.netbox.enable = true; - - services.postgresql = { - enable = true; - ensureDatabases = [ "netbox" ]; - ensureUsers = [ - { - name = "netbox"; - ensureDBOwnership = true; - } - ]; - }; - - environment.systemPackages = [ netboxManageScript ]; - - systemd.targets.netbox = { - description = "Target for all NetBox services"; - wantedBy = [ "multi-user.target" ]; - wants = [ "network-online.target" ]; - after = [ - "network-online.target" - "redis-netbox.service" - ]; - }; - - systemd.services = - let - defaultServiceConfig = { - WorkingDirectory = "${cfg.dataDir}"; - User = "netbox"; - Group = "netbox"; - StateDirectory = "netbox"; - StateDirectoryMode = "0750"; - Restart = "on-failure"; - RestartSec = 30; - }; - in + config = lib.mkIf cfg.enable ( + lib.mkMerge [ { - netbox = { - description = "NetBox WSGI Service"; - documentation = [ "https://docs.netbox.dev/" ]; + services.netbox.plugins = lib.mkIf enableLDAP (ps: [ ps.django-auth-ldap ]); - wantedBy = [ "netbox.target" ]; + services.redis.servers.netbox.enable = cfg.redis.createLocally; - after = [ "network-online.target" ]; - wants = [ "network-online.target" ]; - - environment.PYTHONPATH = pkg.pythonPath; - - preStart = '' - # On the first run, or on upgrade / downgrade, run migrations and related. - # This mostly correspond to upstream NetBox's 'upgrade.sh' script. - versionFile="${cfg.dataDir}/version" - - if [[ -h "$versionFile" && "$(readlink -- "$versionFile")" == "${cfg.package}" ]]; then - exit 0 - fi - - ${pkg}/bin/netbox migrate - ${pkg}/bin/netbox trace_paths --no-input - ${pkg}/bin/netbox collectstatic --clear --no-input - ${pkg}/bin/netbox remove_stale_contenttypes --no-input - ${pkg}/bin/netbox reindex --lazy - ${pkg}/bin/netbox clearsessions - ${lib.optionalString - # The clearcache command was removed in 3.7.0: - # https://github.com/netbox-community/netbox/issues/14458 - (lib.versionOlder cfg.package.version "3.7.0") - "${pkg}/bin/netbox clearcache" + services.postgresql = lib.mkIf cfg.postgresql.createLocally { + enable = true; + ensureDatabases = [ "netbox" ]; + ensureUsers = [ + { + name = "netbox"; + ensureDBOwnership = true; } - - ln -sfn "${cfg.package}" "$versionFile" - ''; - - serviceConfig = defaultServiceConfig // { - ExecStart = '' - ${pkg.gunicorn}/bin/gunicorn netbox.wsgi \ - --bind ${ - if (cfg.unixSocket != null) then - "unix:${cfg.unixSocket}" - else - "${cfg.listenAddress}:${toString cfg.port}" - } \ - --pythonpath ${pkg}/opt/netbox/netbox \ - ${lib.concatStringsSep " " cfg.gunicornArgs} - ''; - PrivateTmp = true; - TimeoutStartSec = lib.mkDefault "10min"; - }; + ]; }; - netbox-rq = { - description = "NetBox Request Queue Worker"; - documentation = [ "https://docs.netbox.dev/" ]; + environment.systemPackages = [ netboxManageScript ]; - wantedBy = [ "netbox.target" ]; - after = [ "netbox.service" ]; - - environment.PYTHONPATH = pkg.pythonPath; - - serviceConfig = defaultServiceConfig // { - ExecStart = '' - ${pkg}/bin/netbox rqworker high default low - ''; - PrivateTmp = true; - }; + systemd.slices.system-netbox = { + description = "Netbox DCIM/IPAM"; }; - netbox-housekeeping = { - description = "NetBox housekeeping job"; - documentation = [ "https://docs.netbox.dev/" ]; + systemd.targets.netbox = { + description = "Target for all NetBox services"; + wantedBy = [ "multi-user.target" ]; + wants = [ "network-online.target" ]; + after = [ + "network-online.target" + "redis-netbox.service" + ]; + }; + + systemd.services = + let + defaultUnitConfig = { + documentation = [ "https://netboxlabs.com/docs/netbox/" ]; + environment.PYTHONPATH = finalPackage.pythonPath; + }; + defaultServiceConfig = { + WorkingDirectory = "${cfg.dataDir}"; + User = "netbox"; + Group = "netbox"; + StateDirectory = "netbox"; + StateDirectoryMode = "0750"; + Restart = "on-failure"; + RestartSec = 30; + Slice = "system-netbox.slice"; + EnvironmentFile = cfg.environmentFiles; + SupplementaryGroups = lib.optionals cfg.redis.createLocally [ + config.services.redis.servers.netbox.group + ]; + + AmbientCapabilities = [ "" ]; + CapabilityBoundingSet = [ "" ]; + DevicePolicy = "closed"; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateDevices = true; + PrivateTmp = true; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProtectSystem = "strict"; + RemoveIPC = true; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_UNIX" + ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallErrorNumber = "EPERM"; + SystemCallFilter = [ + "@system-service" + "~@privileged" + "~@resources" + "@chown" + ]; + UMask = "0027"; + }; + in + { + netbox = defaultUnitConfig // { + description = "NetBox WSGI Service"; + + wantedBy = [ "netbox.target" ]; + + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; + + preStart = '' + # Generate random default secrets, if the user didn't supply any. + ${optionalString (cfg.secretKeyFile == null) '' + if [ ! -e "${secretKeyFile}" ]; then + ${finalPackage}/opt/netbox/netbox/generate_secret_key.py > "${secretKeyFile}" + fi + ''} + ${optionalString + (any (path: path == "${cfg.dataDir}/pepper.1") (attrValues cfg.apiTokenPepperFiles)) + '' + if [ ! -e "${cfg.dataDir}/pepper.1" ]; then + ${finalPackage}/opt/netbox/netbox/generate_secret_key.py > "${cfg.dataDir}/pepper.1" + fi + '' + } + + # On the first run, or on upgrade / downgrade, run migrations and related. + # This mostly correspond to upstream NetBox's 'upgrade.sh' script. + versionFile="${cfg.dataDir}/version" + + if [[ -h "$versionFile" && "$(readlink -- "$versionFile")" == "${cfg.package}" ]]; then + exit 0 + fi + + ${lib.getExe finalPackage} migrate + ${lib.getExe finalPackage} trace_paths --no-input + ${lib.getExe finalPackage} collectstatic --clear --no-input + ${lib.getExe finalPackage} remove_stale_contenttypes --no-input + ${lib.getExe finalPackage} reindex --lazy + ${lib.getExe finalPackage} clearsessions + + ln -sfn "${cfg.package}" "$versionFile" + ''; + + serviceConfig = defaultServiceConfig // { + ExecStart = toString ( + [ + (lib.getExe finalPackage.gunicorn) + "netbox.wsgi" + ] + ++ lib.cli.toCommandLineGNU { } ( + { + inherit (cfg) bind; + pythonpath = "${finalPackage}/opt/netbox/netbox"; + } + // cfg.gunicorn.extraArgs + ) + ); + PrivateTmp = true; + RuntimeDirectory = "netbox"; + RuntimeDirectoryMode = "0750"; + TimeoutStartSec = lib.mkDefault "10min"; + }; + }; + + netbox-rq = defaultUnitConfig // { + description = "NetBox Request Queue Worker"; + + wantedBy = [ "netbox.target" ]; + after = [ "netbox.service" ]; + + serviceConfig = defaultServiceConfig // { + ExecStart = toString [ + (lib.getExe finalPackage) + "rqworker" + "high" + "default" + "low" + ]; + PrivateTmp = true; + }; + }; + + netbox-housekeeping = defaultUnitConfig // { + description = "NetBox housekeeping job"; + + wantedBy = [ "multi-user.target" ]; + + after = [ + "network-online.target" + "netbox.service" + ]; + wants = [ "network-online.target" ]; + + serviceConfig = defaultServiceConfig // { + Type = "oneshot"; + ExecStart = toString [ + (lib.getExe finalPackage) + "housekeeping" + ]; + }; + }; + }; + + systemd.timers.netbox-housekeeping = { + description = "Run NetBox housekeeping job"; + documentation = [ "https://netboxlabs.com/docs/netbox/" ]; wantedBy = [ "multi-user.target" ]; @@ -426,49 +766,35 @@ in ]; wants = [ "network-online.target" ]; - environment.PYTHONPATH = pkg.pythonPath; - - serviceConfig = defaultServiceConfig // { - Type = "oneshot"; - ExecStart = '' - ${pkg}/bin/netbox housekeeping - ''; + timerConfig = { + OnCalendar = "daily"; + AccuracySec = "1h"; + Persistent = true; }; }; - }; - systemd.timers.netbox-housekeeping = { - description = "Run NetBox housekeeping job"; - documentation = [ "https://docs.netbox.dev/" ]; - - wantedBy = [ "multi-user.target" ]; - - after = [ - "network-online.target" - "netbox.service" - ]; - wants = [ "network-online.target" ]; - - timerConfig = { - OnCalendar = "daily"; - AccuracySec = "1h"; - Persistent = true; - }; - }; - - users.users.netbox = { - home = "${cfg.dataDir}"; - isSystemUser = true; - group = "netbox"; - }; - users.groups.netbox = { }; - users.groups."${config.services.redis.servers.netbox.user}".members = [ "netbox" ]; - - assertions = [ - { - assertion = (lib.versionAtLeast cfg.package.version "4.5") -> (cfg.apiTokenPeppersFile != null); - message = "NetBox 4.5 or newer require setting `services.netbox.apiTokenPeppersFile`"; + users.users.netbox = { + home = "${cfg.dataDir}"; + isSystemUser = true; + group = "netbox"; + }; + users.groups.netbox = { }; } - ]; - }; + + (lib.mkIf cfg.nginx.enable { + # Access to STATIC_ROOT and the UNIX domain socket + systemd.services.nginx.serviceConfig.SupplementaryGroups = [ "netbox" ]; + + services.nginx = { + enable = true; + recommendedProxySettings = true; + + virtualHosts.${cfg.nginx.hostname} = { + locations."/".proxyPass = "http://${toString config.services.netbox.bind}"; + locations."/static/".alias = cfg.settings.STATIC_ROOT; + }; + }; + }) + ] + ); } diff --git a/nixos/tests/bentopdf/caddy.nix b/nixos/tests/bentopdf/caddy.nix index 0f4fc88063db..9780f1e890a5 100644 --- a/nixos/tests/bentopdf/caddy.nix +++ b/nixos/tests/bentopdf/caddy.nix @@ -22,7 +22,7 @@ import ../make-test-python.nix ( machine.wait_for_unit("caddy.service") machine.wait_for_open_port(80) machine.succeed("curl -vvv --fail --show-error --silent --location --insecure http://localhost/") - assert "BentoPDF - The Privacy First PDF Toolkit" in machine.succeed("curl --fail --show-error --silent --location --insecure http://localhost/") + assert "PDF Tools" in machine.succeed("curl --fail --show-error --silent --location --insecure http://localhost/") ''; } ) diff --git a/nixos/tests/bentopdf/nginx.nix b/nixos/tests/bentopdf/nginx.nix index 257dc909894e..68720403a3a4 100644 --- a/nixos/tests/bentopdf/nginx.nix +++ b/nixos/tests/bentopdf/nginx.nix @@ -18,7 +18,7 @@ import ../make-test-python.nix ( testScript = '' machine.wait_for_unit("nginx.service") machine.wait_for_open_port(80) - assert "BentoPDF - The Privacy First PDF Toolkit" in machine.succeed("curl --fail --show-error --silent --location --insecure http://localhost:80/") + assert "PDF Tools" in machine.succeed("curl --fail --show-error --silent --location --insecure http://localhost:80/") ''; } ) diff --git a/nixos/tests/web-apps/netbox-upgrade.nix b/nixos/tests/web-apps/netbox-upgrade.nix index c965e0c9b0f3..ffea21a648cd 100644 --- a/nixos/tests/web-apps/netbox-upgrade.nix +++ b/nixos/tests/web-apps/netbox-upgrade.nix @@ -34,23 +34,10 @@ in # Pick the NetBox package from this config's "pkgs" argument, # so that `nixpkgs.config.permittedInsecurePackages` works package = pkgs.${oldNetbox}; - secretKeyFile = pkgs.writeText "secret" '' - abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - ''; - apiTokenPeppersFile = pkgs.writeText "pepper" '' - kp7ht*76fiQAhUi5dHfASLlYUE_S^gI^(7J^K5M!LfoH@vl&b_ - ''; - }; - services.nginx = { - enable = true; - - recommendedProxySettings = true; - - virtualHosts.netbox = { - default = true; - locations."/".proxyPass = "http://localhost:${toString config.services.netbox.port}"; - locations."/static/".alias = "/var/lib/netbox/static/"; + nginx = { + enable = true; + hostname = "localhost"; }; }; @@ -81,7 +68,7 @@ in headers = machine.succeed( "curl -sSL http://localhost/api/ --head -H 'Content-Type: application/json'" ) - assert api_version(headers) == version + t.assertEqual(api_version(headers), version) with subtest("NetBox version is the old one"): check_api_version("${oldApiVersion}") diff --git a/nixos/tests/web-apps/netbox/default.nix b/nixos/tests/web-apps/netbox/default.nix index 803cf5c25ed3..4b72f703df89 100644 --- a/nixos/tests/web-apps/netbox/default.nix +++ b/nixos/tests/web-apps/netbox/default.nix @@ -27,23 +27,23 @@ import ../../make-test-python.nix ( skipTypeCheck = true; - nodes.machine = + containers.machine = { config, ... }: { - virtualisation.memorySize = 2048; + boot.kernelParams = [ + # helps debugging seccomp filter issues + "audit=1" + ]; services.netbox = { enable = true; package = netbox; - secretKeyFile = pkgs.writeText "secret" '' - abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - ''; - # Value from https://netbox.readthedocs.io/en/feature/configuration/required-parameters/#api_token_peppers - apiTokenPeppersFile = pkgs.writeText "pepper" '' - kp7ht*76fiQAhUi5dHfASLlYUE_S^gI^(7J^K5M!LfoH@vl&b_ - ''; - enableLdap = true; - ldapConfigPath = pkgs.writeText "ldap_config.py" '' + nginx = { + enable = true; + hostname = "localhost"; + }; + + ldapConfigFile = pkgs.writeText "ldap_config.py" '' import ldap from django_auth_ldap.config import LDAPSearch, PosixGroupType @@ -70,18 +70,6 @@ import ../../make-test-python.nix ( ''; }; - services.nginx = { - enable = true; - - recommendedProxySettings = true; - - virtualHosts.netbox = { - default = true; - locations."/".proxyPass = "http://localhost:${toString config.services.netbox.port}"; - locations."/static/".alias = "/var/lib/netbox/static/"; - }; - }; - # Adapted from the sssd-ldap NixOS test services.openldap = { enable = true; diff --git a/nixos/tests/web-apps/netbox/testScript.py b/nixos/tests/web-apps/netbox/testScript.py index 4ff035a1f0cf..2e98cf4d87ef 100644 --- a/nixos/tests/web-apps/netbox/testScript.py +++ b/nixos/tests/web-apps/netbox/testScript.py @@ -62,11 +62,11 @@ def compare(a: str, b: str): with subtest("Home screen loads"): machine.wait_until_succeeds( - "curl -sSfL http://[::1]:8001 | grep 'Home | NetBox'" + "curl -sSfL http://[::1]:80 | grep 'Home | NetBox'" ) with subtest("Staticfiles are generated"): - machine.succeed("test -e /var/lib/netbox/static/netbox.js") + machine.wait_for_file("/var/lib/netbox/static/netbox.js") with subtest("Superuser can be created"): machine.succeed( @@ -155,7 +155,7 @@ def patch(uri: str, data: Dict[str, Any]): return data_request(uri, "PATCH", data) with subtest("Can retrieve netbox version"): - assert netbox_version == get("/status/")["netbox-version"] + t.assertEqual(netbox_version, get("/status/")["netbox-version"]) with subtest("Can create objects"): result = post("/dcim/sites/", {"name": "Test site", "slug": "test-site"}) @@ -196,28 +196,28 @@ with subtest("Can create objects"): with subtest("Can list objects"): result = get("/dcim/sites/") - assert result["count"] == 1 - assert result["results"][0]["id"] == site_id - assert result["results"][0]["name"] == "Test site" - assert result["results"][0]["description"] == "" + t.assertEqual(result["count"], 1) + t.assertEqual(result["results"][0]["id"], site_id) + t.assertEqual(result["results"][0]["name"], "Test site") + t.assertEqual(result["results"][0]["description"], "") result = get("/dcim/device-types/") - assert result["count"] == 1 - assert result["results"][0]["id"] == device_type_id - assert result["results"][0]["model"] == "Test device type" + t.assertEqual(result["count"], 1) + t.assertEqual(result["results"][0]["id"], device_type_id) + t.assertEqual(result["results"][0]["model"], "Test device type") with subtest("Can update objects"): new_description = "Test site description" patch(f"/dcim/sites/{site_id}/", {"description": new_description}) result = get(f"/dcim/sites/{site_id}/") - assert result["description"] == new_description + t.assertEqual(result["description"], new_description) with subtest("Can delete objects"): # Delete a device-type since no object depends on it delete(f"/dcim/device-types/{device_type_id}/") result = get("/dcim/device-types/") - assert result["count"] == 0 + t.assertEqual(result["count"], 0) def request_graphql(query: str): return machine.succeed( @@ -252,10 +252,10 @@ if compare(netbox_version, '4.2.0') >= 0: answer = request_graphql(graphql_query) result = json.loads(answer) - assert len(result["data"]["prefix_list"]) == 3 - assert test_objects["prefixes"]["v4-with-updated-desc"] in result["data"]["prefix_list"] - assert test_objects["prefixes"]["v6-cidr-32"] in result["data"]["prefix_list"] - assert test_objects["prefixes"]["v6-cidr-48"] in result["data"]["prefix_list"] + t.assertEqual(len(result["data"]["prefix_list"]), 3) + t.assertIn(test_objects["prefixes"]["v4-with-updated-desc"], result["data"]["prefix_list"]) + t.assertIn(test_objects["prefixes"]["v6-cidr-32"], result["data"]["prefix_list"]) + t.assertIn(test_objects["prefixes"]["v6-cidr-48"], result["data"]["prefix_list"]) if compare(netbox_version, '4.2.0') < 0: with subtest("Can use the GraphQL API (Netbox <= 4.2.0)"): @@ -270,8 +270,8 @@ if compare(netbox_version, '4.2.0') < 0: ''') result = json.loads(answer) print(result["data"]["prefix_list"][0]) - assert result["data"]["prefix_list"][0]["prefix"] == test_objects["prefixes"]["v4-with-updated-desc"]["prefix"] - assert int(result["data"]["prefix_list"][0]["site"]["id"]) == int(test_objects["prefixes"]["v4-with-updated-desc"]["scope"]["id"]) + t.assertEqual(result["data"]["prefix_list"][0]["prefix"], test_objects["prefixes"]["v4-with-updated-desc"]["prefix"]) + t.assertEqual(int(result["data"]["prefix_list"][0]["site"]["id"]), int(test_objects["prefixes"]["v4-with-updated-desc"]["scope"]["id"])) # With 4.5.2 and higher, obtaining a session cookie or token without supplying # proper CSRF tokens on the frontend /login/ endpoint is no longer possible @@ -283,5 +283,8 @@ if compare(netbox_version, '4.5.2') < 0: with subtest("Can associate LDAP groups"): result = get("/users/users/?username=${testUser}") - assert result["count"] == 1 - assert any(group["name"] == "${testGroup}" for group in result["results"][0]["groups"]) + t.assertEqual(result["count"], 1) + t.assertTrue(any(group["name"] == "${testGroup}" for group in result["results"][0]["groups"])) + +# Print systemd unit hardening state +machine.log(machine.execute("systemd-analyze security netbox.service netbox-rq.service netbox-housekeeping.service | grep -v ✓")[1]) diff --git a/nixos/tests/web-apps/pdfding/basic.nix b/nixos/tests/web-apps/pdfding/basic.nix index 5dec3de378e3..10db93c5203b 100644 --- a/nixos/tests/web-apps/pdfding/basic.nix +++ b/nixos/tests/web-apps/pdfding/basic.nix @@ -17,6 +17,11 @@ secretKeyFile = pkgs.writeText "secretKeyFile" "test123"; }; + # NOTE: on aarch64-linux github actions runer due to lack of kvm, we need to delay pdfding start and give it more time to finish + systemd.services.pdfding.wantedBy = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 (lib.mkForce [ ]); + systemd.services.pdfding.serviceConfig.TimeoutStartSec = + lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 "900"; + environment.systemPackages = with pkgs; [ sqlite ]; @@ -60,6 +65,7 @@ # create admin machine.wait_for_unit("multi-user.target") + machine.succeed("systemctl start pdfding.service") machine.wait_for_open_port(${toString port}) machine.succeed("DJANGO_SUPERUSER_PASSWORD=admin pdfding-manage createsuperuser --no-input --username admin --email admin@localhost") diff --git a/nixos/tests/web-apps/pdfding/postgres.nix b/nixos/tests/web-apps/pdfding/postgres.nix index c6a82fad839a..635799571315 100644 --- a/nixos/tests/web-apps/pdfding/postgres.nix +++ b/nixos/tests/web-apps/pdfding/postgres.nix @@ -22,6 +22,14 @@ installTestHelpers = true; }; + # NOTE: on aarch64-linux github actions runer due to lack of kvm, we need to delay pdfding start and give it more time to finish + systemd.services.pdfding.wantedBy = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 (lib.mkForce [ ]); + systemd.services.pdfding.serviceConfig.TimeoutStartSec = + lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 "900"; + systemd.services.pdfding-background.wantedBy = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 ( + lib.mkForce [ ] + ); + environment.systemPackages = [ config.services.postgresql.finalPackage ]; @@ -46,6 +54,8 @@ # create admin machine.wait_for_unit("multi-user.target") + machine.succeed("systemctl start pdfding.service") + machine.succeed("systemctl start pdfding-background.service") machine.wait_for_open_port(${toString port}) machine.succeed("DJANGO_SUPERUSER_PASSWORD=admin pdfding-manage createsuperuser --no-input --username admin --email admin@localhost") diff --git a/nixos/tests/web-apps/pdfding/s3-backups.nix b/nixos/tests/web-apps/pdfding/s3-backups.nix index a3955c968b0d..610acabc9abb 100644 --- a/nixos/tests/web-apps/pdfding/s3-backups.nix +++ b/nixos/tests/web-apps/pdfding/s3-backups.nix @@ -31,12 +31,20 @@ in backup.schedule = "*/1 * * * *"; backup.endpoint = "[::]:3900"; extraEnvironment.BACKUP_BUCKET_NAME = "pdfding-bucket"; - extraEnvironment.BACKUP_REGION = "garage"; + extraEnvironment.BACKUP_REGION = "us-east-1"; envFiles = [ pdfding-s3-keys ]; installTestHelpers = true; }; + # NOTE: on aarch64-linux github actions runer due to lack of kvm, we need to delay pdfding start and give it more time to finish + systemd.services.pdfding.wantedBy = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 (lib.mkForce [ ]); + systemd.services.pdfding.serviceConfig.TimeoutStartSec = + lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 "900"; + systemd.services.pdfding-background.wantedBy = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 ( + lib.mkForce [ ] + ); + # Setup a local garage service for the backup feature # taken from garage nixosTest services.garage = { @@ -48,7 +56,7 @@ in rpc_secret = "5c1915fa04d0b6739675c61bf5907eb0fe3d9c69850c83820f51b4d25d13868c"; s3_api = { - s3_region = "garage"; + s3_region = "us-east-1"; api_bind_addr = "[::]:3900"; root_domain = ".s3.garage"; }; @@ -113,6 +121,8 @@ in # create admin machine.wait_for_unit("multi-user.target") + machine.succeed("systemctl start pdfding.service") + machine.succeed("systemctl start pdfding-background.service") machine.wait_for_open_port(${toString port}) machine.succeed("DJANGO_SUPERUSER_PASSWORD=admin pdfding-manage createsuperuser --no-input --username admin --email admin@localhost") @@ -140,7 +150,7 @@ in -F "description=" \ -F "collection=1" \ -F "use_file_name=on" \ - -F "name=test-upload" \ + -F "name=dummy" \ -F "file=@{test_pdf};type=application/pdf" \ -F "csrfmiddlewaretoken=$csrf_token" \ -H "Referer: {endpoint}/pdf/add" \ diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/0001-Fix-bug-in-extract_filename.patch b/pkgs/applications/editors/jupyter-kernels/xeus-cling/0001-Fix-bug-in-extract_filename.patch deleted file mode 100644 index dac0825b01a1..000000000000 --- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/0001-Fix-bug-in-extract_filename.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 8bfa594bc37630956f80496106bb1d6070035570 Mon Sep 17 00:00:00 2001 -From: thomasjm -Date: Wed, 2 Aug 2023 18:26:58 -0700 -Subject: [PATCH 1/3] Fix bug in extract_filename - ---- - src/main.cpp | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/main.cpp b/src/main.cpp -index 2ee19be..57294b4 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -61,19 +61,19 @@ bool should_print_version(int argc, char* argv[]) - return false; - } - --std::string extract_filename(int argc, char* argv[]) -+std::string extract_filename(int *argc, char* argv[]) - { - std::string res = ""; -- for (int i = 0; i < argc; ++i) -+ for (int i = 0; i < *argc; ++i) - { -- if ((std::string(argv[i]) == "-f") && (i + 1 < argc)) -+ if ((std::string(argv[i]) == "-f") && (i + 1 < *argc)) - { - res = argv[i + 1]; -- for (int j = i; j < argc - 2; ++j) -+ for (int j = i; j < *argc - 2; ++j) - { - argv[j] = argv[j + 2]; - } -- argc -= 2; -+ *argc -= 2; - break; - } - } -@@ -128,7 +128,7 @@ int main(int argc, char* argv[]) - #endif - signal(SIGINT, stop_handler); - -- std::string file_name = extract_filename(argc, argv); -+ std::string file_name = extract_filename(&argc, argv); - - interpreter_ptr interpreter = build_interpreter(argc, argv); - --- -2.40.1 - diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/0002-Don-t-pass-extra-includes-configure-this-with-flags.patch b/pkgs/applications/editors/jupyter-kernels/xeus-cling/0002-Don-t-pass-extra-includes-configure-this-with-flags.patch deleted file mode 100644 index c07e57dfe85d..000000000000 --- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/0002-Don-t-pass-extra-includes-configure-this-with-flags.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 9e6a14bb20567071883563dafb5dfaf512df6243 Mon Sep 17 00:00:00 2001 -From: thomasjm -Date: Wed, 2 Aug 2023 18:27:16 -0700 -Subject: [PATCH 2/3] Don't pass extra includes; configure this with flags - ---- - src/main.cpp | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/main.cpp b/src/main.cpp -index 57294b4..0041a55 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -84,7 +84,7 @@ using interpreter_ptr = std::unique_ptr; - - interpreter_ptr build_interpreter(int argc, char** argv) - { -- int interpreter_argc = argc + 1; -+ int interpreter_argc = argc; - const char** interpreter_argv = new const char*[interpreter_argc]; - interpreter_argv[0] = "xeus-cling"; - // Copy all arguments in the new array excepting the process name. -@@ -92,8 +92,6 @@ interpreter_ptr build_interpreter(int argc, char** argv) - { - interpreter_argv[i] = argv[i]; - } -- std::string include_dir = std::string(LLVM_DIR) + std::string("/include"); -- interpreter_argv[interpreter_argc - 1] = include_dir.c_str(); - - interpreter_ptr interp_ptr = interpreter_ptr(new xcpp::interpreter(interpreter_argc, interpreter_argv)); - delete[] interpreter_argv; --- -2.40.1 - diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/0003-Remove-unsupported-src-root-flag.patch b/pkgs/applications/editors/jupyter-kernels/xeus-cling/0003-Remove-unsupported-src-root-flag.patch deleted file mode 100644 index 8a44919e47d5..000000000000 --- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/0003-Remove-unsupported-src-root-flag.patch +++ /dev/null @@ -1,85 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 43718f5..d0d8670 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -63,8 +63,7 @@ if(LLVM_CONFIG) - "--bindir" - "--libdir" - "--includedir" -- "--prefix" -- "--src-root") -+ "--prefix") - execute_process(COMMAND ${CONFIG_COMMAND} - RESULT_VARIABLE HAD_ERROR - OUTPUT_VARIABLE CONFIG_OUTPUT) -diff --git a/src/xmagics/executable.cpp b/src/xmagics/executable.cpp -index 391c8c9..aba5e03 100644 ---- a/src/xmagics/executable.cpp -+++ b/src/xmagics/executable.cpp -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include - #include - #include - -@@ -25,7 +26,7 @@ - #include "clang/AST/ASTContext.h" - #include "clang/AST/DeclGroup.h" - #include "clang/AST/RecursiveASTVisitor.h" --#include "clang/Basic/DebugInfoOptions.h" -+#include "llvm/Frontend/Debug/Options.h" - #include "clang/Basic/Sanitizers.h" - #include "clang/Basic/TargetInfo.h" - #include "clang/CodeGen/BackendUtil.h" -@@ -115,7 +116,7 @@ namespace xcpp - // Filter out functions added by Cling. - if (auto Identifier = D->getIdentifier()) - { -- if (Identifier->getName().startswith("__cling")) -+ if (Identifier->getName().starts_with("__cling")) - { - return true; - } -@@ -153,12 +154,13 @@ namespace xcpp - if (EnableDebugInfo) - { - CodeGenOpts.setDebugInfo( -- clang::codegenoptions::DebugInfoKind::FullDebugInfo); -+ llvm::codegenoptions::DebugInfoKind::FullDebugInfo); - } - - std::unique_ptr CG(clang::CreateLLVMCodeGen( -- CI->getDiagnostics(), "object", HeaderSearchOpts, -- CI->getPreprocessorOpts(), CodeGenOpts, *Context)); -+ CI->getDiagnostics(), "object", -+ llvm::IntrusiveRefCntPtr(&CI->getVirtualFileSystem()), -+ HeaderSearchOpts, CI->getPreprocessorOpts(), CodeGenOpts, *Context)); - CG->Initialize(AST); - - FindTopLevelDecls Visitor(CG.get()); -@@ -186,7 +188,9 @@ namespace xcpp - EmitBackendOutput(CI->getDiagnostics(), HeaderSearchOpts, - CodeGenOpts, CI->getTargetOpts(), - CI->getLangOpts(), DataLayout, CG->GetModule(), -- clang::Backend_EmitObj, std::move(OS)); -+ clang::Backend_EmitObj, -+ llvm::IntrusiveRefCntPtr(&CI->getVirtualFileSystem()), -+ std::move(OS)); - return true; - } - -@@ -222,10 +226,10 @@ namespace xcpp - - llvm::StringRef OutputFileStr(OutputFile); - llvm::StringRef ErrorFileStr(ErrorFile); -- llvm::SmallVector, 16> Redirects = {llvm::NoneType::None, OutputFileStr, ErrorFileStr}; -+ llvm::SmallVector, 16> Redirects = {std::nullopt, OutputFileStr, ErrorFileStr}; - - // Finally run the linker. -- int ret = llvm::sys::ExecuteAndWait(Compiler, Args, llvm::NoneType::None, -+ int ret = llvm::sys::ExecuteAndWait(Compiler, Args, std::nullopt, - Redirects); - - // Read back output and error streams. diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix b/pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix deleted file mode 100644 index 9588900f6dc5..000000000000 --- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/default.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ - lib, - callPackage, - cling, - fetchurl, - jq, - makeWrapper, - python3, - stdenv, -}: - -# Jupyter console: -# nix run --impure --expr 'with import {}; jupyter-console.withSingleKernel cpp17-kernel' - -# Jupyter notebook: -# nix run --impure --expr 'with import {}; jupyter.override { definitions = { cpp17 = cpp17-kernel; }; }' - -let - xeus-cling-unwrapped = callPackage ./xeus-cling.nix { }; - - xeus-cling = xeus-cling-unwrapped.overrideAttrs (oldAttrs: { - nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ makeWrapper ]; - - # xcpp needs a collection of flags to start up properly, so wrap it by default. - # We'll provide the unwrapped version as a passthru - flags = cling.flags ++ [ - "-resource-dir" - "${cling.unwrapped}" - "-L" - "${cling.unwrapped}/lib" - "-l" - "${cling.unwrapped}/lib/cling.so" - ]; - - fixupPhase = '' - runHook preFixup - - wrapProgram $out/bin/xcpp --add-flags "$flags" - - runHook postFixup - ''; - - doInstallCheck = true; - installCheckPhase = '' - runHook preInstallCheck - - # Smoke check: run a test notebook using Papermill by creating a simple kernelspec - mkdir -p kernels/cpp17 - export JUPYTER_PATH="$(pwd)" - cat << EOF > kernels/cpp17/kernel.json - { - "argv": ["$out/bin/xcpp", "-std=c++17", "-f", "{connection_file}"], - "language": "cpp17" - } - EOF - - ${python3.pkgs.papermill}/bin/papermill ${./test.ipynb} out.ipynb - result="$(cat out.ipynb | ${jq}/bin/jq -r '.cells[0].outputs[0].text[0]')" - if [[ "$result" != "Hello world." ]]; then - echo "Kernel test gave '$result'. Expected: 'Hello world.'" - exit 1 - fi - - runHook postInstallCheck - ''; - - passthru = (oldAttrs.passthru or { }) // { - unwrapped = xeus-cling-unwrapped; - }; - }); - - mkKernelSpec = std: { - displayName = builtins.replaceStrings [ "c++" ] [ "C++ " ] std; - argv = [ - "${xeus-cling}/bin/xcpp" - "-std=${std}" - "-f" - "{connection_file}" - ]; - language = "cpp"; - logo32 = "${xeus-cling-unwrapped}/share/jupyter/kernels/xcpp17/logo-32x32.png"; - logo64 = "${xeus-cling-unwrapped}/share/jupyter/kernels/xcpp17/logo-64x64.png"; - }; - -in - -{ - cpp11-kernel = mkKernelSpec "c++11"; - cpp14-kernel = mkKernelSpec "c++14"; - cpp17-kernel = mkKernelSpec "c++17"; - cpp2a-kernel = mkKernelSpec "c++2a"; - - inherit xeus-cling; -} diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/test.ipynb b/pkgs/applications/editors/jupyter-kernels/xeus-cling/test.ipynb deleted file mode 100644 index 27e5932b8c8f..000000000000 --- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/test.ipynb +++ /dev/null @@ -1,24 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "574ed398-7bfe-4a34-a7dd-9fa85535aed2", - "metadata": {}, - "outputs": [], - "source": [ - "#include \n", - "std::cout << \"Hello world.\";" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "C++ 17", - "language": "cpp", - "name": "cpp17" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix b/pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix deleted file mode 100644 index 50ee8bbd685c..000000000000 --- a/pkgs/applications/editors/jupyter-kernels/xeus-cling/xeus-cling.nix +++ /dev/null @@ -1,112 +0,0 @@ -{ - lib, - clangStdenv, - cmake, - fetchFromGitHub, - llvmPackages_18, - # Libraries - argparse, - cling, - cppzmq, - libuuid, - ncurses, - openssl, - pugixml, - xeus, - xeus-zmq, - xtl, - zeromq, - zlib, - # Settings - debug ? false, -}: - -let - # Nixpkgs moved to argparse 3.x, but we need ~2.9 - argparse_2_9 = argparse.overrideAttrs (oldAttrs: { - version = "2.9"; - - src = fetchFromGitHub { - owner = "p-ranav"; - repo = "argparse"; - rev = "v2.9"; - sha256 = "sha256-vbf4kePi5gfg9ub4aP1cCK1jtiA65bUS9+5Ghgvxt/E="; - }; - }); - - # Nixpkgs moved to xeus 5.2.0, but we need 3.2.0 - # https://github.com/jupyter-xeus/xeus-cling/issues/523 - xeus_3_2_0 = xeus.overrideAttrs (oldAttrs: { - version = "3.2.0"; - - src = fetchFromGitHub { - owner = "jupyter-xeus"; - repo = "xeus"; - tag = "3.2.0"; - sha256 = "sha256-D/dJ0SHxTHJw63gHD6FRZS7O2TVZ0voIv2mQASEjLA8="; - }; - - buildInputs = oldAttrs.buildInputs ++ lib.singleton xtl; - }); - -in - -clangStdenv.mkDerivation (finalAttrs: { - pname = "xeus-cling"; - version = "0.15.3"; - - src = fetchFromGitHub { - owner = "QuantStack"; - repo = "xeus-cling"; - rev = "${finalAttrs.version}"; - hash = "sha256-OfZU+z+p3/a36GntusBfwfFu3ssJW4Fu7SV3SMCoo1I="; - }; - - patches = [ - ./0001-Fix-bug-in-extract_filename.patch - ./0002-Don-t-pass-extra-includes-configure-this-with-flags.patch - ./0003-Remove-unsupported-src-root-flag.patch - ]; - - nativeBuildInputs = [ cmake ]; - buildInputs = [ - argparse_2_9 - cling.unwrapped - cppzmq - libuuid - llvmPackages_18.llvm - ncurses - openssl - pugixml - xeus_3_2_0 - xeus-zmq - xtl - zeromq - zlib - ]; - - cmakeBuildType = if debug then "Debug" else "Release"; - - postPatch = '' - substituteInPlace src/xmagics/executable.cpp \ - --replace-fail "getDataLayout" "getDataLayoutString" - substituteInPlace src/xmagics/execution.cpp \ - --replace-fail "simplisticCastAs" "castAs" - substituteInPlace src/xmime_internal.hpp \ - --replace-fail "code.str()" "code.str().str()" - - substituteInPlace CMakeLists.txt \ - --replace-fail "cmake_minimum_required(VERSION 3.4.3)" "cmake_minimum_required(VERSION 3.10)" - ''; - - dontStrip = debug; - - meta = { - description = "Jupyter kernel for the C++ programming language"; - mainProgram = "xcpp"; - homepage = "https://github.com/jupyter-xeus/xeus-cling"; - maintainers = with lib.maintainers; [ thomasjm ]; - platforms = lib.platforms.unix; - license = lib.licenses.mit; - }; -}) diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cpp/default.nix b/pkgs/applications/editors/jupyter-kernels/xeus-cpp/default.nix new file mode 100644 index 000000000000..c595cf1eee6a --- /dev/null +++ b/pkgs/applications/editors/jupyter-kernels/xeus-cpp/default.nix @@ -0,0 +1,37 @@ +{ + callPackage, +}: + +# Jupyter console: +# nix run --impure --expr 'with import {}; jupyter-console.withSingleKernel cpp17-kernel' + +# Jupyter notebook: +# nix shell --impure --expr 'with import {}; [ (jupyter.override { definitions = { cpp17 = cpp17-kernel; }; }) ]' -c jupyter-notebook + +let + xeus-cpp = callPackage ./xeus-cpp.nix { }; + + mkKernelSpec = std: { + displayName = builtins.replaceStrings [ "c++" ] [ "C++ " ] std; + argv = [ + "${xeus-cpp}/bin/xcpp" + "-std=${std}" + "-f" + "{connection_file}" + ]; + language = "cpp"; + logo32 = "${xeus-cpp}/share/jupyter/kernels/xcpp17/logo-32x32.png"; + logo64 = "${xeus-cpp}/share/jupyter/kernels/xcpp17/logo-64x64.png"; + }; + +in + +{ + cpp11-kernel = mkKernelSpec "c++11"; + cpp14-kernel = mkKernelSpec "c++14"; + cpp17-kernel = mkKernelSpec "c++17"; + cpp20-kernel = mkKernelSpec "c++20"; + cpp23-kernel = mkKernelSpec "c++23"; + + inherit xeus-cpp; +} diff --git a/pkgs/applications/editors/jupyter-kernels/xeus-cpp/xeus-cpp.nix b/pkgs/applications/editors/jupyter-kernels/xeus-cpp/xeus-cpp.nix new file mode 100644 index 000000000000..c0e415a4dcfd --- /dev/null +++ b/pkgs/applications/editors/jupyter-kernels/xeus-cpp/xeus-cpp.nix @@ -0,0 +1,183 @@ +{ + lib, + clangStdenv, + fetchFromGitHub, + cmake, + pkg-config, + + cpp-interop, + cling, + + # Jupyter / xeus stack + xeus, + xeus-zmq, + nlohmann_json, + argparse, + pugixml, + + # Runtime libs + zeromq, + openssl, + libuuid, + curl, + makeWrapper, + + # tests + doctest, + + # installCheck + python3, + jq, + + # "clang-repl" | "cling" + backend ? "clang-repl", +}: + +let + stdenv = clangStdenv; + + useCling = backend == "cling"; + cppInterop = cpp-interop.override { inherit backend; }; + + # xeus-cpp 0.10.0 needs newer xeus / xeus-zmq than nixpkgs ships by default. + xeus_6 = xeus.overrideAttrs (old: { + version = "6.0.5"; + src = fetchFromGitHub { + owner = "jupyter-xeus"; + repo = "xeus"; + tag = "6.0.5"; + hash = "sha256-nbjq4dzrukVsZI6X3lWpr9oCZV5IUu/vkqSNKD7o3vo="; + }; + doCheck = false; + }); + + xeus_zmq_4 = (xeus-zmq.override { xeus = xeus_6; }).overrideAttrs (old: { + version = "4.0.0"; + src = fetchFromGitHub { + owner = "jupyter-xeus"; + repo = "xeus-zmq"; + tag = "4.0.0"; + hash = "sha256-Ux8klPh33XWFu9eu+GTk5ZcqIcoP/GM4/J1uaz9xRHI="; + }; + }); + + # The interpreter behind CppInterOp must be told where the C/C++ standard + # library and Clang builtin headers live: there is no system compiler to detect + # at runtime in the Nix sandbox. We pass this set via CppInterOp's runtime + # override env var. For the Cling backend cling.flags already carries it; for + # clang-repl we reuse the hermetic resource dir and include flags CppInterOp + # exposes. + resourceDir = if useCling then "${cling.unwrapped}/lib/clang/20" else cppInterop.resourceDir; + interpreterArgs = lib.concatStringsSep " " ( + if useCling then cling.flags else cppInterop.interpreterArgs + ); +in + +stdenv.mkDerivation (finalAttrs: { + pname = "xeus-cpp"; + version = "0.10.0"; + + src = fetchFromGitHub { + owner = "compiler-research"; + repo = "xeus-cpp"; + tag = finalAttrs.version; + hash = "sha256-r6ojIcebWzpP85Djl36EMucnfQQgjGJUakSbMYW+czs="; + }; + + strictDeps = true; + __structuredAttrs = true; + + nativeBuildInputs = [ + cmake + pkg-config + makeWrapper + ]; + + buildInputs = [ + cppInterop + xeus_6 + xeus_zmq_4 + nlohmann_json + argparse + pugixml + zeromq + openssl + libuuid + curl + ]; + + cmakeFlags = [ + (lib.cmakeBool "XEUS_CPP_BUILD_TESTS" finalAttrs.finalPackage.doCheck) + "-DXEUS_CPP_RESOURCE_DIR=${resourceDir}" + ]; + + # Make the kernel hermetic: hand the interpreter the include/resource flags it + # needs, since it cannot probe a system compiler in the sandbox. + postInstall = '' + wrapProgram $out/bin/xcpp \ + --set-default CPPINTEROP_EXTRA_INTERPRETER_ARGS "${interpreterArgs}" + + # xeus-cpp builds the kernelspec argv from CMAKE_INSTALL_PREFIX *and* the + # (absolute, under Nix) CMAKE_INSTALL_BINDIR, producing a doubled store path + # for xcpp. Point each kernel.json back at the wrapped binary. + for k in $out/share/jupyter/kernels/*/kernel.json; do + substituteInPlace "$k" --replace-fail "$out/$out/bin/xcpp" "$out/bin/xcpp" + done + ''; + + # Run the upstream doctest suite. Like the wrapped kernel, the test binary + # drives CppInterOp directly, so it needs the same hermetic interpreter args. + doCheck = true; + checkInputs = [ doctest ]; + checkPhase = '' + runHook preCheck + + export CPPINTEROP_EXTRA_INTERPRETER_ARGS="${interpreterArgs}" + # The test binary is linked with the install RPATH ($out/lib), which does not + # exist yet at check time; point it at the freshly built libxeus-cpp instead. + export LD_LIBRARY_PATH="$PWD''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" + cmake --build . --target check-xeus-cpp + + runHook postCheck + ''; + + # Smoke test: drive the installed, wrapped kernel through Papermill and check + # it actually compiles and runs C++. + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck + + export HOME=$(mktemp -d) + mkdir -p "$HOME/kernels/xcpp" + cat > "$HOME/kernels/xcpp/kernel.json" < "$HOME/test.ipynb" <<'NBEOF' + {"cells":[ + {"cell_type":"code","id":"a","metadata":{},"execution_count":null,"outputs":[],"source":["#include "]}, + {"cell_type":"code","id":"b","metadata":{},"execution_count":null,"outputs":[],"source":["std::cout << \"Hello world.\" << std::endl;"]} + ],"metadata":{"kernelspec":{"name":"xcpp","display_name":"C++","language":"cpp"}},"nbformat":4,"nbformat_minor":5} + NBEOF + + ${python3.pkgs.papermill}/bin/papermill "$HOME/test.ipynb" "$HOME/out.ipynb" --kernel xcpp + ${jq}/bin/jq -e '[.. | .text? // empty | tostring] | add | contains("Hello world.")' "$HOME/out.ipynb" + + runHook postInstallCheck + ''; + + passthru = { + inherit backend; + flags = interpreterArgs; + }; + + meta = { + description = "Jupyter kernel for C++ based on CppInterOp (${backend} backend)"; + mainProgram = "xcpp"; + homepage = "https://github.com/compiler-research/xeus-cpp"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ thomasjm ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix index 27bc313a6e45..bd93d035bd9c 100644 --- a/pkgs/applications/editors/vscode/extensions/default.nix +++ b/pkgs/applications/editors/vscode/extensions/default.nix @@ -3924,8 +3924,8 @@ let mktplcRef = { publisher = "redhat"; name = "vscode-yaml"; - version = "1.23.0"; - hash = "sha256-GC7AIQIUw+F5rBscTe+ulKt/97s7p636TLRvmcT9b9c="; + version = "1.24.0"; + hash = "sha256-Bmh1gxKn+mvtolnKWmhJ2QxdUZ32QV7b4kbBNeBtcWg="; }; meta = { description = "YAML Language Support by Red Hat, with built-in Kubernetes syntax support"; diff --git a/pkgs/applications/editors/vscode/extensions/tombi-toml.tombi/default.nix b/pkgs/applications/editors/vscode/extensions/tombi-toml.tombi/default.nix index 5a35b4cf4207..66e9fbc2eb18 100644 --- a/pkgs/applications/editors/vscode/extensions/tombi-toml.tombi/default.nix +++ b/pkgs/applications/editors/vscode/extensions/tombi-toml.tombi/default.nix @@ -7,19 +7,19 @@ let supported = { x86_64-linux = { - hash = "sha256-YLic8tKnb6WSx4rdwTu8B2ybfjoSbXc+QfEZ0Vc4umo="; + hash = "sha256-DWrKvjWpUYvyqgZCShqwBKw33MHW31cxb4ERV65O+uc="; arch = "linux-x64"; }; x86_64-darwin = { - hash = "sha256-nbftXgjEAxGfT4sfTjd+bp+Ti/rWJGHLkaSXQWlRGBM="; + hash = "sha256-CYDutYtU0+AAn6PYO/EQ/Suv8BNuMtvePpFdKRtiqAs="; arch = "darwin-x64"; }; aarch64-linux = { - hash = "sha256-FG6OIoeeDenMbgwM/ZE8YyTySt/XcoFJj1RxvlrPsXc="; + hash = "sha256-iFHeZiTubXA/t2Gib9hP42d7yjq/WRyywp+l8VhGfmo="; arch = "linux-arm64"; }; aarch64-darwin = { - hash = "sha256-FW+pmz8YTw6pYxx1x3UsT3Dtp00GT804MJX4HBarMZo="; + hash = "sha256-qe7K3PQIgZztIdOVx37LGXrzBmYui2o2CcmDK+5jaFM="; arch = "darwin-arm64"; }; }; @@ -34,7 +34,7 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = base // { name = "tombi"; publisher = "tombi-toml"; - version = "1.1.5"; + version = "1.1.7"; }; meta = { description = "TOML Language Server"; diff --git a/pkgs/applications/emulators/libretro/cores/beetle-saturn.nix b/pkgs/applications/emulators/libretro/cores/beetle-saturn.nix index e4648cbd06ec..3772f959ad2a 100644 --- a/pkgs/applications/emulators/libretro/cores/beetle-saturn.nix +++ b/pkgs/applications/emulators/libretro/cores/beetle-saturn.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "mednafen-saturn"; - version = "0-unstable-2026-06-29"; + version = "0-unstable-2026-07-07"; src = fetchFromGitHub { owner = "libretro"; repo = "beetle-saturn-libretro"; - rev = "8299b65134eded90db3fe5edb6aaa98e02bd9cae"; - hash = "sha256-E83T6TUzy2envOh25xZ/y6kKb+lk67nOHp1dJXK4UK4="; + rev = "6f0cb9d1b9689601cd7dbf08e992d232304f50f7"; + hash = "sha256-Q50CQDLO090csrF73fo2qxzIaV7o3E8YS9MdQZBp/V8="; }; makefile = "Makefile"; diff --git a/pkgs/by-name/ap/apfel-llm/package.nix b/pkgs/by-name/ap/apfel-llm/package.nix index d7addc119fb4..2f8c4f6cd107 100644 --- a/pkgs/by-name/ap/apfel-llm/package.nix +++ b/pkgs/by-name/ap/apfel-llm/package.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "apfel-llm"; - version = "1.7.0"; + version = "1.8.3"; __structuredAttrs = true; strictDeps = true; @@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: { # Building from source requires swift 6.3.0 while nixpkgs only has 5.10.1 src = fetchurl { url = "https://github.com/Arthur-Ficial/apfel/releases/download/v${finalAttrs.version}/apfel-${finalAttrs.version}-arm64-macos.tar.gz"; - hash = "sha256-q0DvI+D52Rz/LWQDX/oVRWJqeepJY8+CLOWrZT4yInk="; + hash = "sha256-1AA86f5+Poo5YCrtxT1rAPGBctQbNa5hdAZmI008/yU="; }; sourceRoot = "."; diff --git a/pkgs/by-name/as/astc-encoder/package.nix b/pkgs/by-name/as/astc-encoder/package.nix index cd0ad68a83b2..290c4fe82122 100644 --- a/pkgs/by-name/as/astc-encoder/package.nix +++ b/pkgs/by-name/as/astc-encoder/package.nix @@ -47,13 +47,13 @@ in stdenv.mkDerivation (finalAttrs: { pname = "astc-encoder"; - version = "5.4.0"; + version = "5.6.0"; src = fetchFromGitHub { owner = "ARM-software"; repo = "astc-encoder"; tag = finalAttrs.version; - hash = "sha256-mpaLSf1K+SsxkQm/b+QIWU34TzHQ7CAkyDNczBrcmBo="; + hash = "sha256-2/3m5G7rMoc/qZ9wPN3kn7O/CdQbWnKyU5OvAIxx97A="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/by-name/at/atuin/package.nix b/pkgs/by-name/at/atuin/package.nix index 588b55191b10..82df8b94ffe1 100644 --- a/pkgs/by-name/at/atuin/package.nix +++ b/pkgs/by-name/at/atuin/package.nix @@ -10,16 +10,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "atuin"; - version = "18.16.1"; + version = "18.17.0"; src = fetchFromGitHub { owner = "atuinsh"; repo = "atuin"; tag = "v${finalAttrs.version}"; - hash = "sha256-XrJFetPs7TsbX5Cxekj+h3hlmQLoOpB7U+c36NM/jeA="; + hash = "sha256-cciogPSlbfiC9U3Dv+IGyuRI9PU9X4LdlequCFiG/a0="; }; - cargoHash = "sha256-eqxeE7+UxBTdaYjlonOz6pYQ3mar8lNUd/K0CSuzquc="; + cargoHash = "sha256-QX1JupLZafRdMUZjl58iFjiPgLSTYZazRVyU88n5QP8="; # atuin's default features include 'check-updates', which do not make sense # for distribution builds. List all other default features. diff --git a/pkgs/by-name/aw/aws-cdk-cli/package.nix b/pkgs/by-name/aw/aws-cdk-cli/package.nix index 72977f74fe57..8cc53b5a19ad 100644 --- a/pkgs/by-name/aw/aws-cdk-cli/package.nix +++ b/pkgs/by-name/aw/aws-cdk-cli/package.nix @@ -18,19 +18,19 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "aws-cdk-cli"; - version = "2.1128.1"; + version = "2.1129.0"; src = fetchFromGitHub { owner = "aws"; repo = "aws-cdk-cli"; tag = "cdk@v${finalAttrs.version}"; - hash = "sha256-F5dlS2xIwVxpgc6v+bP+vI0lP+nttvKamzWz4UEphzc="; + hash = "sha256-KXbNrzylyY+RSp4Da9rMSEn7UdPTHU9iDID/qXGL+io="; }; missingHashes = ./missing-hashes.json; offlineCache = yarn-berry.fetchYarnBerryDeps { inherit (finalAttrs) src missingHashes; - hash = "sha256-ykFox4QTo0f0urzh1e/65Jh0H3x0wOngmEzWFekCma8="; + hash = "sha256-jh/EW+scTCJ698jKr1eRYeckRhgE+SmOjfUUgJ7GbFU="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/az/azahar/package.nix b/pkgs/by-name/az/azahar/package.nix index a1ea6783dc58..196212ee1ae8 100644 --- a/pkgs/by-name/az/azahar/package.nix +++ b/pkgs/by-name/az/azahar/package.nix @@ -61,7 +61,7 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "azahar"; - version = "2125.1.2"; + version = "2125.1.3"; src = fetchFromGitHub { owner = "azahar-emu"; @@ -74,7 +74,7 @@ stdenv.mkDerivation (finalAttrs: { echo "${finalAttrs.version}" > "$out/GIT-TAG" git -C "$out" rev-parse HEAD > "$out/GIT-COMMIT" ''; - hash = "sha256-B3mReLoVqFCqUeunst95AX0veGlZJNyeBBdDIFbf4HI="; + hash = "sha256-jn5Ib5jM/6zHuCjWoMkTvs0nR29mAbTlvID5aYZLw5o="; }; strictDeps = true; diff --git a/pkgs/by-name/az/azimuth/package.nix b/pkgs/by-name/az/azimuth/package.nix index 4b54eee406df..ab5634674e8e 100644 --- a/pkgs/by-name/az/azimuth/package.nix +++ b/pkgs/by-name/az/azimuth/package.nix @@ -3,44 +3,49 @@ stdenv, fetchFromGitHub, libGL, - SDL, + SDL2, which, + pkg-config, installTool ? false, }: stdenv.mkDerivation (finalAttrs: { pname = "azimuth"; - version = "1.0.3"; + version = "1.0.4"; src = fetchFromGitHub { owner = "mdsteele"; repo = "azimuth"; - rev = "v${finalAttrs.version}"; - sha256 = "1znfvpmqiixd977jv748glk5zc4cmhw5813zp81waj07r9b0828r"; + tag = "v${finalAttrs.version}"; + hash = "sha256-N5Ahetw/zOXDrEiR1umQNF6i3yeawavoLceiU+xD//g="; }; - nativeBuildInputs = [ which ]; + strictDeps = true; + __structuredAttrs = true; + + nativeBuildInputs = [ + pkg-config + which + ]; + buildInputs = [ libGL - SDL + SDL2 ]; env.NIX_CFLAGS_COMPILE = toString [ "-Wno-error=maybe-uninitialized" ]; - preConfigure = '' - substituteInPlace data/azimuth.desktop \ - --replace Exec=azimuth "Exec=$out/bin/azimuth" \ - --replace "Version=%AZ_VERSION_NUMBER" "Version=${finalAttrs.version}" - ''; - makeFlags = [ "BUILDTYPE=release" - "INSTALLDIR=$(out)" - ] - ++ (if installTool then [ "INSTALLTOOL=true" ] else [ "INSTALLTOOL=false" ]); + "PREFIX=${placeholder "out"}" + "INSTALLTOOL=${if installTool then "true" else "false"}" + ]; enableParallelBuilding = true; + doCheck = true; + checkTarget = "test"; + meta = { description = "Metroidvania game using only vectorial graphic"; mainProgram = "azimuth"; diff --git a/pkgs/by-name/be/beidconnect/package.nix b/pkgs/by-name/be/beidconnect/package.nix index 00550fd21155..cd6cda7aa18f 100644 --- a/pkgs/by-name/be/beidconnect/package.nix +++ b/pkgs/by-name/be/beidconnect/package.nix @@ -10,13 +10,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "beidconnect"; - version = "2.11"; + version = "2.12"; src = fetchFromGitHub { owner = "Fedict"; repo = "fts-beidconnect"; rev = finalAttrs.version; - hash = "sha256-4eKO2yw2Ipfu1PvebgOR+BihsLlnWIJejGWqjztPA2I="; + hash = "sha256-ZFxq/rJP0/KSsi2qsXyKY9Fmb+JxeakTdso5FsVu1/c="; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/be/bentopdf/package.nix b/pkgs/by-name/be/bentopdf/package.nix index 9032644598ab..5054b1076431 100644 --- a/pkgs/by-name/be/bentopdf/package.nix +++ b/pkgs/by-name/be/bentopdf/package.nix @@ -2,23 +2,22 @@ lib, buildNpmPackage, fetchFromGitHub, + nix-update-script, nixosTests, simpleMode ? true, }: buildNpmPackage (finalAttrs: { pname = "bentopdf"; - # We intentionally don't update the version, due to: - # https://github.com/NixOS/nixpkgs/issues/484067 - # nixpkgs-update: no auto update - version = "1.11.2"; + version = "2.8.6"; src = fetchFromGitHub { owner = "alam00000"; repo = "bentopdf"; tag = "v${finalAttrs.version}"; - hash = "sha256-br4My0Q4zoA+ZIrXM4o4oQjZ7IpSdwg+iKiAUdc2B/s="; + hash = "sha256-rbThEonDXFGcudgdMtDrQHq84Wh4IvOZZBn4kXvrhoI="; }; - npmDepsHash = "sha256-UNNNYO7e7qdumI0/ka2ieFZzKURPl1V3981vHCPcVfY="; + npmDepsHash = "sha256-RT6ifx24mNfNS8oO93vyW+zbKQGCx21RqBQrAXK8dAY="; + npmDepsFetcherVersion = 2; npmBuildFlags = [ "--" @@ -37,8 +36,11 @@ buildNpmPackage (finalAttrs: { runHook postInstall ''; - passthru.tests = { - inherit (nixosTests.bentopdf) caddy nginx; + passthru = { + tests = { + inherit (nixosTests.bentopdf) caddy nginx; + }; + updateScript = nix-update-script { }; }; meta = { diff --git a/pkgs/by-name/bo/borgmatic/package.nix b/pkgs/by-name/bo/borgmatic/package.nix index 682d8808520e..114dbdad8a3d 100644 --- a/pkgs/by-name/bo/borgmatic/package.nix +++ b/pkgs/by-name/bo/borgmatic/package.nix @@ -15,7 +15,7 @@ }: python3Packages.buildPythonApplication (finalAttrs: { pname = "borgmatic"; - version = "2.1.5"; + version = "2.1.6"; pyproject = true; strictDeps = true; @@ -23,7 +23,7 @@ python3Packages.buildPythonApplication (finalAttrs: { src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-T0+E6opyfr7zxfP44OlNuhqsdQyi7OdIXiE5r310LaU="; + hash = "sha256-Mgx8PnGfTa5j6+53RVntPHa5EDJAY2NQC3fvmyRj24Y="; }; passthru.updateScript = nix-update-script { }; @@ -33,13 +33,17 @@ python3Packages.buildPythonApplication (finalAttrs: { [ flexmock pytestCheckHook + pytest-asyncio pytest-cov-stub pytest-timeout ] - ++ finalAttrs.passthru.optional-dependencies.apprise; + ++ finalAttrs.passthru.optional-dependencies.apprise + ++ finalAttrs.passthru.optional-dependencies.browse; # - test_borgmatic_version_matches_news_version - # NEWS file not available on the pypi source + # NEWS file is available on the pypi source, but the test requires a + # borgmatic executable. Which it can't find in difference to all the + # other tests. # - test_log_outputs_includes_error_output_in_exception # TOCTOU race in log_outputs(): process.poll() returns None in # raise_for_process_errors but non-None in the while-loop exit check, @@ -51,6 +55,8 @@ python3Packages.buildPythonApplication (finalAttrs: { nativeBuildInputs = [ installShellFiles ]; + build-system = [ python3Packages.setuptools ]; + dependencies = with python3Packages; [ borgbackup colorama @@ -58,11 +64,14 @@ python3Packages.buildPythonApplication (finalAttrs: { packaging requests ruamel-yaml - setuptools ]; optional-dependencies = { apprise = [ python3Packages.apprise ]; + browse = with python3Packages; [ + binaryornot + textual + ]; }; postInstall = @@ -93,6 +102,7 @@ python3Packages.buildPythonApplication (finalAttrs: { meta = { description = "Simple, configuration-driven backup software for servers and workstations"; homepage = "https://torsion.org/borgmatic/"; + changelog = "https://projects.torsion.org/borgmatic-collective/borgmatic/src/tag/${finalAttrs.version}/NEWS"; license = lib.licenses.gpl3Plus; platforms = lib.platforms.all; mainProgram = "borgmatic"; diff --git a/pkgs/by-name/ce/cemu/package.nix b/pkgs/by-name/ce/cemu/package.nix index 6d8efb1d6395..9581a5122bd7 100644 --- a/pkgs/by-name/ce/cemu/package.nix +++ b/pkgs/by-name/ce/cemu/package.nix @@ -181,6 +181,9 @@ stdenv.mkDerivation (finalAttrs: { zhaofengli baduhai ]; - platforms = [ "x86_64-linux" ]; + platforms = [ + "aarch64-linux" + "x86_64-linux" + ]; }; }) diff --git a/pkgs/by-name/ch/charm-freeze/package.nix b/pkgs/by-name/ch/charm-freeze/package.nix index 5ce7e0d1a319..e9ff10c34681 100644 --- a/pkgs/by-name/ch/charm-freeze/package.nix +++ b/pkgs/by-name/ch/charm-freeze/package.nix @@ -23,6 +23,8 @@ buildGoModule (finalAttrs: { "-X=main.Version=${finalAttrs.version}" ]; + excludedPackages = [ "test/input" ]; + meta = { description = "Tool to generate images of code and terminal output"; mainProgram = "freeze"; diff --git a/pkgs/by-name/ch/chisel/package.nix b/pkgs/by-name/ch/chisel/package.nix index 822ec78afed4..d1dbb68d2799 100644 --- a/pkgs/by-name/ch/chisel/package.nix +++ b/pkgs/by-name/ch/chisel/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "chisel"; - version = "1.11.7"; + version = "1.11.8"; src = fetchFromGitHub { owner = "jpillora"; repo = "chisel"; tag = "v${finalAttrs.version}"; - hash = "sha256-VLQsYxd7wMRTrmqO5dGgqmhL/oOQULEIMo4xUaKXG5I="; + hash = "sha256-hhkauBn8yEnUmHQjgSF8LMM7zEwhIRRPIkx5VhVZCTI="; }; - vendorHash = "sha256-hqHd+62csVjHY2oAvi5fwlI0LbjR/LSDg6b1SMwe8Fw="; + vendorHash = "sha256-wt6d6yNi4QRI/RQiemfOAbc6FG8sBexWFT1dKOmFEes="; ldflags = [ "-s" diff --git a/pkgs/by-name/ci/cider-2/package.nix b/pkgs/by-name/ci/cider-2/package.nix index c30678890e5a..1d8db2f568f6 100644 --- a/pkgs/by-name/ci/cider-2/package.nix +++ b/pkgs/by-name/ci/cider-2/package.nix @@ -18,11 +18,11 @@ }: stdenv.mkDerivation rec { pname = "cider-2"; - version = "4.0.0"; + version = "4.0.9.1"; src = fetchurl { url = "https://repo.cider.sh/apt/pool/main/cider-v${version}-linux-x64.deb"; - hash = "sha256-Z5B7VQatTEktt4e7aF5EGDTufgwfRHJzCZ1Lia/aIFk="; + hash = "sha256-MsA6lK3PsyOEx938FgJFx8l9oqwoM3FzIK5goF73lTs="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/co/codebook/package.nix b/pkgs/by-name/co/codebook/package.nix index dd5412d834d3..40b492d080ee 100644 --- a/pkgs/by-name/co/codebook/package.nix +++ b/pkgs/by-name/co/codebook/package.nix @@ -8,17 +8,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "codebook"; - version = "0.3.41"; + version = "0.3.42"; src = fetchFromGitHub { owner = "blopker"; repo = "codebook"; tag = "v${finalAttrs.version}"; - hash = "sha256-QmvkN0e4iwf3gwi/wMnGXlbr9CpG9JvWEuAjlFm50Sk="; + hash = "sha256-L+OVR7JHs9qFh48ET2eugl4zZIpbM4DBtoWsHKzKbks="; }; buildAndTestSubdir = "crates/codebook-lsp"; - cargoHash = "sha256-vh4ObFy3pq6e3+DQhYiWNTeaITm+ci/r4CwfAvO3JqU="; + cargoHash = "sha256-+OmaZkae5b5TKfMwlYGijJTD5gGS/YuoQOvKKfKuipk="; env = { CARGO_PROFILE_RELEASE_LTO = "fat"; diff --git a/pkgs/by-name/co/coder/package.nix b/pkgs/by-name/co/coder/package.nix index a56a65e02e57..377621ee1af2 100644 --- a/pkgs/by-name/co/coder/package.nix +++ b/pkgs/by-name/co/coder/package.nix @@ -15,21 +15,21 @@ let channels = { stable = { - version = "2.33.9"; + version = "2.33.11"; hash = { - x86_64-linux = "sha256-/X1/1xlPV/86MyAXv7MJU8YtEemRNYdasBP6lH586DM="; - x86_64-darwin = "sha256-9ns+EzDMgyo+zgfQ3867AhTQ1qENPjtHXCYWtmP00mU="; - aarch64-linux = "sha256-4hrV9va+c3VvQXIQ2j6CGZ19ZFCFDEsHhfZu/kQfhwA="; - aarch64-darwin = "sha256-5k15Rf09/n/eKvVD0VxDWWWgJK7U0DDNAf0p923BGLs="; + x86_64-linux = "sha256-NY9xyLc6Pr1wWPnr4fLo6t+7B7Gin/BlTH3tdxQk30k="; + x86_64-darwin = "sha256-yEHu+ekyZSUd66L9sR8ihVLFnDe9N/kFKLGHOFfx9es="; + aarch64-linux = "sha256-Wc9hhotJKcb1fdjfh9pWxVs/e4YpBua1PyAhMRJbUAY="; + aarch64-darwin = "sha256-7A6BxOg4A3Ua5SXjnh5gtG/LE94iGuRQPe/S9UjX/oc="; }; }; mainline = { - version = "2.34.3"; + version = "2.34.5"; hash = { - x86_64-linux = "sha256-j7r5qupAsjkA11KJpdTIVtogWvSxz59nMKtTS92NMDk="; - x86_64-darwin = "sha256-MJJK0NeXHfd/ipmPUrdhrcCOArafYH3sq+MW7GiLVnY="; - aarch64-linux = "sha256-avDUA/3RLcoyt6QZ3CllvjNp8O65g+0CkAJjMOOVKLg="; - aarch64-darwin = "sha256-qCHsK0zOqJO/ECb9afaEwNia9R/AJMgtRpIFUfZeY1Y="; + x86_64-linux = "sha256-B0roCJqTu6o89nHbVA3b9eHKj/VmJ9i1j4blF1I76yU="; + x86_64-darwin = "sha256-+7QhdfwFqh9SZBJOgOqS0Y49dUsWM6PC0/oBhfuAkfM="; + aarch64-linux = "sha256-UDyEhBAlvgSHWLPtbNXHj6X2gle1Y3fjQLSKHzwc/XI="; + aarch64-darwin = "sha256-VhliikNdqi7AauYlKQvMroEjR3jZZnhNw0HTtJFw5zg="; }; }; }; diff --git a/pkgs/by-name/co/confluent-cli/package.nix b/pkgs/by-name/co/confluent-cli/package.nix index 5ba3019c3e0e..4e3d2fabc11d 100644 --- a/pkgs/by-name/co/confluent-cli/package.nix +++ b/pkgs/by-name/co/confluent-cli/package.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "confluent-cli"; - version = "4.68.0"; + version = "4.70.0"; # To get the latest version: # curl -L https://cnfl.io/cli | sh -s -- -l | grep -v latest | sort -V | tail -n1 @@ -26,10 +26,10 @@ stdenv.mkDerivation (finalAttrs: { fetchurl { url = "https://s3-us-west-2.amazonaws.com/confluent.cloud/confluent-cli/archives/${finalAttrs.version}/confluent_${finalAttrs.version}_${system}.tar.gz"; hash = selectSystem { - x86_64-linux = "sha256-MeLvEE4Qqx9OCnljEbCRMhUXksgaf2YYqFiYK9/fsAc="; - aarch64-linux = "sha256-HU1V9XKgXOZ5oaszL7A4S4uBFhqVGO4ErTkbfrSjDQU="; - x86_64-darwin = "sha256-idXIjruAzuEVTENHpnMQLTdXt0uIYQ3PWKMq3SUAPSY="; - aarch64-darwin = "sha256-t/Z+9uHZxKyrgojs8RdiRiLErooVPGYvk0tl1dxyLiA="; + x86_64-linux = "sha256-52zPTIuJOS+MMG1+pA+f0HI7VvBHLsRnSq5zWorHsiQ="; + aarch64-linux = "sha256-hdhMSZR593rcjch4EVdRshC72aTp1c3dTQBlLCDMsVg="; + x86_64-darwin = "sha256-ybzj3fv+7Wdix9ez7cARazhpkxMGi/EO8NbpneWGN4I="; + aarch64-darwin = "sha256-YOVGl47XOvvHDtm2/VzzLOeFCA6sw8BuDHQWZgzNNtE="; }; }; diff --git a/pkgs/by-name/cp/cpp-interop/package.nix b/pkgs/by-name/cp/cpp-interop/package.nix new file mode 100644 index 000000000000..1360b19794f9 --- /dev/null +++ b/pkgs/by-name/cp/cpp-interop/package.nix @@ -0,0 +1,192 @@ +{ + lib, + fetchFromGitHub, + cmake, + ninja, + python3, + llvmPackages_21, + cling, + gcc-unwrapped, + libffi, + libxml2, + ncurses, + zlib, + zstd, + + # tests + gtest, + + # Which interpreter backend to build against. CppInterOp can use either + # clang-repl (from upstream LLVM/Clang) or Cling. They are mutually exclusive. + backend ? "clang-repl", # "clang-repl" | "cling" +}: + +let + llvmPackages = llvmPackages_21; + inherit (llvmPackages) stdenv; + + useCling = backend == "cling"; + llvm = llvmPackages.llvm; + clang = llvmPackages.clang-unwrapped; + + # For the cling backend we build against the LLVM/Clang/Cling that ship inside + # `cling` itself (its LLVM 20 fork), so the ABI matches libcling. The CMake + # config packages (LLVM, Clang, Cling) all live under cling.unwrapped. + clingRoot = cling.unwrapped; + + # The Clang resource dir and standard-library include flags the JIT interpreter + # needs, since there is no system compiler to probe in the Nix sandbox. Both + # this package's own tests and xeus-cpp (via passthru) feed these to CppInterOp + # through CPPINTEROP_EXTRA_INTERPRETER_ARGS. The resource dir must match the + # Clang that CppInterOp was built against: the cling fork for the cling backend, + # upstream LLVM otherwise. -nostdinc(++) makes the search hermetic: only the + # -isystem paths below are used, never any stray host include dirs. + resourceDir = + if useCling then + "${clingRoot}/lib/clang/20" + else + "${lib.getLib clang}/lib/clang/${lib.versions.major llvm.version}"; + interpreterArgs = [ + "-nostdinc" + "-nostdinc++" + "-resource-dir" + resourceDir + "-isystem" + "${resourceDir}/include" + "-isystem" + "${gcc-unwrapped}/include/c++/${gcc-unwrapped.version}" + "-isystem" + "${gcc-unwrapped}/include/c++/${gcc-unwrapped.version}/${stdenv.hostPlatform.config}" + "-isystem" + "${lib.getDev stdenv.cc.libc}/include" + ]; +in + +assert lib.assertOneOf "backend" backend [ + "clang-repl" + "cling" +]; + +stdenv.mkDerivation (finalAttrs: { + pname = "cpp-interop-${backend}"; + version = "1.9.0"; + + src = fetchFromGitHub { + owner = "compiler-research"; + repo = "CppInterOp"; + tag = "v${finalAttrs.version}"; + hash = "sha256-am2WObER9dlNQU/VMTY2ScMe/w8c4N8m/DVyNwHiBnw="; + }; + + strictDeps = true; + __structuredAttrs = true; + + nativeBuildInputs = [ + cmake + ninja + python3 + ]; + + buildInputs = [ + libffi + libxml2 + ncurses + zlib + zstd + ] + ++ ( + if useCling then + [ clingRoot ] + else + [ + llvm + clang + ] + ); + + # Upstream's unittests/CMakeLists.txt only fetches GoogleTest over the network + # (forbidden in the sandbox) when no gtest target exists; point it at the + # nixpkgs gtest instead so the tests can build offline. + postPatch = '' + substituteInPlace unittests/CMakeLists.txt \ + --replace-fail "include(GoogleTest)" "find_package(GTest REQUIRED)" + ''; + + cmakeFlags = [ + (lib.cmakeBool "BUILD_SHARED_LIBS" true) + (lib.cmakeBool "CPPINTEROP_USE_CLING" useCling) + (lib.cmakeBool "CPPINTEROP_USE_REPL" (!useCling)) + (lib.cmakeBool "CPPINTEROP_ENABLE_TESTING" finalAttrs.finalPackage.doCheck) + ] + ++ ( + if useCling then + [ + "-DCling_DIR=${clingRoot}/lib/cmake/cling" + "-DLLVM_DIR=${clingRoot}/lib/cmake/llvm" + "-DClang_DIR=${clingRoot}/lib/cmake/clang" + ] + else + [ + "-DLLVM_DIR=${llvm.dev}/lib/cmake/llvm" + "-DClang_DIR=${clang.dev}/lib/cmake/clang" + ] + ); + + # Run the upstream GoogleTest suite. Only the clang-repl backend is exercised; + # the Cling backend skips many of these tests upstream. + doCheck = !useCling; + checkInputs = [ gtest ]; + checkPhase = '' + runHook preCheck + + export CPPINTEROP_EXTRA_INTERPRETER_ARGS="${lib.concatStringsSep " " interpreterArgs}" + # Upstream registers the tests only in the unittests subdir; its + # check-cppinterop target builds them and runs ctest from the right place. + ninja check-cppinterop + + runHook postCheck + ''; + + # Smoke test: drive the backend to JIT-compile and run a function, proving + # the installed library, headers and runtime linking all work together. + doInstallCheck = !useCling; + installCheckPhase = '' + runHook preInstallCheck + + cat > smoke.cpp <<'EOF' + #include "CppInterOp/CppInterOp.h" + #include + int main() { + Cpp::CreateInterpreter(); + if (Cpp::Declare("int square(int x) { return x * x; }") != 0) return 1; + bool hadError = false; + intptr_t result = Cpp::Evaluate("square(7)", &hadError); + if (hadError) return 2; + if (result != 49) { std::printf("expected 49, got %ld\n", (long)result); return 3; } + if (Cpp::GetNamed("square") == nullptr) return 4; + return 0; + } + EOF + + $CXX -std=c++17 smoke.cpp -I$out/include -L$out/lib -lclangCppInterOp -o smoke + LD_LIBRARY_PATH=$out/lib ./smoke + + runHook postInstallCheck + ''; + + passthru = { + inherit backend resourceDir interpreterArgs; + }; + + meta = { + description = "Clang-based C++ interoperability library (${backend} backend)"; + homepage = "https://github.com/compiler-research/CppInterOp"; + changelog = "https://github.com/compiler-research/CppInterOp/releases/tag/v${finalAttrs.version}"; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; + maintainers = with lib.maintainers; [ thomasjm ]; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/cr/cri-o-unwrapped/package.nix b/pkgs/by-name/cr/cri-o-unwrapped/package.nix index 793a620ccf05..7910c5f8c099 100644 --- a/pkgs/by-name/cr/cri-o-unwrapped/package.nix +++ b/pkgs/by-name/cr/cri-o-unwrapped/package.nix @@ -17,13 +17,13 @@ buildGoModule (finalAttrs: { pname = "cri-o"; - version = "1.36.1"; + version = "1.36.2"; src = fetchFromGitHub { owner = "cri-o"; repo = "cri-o"; tag = "v${finalAttrs.version}"; - hash = "sha256-QHI90s2LOa0Jenz+Q++nNuyOAxCx3sOcClBaTKeIUbo="; + hash = "sha256-mrR0Q23PCe2OMCgH6AgmSzE4zmZzTA6SiMD8OYiWdpE="; }; vendorHash = null; diff --git a/pkgs/by-name/cu/cubeb/package.nix b/pkgs/by-name/cu/cubeb/package.nix index 69b1b6dffe26..3daff1cf398c 100644 --- a/pkgs/by-name/cu/cubeb/package.nix +++ b/pkgs/by-name/cu/cubeb/package.nix @@ -24,13 +24,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "cubeb"; - version = "0-unstable-2026-06-15"; + version = "0-unstable-2026-07-03"; src = fetchFromGitHub { owner = "mozilla"; repo = "cubeb"; - rev = "cdb54bbf405e5d75d42d21947cc717b35b0ccbf4"; - hash = "sha256-PIzIEFTp+F5fC8aGgwjARhvlxktn60BlgGcRb56ZjIk="; + rev = "a665efba31740bd477cf2001a5cb289a63e85336"; + hash = "sha256-X3lgGFJpTHd9c7t3bP+iohHyQ18+YJFghjLnJyPk6wU="; }; outputs = [ diff --git a/pkgs/by-name/dn/dnst/package.nix b/pkgs/by-name/dn/dnst/package.nix index 1d14757abe54..ae7164e53545 100644 --- a/pkgs/by-name/dn/dnst/package.nix +++ b/pkgs/by-name/dn/dnst/package.nix @@ -10,14 +10,14 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "dnst"; - version = "0.2.0-alpha2"; + version = "0.2.0-alpha3"; __structuredAttrs = true; src = fetchFromGitHub { owner = "NLnetLabs"; repo = "dnst"; tag = "v${finalAttrs.version}"; - hash = "sha256-OpyOnBddbIdnJLchY5y2oMqK5JSXCTF8cC5KstJ7pnc="; + hash = "sha256-6Sgj2OZptG/bMsuYdGfaaY62qh4uUyxdbit6vpWWm9w="; }; nativeBuildInputs = [ @@ -27,7 +27,7 @@ rustPlatform.buildRustPackage (finalAttrs: { ]; buildInputs = [ openssl ]; - cargoHash = "sha256-y048tMh5wBjAB7I8FK3pETn0j9S/h893JZb9sbOBdbo="; + cargoHash = "sha256-8pzf4GeBJbqIZf6KAqROEAvFAqtf6XLODWhS3RVfpAQ="; postInstall = '' mkdir -p $out/libexec @@ -39,7 +39,9 @@ rustPlatform.buildRustPackage (finalAttrs: { installManPage doc/manual/build/man/*.1 ''; - passthru.updateScript = nix-update-script { }; + passthru.updateScript = nix-update-script { + extraArgs = [ "--version=unstable" ]; + }; meta = { description = "Toolset to assist DNS operators with zone and nameserver maintenance"; diff --git a/pkgs/by-name/ef/efm-langserver/package.nix b/pkgs/by-name/ef/efm-langserver/package.nix index ab3fd6b5da79..fb15cd9b59bb 100644 --- a/pkgs/by-name/ef/efm-langserver/package.nix +++ b/pkgs/by-name/ef/efm-langserver/package.nix @@ -6,13 +6,13 @@ buildGoModule (finalAttrs: { pname = "efm-langserver"; - version = "0.0.56"; + version = "0.0.57"; src = fetchFromGitHub { owner = "mattn"; repo = "efm-langserver"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-M2I5UQYCkIVfINWEVa4tOt0Dtl4sBZoHP/q0ia/Bo2Y="; + sha256 = "sha256-LWpm5DyHhrSAGxfwEAM0HABPwfsvWEHZ22U93wdldTw="; }; vendorHash = "sha256-3Rz/9p1moT3rQPY3/lka9HZ16T00+bAWCc950IBTkFE="; diff --git a/pkgs/by-name/ei/eigenwallet/package.nix b/pkgs/by-name/ei/eigenwallet/package.nix index a49e95b8b1a1..a4a1ecfc074a 100644 --- a/pkgs/by-name/ei/eigenwallet/package.nix +++ b/pkgs/by-name/ei/eigenwallet/package.nix @@ -4,6 +4,7 @@ stdenv, dpkg, autoPatchelfHook, + wrapGAppsHook3, cairo, gdk-pixbuf, webkitgtk_4_1, @@ -22,6 +23,7 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ dpkg autoPatchelfHook + wrapGAppsHook3 ]; buildInputs = [ diff --git a/pkgs/by-name/ev/everdo/package.nix b/pkgs/by-name/ev/everdo/package.nix index 3dc11174021b..b4f74e40f83b 100644 --- a/pkgs/by-name/ev/everdo/package.nix +++ b/pkgs/by-name/ev/everdo/package.nix @@ -5,11 +5,11 @@ }: let pname = "everdo"; - version = "1.9.0"; + version = "1.11.9"; src = fetchurl { url = "https://downloads.everdo.net/electron/Everdo-${version}.AppImage"; - hash = "sha256-mM2rCjK548kjNR60Mr/YxBiVk+jxuVU01B9GHfIp1Mk="; + hash = "sha256-67b0gSoVcCIfkFRUL3afgB6eYj5YEuvDTtQgTIwV9S0="; }; appimageContents = appimageTools.extractType2 { inherit pname version src; }; diff --git a/pkgs/by-name/fa/fable/package.nix b/pkgs/by-name/fa/fable/package.nix index 455440fcb633..c6aa8cef69ce 100644 --- a/pkgs/by-name/fa/fable/package.nix +++ b/pkgs/by-name/fa/fable/package.nix @@ -1,14 +1,18 @@ { buildDotnetGlobalTool, + dotnetCorePackages, lib, testers, }: buildDotnetGlobalTool (finalAttrs: { pname = "fable"; - version = "4.29.0"; + version = "5.0.0"; - nugetHash = "sha256-Eed1bb9heteWOWmv6NnXPzXbf3t218K/eHufwgtRuzI="; + nugetHash = "sha256-PSlr4cGZAm/bgAesVn7dYqamvncat8lm1/lJHvYcAwk="; + + dotnet-sdk = dotnetCorePackages.sdk_10_0; + dotnet-runtime = dotnetCorePackages.runtime_10_0; passthru.tests = testers.testVersion { package = finalAttrs.finalPackage; diff --git a/pkgs/by-name/fa/fastmail-desktop/linux.nix b/pkgs/by-name/fa/fastmail-desktop/linux.nix index 98f354809842..b973981b57f1 100644 --- a/pkgs/by-name/fa/fastmail-desktop/linux.nix +++ b/pkgs/by-name/fa/fastmail-desktop/linux.nix @@ -66,9 +66,18 @@ stdenvNoCC.mkDerivation (finalAttrs: { ''; # remove musl-libc dependencies before the autoPatchelfHook - preFixup = '' - rm -r "$out/opt/fastmail/app.asar.unpacked/node_modules/@img/"{sharp-linuxmusl-x64,sharp-libvips-linuxmusl-x64} - ''; + preFixup = + let + suffix = + { + aarch64-linux = "arm64"; + x86_64-linux = "x64"; + } + .${stdenvNoCC.targetPlatform.system}; + in + '' + rm -r "$out/opt/fastmail/app.asar.unpacked/node_modules/@img/"{sharp-linuxmusl-${suffix},sharp-libvips-linuxmusl-${suffix}} + ''; meta = meta // { mainProgram = "fastmail"; diff --git a/pkgs/by-name/fa/fastmail-desktop/package.nix b/pkgs/by-name/fa/fastmail-desktop/package.nix index ae6f88fdd833..20ad3f4fa7ae 100644 --- a/pkgs/by-name/fa/fastmail-desktop/package.nix +++ b/pkgs/by-name/fa/fastmail-desktop/package.nix @@ -26,6 +26,7 @@ callPackage (if isDarwin then ./darwin.nix else ./linux.nix) { ]; platforms = [ "aarch64-darwin" + "aarch64-linux" "x86_64-linux" ]; }; diff --git a/pkgs/by-name/fa/fastmail-desktop/sources.nix b/pkgs/by-name/fa/fastmail-desktop/sources.nix index 374f140afcaf..ed1f0b99d90a 100644 --- a/pkgs/by-name/fa/fastmail-desktop/sources.nix +++ b/pkgs/by-name/fa/fastmail-desktop/sources.nix @@ -1,19 +1,26 @@ # Generated by ./update.sh - do not update manually! -# Last updated: 2026-03-23 +# Last updated: 2026-07-02 { fetchurl, fetchzip }: { aarch64-darwin = { - version = "1.2.1"; + version = "1.3.0"; src = fetchurl { - url = "https://dl.fastmailcdn.com/desktop/production/mac/arm64/Fastmail-1.2.1-arm64-mac.zip"; - hash = "sha512-bu6IeL8X8ogD1qSlAuApWTBTCYIk5QrjWrzjOv8fel+kqYfCIcDXP1DP1FdJwULe91zoZn4M/uDX8CoOPWa0cA=="; + url = "https://dl.fastmailcdn.com/desktop/production/mac/arm64/Fastmail-1.3.0-arm64-mac.zip"; + hash = "sha512-6iRUcoI0dsW5ByaQ7dv7Oki5y0Y1wuMlQjjCpqWaThttsNJ4yYXh812RGsPjJTvcwVNMvPRbmPcbb/y//mXqRg=="; + }; + }; + aarch64-linux = { + version = "1.3.0"; + src = fetchurl { + url = "https://dl.fastmailcdn.com/desktop/production/linux/arm64/com.fastmail.Fastmail-1.3.0-arm64.AppImage"; + hash = "sha512-XJdxJVJ3xdhF04TInc3vmEtcUnzPzwujzTix+t2WbRo9qNEPqxnmN6hurGq0dZO/Dnk7jgOfAkjCpVq/kxWVRQ=="; }; }; x86_64-linux = { - version = "1.2.1"; + version = "1.3.0"; src = fetchurl { - url = "https://dl.fastmailcdn.com/desktop/production/linux/x64/com.fastmail.Fastmail-1.2.1.AppImage"; - hash = "sha512-xudOPNjOaumYxD7yZyjQnYhuiKqDO10cBwMdFJtVEOfHVia0jJMgdUTJx03otIBn9ijM3/1Qo6wsq1HF0A/zlQ=="; + url = "https://dl.fastmailcdn.com/desktop/production/linux/x64/com.fastmail.Fastmail-1.3.0.AppImage"; + hash = "sha512-KnFAmjGQGXfA83JDynSixecoqqZbnC0bYGFQVf8YfP3ITwspHNDj3TIMp2jqXKtl9j4DlH1w8eLwSbKD0En9Wg=="; }; }; } diff --git a/pkgs/by-name/fa/fastmail-desktop/update.sh b/pkgs/by-name/fa/fastmail-desktop/update.sh index c21c13c3fe7a..4c84120dfefa 100755 --- a/pkgs/by-name/fa/fastmail-desktop/update.sh +++ b/pkgs/by-name/fa/fastmail-desktop/update.sh @@ -6,15 +6,19 @@ set -euo pipefail cd "$(readlink -e "$(dirname "${BASH_SOURCE[0]}")")" x86_64_linux_info=$(curl -fsS "https://dl.fastmailcdn.com/desktop/production/linux/x64/latest-linux.yml") +aarch64_linux_info=$(curl -fsS "https://dl.fastmailcdn.com/desktop/production/linux/arm64/latest-linux-arm64.yml") aarch64_darwin_info=$(curl -fsS "https://dl.fastmailcdn.com/desktop/production/mac/arm64/latest-mac.yml") x86_64_linux_version=$(yq -r '.version' <<<"$x86_64_linux_info") +aarch64_linux_version=$(yq -r '.version' <<<"$aarch64_linux_info") aarch64_darwin_version=$(yq -r '.version' <<<"$aarch64_darwin_info") x86_64_linux_url="https://dl.fastmailcdn.com/desktop/production/linux/x64/$(yq -r '.path' <<<"$x86_64_linux_info")" +aarch64_linux_url="https://dl.fastmailcdn.com/desktop/production/linux/arm64/$(yq -r '.path' <<<"$aarch64_linux_info")" aarch64_darwin_url="https://dl.fastmailcdn.com/desktop/production/mac/arm64/$(yq -r '.path' <<<"$aarch64_darwin_info")" x86_64_linux_hash=$(nix-hash --type sha512 --to-sri "$(yq -r '.sha512' <<<"$x86_64_linux_info")") +aarch64_linux_hash=$(nix-hash --type sha512 --to-sri "$(yq -r '.sha512' <<<"$aarch64_linux_info")") aarch64_darwin_hash=$(nix-hash --type sha512 --to-sri "$(yq -r '.sha512' <<<"$aarch64_darwin_info")") cat >sources.nix <sources.nix < COMMIT ''; - hash = "sha256-dGqL6lKx67VzlfHvaCpOTpHtFao99zLIYXiORPHP5e8="; + hash = "sha256-e06fahSSeKTsWGR4o7XZFzcv2MfUCKLo6PrZg2tgIGU="; }; proxyVendor = true; - vendorHash = "sha256-X6cEAaUIHTJoNwoBlGFZUA4M8/AnRY3oTiWW7/03PXY="; + vendorHash = "sha256-BLlKOu1q73T2i+B64+sLkCYXaTlHbVJ5moEwqG2JoHo="; subPackages = [ "." ]; diff --git a/pkgs/by-name/fm/fm-tune/package.nix b/pkgs/by-name/fm/fm-tune/package.nix index 29dbe906f52c..aa7e0663dab4 100644 --- a/pkgs/by-name/fm/fm-tune/package.nix +++ b/pkgs/by-name/fm/fm-tune/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "fm-tune"; - version = "1.1"; + version = "1.2"; src = fetchFromGitHub { owner = "viraptor"; repo = "fm_tune"; rev = finalAttrs.version; - hash = "sha256-pwL2G1Ni1Ixw/N0diSoGGIoVrtmF92mWZ5i57OOvkX4="; + hash = "sha256-kjTcg8nvhPgpsopIjYsaIsEszYPh86ilkSXMMk+z3x0="; }; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/fo/forgejo-runner/package.nix b/pkgs/by-name/fo/forgejo-runner/package.nix index f794cf8ffc35..ccd14b90f46f 100644 --- a/pkgs/by-name/fo/forgejo-runner/package.nix +++ b/pkgs/by-name/fo/forgejo-runner/package.nix @@ -55,14 +55,14 @@ let in buildGoModule (finalAttrs: { pname = "forgejo-runner"; - version = "12.12.0"; + version = "12.13.0"; src = fetchFromGitea { domain = "code.forgejo.org"; owner = "forgejo"; repo = "runner"; rev = "v${finalAttrs.version}"; - hash = "sha256-6czLxFgjcrBepoFN4iYDUt8uBkhfC8qx4yqmcfQ8FAg="; + hash = "sha256-wrHZ4vgWNw0tbcNpZesU5SoV2gqle1MJcPjj6lNMwOw="; }; vendorHash = "sha256-du7fXehcxZ70Lsr5VCkz646G0Us/XwM4Sl98HXimoao="; diff --git a/pkgs/by-name/fs/fscan/package.nix b/pkgs/by-name/fs/fscan/package.nix index c8e04bbc7206..d7f229604a6f 100644 --- a/pkgs/by-name/fs/fscan/package.nix +++ b/pkgs/by-name/fs/fscan/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "fscan"; - version = "2.1.3"; + version = "2.2.0"; src = fetchFromGitHub { owner = "shadow1ng"; repo = "fscan"; tag = "v${finalAttrs.version}"; - hash = "sha256-ZfzFBOIsuwcfmmyZMPhgP9Oznec+rJs16IuIG7gwZhA="; + hash = "sha256-05z5DuW25/hVoTdUtGGuaCBPtO1QyGqgvKWSpO8DBpQ="; }; - vendorHash = "sha256-ihaGbm4iLjwvTzM278wuwom8LrmHB3WgmbfcJxtkbYc="; + vendorHash = "sha256-IlGHY0KbYsy/5Yz11XhkcS9yS8byY3vhPZiTwnJM6/Q="; subPackages = [ "." ]; diff --git a/pkgs/by-name/gf/gforth/package.nix b/pkgs/by-name/gf/gforth/package.nix index 3ba375138cea..ea64764f5698 100644 --- a/pkgs/by-name/gf/gforth/package.nix +++ b/pkgs/by-name/gf/gforth/package.nix @@ -17,13 +17,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "gforth"; - version = "0.7.9_20260610"; + version = "0.7.9_20260708"; src = fetchFromGitHub { owner = "forthy42"; repo = "gforth"; rev = finalAttrs.version; - hash = "sha256-gaP3Mmcp0NueRfqh62XlvtWuHN6fAnMTa1uSm7Bj+Rk="; + hash = "sha256-3lKd50Rlhk9OlKb5ATHH4vTWlo40h3iCz+VQfuo/6ys="; }; patches = [ ./use-nproc-instead-of-fhs.patch ]; diff --git a/pkgs/by-name/gg/ggml/package.nix b/pkgs/by-name/gg/ggml/package.nix index 5e622cb4b0fb..2e1ae161f39d 100644 --- a/pkgs/by-name/gg/ggml/package.nix +++ b/pkgs/by-name/gg/ggml/package.nix @@ -7,7 +7,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "ggml"; - version = "0.15.3"; + version = "0.16.0"; __structuredAttrs = true; strictDeps = true; @@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ggml-org"; repo = "ggml"; tag = "v${finalAttrs.version}"; - hash = "sha256-EYy8zfqNgWoT8fJ9OsetOYUNVmOB9HQbuVs/ybzUkL8="; + hash = "sha256-0DdBEsnUAEdC+qN5s310Ih+ELyXOjvwrykMFNHLkoO4="; }; # The cmake package does not handle absolute CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_INCLUDEDIR diff --git a/pkgs/by-name/go/goeland/package.nix b/pkgs/by-name/go/goeland/package.nix index 993f05f184de..8437a8412a21 100644 --- a/pkgs/by-name/go/goeland/package.nix +++ b/pkgs/by-name/go/goeland/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "goeland"; - version = "0.24.0"; + version = "0.25.0"; src = fetchFromGitHub { owner = "slurdge"; repo = "goeland"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-pUwGdL17/VS9difji4/B1QzG7l6K4igeRxISDKVToE8="; + sha256 = "sha256-5pUj7KgjvcA7xuKV7j9nLEih4ecrQjarddRVNszidfE="; }; - vendorHash = "sha256-s20LCVih71TR5IYQ26bpF+q4eonpBlGXayCzcFLlb8Y="; + vendorHash = "sha256-GOoeyh0ddtYiigavgjMNy8z6suTFtS9oswO9PAdagGE="; ldflags = [ "-s" diff --git a/pkgs/by-name/ha/harbor-cli/package.nix b/pkgs/by-name/ha/harbor-cli/package.nix index 77079d474920..24a5853a4622 100644 --- a/pkgs/by-name/ha/harbor-cli/package.nix +++ b/pkgs/by-name/ha/harbor-cli/package.nix @@ -10,13 +10,13 @@ buildGoModule (finalAttrs: { pname = "harbor-cli"; - version = "0.0.23"; + version = "0.0.24"; src = fetchFromGitHub { owner = "goharbor"; repo = "harbor-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-lh0ZMrjzCiQvpzRddms4uEKlUdxcDdHTfkYdmQ5hc9k="; + hash = "sha256-XL9w33ZPmB0imK8dudxj4zoUxDbUdpWaCu8u/1c6wG4="; }; vendorHash = "sha256-Iy+Kf0Kf1yuFk+shbomT0Z1zMvAbdWT4vLshAjlqvck="; diff --git a/pkgs/by-name/hc/hcom/package.nix b/pkgs/by-name/hc/hcom/package.nix new file mode 100644 index 000000000000..7e7d311f5a24 --- /dev/null +++ b/pkgs/by-name/hc/hcom/package.nix @@ -0,0 +1,50 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + writableTmpDirAsHomeHook, + versionCheckHook, + nix-update-script, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "hcom"; + version = "0.7.23"; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "aannoo"; + repo = "hcom"; + tag = "v${finalAttrs.version}"; + hash = "sha256-58AcL/hOi8Fl1Nq6QBOyM7Uf7ZUjBabU4PBzZWo25Vo="; + }; + + cargoHash = "sha256-cGhssU75BrNmHqxYWvqRcjNxB70rxYHXBz3hZDY+was="; + + doCheck = true; + nativeCheckInputs = [ writableTmpDirAsHomeHook ]; + + checkFlags = [ + # tries to read $PATH + "--skip=shell_env::tests::resolver_discards_stderr_without_breaking_env_resolution" + # tries to read shell pid + "--skip=shell_env::tests::timeout_kills_shell_process_group" + ]; + + # tons of unit tests use local ports + __darwinAllowLocalNetworking = true; + + doInstallCheck = true; + nativeInstallCheckInputs = [ versionCheckHook ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Let AI agents message, watch, and spawn each other across terminals"; + homepage = "https://github.com/aannoo/hcom"; + changelog = "https://github.com/aannoo/hcom/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ Br1ght0ne ]; + mainProgram = "hcom"; + }; +}) diff --git a/pkgs/by-name/in/infracost/package.nix b/pkgs/by-name/in/infracost/package.nix index 4f56c8ea08fd..ea2a068ba0c6 100644 --- a/pkgs/by-name/in/infracost/package.nix +++ b/pkgs/by-name/in/infracost/package.nix @@ -8,15 +8,15 @@ buildGoModule (finalAttrs: { pname = "infracost"; - version = "0.10.44"; + version = "0.10.45"; src = fetchFromGitHub { owner = "infracost"; rev = "v${finalAttrs.version}"; repo = "infracost"; - sha256 = "sha256-7TH7ZWANQMlhfpCP5OdiQCL6OsFP1RK5YGV8hGuouBY="; + sha256 = "sha256-ionW8XChMCQxekKqbiNc6wSu5pxdG59WX2CxlCqStXk="; }; - vendorHash = "sha256-ZG6DjYcHvEii55ayx6x168L2v04n/pAZRqqQ7DKvugA="; + vendorHash = "sha256-fwMVYzbCHENra1ySNMQnWF/JnYngO/oHgxZvMZ2+3TQ="; ldflags = [ "-s" diff --git a/pkgs/by-name/in/inxi/package.nix b/pkgs/by-name/in/inxi/package.nix index 165ef9de3787..5ac6b51c1ede 100644 --- a/pkgs/by-name/in/inxi/package.nix +++ b/pkgs/by-name/in/inxi/package.nix @@ -64,13 +64,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "inxi"; - version = "3.3.40-1"; + version = "3.3.41-1"; src = fetchFromCodeberg { owner = "smxi"; repo = "inxi"; tag = finalAttrs.version; - hash = "sha256-GpXfLLJhM4L9TB8Qw38uaCCwtCmBYg9nrVC001kDckc="; + hash = "sha256-JIBBYLpWKawmAEOVr7YoC6oBQdtlYuQcLFlt/ltswpc="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ju/just-lsp/package.nix b/pkgs/by-name/ju/just-lsp/package.nix index 54d294178e08..ec91f87c1400 100644 --- a/pkgs/by-name/ju/just-lsp/package.nix +++ b/pkgs/by-name/ju/just-lsp/package.nix @@ -8,7 +8,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "just-lsp"; - version = "0.4.7"; + version = "0.4.8"; __structuredAttrs = true; @@ -16,10 +16,10 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "terror"; repo = "just-lsp"; tag = finalAttrs.version; - hash = "sha256-Z35pRJDDUdyjz9Tw66wgBYjYicJCO87EI/J3Nux8udE="; + hash = "sha256-fSr3Nv7KsVMntGpL/uThdY4atCFqbSAS3XsNbdwoCvs="; }; - cargoHash = "sha256-qAeUk+1WmQ5TPdfJcoM+mrFVOfhhdVZnyBhxfzyh1Tc="; + cargoHash = "sha256-z0Gyh44/9nAz505k4B7sZN8BO3kyUutnfivj3QaTi3c="; nativeInstallCheckInputs = [ versionCheckHook diff --git a/pkgs/by-name/ka/karate/package.nix b/pkgs/by-name/ka/karate/package.nix index 405f869dc7c3..9fc9eaa9186d 100644 --- a/pkgs/by-name/ka/karate/package.nix +++ b/pkgs/by-name/ka/karate/package.nix @@ -8,11 +8,11 @@ stdenvNoCC.mkDerivation rec { pname = "karate"; - version = "1.5.2"; + version = "2.1.0"; src = fetchurl { url = "https://github.com/karatelabs/karate/releases/download/v${version}/karate-${version}.jar"; - sha256 = "sha256-zPR0DGShVMTCRX1vD9GajzeQLCnTKqxOIwEuCoeGFL4="; + sha256 = "sha256-ImFhqjBMYXREOZ+0j0IIARmtNQpCf71m2nUxZQusKKo="; }; dontUnpack = true; diff --git a/pkgs/by-name/ky/kyverno/package.nix b/pkgs/by-name/ky/kyverno/package.nix index 05edb054143b..2202a1305ad1 100644 --- a/pkgs/by-name/ky/kyverno/package.nix +++ b/pkgs/by-name/ky/kyverno/package.nix @@ -10,13 +10,13 @@ buildGoModule (finalAttrs: { pname = "kyverno"; - version = "1.18.1"; + version = "1.18.2"; src = fetchFromGitHub { owner = "kyverno"; repo = "kyverno"; rev = "v${finalAttrs.version}"; - hash = "sha256-zo02ABieJ+CykuqGJlnthXibgBzNGB3t3UdlKMTIkFo="; + hash = "sha256-vcZdrvtM9SnjR9MJOGZ892fXtsMDY7V/1gNqvZmB6To="; }; ldflags = [ @@ -27,7 +27,7 @@ buildGoModule (finalAttrs: { "-X github.com/kyverno/kyverno/pkg/version.BuildTime=1970-01-01_00:00:00" ]; - vendorHash = "sha256-z6kqFBWDWxJB/V+lhcCgataJCQ7NNh08yutdPDgBdkc="; + vendorHash = "sha256-xGGpK53FennS28Kw3ZEasr+sN7ZUuL98Bh4KIkr0OOs="; subPackages = [ "cmd/cli/kubectl-kyverno" ]; diff --git a/pkgs/by-name/li/libdwarf/package.nix b/pkgs/by-name/li/libdwarf/package.nix index c94bc7d2ee8a..99f998365cca 100644 --- a/pkgs/by-name/li/libdwarf/package.nix +++ b/pkgs/by-name/li/libdwarf/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "libdwarf"; - version = "2.3.1"; + version = "2.3.2"; src = fetchFromGitHub { owner = "davea42"; repo = "libdwarf-code"; tag = "v${finalAttrs.version}"; - hash = "sha256-azVCzQt9oA40YACa9PkdNt0D8vWRNHXXGoSFOYNJxgA="; + hash = "sha256-65jEnM+eJ7HnZlpEM2D67W0Xgb9B/aa4JhajowG0Z8o="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/lm/lms/package.nix b/pkgs/by-name/lm/lms/package.nix index ba4165631e52..3cdd7fc7ad21 100644 --- a/pkgs/by-name/lm/lms/package.nix +++ b/pkgs/by-name/lm/lms/package.nix @@ -17,6 +17,7 @@ openssl, xxhash, pugixml, + onnxruntime, }: stdenv.mkDerivation (finalAttrs: { @@ -50,6 +51,7 @@ stdenv.mkDerivation (finalAttrs: { openssl xxhash pugixml + onnxruntime ]; postPatch = '' @@ -59,8 +61,7 @@ stdenv.mkDerivation (finalAttrs: { postInstall = '' substituteInPlace $out/share/lms/lms.conf --replace-fail "/usr/bin/ffmpeg" "${lib.getExe ffmpeg}" substituteInPlace $out/share/lms/lms.conf --replace-fail "/usr/share/Wt/resources" "${wt}/share/Wt/resources" - substituteInPlace $out/share/lms/lms.conf --replace-fail "/usr/share/lms/docroot" "$out/share/lms/docroot" - substituteInPlace $out/share/lms/lms.conf --replace-fail "/usr/share/lms/approot" "$out/share/lms/approot" + substituteInPlace $out/share/lms/lms.conf --replace-fail "/usr/share/lms" "$out/share/lms" substituteInPlace $out/share/lms/default.service --replace-fail "/usr/bin/lms" "$out/bin/lms" install -Dm444 $out/share/lms/default.service -T $out/lib/systemd/system/lmsd.service ''; diff --git a/pkgs/by-name/lo/lockbook-desktop/package.nix b/pkgs/by-name/lo/lockbook-desktop/package.nix index 202438779974..977b507059fa 100644 --- a/pkgs/by-name/lo/lockbook-desktop/package.nix +++ b/pkgs/by-name/lo/lockbook-desktop/package.nix @@ -18,16 +18,16 @@ let in rustPlatform.buildRustPackage (finalAttrs: { pname = "lockbook-desktop"; - version = "26.6.22"; + version = "26.7.4"; src = fetchFromGitHub { owner = "lockbook"; repo = "lockbook"; tag = finalAttrs.version; - hash = "sha256-OgNscshw445uf2PtiYVlyCfx/l2BNZyZK5QwQSunCQ0="; + hash = "sha256-gwpobBTugTTTtd/mWVoyiU0E/NjWCTfMnMF0reWLKrA="; }; - cargoHash = "sha256-USdDHcWexjAllH/kOZVc4XMehESoIozkvvOw47ZeBD8="; + cargoHash = "sha256-EH3uIjz2M+Ytkx/gD0gwslUrDVPvm5+hwOGoDtAdblg="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/m1/m1n1/package.nix b/pkgs/by-name/m1/m1n1/package.nix index f33b78f9ac64..e3aade13e7a4 100644 --- a/pkgs/by-name/m1/m1n1/package.nix +++ b/pkgs/by-name/m1/m1n1/package.nix @@ -102,7 +102,7 @@ stdenv.mkDerivation (finalAttrs: { passthru = { updateScript = nix-update-script { }; - inherit rustPlatform; + inherit rustPlatform rustPackages; }; meta = { diff --git a/pkgs/by-name/me/megasync/package.nix b/pkgs/by-name/me/megasync/package.nix index d4cf351b2237..b554fefd2237 100644 --- a/pkgs/by-name/me/megasync/package.nix +++ b/pkgs/by-name/me/megasync/package.nix @@ -34,13 +34,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "megasync"; - version = "6.1.1.0"; + version = "6.4.0.2"; src = fetchFromGitHub rec { owner = "meganz"; repo = "MEGAsync"; tag = "v${finalAttrs.version}_Linux"; - hash = "sha256-lY8YfBWRYo+Q0ZvsZI2Mo0pgjD7wQvpyybPU+9bWahw="; + hash = "sha256-PgIRIr3+XRwv48EpREL56yzuqI8Ws72V4o3pTSR1ZfA="; fetchSubmodules = false; # DesignTokensImporter cannot be fetched, see #1010 in github:meganz/megasync leaveDotGit = true; postFetch = '' diff --git a/pkgs/by-name/me/meshoptimizer/package.nix b/pkgs/by-name/me/meshoptimizer/package.nix index 15f6638d90ca..7e781ffd44be 100644 --- a/pkgs/by-name/me/meshoptimizer/package.nix +++ b/pkgs/by-name/me/meshoptimizer/package.nix @@ -17,12 +17,12 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "meshoptimizer"; - version = "1.1.1"; + version = "1.2"; src = fetchFromGitHub { owner = "zeux"; repo = "meshoptimizer"; rev = "v${finalAttrs.version}"; - hash = "sha256-h5lO3HHPtGYuzAZlRwXugvCsjtSMj9j2Z7xCRHQU8xY="; + hash = "sha256-1dHT4+aOwIY3DUrj6JwcDizRPWwL/PWkEcpmA8zD/vE="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/by-name/mi/microsoft-gsl/package.nix b/pkgs/by-name/mi/microsoft-gsl/package.nix index 868a4b8e9ee7..1f6a66c8ad19 100644 --- a/pkgs/by-name/mi/microsoft-gsl/package.nix +++ b/pkgs/by-name/mi/microsoft-gsl/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "microsoft-gsl"; - version = "4.2.1"; + version = "4.2.2"; src = fetchFromGitHub { owner = "Microsoft"; repo = "GSL"; rev = "v${finalAttrs.version}"; - hash = "sha256-rfSfgyjU1U6gaWzlx2CeaCSb784L29vHDAC/PQl+s6E="; + hash = "sha256-nWPjUPDx6Wp2BkREkZV+Nr9AUeUzpKlQ5c1CPp2Ks+M="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/mi/miller/package.nix b/pkgs/by-name/mi/miller/package.nix index 08881804e38b..147d8cbca1f5 100644 --- a/pkgs/by-name/mi/miller/package.nix +++ b/pkgs/by-name/mi/miller/package.nix @@ -6,13 +6,13 @@ buildGoModule (finalAttrs: { pname = "miller"; - version = "6.19.0"; + version = "6.20.2"; src = fetchFromGitHub { owner = "johnkerl"; repo = "miller"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-kIhJ9wysaWnZNvaWaNE32FQOHFDNBtUl41d1Z45VFac="; + sha256 = "sha256-unzjbPuOmppEY56JnV+A3TZuaHMLNeZS3n7tKpudCXk="; }; outputs = [ @@ -20,7 +20,7 @@ buildGoModule (finalAttrs: { "man" ]; - vendorHash = "sha256-PzklwkT2Chs3z1UzLX9g9hpDGTHmyxfiT0igSntXPqo="; + vendorHash = "sha256-ZA9ueehDXsRI3eEE44hJziWKAAsZXkF77hBkYvX2k+U="; postInstall = '' mkdir -p $man/share/man/man1 diff --git a/pkgs/by-name/mu/musicpresence/package.nix b/pkgs/by-name/mu/musicpresence/package.nix new file mode 100644 index 000000000000..d318a9e80955 --- /dev/null +++ b/pkgs/by-name/mu/musicpresence/package.nix @@ -0,0 +1,77 @@ +{ + lib, + stdenv, + fetchurl, + autoPatchelfHook, + makeWrapper, + libGL, + libxcb, + libx11, + wayland, + fontconfig, + freetype, + libgpg-error, + e2fsprogs, + xkeyboard_config, + qt6, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "musicpresence"; + version = "2.3.6"; + + src = fetchurl { + url = "https://github.com/ungive/discord-music-presence/releases/download/v${finalAttrs.version}/musicpresence-${finalAttrs.version}-linux-x86_64.tar.gz"; + hash = "sha256-w3y1I6nnztEMaihbXIfQqB0ng6s07iA8bqC8PDq+E+I="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = [ + libGL + libxcb + libx11 + wayland + fontconfig + freetype + libgpg-error + e2fsprogs + stdenv.cc.cc.lib + ]; + + dontBuild = true; + dontConfigure = true; + + strictDeps = true; + __structuredAttrs = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp -r usr/share $out/ + + makeWrapper $out/share/musicpresence/bin/musicpresence $out/bin/musicpresence \ + --set XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb" \ + --prefix QT_PLUGIN_PATH : "${qt6.qtwayland}/${qt6.qtbase.qtPluginPrefix}" \ + --unset QT_STYLE_OVERRIDE + + runHook postInstall + ''; + + meta = { + description = "Discord music status that works with any media player"; + homepage = "https://github.com/ungive/discord-music-presence"; + license = lib.licenses.unfree; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + platforms = [ "x86_64-linux" ]; + mainProgram = "musicpresence"; + maintainers = with lib.maintainers; [ + wiyba + nonplay + ]; + }; +}) diff --git a/pkgs/by-name/na/nagios/package.nix b/pkgs/by-name/na/nagios/package.nix index f453e98744a3..2b4b5fc0f3c4 100644 --- a/pkgs/by-name/na/nagios/package.nix +++ b/pkgs/by-name/na/nagios/package.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "nagios"; - version = "4.5.11"; + version = "4.5.13"; src = fetchFromGitHub { owner = "NagiosEnterprises"; repo = "nagioscore"; tag = "nagios-${finalAttrs.version}"; - hash = "sha256-RUiEVCOqEo0+oD6GPl9U3Y4C2Fz4uOGgSaBC+WIkxjs="; + hash = "sha256-6d49LhnerArXM2tTjyEe0/PU/THqxxptaSaBCKJzkiU="; }; patches = [ ./nagios.patch ]; diff --git a/pkgs/by-name/na/nail-parquet/package.nix b/pkgs/by-name/na/nail-parquet/package.nix index c0e2a035c5e0..3cfebd7c5af6 100644 --- a/pkgs/by-name/na/nail-parquet/package.nix +++ b/pkgs/by-name/na/nail-parquet/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "nail-parquet"; - version = "1.6.5"; + version = "1.9.0"; src = fetchFromGitHub { owner = "Vitruves"; repo = "nail-parquet"; tag = "v${finalAttrs.version}"; - hash = "sha256-CPiOeaESerQj+nV0hQIGv06/MFP8s7p9olpmhnWpAAg="; + hash = "sha256-IDGVdC4jvDfFTP0N0LAi8MTGdUOCT6A7mKXIz2au6jY="; }; - cargoHash = "sha256-x4BJZcQkisw9hA/TBzSSdkxh7oUNL0OD3H/v67otYj8="; + cargoHash = "sha256-c4yuXCQAlwpDlKURwN51d3AI+m7cUNGRdgl29qgWIvA="; nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ pkg-config diff --git a/pkgs/by-name/nb/nbfc-linux/package.nix b/pkgs/by-name/nb/nbfc-linux/package.nix index eaca2a5ef4c0..171b7f779708 100644 --- a/pkgs/by-name/nb/nbfc-linux/package.nix +++ b/pkgs/by-name/nb/nbfc-linux/package.nix @@ -3,38 +3,58 @@ stdenv, fetchFromGitHub, autoreconfHook, + pkg-config, + lua5_4, curl, + libxml2, + openssl, + nix-update-script, + versionCheckHook, }: stdenv.mkDerivation (finalAttrs: { pname = "nbfc-linux"; - version = "0.3.19"; + version = "0.5.2"; src = fetchFromGitHub { owner = "nbfc-linux"; repo = "nbfc-linux"; tag = finalAttrs.version; - hash = "sha256-ARUhm1K3A0bzVRen6VO3KvomkPl1S7vx2+tmg2ZtL8s="; + hash = "sha256-468/dFRjEgyJ0AW98wKq04WKZ4sZyzswBASSF6hyjVY="; }; - nativeBuildInputs = [ autoreconfHook ]; + nativeBuildInputs = [ + autoreconfHook + pkg-config + ]; - buildInputs = [ curl ]; + buildInputs = [ + lua5_4 + curl + libxml2 + openssl + ]; configureFlags = [ - "--prefix=${placeholder "out"}" - "--sysconfdir=${placeholder "out"}/etc" "--bindir=${placeholder "out"}/bin" ]; + passthru.updateScript = nix-update-script { }; + + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; + meta = { description = "C port of Stefan Hirschmann's NoteBook FanControl"; longDescription = '' nbfc-linux provides fan control service for notebooks ''; homepage = "https://github.com/nbfc-linux/nbfc-linux"; - license = lib.licenses.gpl3; - maintainers = [ lib.maintainers.Celibistrial ]; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ + Celibistrial + bohanubis + ]; mainProgram = "nbfc"; platforms = lib.platforms.linux; }; diff --git a/pkgs/applications/audio/non/default.nix b/pkgs/by-name/no/non/package.nix similarity index 88% rename from pkgs/applications/audio/non/default.nix rename to pkgs/by-name/no/non/package.nix index 8bc2b9e633d8..aad1eee48a15 100644 --- a/pkgs/applications/audio/non/default.nix +++ b/pkgs/by-name/no/non/package.nix @@ -13,23 +13,28 @@ liblo, libsigcxx, lrdf, - wafHook, + waf, }: +let + wafHook = (waf.override { extraTools = [ "gccdeps" ]; }).hook; +in stdenv.mkDerivation { pname = "non"; version = "unstable-2021-01-28"; + src = fetchFromGitHub { owner = "linuxaudio"; repo = "non"; rev = "cdad26211b301d2fad55a26812169ab905b85bbb"; - sha256 = "sha256-iMJNMDytNXpEkUhL0RILSd25ixkm8HL/edtOZta0Pf4="; + hash = "sha256-iMJNMDytNXpEkUhL0RILSd25ixkm8HL/edtOZta0Pf4="; }; nativeBuildInputs = [ pkg-config wafHook ]; + buildInputs = [ python3 cairo diff --git a/pkgs/by-name/od/odin/package.nix b/pkgs/by-name/od/odin/package.nix index 2e4f6bdb0560..37c7e15c20ce 100644 --- a/pkgs/by-name/od/odin/package.nix +++ b/pkgs/by-name/od/odin/package.nix @@ -13,13 +13,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "odin"; - version = "dev-2026-05"; + version = "dev-2026-07"; src = fetchFromGitHub { owner = "odin-lang"; repo = "Odin"; tag = finalAttrs.version; - hash = "sha256-fgN6Lz1CnUPXrmnQr+sPEfwSF/7y0+eZBX6TKFcFA50="; + hash = "sha256-pVCZB6YOk73tBGVE1i73JJG3z9SZNakFuMp4Kepqnvc="; }; patches = [ @@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace src/build_settings.cpp \ --replace-fail "arm64-apple-macosx" "arm64-apple-darwin" - rm -r vendor/raylib/{linux,macos,macos-arm64,wasm,windows} + rm -r vendor/raylib/{linux,macos,wasm,windows} patchShebangs --build build_odin.sh ''; diff --git a/pkgs/by-name/od/odin/system-raylib.patch b/pkgs/by-name/od/odin/system-raylib.patch index 3bd5f848e384..9aa78b02b5e3 100644 --- a/pkgs/by-name/od/odin/system-raylib.patch +++ b/pkgs/by-name/od/odin/system-raylib.patch @@ -1,14 +1,11 @@ diff --git a/vendor/raylib/raygui.odin b/vendor/raylib/raygui.odin -index 559437a60..cd31fbe43 100644 +index b02fa4438..23e8704ed 100644 --- a/vendor/raylib/raygui.odin +++ b/vendor/raylib/raygui.odin -@@ -2,34 +2,7 @@ package raylib - - import "core:c" - --RAYGUI_SHARED :: #config(RAYGUI_SHARED, false) --RAYGUI_WASM_LIB :: #config(RAYGUI_WASM_LIB, "wasm/libraygui.a") -- +@@ -5,31 +5,7 @@ import "core:c" + RAYGUI_SHARED :: #config(RAYGUI_SHARED, false) + RAYGUI_WASM_LIB :: #config(RAYGUI_WASM_LIB, "wasm/libraygui.a") + -when ODIN_OS == .Windows { - foreign import lib { - "windows/rayguidll.lib" when RAYGUI_SHARED else "windows/raygui.lib", @@ -20,7 +17,7 @@ index 559437a60..cd31fbe43 100644 -} else when ODIN_OS == .Darwin { - when ODIN_ARCH == .arm64 { - foreign import lib { -- "macos-arm64/libraygui.dylib" when RAYGUI_SHARED else "macos-arm64/libraygui.a", +- "macos/libraygui-arm64.dylib" when RAYGUI_SHARED else "macos/libraygui-arm64.a", - } - } else { - foreign import lib { @@ -35,20 +32,17 @@ index 559437a60..cd31fbe43 100644 - foreign import lib "system:raygui" -} +foreign import lib "system:raygui" - + RAYGUI_VERSION :: "4.0" - + diff --git a/vendor/raylib/raylib.odin b/vendor/raylib/raylib.odin -index b051f1885..9376dcc48 100644 +index 0a30fd72b..91a2b8bac 100644 --- a/vendor/raylib/raylib.odin +++ b/vendor/raylib/raylib.odin -@@ -97,42 +97,7 @@ MAX_MATERIAL_MAPS :: #config(RAYLIB_MAX_MATERIAL_MAPS, 12) - - #assert(size_of(rune) == size_of(c.int)) - --RAYLIB_SHARED :: #config(RAYLIB_SHARED, false) --RAYLIB_WASM_LIB :: #config(RAYLIB_WASM_LIB, "wasm/libraylib.a") -- +@@ -99,53 +99,7 @@ MAX_MATERIAL_MAPS :: #config(RAYLIB_MAX_MATERIAL_MAPS, 12) + RAYLIB_SHARED :: #config(RAYLIB_SHARED, false) + RAYLIB_WASM_LIB :: #config(RAYLIB_WASM_LIB, "wasm/libraylib.web.a") + -when ODIN_OS == .Windows { - @(extra_linker_flags="/NODEFAULTLIB:" + ("msvcrt" when RAYLIB_SHARED else "libcmt")) - foreign import lib { @@ -59,18 +53,32 @@ index b051f1885..9376dcc48 100644 - "system:Shell32.lib", - } -} else when ODIN_OS == .Linux { -- foreign import lib { -- // Note(bumbread): I'm not sure why in `linux/` folder there are -- // multiple copies of raylib.so, but since these bindings are for -- // particular version of the library, I better specify it. Ideally, -- // though, it's best specified in terms of major (.so.4) -- "linux/libraylib.so.550" when RAYLIB_SHARED else "linux/libraylib.a", -- "system:dl", -- "system:pthread", +- when ODIN_ARCH == .arm64 { +- foreign import lib { +- // Note(bumbread): I'm not sure why in `linux/` folder there are +- // multiple copies of raylib.so, but since these bindings are for +- // particular version of the library, I better specify it. Ideally, +- // though, it's best specified in terms of major (.so.4) +- "linux-arm64/libraylib.so.600" when RAYLIB_SHARED else "linux-arm/libraylib.a", +- "system:dl", +- "system:pthread", +- "system:X11", +- } +- } else { +- foreign import lib { +- // Note(bumbread): I'm not sure why in `linux/` folder there are +- // multiple copies of raylib.so, but since these bindings are for +- // particular version of the library, I better specify it. Ideally, +- // though, it's best specified in terms of major (.so.4) +- "linux/libraylib.so.600" when RAYLIB_SHARED else "linux/libraylib.a", +- "system:dl", +- "system:pthread", +- "system:X11", +- } - } -} else when ODIN_OS == .Darwin { - foreign import lib { -- "macos/libraylib.550.dylib" when RAYLIB_SHARED else "macos/libraylib.a", +- "macos/libraylib.600.dylib" when RAYLIB_SHARED else "macos/libraylib.a", - "system:Cocoa.framework", - "system:OpenGL.framework", - "system:IOKit.framework", @@ -83,60 +91,6 @@ index b051f1885..9376dcc48 100644 - foreign import lib "system:raylib" -} +foreign import lib "system:raylib" - - VERSION_MAJOR :: 5 - VERSION_MINOR :: 5 -diff --git a/vendor/raylib/rlgl/rlgl.odin b/vendor/raylib/rlgl/rlgl.odin -index 14a7cf5b0..a8e641220 100644 ---- a/vendor/raylib/rlgl/rlgl.odin -+++ b/vendor/raylib/rlgl/rlgl.odin -@@ -112,47 +112,7 @@ import rl "../." - - VERSION :: "5.0" - --RAYLIB_SHARED :: #config(RAYLIB_SHARED, false) --RAYLIB_WASM_LIB :: #config(RAYLIB_WASM_LIB, "../wasm/libraylib.a") -- --// Note: We pull in the full raylib library. If you want a truly stand-alone rlgl, then: --// - Compile a separate rlgl library and use that in the foreign import blocks below. --// - Remove the `import rl "../."` line --// - Copy the code from raylib.odin for any types we alias from that package (see PixelFormat etc) -- --when ODIN_OS == .Windows { -- @(extra_linker_flags="/NODEFAULTLIB:" + ("msvcrt" when RAYLIB_SHARED else "libcmt")) -- foreign import lib { -- "../windows/raylibdll.lib" when RAYLIB_SHARED else "../windows/raylib.lib" , -- "system:Winmm.lib", -- "system:Gdi32.lib", -- "system:User32.lib", -- "system:Shell32.lib", -- } --} else when ODIN_OS == .Linux { -- foreign import lib { -- // Note(bumbread): I'm not sure why in `linux/` folder there are -- // multiple copies of raylib.so, but since these bindings are for -- // particular version of the library, I better specify it. Ideally, -- // though, it's best specified in terms of major (.so.4) -- "../linux/libraylib.so.550" when RAYLIB_SHARED else "../linux/libraylib.a", -- "system:dl", -- "system:pthread", -- } --} else when ODIN_OS == .Darwin { -- foreign import lib { -- "../macos/libraylib.550.dylib" when RAYLIB_SHARED else "../macos/libraylib.a", -- "system:Cocoa.framework", -- "system:OpenGL.framework", -- "system:IOKit.framework", -- } --} else when ODIN_ARCH == .wasm32 || ODIN_ARCH == .wasm64p32 { -- foreign import lib { -- RAYLIB_WASM_LIB, -- } --} else { -- foreign import lib "system:raylib" --} -+foreign import lib "system:raylib" - - GRAPHICS_API_OPENGL_11 :: false - GRAPHICS_API_OPENGL_21 :: true + VERSION_MAJOR :: 6 + VERSION_MINOR :: 0 diff --git a/pkgs/by-name/oe/oelint-adv/package.nix b/pkgs/by-name/oe/oelint-adv/package.nix index 21a043873d5c..2dfa923fe844 100644 --- a/pkgs/by-name/oe/oelint-adv/package.nix +++ b/pkgs/by-name/oe/oelint-adv/package.nix @@ -7,14 +7,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "oelint-adv"; - version = "9.9.1"; + version = "9.9.2"; pyproject = true; src = fetchFromGitHub { owner = "priv-kweihmann"; repo = "oelint-adv"; tag = finalAttrs.version; - hash = "sha256-656OiHkRVP2M9/gR8faR2mEw9EzjHy92JRk82bD+I4k="; + hash = "sha256-RHW5GfTtwF7vEvnxTU+OyEMgMm0q3w+IjH0u6A3xQh0="; }; postPatch = '' diff --git a/pkgs/by-name/ol/ols/package.nix b/pkgs/by-name/ol/ols/package.nix index 8923a725df90..5d49f8d82cc3 100644 --- a/pkgs/by-name/ol/ols/package.nix +++ b/pkgs/by-name/ol/ols/package.nix @@ -17,6 +17,12 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-9tQVyauvXGTkKnQUSYKAhjL5ZZbhglqdcxdcs27P2k4="; }; + patches = [ + # Since Odin removed Haiku support in dev-2026-06 and there is still no update + # for ols we're removing the haiku parts so that this builds again + ./remove-haiku.patch + ]; + postPatch = '' substituteInPlace build.sh \ --replace-fail "-microarch:native" "" diff --git a/pkgs/by-name/ol/ols/remove-haiku.patch b/pkgs/by-name/ol/ols/remove-haiku.patch new file mode 100644 index 000000000000..96fa461e90de --- /dev/null +++ b/pkgs/by-name/ol/ols/remove-haiku.patch @@ -0,0 +1,43 @@ +diff --git a/src/server/build.odin b/src/server/build.odin +index 1c1f2290..aaf6d2a4 100644 +--- a/src/server/build.odin ++++ b/src/server/build.odin +@@ -28,7 +28,6 @@ platform_os: map[string]struct{} = { + "openbsd" = {}, + "wasi" = {}, + "wasm" = {}, +- "haiku" = {}, + "netbsd" = {}, + "freebsd" = {}, + } +@@ -42,7 +41,6 @@ os_enum_to_string: [runtime.Odin_OS_Type]string = { + .WASI = "wasi", + .JS = "js", + .Freestanding = "freestanding", +- .Haiku = "haiku", + .OpenBSD = "openbsd", + .NetBSD = "netbsd", + .Orca = "orca", +@@ -69,8 +67,6 @@ os_string_to_enum: map[string]runtime.Odin_OS_Type = { + "freestanding" = .Freestanding, + "Wasm" = .JS, + "wasm" = .JS, +- "Haiku" = .Haiku, +- "haiku" = .Haiku, + "Openbsd" = .OpenBSD, + "openbsd" = .OpenBSD, + "OpenBSD" = .OpenBSD, +@@ -125,7 +121,12 @@ skip_file :: proc(filename: string) -> bool { + + // Finds all packages under the provided path by walking the file system + // and appends them to the provided dynamic array +-append_packages :: proc(path: string, pkgs: ^[dynamic]string, skip: map[string]struct{}, allocator := context.temp_allocator) { ++append_packages :: proc( ++ path: string, ++ pkgs: ^[dynamic]string, ++ skip: map[string]struct{}, ++ allocator := context.temp_allocator, ++) { + w := os.walker_create(path) + defer os.walker_destroy(&w) + for info in os.walker_walk(&w) { diff --git a/pkgs/by-name/op/openvino/package.nix b/pkgs/by-name/op/openvino/package.nix index 5c33a7b8c7dc..73557961b21b 100644 --- a/pkgs/by-name/op/openvino/package.nix +++ b/pkgs/by-name/op/openvino/package.nix @@ -14,7 +14,6 @@ patchelf, pkg-config, python3Packages, - shellcheck, # runtime flatbuffers, @@ -85,7 +84,6 @@ stdenv.mkDerivation (finalAttrs: { pkg-config python scons' - shellcheck ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc diff --git a/pkgs/by-name/or/orca-slicer/package.nix b/pkgs/by-name/or/orca-slicer/package.nix index d791e5de6b14..50cbdeffc260 100644 --- a/pkgs/by-name/or/orca-slicer/package.nix +++ b/pkgs/by-name/or/orca-slicer/package.nix @@ -63,13 +63,13 @@ in # with --cores 32 on clang). clangStdenv.mkDerivation (finalAttrs: { pname = "orca-slicer"; - version = "2.4.1"; + version = "2.4.2"; src = fetchFromGitHub { owner = "OrcaSlicer"; repo = "OrcaSlicer"; tag = "v${finalAttrs.version}"; - hash = "sha256-NJvJAQfkacMjMIirAoOND/G1GaXeMcNleiGQKoe+654="; + hash = "sha256-gUwLC0XkeohEdL0EScdOrA8MWXGuR8kUfezoQsk9i/A="; }; __structuredAttrs = true; @@ -111,7 +111,7 @@ clangStdenv.mkDerivation (finalAttrs: { gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-bad - gst_all_1.gst-plugins-good + (gst_all_1.gst-plugins-good.override { gtkSupport = true; }) gtk3 hicolor-icon-theme libsecret @@ -137,11 +137,11 @@ clangStdenv.mkDerivation (finalAttrs: { ./patches/dont-link-opencv-world-orca.patch # The changeset from https://github.com/OrcaSlicer/OrcaSlicer/pull/7650, can be removed when that PR gets merged # Allows disabling the update nag screen - #(fetchpatch { - # name = "pr-7650-configurable-update-check.patch"; - # url = "https://github.com/OrcaSlicer/OrcaSlicer/commit/d10a06ae11089cd1f63705e87f558e9392f7a167.patch"; - # hash = "sha256-t4own5AwPsLYBsGA15id5IH1ngM0NSuWdFsrxMRXmTk="; - #}) + (fetchpatch { + name = "pr-7650-configurable-update-check.patch"; + url = "https://github.com/OrcaSlicer/OrcaSlicer/commit/300df7c99b0a2173f645c8bf40e8758eb5f2c486.patch"; + hash = "sha256-hgQeagPhS3aNQoFSq0S+Ch60ygm81uHMIvGopw/AZT8="; + }) # Pick https://github.com/prusa3d/PrusaSlicer/pull/14207 to remove unused and insecure ilmbase dependency ./patches/no-ilmbase.patch @@ -238,6 +238,7 @@ clangStdenv.mkDerivation (finalAttrs: { ovlach pinpox liberodark + zraexy ]; mainProgram = "orca-slicer"; platforms = lib.platforms.linux; diff --git a/pkgs/by-name/ou/oui/package.nix b/pkgs/by-name/ou/oui/package.nix index 1c247adbe871..3856b9158101 100644 --- a/pkgs/by-name/ou/oui/package.nix +++ b/pkgs/by-name/ou/oui/package.nix @@ -7,13 +7,13 @@ buildGoModule (finalAttrs: { pname = "oui"; - version = "2.0.7"; + version = "2.1.0"; src = fetchFromGitHub { owner = "thatmattlove"; repo = "oui"; rev = "v${finalAttrs.version}"; - hash = "sha256-lwjDFd2rxMh7kHOuwgIeA2/gnzHoNkGKTQGd/xqshZY="; + hash = "sha256-8hzemGUeUU1QmXJogkr4LLpSgwt1BMqTNTft8PxwmDQ="; }; vendorHash = "sha256-EOu9imj0YwYhHX7ZzE9BzhkoDitC5AHjlwoWmQs0Rj4="; diff --git a/pkgs/by-name/pa/paretosecurity/package.nix b/pkgs/by-name/pa/paretosecurity/package.nix index ef61f27c426e..f788298a777f 100644 --- a/pkgs/by-name/pa/paretosecurity/package.nix +++ b/pkgs/by-name/pa/paretosecurity/package.nix @@ -17,13 +17,13 @@ buildGoModule (finalAttrs: { webkitgtk_4_1 ]; pname = "paretosecurity"; - version = "0.3.20"; + version = "0.3.21"; src = fetchFromGitHub { owner = "ParetoSecurity"; repo = "agent"; rev = finalAttrs.version; - hash = "sha256-7AEWa2D4cTtDRETNo+GQH1VP1Me5jySx9MPCsHf81CY="; + hash = "sha256-pQ5p52Tf8MtCasTC4ZyDN3EaJfncCCADmK03+mdOQ2s="; }; vendorHash = "sha256-tQkiAVrV1Tjv1VlBJWtfP9vBiiK845EBqM7QvJVsVB8="; diff --git a/pkgs/by-name/pd/pdfding/frontend.nix b/pkgs/by-name/pd/pdfding/frontend.nix index 2f561bf59dd6..5a1c5566b523 100644 --- a/pkgs/by-name/pd/pdfding/frontend.nix +++ b/pkgs/by-name/pd/pdfding/frontend.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: { npmDeps = fetchNpmDeps { inherit (finalAttrs) src; name = "pdfding-${finalAttrs.version}-npm-deps"; - hash = "sha256-fxhDP/kyDfL1uiZCUNr2Cd6vDnyb9V+gTSNPyjSIm18="; + hash = "sha256-TDX2xoHj07aUeuLPt/TlgkdRdTiv3fNbriChzEB4EXk="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/pd/pdfding/package.nix b/pkgs/by-name/pd/pdfding/package.nix index 76dbeefde5a5..c5657c801ce9 100644 --- a/pkgs/by-name/pd/pdfding/package.nix +++ b/pkgs/by-name/pd/pdfding/package.nix @@ -12,12 +12,12 @@ let in python.pkgs.buildPythonPackage (finalAttrs: { pname = "pdfding"; - version = "1.9.0"; + version = "1.10.0"; src = fetchFromGitHub { owner = "mrmn2"; repo = "PdfDing"; tag = "v${finalAttrs.version}"; - hash = "sha256-r3hO92iriQ/0KDl+D/0j5RoneTTCDmt8m4e7ugzyOPs="; + hash = "sha256-C1osj8V9+z3ahl4+zUtyI22GMtSgNLzfdGttL7gPDvY="; }; pyproject = true; @@ -132,11 +132,11 @@ python.pkgs.buildPythonPackage (finalAttrs: { ''; pythonRelaxDeps = [ + "django" "gunicorn" "huey" "nh3" "psycopg2-binary" - "pypdf" "pypdfium2" ]; diff --git a/pkgs/by-name/pd/pdk-ciel/package.nix b/pkgs/by-name/pd/pdk-ciel/package.nix index 3eb3f69a63ae..6e56cc694b29 100644 --- a/pkgs/by-name/pd/pdk-ciel/package.nix +++ b/pkgs/by-name/pd/pdk-ciel/package.nix @@ -6,14 +6,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "ciel"; - version = "2.6.0"; + version = "2.6.1"; pyproject = true; src = fetchFromGitHub { owner = "fossi-foundation"; repo = "ciel"; tag = finalAttrs.version; - hash = "sha256-koN65VQLGXvVmVd8hNJvbDn7R/4EHg/sNaHvWDWW4DM="; + hash = "sha256-rPsbit/VQ/bTAuRnuaTKQInztJHFhTBofqnrUzYyDKs="; }; build-system = [ python3Packages.poetry-core ]; diff --git a/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix b/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix index b1c6e194d927..ded8fff6818d 100644 --- a/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix +++ b/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix @@ -42,6 +42,12 @@ stdenv.mkDerivation (finalAttrs: { ln -s ${libnbtplusplus} source/libraries/libnbtplusplus ''; + # Ensure that instance shortucts point to our final wrapper, rather than this unwrapped version + postPatch = '' + substituteInPlace launcher/minecraft/ShortcutUtils.cpp \ + --replace-fail 'QApplication::applicationFilePath()' 'QProcessEnvironment::systemEnvironment().value("NIX_LAUNCHER_WRAPPER", "${placeholder "out"}/bin/prismlauncher")' + ''; + nativeBuildInputs = [ cmake pkg-config diff --git a/pkgs/by-name/pr/prismlauncher/package.nix b/pkgs/by-name/pr/prismlauncher/package.nix index 751a34c520e5..ec5a189be201 100644 --- a/pkgs/by-name/pr/prismlauncher/package.nix +++ b/pkgs/by-name/pr/prismlauncher/package.nix @@ -122,7 +122,10 @@ symlinkJoin { ++ additionalPrograms; in - [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] + [ + "--set NIX_LAUNCHER_WRAPPER ${placeholder "out"}/bin/prismlauncher" + "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" + ] ++ lib.optionals stdenv.hostPlatform.isLinux [ "--set LD_LIBRARY_PATH ${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" "--prefix PATH : ${lib.makeBinPath runtimePrograms}" diff --git a/pkgs/by-name/pr/proton-pass-cli/package.nix b/pkgs/by-name/pr/proton-pass-cli/package.nix index c0282fa63e9f..857d02899a24 100644 --- a/pkgs/by-name/pr/proton-pass-cli/package.nix +++ b/pkgs/by-name/pr/proton-pass-cli/package.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "proton-pass-cli"; - version = "2.2.2"; + version = "2.2.3"; __structuredAttrs = true; strictDeps = true; @@ -57,19 +57,19 @@ stdenv.mkDerivation (finalAttrs: { sources = { "aarch64-darwin" = fetchurl { url = "https://proton.me/download/pass-cli/${finalAttrs.version}/pass-cli-macos-aarch64"; - hash = "sha256-CdY2oYT7jck81ldf6RNFHsRlOcdFukjVM/2fq0THQPM="; + hash = "sha256-gxjlrznYmXgCFOxixtHCz9x2KLsgNtuo9yr3TJpjxzI="; }; "aarch64-linux" = fetchurl { url = "https://proton.me/download/pass-cli/${finalAttrs.version}/pass-cli-linux-aarch64"; - hash = "sha256-oVjbGFgF3wMPJZYfiUfZkRCLzW+QGv44krj/HUACGWE="; + hash = "sha256-NdBabzetuIJEbu81Rfg3hUVEw8BJ2A3Who/i08/qwMs="; }; "x86_64-darwin" = fetchurl { url = "https://proton.me/download/pass-cli/${finalAttrs.version}/pass-cli-macos-x86_64"; - hash = "sha256-Gvek5eqz1Sah5Hw4klxiQSQSAW3LOuEPvFUQUmXlwVM="; + hash = "sha256-K6vfr0ut8cQo1mrNeEN35akxLIo1sftt6hnn6wUa6Dk="; }; "x86_64-linux" = fetchurl { url = "https://proton.me/download/pass-cli/${finalAttrs.version}/pass-cli-linux-x86_64"; - hash = "sha256-Zb91GVv9D+jZZgFEyDdGa37pGV045W41V9XuZDnF91E="; + hash = "sha256-cYjwKnweeahg9xZq0sNPei5slhJltwZ34nBPIW3Rdtk="; }; }; updateScript = writeShellScript "update-proton-pass-cli" '' diff --git a/pkgs/by-name/pr/proxytunnel/package.nix b/pkgs/by-name/pr/proxytunnel/package.nix index 61e5b5864481..6a556f1ed14e 100644 --- a/pkgs/by-name/pr/proxytunnel/package.nix +++ b/pkgs/by-name/pr/proxytunnel/package.nix @@ -12,13 +12,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "proxytunnel"; - version = "1.12.3"; + version = "1.13.0"; src = fetchFromGitHub { owner = "proxytunnel"; repo = "proxytunnel"; tag = "v${finalAttrs.version}"; - hash = "sha256-+IRbL3VcnW+uYLIkwvaFJ8zBYbQAkqmzVluDsCrdURk="; + hash = "sha256-4+EGVtohM0vL/fXHCXohwWqIBTiIUGbt6AZ7JKpRCT8="; }; makeFlags = [ "prefix=${placeholder "out"}" ]; diff --git a/pkgs/by-name/qm/qmplay2/package.nix b/pkgs/by-name/qm/qmplay2/package.nix index 46774f4b6203..f61570428ace 100644 --- a/pkgs/by-name/qm/qmplay2/package.nix +++ b/pkgs/by-name/qm/qmplay2/package.nix @@ -18,13 +18,21 @@ libxcb, ninja, pkg-config, + shaderc, qt5, qt6, taglib, vulkan-headers, vulkan-tools, - rubberband, deno, + expat, + libmpg123, + libogg, + libopenmpt, + libsysprof-capture, + libvorbis, + pipewire, + rubberband, # Configurable options qtVersion ? "6", # Can be 5 or 6 }: @@ -54,6 +62,7 @@ stdenv.mkDerivation (finalAttrs: { cmake ninja pkg-config + shaderc ] ++ lib.optionals (qtVersion == "6") [ qt6.wrapQtAppsHook ] ++ lib.optionals (qtVersion == "5") [ qt5.wrapQtAppsHook ]; @@ -76,6 +85,13 @@ stdenv.mkDerivation (finalAttrs: { vulkan-headers-qmplay2 vulkan-tools deno + expat + libmpg123 + libogg + libopenmpt + libsysprof-capture + libvorbis + pipewire ] ++ lib.optionals (qtVersion == "6") [ rubberband @@ -89,6 +105,10 @@ stdenv.mkDerivation (finalAttrs: { qt5.qttools ]; + cmakeFlags = lib.optionals (qtVersion == "5") [ + (lib.cmakeBool "BUILD_WITH_QT6" false) + ]; + strictDeps = true; # Because we think it is better to use only lowercase letters! diff --git a/pkgs/by-name/qm/qmplay2/sources.nix b/pkgs/by-name/qm/qmplay2/sources.nix index e1b3dbbbd857..a1a2ab5fdd01 100644 --- a/pkgs/by-name/qm/qmplay2/sources.nix +++ b/pkgs/by-name/qm/qmplay2/sources.nix @@ -5,13 +5,13 @@ let self = { pname = "qmplay2"; - version = "25.09.11"; + version = "26.06.27"; src = fetchFromGitHub { owner = "zaps166"; repo = "QMPlay2"; tag = self.version; - hash = "sha256-1F6VOTMJZ64PlIVSWoYzNz4LVmn5pEcUq+IfstYDwYo="; + hash = "sha256-8PY6s74unLgwDFlyiHHCWrsatdI05obbREOICZoI+lU="; }; }; in @@ -21,13 +21,13 @@ let self = { pname = "vulkan-headers"; - version = "1.4.317"; + version = "1.4.350"; src = fetchFromGitHub { owner = "KhronosGroup"; repo = "Vulkan-Headers"; tag = "v${self.version}"; - hash = "sha256-ezNthwKsnXehQfrQh0zTk6Zrz3JgdqjYu68abYUWIik="; + hash = "sha256-RcUVurC+Rc0MyWpQLaLVmdn7FZO1GWWzTZZAOwvKwb4="; }; }; in @@ -35,13 +35,13 @@ qmvk = { pname = "qmvk"; - version = "0-unstable-2025-09-02"; + version = "0-unstable-2026-06-21"; src = fetchFromGitHub { owner = "zaps166"; repo = "QmVk"; - rev = "0225dc851afaf39be2b92f91d4316e866f4b6133"; - hash = "sha256-W2102+X+gE/9ghdAwWBeWYmSkSdp6lLPx4IKaQpLANI="; + rev = "26ef419a3b91bc11856c714b3b932c62db098bf9"; + hash = "sha256-EaOGXYjon1brDQx+l7C2jvUkYgkW+D1qP52JPiMr3H0="; }; }; } diff --git a/pkgs/by-name/ra/raycast-beta/package.nix b/pkgs/by-name/ra/raycast-beta/package.nix index fa0cbb06b2e8..9a41db61d4a5 100644 --- a/pkgs/by-name/ra/raycast-beta/package.nix +++ b/pkgs/by-name/ra/raycast-beta/package.nix @@ -11,7 +11,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "raycast-beta"; - version = "0.65.1.0"; + version = "0.68.0.0"; __structuredAttrs = true; strictDeps = true; @@ -20,8 +20,8 @@ stdenvNoCC.mkDerivation (finalAttrs: { { aarch64-darwin = fetchurl { name = "Raycast_Beta.dmg"; - url = "https://x-r2.raycast-releases.com/Raycast_Beta_0.65.1.0_66eacbc22e_arm64.dmg"; - hash = "sha256-K9OuqlUR0E3hIVonSuBYAWFAvQCZQG35fsv5OWO8gKM="; + url = "https://x-r2.raycast-releases.com/Raycast_Beta_0.68.0.0_c991260b0f_arm64.dmg"; + hash = "sha256-GD2iZeBBUhRbkbLaAw1EJtlOlBFqeMHUDdzNUk1DxO0="; }; } .${stdenvNoCC.system} or (throw "raycast-beta: ${stdenvNoCC.system} is unsupported."); diff --git a/pkgs/by-name/re/renode-dts2repl/package.nix b/pkgs/by-name/re/renode-dts2repl/package.nix index 8fa74c3e2fd6..9000e3a3d315 100644 --- a/pkgs/by-name/re/renode-dts2repl/package.nix +++ b/pkgs/by-name/re/renode-dts2repl/package.nix @@ -7,14 +7,14 @@ python3.pkgs.buildPythonApplication { pname = "renode-dts2repl"; - version = "0-unstable-2026-06-23"; + version = "0-unstable-2026-06-29"; pyproject = true; src = fetchFromGitHub { owner = "antmicro"; repo = "dts2repl"; - rev = "ac3c1b8b0c030adadfcb266af39d7dc7379ceaf9"; - hash = "sha256-9Xxb2/B6ctm3HQpDGmAbL+v+n5EjcWWe46KCSMlvujs="; + rev = "c2aae3dd278f318900ba4af8cab7ad338b50e0df"; + hash = "sha256-lTXLCHggpot9yLfHWbQaxWb+wkeS1i7eyt/NbstOxj4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/sa/sail/package.nix b/pkgs/by-name/sa/sail/package.nix index ceca9973d555..d58b53ff5087 100644 --- a/pkgs/by-name/sa/sail/package.nix +++ b/pkgs/by-name/sa/sail/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "sail"; - version = "0.6.5"; + version = "0.6.6"; src = fetchFromGitHub { owner = "lakehq"; repo = "sail"; tag = "v${finalAttrs.version}"; - hash = "sha256-pCxlGCOLxupgxCtRfUSLbA88dFIWvO16fgibLmydNBQ="; + hash = "sha256-DpkoC7uShuReOBN5tjvcCSH1LH/e+fj3gp47idsEGEg="; }; - cargoHash = "sha256-V3FS28H+lGORTFYWaMNeLdz0s+Bv4bo3By5VlIOWiOc="; + cargoHash = "sha256-byjxrJN+Q+Rn3pq/FWXxzheZyUs+aoTvfileahqinuA="; cargoBuildFlags = [ "-p" diff --git a/pkgs/by-name/sd/SDL_image/package.nix b/pkgs/by-name/sd/SDL_image/package.nix index f85e5ff2763e..e9e12d6f326e 100644 --- a/pkgs/by-name/sd/SDL_image/package.nix +++ b/pkgs/by-name/sd/SDL_image/package.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "SDL_image"; - version = "1.2.12-unstable-2026-05-13"; + version = "1.2.12-unstable-2026-07-05"; src = fetchFromGitHub { owner = "libsdl-org"; repo = "SDL_image"; - rev = "822207ee09095b8f0a936f6f2d62e020f92a4c24"; - hash = "sha256-a4WmLjsVC409UTbTVtMmRXaYuNN3fVwzz8F4XMV/cNI="; + rev = "2ffb2e3e1eba037897164e3ac6c67570d8bccd79"; + hash = "sha256-fGwSb3GYfzcrWn7F70xhNxBXygYdD2uuzFQudS1lCqU="; }; configureFlags = [ diff --git a/pkgs/by-name/sh/shelfmark/package.nix b/pkgs/by-name/sh/shelfmark/package.nix index 1a6f3af13afa..af184dbe5260 100644 --- a/pkgs/by-name/sh/shelfmark/package.nix +++ b/pkgs/by-name/sh/shelfmark/package.nix @@ -37,13 +37,13 @@ let apprise ]; - version = "1.3.2"; + version = "1.3.3"; src = fetchFromGitHub { owner = "calibrain"; repo = "shelfmark"; tag = "v${version}"; - hash = "sha256-3Z+e7d8kSckbIfobm8peOlg19IkW7AidJ3wOjz4dEOc="; + hash = "sha256-uRuSFWjEnJp3cMx4IeM9akpj+l/36/jgIRavoan9iAU="; }; frontend = buildNpmPackage (finalAttrs: { @@ -52,7 +52,7 @@ let sourceRoot = "${finalAttrs.src.name}/src/frontend"; - npmDepsHash = "sha256-fdocgRnduehA3LKHrVrxGmLEYgZDRTo20HSCh80RJIg="; + npmDepsHash = "sha256-oqEUiHOHx78+plHUnsOtdv0S3ZhaHr0CAb7kA0VbG/k="; installPhase = '' runHook preInstall diff --git a/pkgs/by-name/sm/smartgit/package.nix b/pkgs/by-name/sm/smartgit/package.nix index b3195420c298..31b2e7a59f43 100644 --- a/pkgs/by-name/sm/smartgit/package.nix +++ b/pkgs/by-name/sm/smartgit/package.nix @@ -17,13 +17,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "smartgit"; - version = "26.1.038"; + version = "26.1.045"; src = fetchurl { url = "https://download.smartgit.dev/smartgit/smartgit-${ builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version }-no-git-linux-amd64.tar.gz"; - hash = "sha256-XyMdojfyaTS3S3felGRvOOazx1mym/wE3j4GyCU9crc="; + hash = "sha256-eROBWhH/VLGBEakAKukyGSyHJ9tyPXPQaZTb/3UIa6U="; }; nativeBuildInputs = [ wrapGAppsHook3 ]; diff --git a/pkgs/by-name/sp/spotify-player/package.nix b/pkgs/by-name/sp/spotify-player/package.nix index c1497f3bcee9..94c7f440b17e 100644 --- a/pkgs/by-name/sp/spotify-player/package.nix +++ b/pkgs/by-name/sp/spotify-player/package.nix @@ -49,16 +49,16 @@ assert lib.assertOneOf "withAudioBackend" withAudioBackend [ rustPlatform.buildRustPackage (finalAttrs: { pname = "spotify-player"; - version = "0.23.0"; + version = "0.24.0"; src = fetchFromGitHub { owner = "aome510"; repo = "spotify-player"; tag = "v${finalAttrs.version}"; - hash = "sha256-LjQGCE4xbD3+k78827u346/qhC6D8vrhyUq6c+8eWSw="; + hash = "sha256-SxzQdQOg+KS6jXJNifVkehR91g6gTHBYgyxfXx9WWI8="; }; - cargoHash = "sha256-mD1UJn3LjX88Ht6QUpPO9lu9WiCec5+qUphtLoCjiXg="; + cargoHash = "sha256-TmGdJXKOsTL9HVyEEe3PtiLMSDJV/TRokRBVAUdHL7I="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ta/ta-lib/package.nix b/pkgs/by-name/ta/ta-lib/package.nix index c689c554288b..0a03243552c0 100644 --- a/pkgs/by-name/ta/ta-lib/package.nix +++ b/pkgs/by-name/ta/ta-lib/package.nix @@ -7,12 +7,12 @@ stdenv.mkDerivation (finalAttrs: { pname = "ta-lib"; - version = "0.6.4"; + version = "0.7.1"; src = fetchFromGitHub { owner = "TA-Lib"; repo = "ta-lib"; tag = "v${finalAttrs.version}"; - hash = "sha256-aTRiScPNWsGDwJvumZXlMilvSDYZVDWgpeZ2F/S5WgQ="; + hash = "sha256-tme5YuTWdf4lCsWXF97kSeka7Vmqte0vTjwtaUNN+kA="; }; nativeBuildInputs = [ autoreconfHook ]; meta = { diff --git a/pkgs/tools/typesetting/tex/tetex/clang.patch b/pkgs/by-name/te/tetex/clang.patch similarity index 100% rename from pkgs/tools/typesetting/tex/tetex/clang.patch rename to pkgs/by-name/te/tetex/clang.patch diff --git a/pkgs/tools/typesetting/tex/tetex/environment.patch b/pkgs/by-name/te/tetex/environment.patch similarity index 100% rename from pkgs/tools/typesetting/tex/tetex/environment.patch rename to pkgs/by-name/te/tetex/environment.patch diff --git a/pkgs/tools/typesetting/tex/tetex/extramembot.patch b/pkgs/by-name/te/tetex/extramembot.patch similarity index 100% rename from pkgs/tools/typesetting/tex/tetex/extramembot.patch rename to pkgs/by-name/te/tetex/extramembot.patch diff --git a/pkgs/tools/typesetting/tex/tetex/getline.patch b/pkgs/by-name/te/tetex/getline.patch similarity index 100% rename from pkgs/tools/typesetting/tex/tetex/getline.patch rename to pkgs/by-name/te/tetex/getline.patch diff --git a/pkgs/tools/typesetting/tex/tetex/default.nix b/pkgs/by-name/te/tetex/package.nix similarity index 90% rename from pkgs/tools/typesetting/tex/tetex/default.nix rename to pkgs/by-name/te/tetex/package.nix index b5c09d0a2ccb..f42138f5fdfa 100644 --- a/pkgs/tools/typesetting/tex/tetex/default.nix +++ b/pkgs/by-name/te/tetex/package.nix @@ -5,23 +5,23 @@ flex, bison, zlib, - libpng, + libpng12, ncurses, ed, automake, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "tetex"; version = "3.0"; src = fetchurl { - url = "https://mirrors.ctan.org/obsolete/systems/unix/teTeX/${version}/distrib/tetex-src-${version}.tar.gz"; + url = "https://mirrors.ctan.org/obsolete/systems/unix/teTeX/${finalAttrs.version}/distrib/tetex-src-${finalAttrs.version}.tar.gz"; sha256 = "16v44465ipd9yyqri9rgxp6rbgs194k4sh1kckvccvdsnnp7w3ww"; }; texmf = fetchurl { - url = "https://mirrors.ctan.org/obsolete/systems/unix/teTeX/${version}/distrib/tetex-texmf-${version}.tar.gz"; + url = "https://mirrors.ctan.org/obsolete/systems/unix/teTeX/${finalAttrs.version}/distrib/tetex-texmf-${finalAttrs.version}.tar.gz"; sha256 = "1hj06qvm02a2hx1a67igp45kxlbkczjlg20gr8lbp73l36k8yfvc"; }; @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { flex bison zlib - libpng + libpng12 ncurses ed ]; @@ -92,4 +92,4 @@ stdenv.mkDerivation rec { platforms = lib.platforms.unix; hydraPlatforms = [ ]; }; -} +}) diff --git a/pkgs/tools/typesetting/tex/tetex/setup-hook.sh b/pkgs/by-name/te/tetex/setup-hook.sh similarity index 100% rename from pkgs/tools/typesetting/tex/tetex/setup-hook.sh rename to pkgs/by-name/te/tetex/setup-hook.sh diff --git a/pkgs/by-name/th/thokr/package.nix b/pkgs/by-name/th/thokr/package.nix index 232c451f9902..4af7147773c9 100644 --- a/pkgs/by-name/th/thokr/package.nix +++ b/pkgs/by-name/th/thokr/package.nix @@ -6,7 +6,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "thokr"; - version = "0.4.1"; + version = "0.5.0"; __structuredAttrs = true; strictDeps = true; @@ -15,10 +15,10 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "jrnxf"; repo = "thokr"; rev = "v${finalAttrs.version}"; - sha256 = "0aryfx9qlnjdq3iq2d823c82fhkafvibmbz58g48b8ah5x5fv3ir"; + sha256 = "sha256-Ms90Eo2Bk9+QTOZv9fc73gQ1xwDntTbiwXsifF79ELE="; }; - cargoHash = "sha256-BjUPXsErdLGmZaDIMaY+iV3XcoQHGNZbRmFJb/fblwU="; + cargoHash = "sha256-U0nClfSQnliQEVX/PrG4B+TLqHNbL0xvttLukEGFKeI="; meta = { description = "Typing tui with visualized results and historical logging"; diff --git a/pkgs/by-name/tm/tmuxp/package.nix b/pkgs/by-name/tm/tmuxp/package.nix index 621044b3d72f..8456eb09530b 100644 --- a/pkgs/by-name/tm/tmuxp/package.nix +++ b/pkgs/by-name/tm/tmuxp/package.nix @@ -7,12 +7,12 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "tmuxp"; - version = "1.73.0"; + version = "1.74.0"; pyproject = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-UExY0hC7HDWeISQ/mMZLMcMnqDko4i188MyoDbNePZc="; + hash = "sha256-ngSA6gEpmWAmNYh+BGHTlcLYqm42qFtabR1l3NbHgJw="; }; build-system = with python3Packages; [ diff --git a/pkgs/by-name/to/tomato-c/package.nix b/pkgs/by-name/to/tomato-c/package.nix index f4805f687175..2d39a0999c46 100644 --- a/pkgs/by-name/to/tomato-c/package.nix +++ b/pkgs/by-name/to/tomato-c/package.nix @@ -11,26 +11,15 @@ stdenv.mkDerivation (finalAttrs: { pname = "tomato-c"; - version = "0-unstable-2024-04-19"; + version = "0-unstable-2025-11-11"; src = fetchFromGitHub { owner = "gabrielzschmitz"; repo = "Tomato.C"; - rev = "b3b85764362a7c120f3312f5b618102a4eac9f01"; - hash = "sha256-7i+vn1dAK+bAGpBlKTnSBUpyJyRiPc7AiUF/tz+RyTI="; + rev = "590224cbbf0f53f09d33080c4e83797a11ad02d1"; + hash = "sha256-TVvCqWWjfFHcFOMEO9frfrs9638cOjkV8yvqavdzdmI="; }; - postPatch = '' - substituteInPlace Makefile \ - --replace-fail "sudo " "" - substituteInPlace notify.c \ - --replace-fail "/usr/local" "${placeholder "out"}" - substituteInPlace util.c \ - --replace-fail "/usr/local" "${placeholder "out"}" - substituteInPlace tomato.desktop \ - --replace-fail "/usr/local" "${placeholder "out"}" - ''; - nativeBuildInputs = [ makeWrapper pkg-config @@ -69,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://github.com/gabrielzschmitz/Tomato.C"; description = "Pomodoro timer written in pure C"; license = with lib.licenses; [ gpl3Plus ]; - maintainers = [ ]; + maintainers = with lib.maintainers; [ _3JlOy-PYCCKUi ]; mainProgram = "tomato"; platforms = lib.platforms.unix; }; diff --git a/pkgs/by-name/ts/tsukimi/package.nix b/pkgs/by-name/ts/tsukimi/package.nix index e540b575841c..a23345244376 100644 --- a/pkgs/by-name/ts/tsukimi/package.nix +++ b/pkgs/by-name/ts/tsukimi/package.nix @@ -19,21 +19,23 @@ dbus, desktop-file-utils, versionCheckHook, + libxml2, + appstream, }: stdenv.mkDerivation (finalAttrs: { pname = "tsukimi"; - version = "26.6.1"; + version = "26.7.1"; src = fetchFromGitHub { owner = "tsukinaha"; repo = "tsukimi"; tag = "v${finalAttrs.version}"; - hash = "sha256-fJT5o9GOQB5TIlbqTRcMCaf5OYYW+D19dNPbLFqViCg="; + hash = "sha256-PGd2dWmUfdOyBsfn2Jozb7tAxSy2sv8XOKL1K8FwuLE="; }; cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) src; - hash = "sha256-Rdne9EQ9QSZ2RlYWEFEy9/OZEdIucQ/nB1Z8MJ0gAsU="; + hash = "sha256-lfDPrmCl+Fuf/AG8xiFv00HD76Wy63cBc9Iji7Cw2sw="; }; nativeBuildInputs = [ @@ -45,6 +47,8 @@ stdenv.mkDerivation (finalAttrs: { rustc cargo desktop-file-utils + libxml2 # xmllint + appstream # appstreamcli ]; buildInputs = [ @@ -64,6 +68,10 @@ stdenv.mkDerivation (finalAttrs: { gst-libav ]); + mesonFlags = [ + "-Drust-target=release" + ]; + nativeInstallCheckInputs = [ versionCheckHook ]; doInstallCheck = true; diff --git a/pkgs/by-name/ts/tsx/package.nix b/pkgs/by-name/ts/tsx/package.nix index fe2f2b9c289a..aea6ac539008 100644 --- a/pkgs/by-name/ts/tsx/package.nix +++ b/pkgs/by-name/ts/tsx/package.nix @@ -106,7 +106,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "TypeScript Execute (tsx): The easiest way to run TypeScript in Node.js"; - homepage = "https://tsx.is"; + homepage = "https://tsx.hirok.io/"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ sdedovic diff --git a/pkgs/by-name/up/upterm/package.nix b/pkgs/by-name/up/upterm/package.nix index aec66d1b2cd7..9cdb9807af76 100644 --- a/pkgs/by-name/up/upterm/package.nix +++ b/pkgs/by-name/up/upterm/package.nix @@ -6,6 +6,8 @@ writableTmpDirAsHomeHook, installShellFiles, nixosTests, + testers, + upterm, }: buildGoModule (finalAttrs: { @@ -19,6 +21,12 @@ buildGoModule (finalAttrs: { hash = "sha256-b52Rny6mYkmfF6Umn2tzlnUhNkENHPFpCzp55OWj92w="; }; + ldflags = [ + "-s" + "-w" + "-X github.com/owenthereal/upterm/internal/version.Version=${finalAttrs.version}" + ]; + vendorHash = "sha256-UkZnLbxn0dPT43ycuevcwMw0dXnX1OPHLh5F1XMHWDI="; subPackages = [ @@ -47,7 +55,14 @@ buildGoModule (finalAttrs: { doCheck = true; - passthru.tests = { inherit (nixosTests) uptermd; }; + passthru.tests = { + inherit (nixosTests) uptermd; + version = testers.testVersion { + package = upterm; + command = "HOME=$PWD upterm version"; # upterm tries to write to $HOME + version = "Upterm version ${finalAttrs.version}"; + }; + }; __darwinAllowLocalNetworking = true; diff --git a/pkgs/by-name/ve/veryl/package.nix b/pkgs/by-name/ve/veryl/package.nix index 10846811396c..06e364c2ba54 100644 --- a/pkgs/by-name/ve/veryl/package.nix +++ b/pkgs/by-name/ve/veryl/package.nix @@ -5,22 +5,24 @@ pkg-config, installShellFiles, dbus, + writableTmpDirAsHomeHook, + git, stdenv, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "veryl"; - version = "0.20.1"; + version = "0.20.2"; src = fetchFromGitHub { owner = "veryl-lang"; repo = "veryl"; rev = "v${finalAttrs.version}"; - hash = "sha256-jY8CeuRjtRtyQl07ezl/PUILvMABFJn9Q6AH11C4M/0="; + hash = "sha256-ldibFrtU/lEL4a0QIhVKx8A0noZF2qyH9iExYNZedoU="; fetchSubmodules = true; }; - cargoHash = "sha256-j6lJlGqtQf/mRYKDUi3nttbPWfI7CyE1tlksGhrnrEM="; + cargoHash = "sha256-mpI3Eo5fkP66Ywr/anQ3ajPrVuuK6Ku7qJ/jpVPHE6Q="; nativeBuildInputs = [ pkg-config @@ -38,6 +40,11 @@ rustPlatform.buildRustPackage (finalAttrs: { --zsh <($out/bin/veryl metadata --completion zsh) ''; + nativeCheckInputs = [ + writableTmpDirAsHomeHook + git + ]; + checkFlags = [ # takes over an hour "--skip=tests::progress" diff --git a/pkgs/by-name/wi/wildcard/package.nix b/pkgs/by-name/wi/wildcard/package.nix index 3f7591026262..a0090667ce72 100644 --- a/pkgs/by-name/wi/wildcard/package.nix +++ b/pkgs/by-name/wi/wildcard/package.nix @@ -16,21 +16,21 @@ stdenv.mkDerivation (finalAttrs: { pname = "wildcard"; - version = "0.3.3"; + version = "0.3.5"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "World"; repo = "Wildcard"; rev = "v${finalAttrs.version}"; - hash = "sha256-jOv0l1vnfDePWF7SAbsBFipPAONliPdc47xj79BJ+rc="; + hash = "sha256-8e3UWJ6PGhwvo/AB89VgkBfgsaNVa4g6hT9vBTmKlZQ="; }; strictDeps = true; cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) src; - hash = "sha256-eUT3K7DJk0U4GZ/oqvMAGUjTctcDMaRdsjq1sD+fitg="; + hash = "sha256-hoJsXoPmp0A6oIV1Rm7eXI2U2OIGrStmKzDdPQtI41A="; name = "wildcard-${finalAttrs.version}"; }; diff --git a/pkgs/by-name/wo/worktrunk/package.nix b/pkgs/by-name/wo/worktrunk/package.nix index 5b785b4b8fc0..ab3a3f7db7a3 100644 --- a/pkgs/by-name/wo/worktrunk/package.nix +++ b/pkgs/by-name/wo/worktrunk/package.nix @@ -41,6 +41,10 @@ rustPlatform.buildRustPackage (finalAttrs: { --fish <($out/bin/wt config shell completions fish) \ --nushell <($out/bin/wt config shell completions nu) \ --zsh <($out/bin/wt config shell completions zsh) + + # -L dereferences symlinks (e.g. skills/worktrunk/reference/README.md → repo + # root), so no dangling symlinks end up in $out. + cp -RL ${finalAttrs.src}/skills $out/ ''; nativeCheckInputs = [ gitMinimal ]; diff --git a/pkgs/by-name/wt/wtfutil/package.nix b/pkgs/by-name/wt/wtfutil/package.nix index 4ed70c5d0cd9..b8cc9359c7ba 100644 --- a/pkgs/by-name/wt/wtfutil/package.nix +++ b/pkgs/by-name/wt/wtfutil/package.nix @@ -11,16 +11,16 @@ buildGoModule (finalAttrs: { pname = "wtfutil"; - version = "0.49.1"; + version = "0.50.0"; src = fetchFromGitHub { owner = "wtfutil"; repo = "wtf"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-b7g/EWr8M99jc0BJcu+JTfifuWK/oeFsOi9vkI9RIA0="; + sha256 = "sha256-sq+8r317JMY8Wbl3KlrmHgIicbs6HZ3BLtG4VGBSHM4="; }; - vendorHash = "sha256-AjrpcP6K937HteHdIyXwEx5srTMWYq4v1Dmd5cch5Pc="; + vendorHash = "sha256-L6ZXbSsmsYH8yPcxNgJ99iJwGOjelsssPoYkeYQmglQ="; proxyVendor = true; doCheck = false; diff --git a/pkgs/by-name/xa/xandikos/package.nix b/pkgs/by-name/xa/xandikos/package.nix index d323f80d70a7..58b217a4d34a 100644 --- a/pkgs/by-name/xa/xandikos/package.nix +++ b/pkgs/by-name/xa/xandikos/package.nix @@ -3,6 +3,7 @@ lib, nixosTests, python3Packages, + installShellFiles, }: python3Packages.buildPythonApplication rec { @@ -33,6 +34,12 @@ python3Packages.buildPythonApplication rec { vobject ]; + nativeBuildInputs = [ installShellFiles ]; + + postInstall = '' + installManPage man/xandikos{,-milter}.8 + ''; + passthru.tests.xandikos = nixosTests.xandikos; nativeCheckInputs = with python3Packages; [ pytestCheckHook ]; diff --git a/pkgs/by-name/xk/xk6/package.nix b/pkgs/by-name/xk/xk6/package.nix index 806e85a7ddca..749d2b7bfa63 100644 --- a/pkgs/by-name/xk/xk6/package.nix +++ b/pkgs/by-name/xk/xk6/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "xk6"; - version = "1.4.3"; + version = "1.4.7"; src = fetchFromGitHub { owner = "grafana"; repo = "xk6"; tag = "v${version}"; - hash = "sha256-dQiv+weenG3o7eUHtfUzGFPYAXCspyRSPclQjhje7+U="; + hash = "sha256-ZJJlwP3jI8/J8XIg2oqtPY5Bojm7xuYCnBJ7B+qbDSU="; }; vendorHash = null; diff --git a/pkgs/by-name/za/zarf/package.nix b/pkgs/by-name/za/zarf/package.nix index 8c790fc36cc4..7f40f9ecbeec 100644 --- a/pkgs/by-name/za/zarf/package.nix +++ b/pkgs/by-name/za/zarf/package.nix @@ -10,16 +10,16 @@ buildGoModule (finalAttrs: { pname = "zarf"; - version = "0.77.0"; + version = "0.80.0"; src = fetchFromGitHub { owner = "zarf-dev"; repo = "zarf"; tag = "v${finalAttrs.version}"; - hash = "sha256-kVXJ0ByW/v68f65tmgsvvHnp5v9x4y4vq6Qnu5kA9ZQ="; + hash = "sha256-GvjjAlNmEmvZ7mknec9bpoVzCsf+xHmMm0uHi/P0/5g="; }; - vendorHash = "sha256-xP0hXk6D/EzgxVYScOnET203ip390zgxIr5fAEj7wqI="; + vendorHash = "sha256-DLwN9cEVEnlb3S4wfJs90EfcsxgjIH/3rEiwqjcftGY="; proxyVendor = true; nativeBuildInputs = [ diff --git a/pkgs/by-name/ze/zesarux/package.nix b/pkgs/by-name/ze/zesarux/package.nix index 6e6a5ae89837..0614cb4a6636 100644 --- a/pkgs/by-name/ze/zesarux/package.nix +++ b/pkgs/by-name/ze/zesarux/package.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "zesarux"; - version = "12.1"; + version = "13.0"; src = fetchFromGitHub { owner = "chernandezba"; repo = "zesarux"; tag = "ZEsarUX-${finalAttrs.version}"; - hash = "sha256-899+n55+Sa+TqnQBH/kyhEIcIr/4pGZ3ekWgXb9NVOo="; + hash = "sha256-clwYn43Xswdo11T+aX78K1Qat5BoGwH3ByCT4qaMl8A="; }; nativeBuildInputs = [ diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix index 30fc3d274749..3d4d7c0db0c1 100644 --- a/pkgs/development/compilers/emscripten/default.nix +++ b/pkgs/development/compilers/emscripten/default.nix @@ -22,7 +22,7 @@ in stdenv.mkDerivation rec { pname = "emscripten"; - version = "5.0.7"; + version = "6.0.2"; llvmEnv = symlinkJoin { name = "emscripten-llvm-${version}"; @@ -38,7 +38,7 @@ stdenv.mkDerivation rec { name = "emscripten-node-modules-${version}"; inherit pname version src; - npmDepsHash = "sha256-QW8wnNBBJs8nHsNuczZZevm6ELqtljsDdL21qtFo6pM="; + npmDepsHash = "sha256-uZSDPdMNT50JBg4e16cHDoon0cunxB/JyWWkj67X5ls="; dontBuild = true; @@ -51,7 +51,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "emscripten-core"; repo = "emscripten"; - hash = "sha256-EZYjaTja0rojl27UYFbhjHpSBvWu6Vlr6Xe7S+5C4Xc="; + hash = "sha256-tFJ699cOOmv1uEsl5RzsIV5gosOgTvMX2UQYTb0x7Gk="; rev = version; }; diff --git a/pkgs/development/libraries/wt/default.nix b/pkgs/development/libraries/wt/default.nix index a1beebf52eed..a12fa1fc08e0 100644 --- a/pkgs/development/libraries/wt/default.nix +++ b/pkgs/development/libraries/wt/default.nix @@ -61,6 +61,12 @@ let dontWrapQtApps = true; cmakeFlags = [ + "-DCMAKE_INSTALL_RPATH=${ + lib.makeLibraryPath [ + libice + libsm + ] + }" "-DWT_CPP_11_MODE=-std=c++11" "--no-warn-unused-cli" ] diff --git a/pkgs/development/python-modules/ansible/default.nix b/pkgs/development/python-modules/ansible/default.nix index d95c3d1f4e63..99f335b32342 100644 --- a/pkgs/development/python-modules/ansible/default.nix +++ b/pkgs/development/python-modules/ansible/default.nix @@ -24,7 +24,7 @@ let pname = "ansible"; - version = "14.0.0"; + version = "14.1.0"; in buildPythonPackage { inherit pname version; @@ -32,7 +32,7 @@ buildPythonPackage { src = fetchPypi { inherit pname version; - hash = "sha256-A825R3sevpMMkhKhLQkmx81GsYd8UEcJFXuM14dvwIM="; + hash = "sha256-GueRhGntiX/3FoV+2Y0fXV/OFxD2pC9gHwcVVItnvwA="; }; # we make ansible-core depend on ansible, not the other way around, diff --git a/pkgs/development/python-modules/coiled/default.nix b/pkgs/development/python-modules/coiled/default.nix index 8f85506a9a1b..7c5fa6eed4b7 100644 --- a/pkgs/development/python-modules/coiled/default.nix +++ b/pkgs/development/python-modules/coiled/default.nix @@ -39,12 +39,13 @@ buildPythonPackage (finalAttrs: { pname = "coiled"; - version = "1.134.1"; + version = "1.135.1"; pyproject = true; + __structuredAttrs = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-uGXgj2QZOMik9ZJD8wMppJKsJPXdI0ipPuxwB5pHZos="; + hash = "sha256-dI3AT4hogMHLAg7jyXuJNPHeJG9U0nEwwN+MQ+UgxTA="; }; build-system = [ diff --git a/pkgs/development/python-modules/configargparse/default.nix b/pkgs/development/python-modules/configargparse/default.nix index cd3b9b93206a..d6cba9cb5b45 100644 --- a/pkgs/development/python-modules/configargparse/default.nix +++ b/pkgs/development/python-modules/configargparse/default.nix @@ -6,20 +6,25 @@ pytestCheckHook, pyyaml, pythonAtLeast, + setuptools-scm, }: buildPythonPackage rec { pname = "configargparse"; - version = "1.7.1"; + version = "1.7.5"; format = "setuptools"; src = fetchFromGitHub { owner = "bw2"; repo = "ConfigArgParse"; - tag = version; - hash = "sha256-wrWfQzr0smM83helOEJPbayrEpAtXJYYXIw4JnGLNho="; + tag = "v${version}"; + hash = "sha256-ZRdwA3X1TCv0BIwr1gFeSi6UuziXiazciKw/6ewkpRE="; }; + build-system = [ + setuptools-scm + ]; + optional-dependencies = { yaml = [ pyyaml ]; }; diff --git a/pkgs/development/python-modules/imagecodecs/default.nix b/pkgs/development/python-modules/imagecodecs/default.nix index f40a7a1e321a..e07a06619ef2 100644 --- a/pkgs/development/python-modules/imagecodecs/default.nix +++ b/pkgs/development/python-modules/imagecodecs/default.nix @@ -29,7 +29,7 @@ }: let - version = "2026.3.6"; + version = "2026.6.26"; in buildPythonPackage rec { pname = "imagecodecs"; @@ -40,7 +40,7 @@ buildPythonPackage rec { owner = "cgohlke"; repo = "imagecodecs"; tag = "v${version}"; - hash = "sha256-UOyhTzejLJ1HnwHtvFe9Mo8nxOkLNANnJL2z/SSRjXs="; + hash = "sha256-0o4zSf1iCzxph9tQ+b2nShaRWeCBuszf/r85Zg1BGTY="; }; build-system = [ diff --git a/pkgs/development/python-modules/libmobility/default.nix b/pkgs/development/python-modules/libmobility/default.nix index 55be45cb8425..e99cf9f8b0e6 100644 --- a/pkgs/development/python-modules/libmobility/default.nix +++ b/pkgs/development/python-modules/libmobility/default.nix @@ -39,7 +39,7 @@ let in buildPythonPackage.override { stdenv = cudaPackages.backendStdenv; } (finalAttrs: { pname = "libmobility"; - version = "1.1.2"; + version = "1.2.0"; pyproject = true; __structuredAttrs = true; @@ -47,7 +47,7 @@ buildPythonPackage.override { stdenv = cudaPackages.backendStdenv; } (finalAttrs owner = "stochasticHydroTools"; repo = "libMobility"; tag = "v${finalAttrs.version}"; - hash = "sha256-7jUpVR4bS9vkgeKN68of6VNZzGPlQMcRMBStQ+wFEx4="; + hash = "sha256-8GOQ+TY7WXIEzI+n3W+IpuEg+N5ZscjsAoE49Ob6uDQ="; }; postPatch = diff --git a/pkgs/development/python-modules/libtmux/default.nix b/pkgs/development/python-modules/libtmux/default.nix index 159c63b7430c..f870f7ae1d77 100644 --- a/pkgs/development/python-modules/libtmux/default.nix +++ b/pkgs/development/python-modules/libtmux/default.nix @@ -45,12 +45,9 @@ buildPythonPackage (finalAttrs: { enabledTestPaths = [ "tests" ]; disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [ "tests/test/test_retry.py" ]; - disabledTests = [ - # test is broken for tmux 3.7a and later - # https://github.com/tmux-python/libtmux/issues/697 - "test_new_window_name_invalid_on_3_7" - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ + disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ + # basename for sleep is coreutils, not sleep + "test_break_pane_no_name_uses_natural_name" # Fail with: 'no server running on /tmp/tmux-1000/libtmux_test8sorutj1'. "test_new_session_width_height" # AssertionError: assert '' == '$' diff --git a/pkgs/development/python-modules/lizard/default.nix b/pkgs/development/python-modules/lizard/default.nix index 4373ecd23487..7091de919ae4 100644 --- a/pkgs/development/python-modules/lizard/default.nix +++ b/pkgs/development/python-modules/lizard/default.nix @@ -11,14 +11,14 @@ buildPythonPackage rec { pname = "lizard"; - version = "1.22.2"; + version = "1.23.0"; format = "setuptools"; src = fetchFromGitHub { owner = "terryyin"; repo = "lizard"; tag = version; - hash = "sha256-Gh7ufW8A3FiQMCppwl2SIeOie9O/kl3wYxV4kW4raDQ="; + hash = "sha256-rKCa5JniIr6SZaYgfC29GjOXl9MW9Dkt76z/oqfqnqc="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/python-modules/msrplib/default.nix b/pkgs/development/python-modules/msrplib/default.nix index c6d769382825..8baa035a0a2e 100644 --- a/pkgs/development/python-modules/msrplib/default.nix +++ b/pkgs/development/python-modules/msrplib/default.nix @@ -8,15 +8,15 @@ buildPythonPackage { pname = "msrplib"; - version = "0.21.0-unstable-2021-06-01"; + version = "0.21.0-unstable-2026-07-09"; pyproject = true; src = fetchFromGitHub { owner = "AGProjects"; repo = "python3-msrplib"; # no tag pushed for version 0.21.1 release, and commit title is wrong - rev = "5bd069620d436d5a65e1c369e43cc6b88857fb9e"; - hash = "sha256-z0gF/oQW/h3qiCL1cFWBPK7JYzLCNAD7/dg7HfY4rig="; + rev = "1b50e00b2b242be41287b3e3ae3ef02c5a7b96e6"; + hash = "sha256-HmIuJl/H94GX0caT+uKriz8RMkpzuFgsPPyPhwo3kHM="; }; build-system = [ diff --git a/pkgs/development/python-modules/openusd/default.nix b/pkgs/development/python-modules/openusd/default.nix index 3f5d7651a5e0..26c90ae3b091 100644 --- a/pkgs/development/python-modules/openusd/default.nix +++ b/pkgs/development/python-modules/openusd/default.nix @@ -52,14 +52,14 @@ in buildPythonPackage rec { pname = "openusd"; - version = "26.03"; + version = "26.05"; pyproject = false; src = fetchFromGitHub { owner = "PixarAnimationStudios"; repo = "OpenUSD"; tag = "v${version}"; - hash = "sha256-Ijh7x63TqEkittO+r//sIkBu7I52/6C7a2n9Nq6Kt7g="; + hash = "sha256-LQ5iopxoDtmScYhmMy+xN/Gb5WVdAYXdQGlGhG3vIiA="; }; outputs = [ "out" ] ++ lib.optional withDocs "doc"; diff --git a/pkgs/development/python-modules/plum-py/default.nix b/pkgs/development/python-modules/plum-py/default.nix index 4d099fd594d3..44a48355705f 100644 --- a/pkgs/development/python-modules/plum-py/default.nix +++ b/pkgs/development/python-modules/plum-py/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "plum-py"; - version = "0.8.6"; + version = "0.8.7"; format = "setuptools"; src = fetchFromGitLab { owner = "dangass"; repo = "plum"; tag = version; - hash = "sha256-gZSRqijKdjqOZe1+4aeycpCPsh6HC5sRbyVjgK+g4wM="; + hash = "sha256-q9UNRZYBLBm0mf/r3cktGnGG9LzmTDrSVgXDgGDBMok="; }; postPatch = '' diff --git a/pkgs/development/python-modules/pylsl/default.nix b/pkgs/development/python-modules/pylsl/default.nix index 90fe12d0c1d9..8def5f08ee6e 100644 --- a/pkgs/development/python-modules/pylsl/default.nix +++ b/pkgs/development/python-modules/pylsl/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "pylsl"; - version = "1.18.1"; + version = "1.18.3.b1"; pyproject = true; src = fetchFromGitHub { owner = "labstreaminglayer"; repo = "pylsl"; tag = "v${version}"; - hash = "sha256-H/ALvRtgv1Ms9VeTJvDRCpg0Q+/4Xjx/NS4whOGmtU8="; + hash = "sha256-AVnRkkzAiPGcnnDL7ZxsnY7R76DcqPcG1M5Fg4ZRSX0="; }; postPatch = '' diff --git a/pkgs/development/python-modules/pysail/default.nix b/pkgs/development/python-modules/pysail/default.nix index 9fabfa299b10..85970bf56c5b 100644 --- a/pkgs/development/python-modules/pysail/default.nix +++ b/pkgs/development/python-modules/pysail/default.nix @@ -13,19 +13,19 @@ buildPythonPackage (finalAttrs: { pname = "pysail"; - version = "0.6.5"; + version = "0.6.6"; pyproject = true; src = fetchFromGitHub { owner = "lakehq"; repo = "sail"; tag = "v${finalAttrs.version}"; - hash = "sha256-pCxlGCOLxupgxCtRfUSLbA88dFIWvO16fgibLmydNBQ="; + hash = "sha256-DpkoC7uShuReOBN5tjvcCSH1LH/e+fj3gp47idsEGEg="; }; cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) pname src version; - hash = "sha256-V3FS28H+lGORTFYWaMNeLdz0s+Bv4bo3By5VlIOWiOc="; + hash = "sha256-byjxrJN+Q+Rn3pq/FWXxzheZyUs+aoTvfileahqinuA="; }; # The `generate-import-lib` PyO3 feature only matters when building Windows diff --git a/pkgs/development/python-modules/pytest-ansible/default.nix b/pkgs/development/python-modules/pytest-ansible/default.nix index 8f8d42939631..85a7b2e9c19d 100644 --- a/pkgs/development/python-modules/pytest-ansible/default.nix +++ b/pkgs/development/python-modules/pytest-ansible/default.nix @@ -25,14 +25,14 @@ buildPythonPackage (finalAttrs: { pname = "pytest-ansible"; - version = "26.4.0"; + version = "26.6.0"; pyproject = true; src = fetchFromGitHub { owner = "ansible"; repo = "pytest-ansible"; tag = "v${finalAttrs.version}"; - hash = "sha256-HC5kipVIHga1nBWK6QQ2wGv9wPz0cVmRyby46JT6+Hg="; + hash = "sha256-+eo2W3Kz2StAMHUm0UalWseRlOCHsZCrmDwyV6570iE="; }; postPatch = '' diff --git a/pkgs/development/python-modules/sphinx-llms-txt/default.nix b/pkgs/development/python-modules/sphinx-llms-txt/default.nix new file mode 100644 index 000000000000..cf7003a9aa3d --- /dev/null +++ b/pkgs/development/python-modules/sphinx-llms-txt/default.nix @@ -0,0 +1,41 @@ +{ + lib, + fetchFromGitHub, + buildPythonPackage, + setuptools, + sphinx, + pytestCheckHook, +}: +buildPythonPackage (finalAttrs: { + pname = "sphinx-llms-txt"; + version = "0.7.1"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "jdillard"; + repo = "sphinx-llms-txt"; + tag = "v${finalAttrs.version}"; + hash = "sha256-9uj5UYl6/TppGd3zuGUpxiY9U6/65ffWDPKaX7ut4zg="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + sphinx + ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + pythonImportsCheck = [ "sphinx_llms_txt" ]; + + meta = { + description = "llms.txt generator for Sphinx"; + homepage = "https://github.com/jdillard/sphinx-llms-txt"; + changelog = "https://github.com/jdillard/sphinx-llms-txt/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ felbinger ]; + }; +}) diff --git a/pkgs/development/python-modules/types-regex/default.nix b/pkgs/development/python-modules/types-regex/default.nix index d400055c5856..ad45d1c7dd57 100644 --- a/pkgs/development/python-modules/types-regex/default.nix +++ b/pkgs/development/python-modules/types-regex/default.nix @@ -7,13 +7,13 @@ buildPythonPackage (finalAttrs: { pname = "types-regex"; - version = "2026.2.28.20260301"; + version = "2026.6.28.20260630"; pyproject = true; src = fetchPypi { pname = "types_regex"; inherit (finalAttrs) version; - hash = "sha256-ZEwjHbPzaJCDIBcMFJBXMaeuX6vawPYPXW0S7N07yN0="; + hash = "sha256-X6/kNLV409d2QKq5SKPr/J7+pyNBK/rlVRs/VQhqtqc="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/wokkel/default.nix b/pkgs/development/python-modules/wokkel/default.nix index 567610a1624a..220d03a9cfb5 100644 --- a/pkgs/development/python-modules/wokkel/default.nix +++ b/pkgs/development/python-modules/wokkel/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + fetchpatch2, setuptools, incremental, python-dateutil, @@ -24,6 +25,14 @@ buildPythonPackage rec { # Fixes compat with current-day twisted # https://github.com/ralphm/wokkel/pull/32 with all the CI & doc changes excluded ./0001-Remove-py2-compat.patch + + # Fix test failure with Twisted >= 26 + # https://github.com/ralphm/wokkel/issues/33 + (fetchpatch2 { + name = "fix-test-for-twisted-26.patch"; + url = "https://salsa.debian.org/python-team/packages/wokkel/-/raw/f9425d127449a47a7578a01a1b802b7b26b0677f/debian/patches/fix-test-for-twisted-26.patch"; + hash = "sha256-gyVKKqDCFFXyA5LG0q2p8SWIh9DJCUkdK6slOaYsAw0="; + }) ]; postPatch = '' diff --git a/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix b/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix index a206536768d7..dad7ebcbdf25 100644 --- a/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix +++ b/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix @@ -7,13 +7,13 @@ buildHomeAssistantComponent rec { owner = "bm1549"; domain = "frigidaire"; - version = "0.1.22"; + version = "0.1.30"; src = fetchFromGitHub { inherit owner; repo = "home-assistant-frigidaire"; tag = version; - hash = "sha256-ASxedLzRP/+FkRDojXsXlvrvA18BzjGfsw0xoDnVaQA="; + hash = "sha256-asklW31IiHE7WGx3uxh8JgNpW4syePKAsqq8YxKgHhA="; }; dependencies = [ frigidaire ]; diff --git a/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix b/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix index bab139590171..545194dddd86 100644 --- a/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix +++ b/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix @@ -8,13 +8,13 @@ postgresqlBuildExtension (finalAttrs: { pname = "plpgsql-check"; - version = "2.9.1"; + version = "2.9.3"; src = fetchFromGitHub { owner = "okbob"; repo = "plpgsql_check"; tag = "v${finalAttrs.version}"; - hash = "sha256-mB195swphIEREHGWe7g+0WbkvliJ9DDtVkgeFoZ3FsI="; + hash = "sha256-zQzfOVu4O2NKJNIJcXN4irntAprBLQGetQJ3AAq/2HU="; }; passthru.tests.extension = postgresqlTestExtension { diff --git a/pkgs/servers/web-apps/wordpress/default.nix b/pkgs/servers/web-apps/wordpress/default.nix index 46e1dee4a916..378471172e4b 100644 --- a/pkgs/servers/web-apps/wordpress/default.nix +++ b/pkgs/servers/web-apps/wordpress/default.nix @@ -10,7 +10,7 @@ builtins.mapAttrs (_: callPackage ./generic.nix) rec { hash = "sha256-22EK2fVJ4Ku1rz49XGcpxY2HRDllTN8K/qQlsuqJXzU="; }; wordpress_7_0 = { - version = "7.0"; - hash = "sha256-UwyP3rFvsK/9tT63J7agS7jRZmIcIAKeOJyrsBoPqSE="; + version = "7.0.1"; + hash = "sha256-3BBZLam1gMdSVjKFDgzO03GxMIGFOsKa/pO11bsA25g="; }; } diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 05ba512c90a7..2692a2ca7c16 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -582,6 +582,7 @@ mapAliases { cosmic-applibrary = warnAlias "'cosmic-applibrary' has been renamed to 'cosmic-app-library'" cosmic-app-library; # Added 2026-07-01 cosmic-tasks = throw "'cosmic-tasks' has been renamed to/replaced by 'tasks'"; # Converted to throw 2025-10-27 cotton = throw "'cotton' has been removed since it is vulnerable to CVE-2025-62518 and upstream is unmaintained"; # Added 2025-10-26 + cpp2a-kernel = cpp20-kernel; # Added 2026-06-30, xeus-cling removed in favour of xeus-cpp cpp-ipfs-api = throw "'cpp-ipfs-api' has been renamed to/replaced by 'cpp-ipfs-http-client'"; # Converted to throw 2025-10-27 cpr = warnAlias "'cpr' has been renamed to/replaced by 'libcpr'" libcpr; # Added 2025-11-17 cqrlog = throw "'cqrlog' was removed due to lack of maintenance and relying on gtk2"; # Added 2025-12-02 @@ -1231,8 +1232,8 @@ mapAliases { libpthreadstubs = libpthread-stubs; # Added 2025-02-04 libpulseaudio-vanilla = throw "'libpulseaudio-vanilla' has been renamed to/replaced by 'libpulseaudio'"; # Converted to throw 2025-10-27 libqt5pas = throw "'libqt5pas' has been renamed to/replaced by 'libsForQt5.libqtpas'"; # Converted to throw 2025-10-27 - libqtdbusmock = warnAlias "'libqtdbusmock' has been renamed to 'libsForQt5.libqtdbusmock'"; # Added 2026-03-10 - libqtdbustest = warnAlias "'libqtdbustest' has been renamed to 'libsForQt5.libqtdbustest'"; # Added 2026-03-10 + libqtdbusmock = warnAlias "'libqtdbusmock' has been renamed to 'libsForQt5.libqtdbusmock'" libsForQt5.libqtdbusmock; # Added 2026-03-10 + libqtdbustest = warnAlias "'libqtdbustest' has been renamed to 'libsForQt5.libqtdbustest'" libsForQt5.libqtdbustest; # Added 2026-03-10 libquotient = throw "'libquotient' for qt5 was removed as upstream removed qt5 support. Consider explicitly upgrading to qt6 'libquotient'"; # Converted to throw 2025-07-04 LibreArp = throw "'LibreArp' has been renamed to/replaced by 'librearp'"; # Converted to throw 2025-10-27 LibreArp-lv2 = throw "'LibreArp-lv2' has been renamed to/replaced by 'librearp-lv2'"; # Converted to throw 2025-10-27 @@ -1939,7 +1940,7 @@ mapAliases { qflipper = throw "'qflipper' has been renamed to/replaced by 'qFlipper'"; # Converted to throw 2025-10-27 qMasterPassword = warnAlias "'qMasterPassword' has been renamed to/replaced by 'qmasterpassword'" qmasterpassword; # Added 2026-02-01 qMasterPassword-wayland = warnAlias "'qMasterPassword-wayland' has been renamed to/replaced by 'qmasterpassword-wayland'" qmasterpassword-wayland; # Added 2026-02-01 - qmenumodel = warnAlias "'qmenumodel' has been renamed to 'libsForQt5.qmenumodel'"; # Added 2026-03-26 + qmenumodel = warnAlias "'qmenumodel' has been renamed to 'libsForQt5.qmenumodel'" libsForQt5.qmenumodel; # Added 2026-03-26 qnial = throw "'qnial' has been removed due to failing to build and being unmaintained"; # Added 2025-06-26 qrscan = throw "qrscan has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-19 qscintilla = throw "'qscintilla' has been renamed to/replaced by 'libsForQt5.qscintilla'"; # Converted to throw 2025-10-27 @@ -2434,6 +2435,7 @@ mapAliases { use the reference implementation 'xdg-terminal-exec' instead. " xdg-terminal-exec; # Added 2026-01-14 xdragon = throw "'xdragon' has been renamed to/replaced by 'dragon-drop'"; # Converted to throw 2025-10-27 + xeus-cling = throw "'xeus-cling' has been removed: it is unmaintained upstream. Use 'xeus-cpp' (a clang-repl/CppInterOp-based successor) instead"; # Added 2026-06-30 xf86-input-cmt = throw "'xf86-input-cmt' has been removed as it was broken and unmaintained upstream"; # Added 2026-05-09 xf86_input_cmt = xf86-input-cmt; # Added 2025-12-12 xf86_input_wacom = xf86-input-wacom; # Added 2025-12-12 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 97935fa90847..7d3cdd136f86 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1581,8 +1581,6 @@ with pkgs; pgf = pgf2; - tetex = callPackage ../tools/typesetting/tex/tetex { libpng = libpng12; }; - texFunctions = callPackage ../tools/typesetting/tex/nix pkgs; # TeX Live; see https://nixos.org/nixpkgs/manual/#sec-language-texlive @@ -4390,12 +4388,13 @@ with pkgs; jre = jre8; }; - inherit (callPackage ../applications/editors/jupyter-kernels/xeus-cling { }) + inherit (callPackage ../applications/editors/jupyter-kernels/xeus-cpp { }) cpp11-kernel cpp14-kernel cpp17-kernel - cpp2a-kernel - xeus-cling + cpp20-kernel + cpp23-kernel + xeus-cpp ; dhall = haskell.lib.compose.justStaticExecutables haskellPackages.dhall; @@ -6365,10 +6364,6 @@ with pkgs; ngtcp2 = callPackage ../development/libraries/ngtcp2 { }; ngtcp2-gnutls = callPackage ../development/libraries/ngtcp2/gnutls.nix { }; - non = callPackage ../applications/audio/non { - wafHook = (waf.override { extraTools = [ "gccdeps" ]; }).hook; - }; - nss_latest = callPackage ../development/libraries/nss/latest.nix { }; nss_esr = callPackage ../development/libraries/nss/esr.nix { }; nss = nss_esr; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e3604c024a57..6c3d60eb6d71 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19071,6 +19071,8 @@ self: super: with self; { callPackage ../development/python-modules/sphinx-last-updated-by-git { }; + sphinx-llms-txt = callPackage ../development/python-modules/sphinx-llms-txt { }; + sphinx-lv2-theme = callPackage ../development/python-modules/sphinx-lv2-theme { }; sphinx-markdown-builder = callPackage ../development/python-modules/sphinx-markdown-builder { };