diff --git a/.github/workflows/teams.yml b/.github/workflows/teams.yml index 75abc601086b..09657b8049db 100644 --- a/.github/workflows/teams.yml +++ b/.github/workflows/teams.yml @@ -2,7 +2,7 @@ name: Teams on: schedule: - # Every Tuesday at 19:42 (randomly chosen) + # Every Monday at 19:42 (randomly chosen) - cron: '42 19 * * 1' workflow_dispatch: diff --git a/maintainers/github-teams.json b/maintainers/github-teams.json index baa4550e5f8a..9a9fc155a52c 100644 --- a/maintainers/github-teams.json +++ b/maintainers/github-teams.json @@ -2,10 +2,11 @@ "acme": { "description": "Maintain ACME-related packages and modules.", "id": 3806126, - "maintainers": {}, + "maintainers": { + "emilazy": 18535642 + }, "members": { "arianvp": 628387, - "emilazy": 18535642, "m1cr0man": 3044438 }, "name": "ACME" @@ -71,11 +72,10 @@ "description": "coordinates efforts towards bootstrappable builds (see https://bootstrappable.org/)", "id": 9141350, "maintainers": { + "philiptaron": 43863, "zeuner": 2545850 }, - "members": { - "philiptaron": 43863 - }, + "members": {}, "name": "bootstrapping" }, "categorization": { @@ -176,6 +176,7 @@ "description": "Improve Darwin-support across Nixpkgs and help maintainers without access to Darwin hardware. Apply to join through https://github.com/NixOS/nixpkgs/issues/323144 to keep the process transparent.", "id": 2385202, "maintainers": { + "emilazy": 18535642, "toonn": 1486805 }, "members": { @@ -205,7 +206,6 @@ "donn": 12652988, "dwt": 57199, "eclairevoyant": 848000, - "emilazy": 18535642, "ethancedwards8": 60861925, "fiddlerwoaroof": 808745, "fulsomenko": 14945057, @@ -410,9 +410,7 @@ "jtojnar": 705123 }, "members": { - "bobby285271": 20080233, - "dasj19": 7589338, - "hedning": 71978 + "bobby285271": 20080233 }, "name": "GNOME" }, @@ -556,11 +554,12 @@ "id": 9955829, "maintainers": { "RossComputerGuy": 19699320, - "alyssais": 2768870 + "alyssais": 2768870, + "emilazy": 18535642 }, "members": { "Ericson2314": 1055245, - "emilazy": 18535642, + "peterwaller-arm": 52030119, "rrbutani": 7833358, "sternenseemann": 3154475 }, @@ -695,8 +694,7 @@ "description": "", "id": 174820, "maintainers": { - "Ericson2314": 1055245, - "tomberek": 178444 + "Ericson2314": 1055245 }, "members": { "Mic92": 96200, @@ -704,6 +702,7 @@ "edolstra": 1148549, "lisanna-dettwyler": 72424138, "lovesegfault": 7243783, + "tomberek": 178444, "xokdvium": 145775305 }, "name": "Nix team" @@ -852,15 +851,15 @@ "description": "Team that is interested in reproducible builds", "id": 7625643, "maintainers": { - "raboof": 131856, - "zimbatm": 3248 + "raboof": 131856 }, "members": { "Artturin": 56650223, "Atemu": 18599032, "RaitoBezarius": 314564, "davidak": 91113, - "mschwaig": 3856390 + "mschwaig": 3856390, + "zimbatm": 3248 }, "name": "reproducible" }, @@ -964,13 +963,13 @@ "description": "Maintain the standard environment and its surrounding logic.", "id": 11265412, "maintainers": { - "RossComputerGuy": 19699320 + "RossComputerGuy": 19699320, + "emilazy": 18535642, + "philiptaron": 43863 }, "members": { "Artturin": 56650223, "Ericson2314": 1055245, - "emilazy": 18535642, - "philiptaron": 43863, "reckenrode": 7413633 }, "name": "stdenv" diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 5948b546be59..24fa2e09202c 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -6686,6 +6686,12 @@ githubId = 90097; name = "Derek Collison"; }; + DerGrumpf = { + email = "phil.keier@hotmail.com"; + github = "DerGrumpf"; + githubId = 17272572; + name = "Phil Keier"; + }; DerGuteMoritz = { email = "moritz@twoticketsplease.de"; github = "DerGuteMoritz"; @@ -10681,12 +10687,6 @@ githubId = 2427959; name = "Hector Jusforgues"; }; - hedning = { - email = "torhedinbronner@gmail.com"; - github = "hedning"; - githubId = 71978; - name = "Tor Hedin Brønner"; - }; heel = { email = "parizhskiy@gmail.com"; github = "HeeL"; diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 7abb090aa47e..23e888c602eb 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -130,6 +130,8 @@ - [linkding](https://linkding.link/), a self-hosted bookmark manager designed to be minimal, fast, and easy to set up. Available as [services.linkding](#opt-services.linkding.enable). +- [gs1200-exporter](https://github.com/robinelfrink/gs1200-exporter), a Prometheus exporter for Zyxel GS1200 series switches. Available as [services.gs1200-exporter](#opt-services.gs1200-exporter.enable). + - [Tinyauth](https://tinyauth.app/), a simple authentication middleware for web apps, with OAuth and LDAP support. Available as [services.tinyauth](#opt-services.tinyauth.enable). - [Strichliste](https://www.strichliste.org), a digital self-service tallysheet used in hackerspaces, clubs and offices. Available as [services.strichliste](#opt-services.strichliste.enable). diff --git a/nixos/doc/manual/release-notes/rl-2611.section.md b/nixos/doc/manual/release-notes/rl-2611.section.md index 377a291631f6..a83956a26d17 100644 --- a/nixos/doc/manual/release-notes/rl-2611.section.md +++ b/nixos/doc/manual/release-notes/rl-2611.section.md @@ -26,6 +26,8 @@ - `services.timesyncd.extraConfig` has been removed in favor of the structured [](#opt-services.timesyncd.settings.Time) option. Use `services.timesyncd.settings.Time` to set any `timesyncd.conf(5)` option directly. For example, replace `services.timesyncd.extraConfig = "PollIntervalMaxSec=180";` with `services.timesyncd.settings.Time.PollIntervalMaxSec = 180;`. +- `services.firezone.server.provision` has been removed due to it being unmaintanable. Remove all uses of provisioning and use the WebUI to configure firezone. + ## Other Notable Changes {#sec-release-26.11-notable-changes} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 1e72cd36c9bc..9f1374926b11 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1033,6 +1033,7 @@ ./services/monitoring/grafana-to-ntfy.nix ./services/monitoring/grafana.nix ./services/monitoring/graphite.nix + ./services/monitoring/gs1200-exporter.nix ./services/monitoring/hdaps.nix ./services/monitoring/heapster.nix ./services/monitoring/incron.nix diff --git a/nixos/modules/services/hardware/scanservjs.nix b/nixos/modules/services/hardware/scanservjs.nix index 774bff45744b..c923ddb5a7b5 100644 --- a/nixos/modules/services/hardware/scanservjs.nix +++ b/nixos/modules/services/hardware/scanservjs.nix @@ -125,6 +125,12 @@ in }; users.groups.scanservjs = { }; + systemd.tmpfiles.rules = [ + "d ${cfg.stateDir}/data 0755 scanservjs scanservjs - -" + "d ${cfg.stateDir}/data/preview 0755 scanservjs scanservjs - -" + "L+ ${cfg.stateDir}/data/preview/default.jpg - - - - ${package}/lib/data/preview/default.jpg" + ]; + systemd.services.scanservjs = { description = "scanservjs"; after = [ "network.target" ]; diff --git a/nixos/modules/services/monitoring/gs1200-exporter.nix b/nixos/modules/services/monitoring/gs1200-exporter.nix new file mode 100644 index 000000000000..96be5a9d659f --- /dev/null +++ b/nixos/modules/services/monitoring/gs1200-exporter.nix @@ -0,0 +1,95 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.services.gs1200-exporter; +in +{ + meta.maintainers = with lib.maintainers; [ DerGrumpf ]; + + options.services.gs1200-exporter = { + enable = lib.mkEnableOption "gs1200-exporter"; + + address = lib.mkOption { + type = lib.types.str; + description = "IP address or hostname of the GS1200 switch."; + example = "192.168.1.3"; + }; + + port = lib.mkOption { + type = lib.types.port; + default = 9934; + description = "Port on which to expose Prometheus metrics."; + }; + + passwordFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + description = '' + Path to a file containing the password to log in to the GS1200 web interface. + This is the recommended option as it avoids storing the password in the Nix store. + Compatible with sops-nix and agenix. + ''; + example = "/run/secrets/gs1200-password"; + }; + + debug = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable debug logging. Logs are accessible via journalctl -u gs1200-exporter."; + }; + + verbose = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable verbose logging. Logs are accessible via journalctl -u gs1200-exporter."; + }; + + json = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Output logs in JSON format. Logs are accessible via journalctl -u gs1200-exporter."; + }; + }; + + config = lib.mkIf cfg.enable { + + systemd.services.gs1200-exporter = { + description = "Prometheus exporter for Zyxel GS1200 switches"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + DynamicUser = true; + Restart = "always"; + + # Hardening + NoNewPrivileges = true; + PrivateTmp = true; + ProtectSystem = "strict"; + ProtectHome = true; + CapabilityBoundingSet = ""; + }; + + script = + let + args = lib.concatStringsSep " " ( + [ + "--address ${cfg.address}" + "--port ${toString cfg.port}" + ] + ++ lib.optional cfg.debug "--debug" + ++ lib.optional cfg.verbose "--verbose" + ++ lib.optional cfg.json "--json" + ); + in + '' + export GS1200_PASSWORD=$(cat ${cfg.passwordFile}) + exec ${lib.getExe pkgs.gs1200-exporter} ${args} + ''; + }; + }; +} diff --git a/nixos/modules/services/networking/firezone/provision.exs b/nixos/modules/services/networking/firezone/provision.exs deleted file mode 100644 index 9651140525e2..000000000000 --- a/nixos/modules/services/networking/firezone/provision.exs +++ /dev/null @@ -1,709 +0,0 @@ -defmodule Provision do - alias Domain.{Repo, Accounts, Auth, Actors, Resources, Tokens, Gateways, Relays, Policies} - require Logger - - # UUID Mapping handling - defmodule UuidMapping do - @mapping_file "provision-uuids.json" - - # Loads the mapping from file - def load do - mappings = case File.read(@mapping_file) do - {:ok, content} -> - case Jason.decode(content) do - {:ok, mapping} -> mapping - _ -> %{"accounts" => %{}} - end - - _ -> %{"accounts" => %{}} - end - Process.put(:uuid_mappings, mappings) - mappings - end - - # Saves the current mapping (defaulting to the one in the process dictionary) - def save(mapping \\ Process.get(:uuid_mappings)) do - File.write!(@mapping_file, Jason.encode!(mapping)) - end - - # Retrieves the account-level mapping from a given mapping (or from Process) - def get_account(mapping \\ Process.get(:uuid_mappings), account_slug) do - get_in(mapping, ["accounts", account_slug]) || %{} - end - - # Retrieves the entity mapping for a specific account and type - def get_entities(mapping \\ Process.get(:uuid_mappings), account_slug, type) do - get_in(mapping, ["accounts", account_slug, type]) || %{} - end - - # Retrieves an entity mapping for a specific account, type and external_id - def get_entity(mapping \\ Process.get(:uuid_mappings), account_slug, type, external_id) do - get_in(mapping, ["accounts", account_slug, type, external_id]) - end - - # Updates (or creates) the account UUID mapping and stores it in the process dictionary. - def update_account(account_slug, uuid) do - mapping = Process.get(:uuid_mappings) || load() - mapping = ensure_account_exists(mapping, account_slug) - mapping = put_in(mapping, ["accounts", account_slug, "id"], uuid) - Process.put(:uuid_mappings, mapping) - mapping - end - - # Ensures that the given account exists in the mapping. - def ensure_account_exists(mapping, account_slug) do - if not Map.has_key?(mapping["accounts"], account_slug) do - put_in(mapping, ["accounts", account_slug], %{}) - else - mapping - end - end - - # Updates (or creates) the mapping for entities of a given type for the account. - def update_entities(account_slug, type, new_entries) do - mapping = Process.get(:uuid_mappings) || load() - mapping = ensure_account_exists(mapping, account_slug) - current = get_entities(mapping, account_slug, type) - mapping = put_in(mapping, ["accounts", account_slug, type], Map.merge(current, new_entries)) - Process.put(:uuid_mappings, mapping) - mapping - end - - # Removes an entire account from the mapping. - def remove_account(account_slug) do - mapping = Process.get(:uuid_mappings) || load() - mapping = update_in(mapping, ["accounts"], fn accounts -> - Map.delete(accounts, account_slug) - end) - Process.put(:uuid_mappings, mapping) - mapping - end - - # Removes a specific entity mapping for the account. - def remove_entity(account_slug, type, key) do - mapping = Process.get(:uuid_mappings) || load() - mapping = update_in(mapping, ["accounts", account_slug, type], fn entities -> - Map.delete(entities || %{}, key) - end) - Process.put(:uuid_mappings, mapping) - mapping - end - end - - defp resolve_references(value) when is_map(value) do - Enum.into(value, %{}, fn {k, v} -> {k, resolve_references(v)} end) - end - - defp resolve_references(value) when is_list(value) do - Enum.map(value, &resolve_references/1) - end - - defp resolve_references(value) when is_binary(value) do - Regex.replace(~r/\{env:([^}]+)\}/, value, fn _, var -> - System.get_env(var) || raise "Environment variable #{var} not set" - end) - end - - defp resolve_references(value), do: value - - defp atomize_keys(map) when is_map(map) do - Enum.into(map, %{}, fn {k, v} -> - { - if(is_binary(k), do: String.to_atom(k), else: k), - if(is_map(v), do: atomize_keys(v), else: v) - } - end) - end - - defp cleanup_account(uuid) do - case Accounts.fetch_account_by_id_or_slug(uuid) do - {:ok, value} when value.deleted_at == nil -> - Logger.info("Deleting removed account #{value.slug}") - value |> Ecto.Changeset.change(%{ deleted_at: DateTime.utc_now() }) |> Repo.update!() - _ -> :ok - end - end - - defp cleanup_actor(uuid, subject) do - case Actors.fetch_actor_by_id(uuid, subject) do - {:ok, value} -> - Logger.info("Deleting removed actor #{value.name}") - {:ok, _} = Actors.delete_actor(value, subject) - _ -> :ok - end - end - - defp cleanup_provider(uuid, subject) do - case Auth.fetch_provider_by_id(uuid, subject) do - {:ok, value} -> - Logger.info("Deleting removed provider #{value.name}") - {:ok, _} = Auth.delete_provider(value, subject) - _ -> :ok - end - end - - defp cleanup_gateway_group(uuid, subject) do - case Gateways.fetch_group_by_id(uuid, subject) do - {:ok, value} -> - Logger.info("Deleting removed gateway group #{value.name}") - {:ok, _} = Gateways.delete_group(value, subject) - _ -> :ok - end - end - - defp cleanup_relay_group(uuid, subject) do - case Relays.fetch_group_by_id(uuid, subject) do - {:ok, value} -> - Logger.info("Deleting removed relay group #{value.name}") - {:ok, _} = Relays.delete_group(value, subject) - _ -> :ok - end - end - - defp cleanup_actor_group(uuid, subject) do - case Actors.fetch_group_by_id(uuid, subject) do - {:ok, value} -> - Logger.info("Deleting removed actor group #{value.name}") - {:ok, _} = Actors.delete_group(value, subject) - _ -> :ok - end - end - - # Fetch resource by uuid, but follow the chain of replacements if any - defp fetch_resource(uuid, subject) do - case Resources.fetch_resource_by_id(uuid, subject) do - {:ok, resource} when resource.replaced_by_resource_id != nil -> fetch_resource(resource.replaced_by_resource_id, subject) - v -> v - end - end - - defp cleanup_resource(uuid, subject) do - case fetch_resource(uuid, subject) do - {:ok, value} when value.deleted_at == nil -> - Logger.info("Deleting removed resource #{value.name}") - {:ok, _} = Resources.delete_resource(value, subject) - _ -> :ok - end - end - - # Fetch policy by uuid, but follow the chain of replacements if any - defp fetch_policy(uuid, subject) do - case Policies.fetch_policy_by_id(uuid, subject) do - {:ok, policy} when policy.replaced_by_policy_id != nil -> fetch_policy(policy.replaced_by_policy_id, subject) - v -> v - end - end - - defp cleanup_policy(uuid, subject) do - case fetch_policy(uuid, subject) do - {:ok, value} when value.deleted_at == nil -> - Logger.info("Deleting removed policy #{value.description}") - {:ok, _} = Policies.delete_policy(value, subject) - _ -> :ok - end - end - - defp cleanup_entity_type(account_slug, entity_type, cleanup_fn, temp_admin_subject) do - # Get mapping for this entity type - existing_entities = UuidMapping.get_entities(account_slug, entity_type) - # Get current entities from account data - current_entities = Process.get(:current_entities) - # Determine which ones to remove - removed_entity_ids = Map.keys(existing_entities) -- (current_entities[entity_type] || []) - - # Process each entity to remove - Enum.each(removed_entity_ids, fn entity_id -> - case existing_entities[entity_id] do - nil -> :ok - uuid -> - cleanup_fn.(uuid, temp_admin_subject) - UuidMapping.remove_entity(account_slug, entity_type, entity_id) - end - end) - end - - defp collect_current_entities(account_data) do - %{ - "actors" => Map.keys(account_data["actors"] || %{}), - "providers" => Map.keys(account_data["auth"] || %{}), - "gateway_groups" => Map.keys(account_data["gatewayGroups"] || %{}), - "relay_groups" => Map.keys(account_data["relayGroups"] || %{}), - "actor_groups" => Map.keys(account_data["groups"] || %{}) ++ ["everyone"], - "resources" => Map.keys(account_data["resources"] || %{}), - "policies" => Map.keys(account_data["policies"] || %{}) - } - end - - defp nil_if_deleted_or_not_found(value) do - case value do - nil -> nil - {:error, :not_found} -> nil - {:ok, value} when value.deleted_at != nil -> nil - v -> v - end - end - - defp create_temp_admin(account, email_provider) do - temp_admin_actor_email = "firezone-provision@localhost.local" - temp_admin_actor_context = %Auth.Context{ - type: :browser, - user_agent: "Unspecified/0.0", - remote_ip: {127, 0, 0, 1}, - remote_ip_location_region: "N/A", - remote_ip_location_city: "N/A", - remote_ip_location_lat: 0.0, - remote_ip_location_lon: 0.0 - } - - {:ok, temp_admin_actor} = - Actors.create_actor(account, %{ - type: :account_admin_user, - name: "Provisioning" - }) - - {:ok, temp_admin_actor_email_identity} = - Auth.create_identity(temp_admin_actor, email_provider, %{ - provider_identifier: temp_admin_actor_email, - provider_identifier_confirmation: temp_admin_actor_email - }) - - {:ok, temp_admin_actor_token} = - Auth.create_token(temp_admin_actor_email_identity, temp_admin_actor_context, "temporarynonce", DateTime.utc_now() |> DateTime.add(1, :hour)) - - {:ok, temp_admin_subject} = - Auth.build_subject(temp_admin_actor_token, temp_admin_actor_context) - - {temp_admin_subject, temp_admin_actor, temp_admin_actor_email_identity, temp_admin_actor_token} - end - - defp cleanup_temp_admin(temp_admin_actor, temp_admin_actor_email_identity, temp_admin_actor_token, subject) do - Logger.info("Cleaning up temporary admin actor") - {:ok, _} = Tokens.delete_token(temp_admin_actor_token, subject) - {:ok, _} = Auth.delete_identity(temp_admin_actor_email_identity, subject) - {:ok, _} = Actors.delete_actor(temp_admin_actor, subject) - end - - def provision() do - Logger.info("Starting provisioning") - - # Load desired state - json_file = "provision-state.json" - {:ok, raw_json} = File.read(json_file) - {:ok, %{"accounts" => accounts}} = Jason.decode(raw_json) - accounts = resolve_references(accounts) - - # Load existing UUID mappings into the process dictionary. - UuidMapping.load() - - # Clean up removed accounts first - current_account_slugs = Map.keys(accounts) - existing_accounts = Map.keys(Process.get(:uuid_mappings)["accounts"]) - removed_accounts = existing_accounts -- current_account_slugs - - Enum.each(removed_accounts, fn slug -> - if uuid = get_in(Process.get(:uuid_mappings), ["accounts", slug, "id"]) do - cleanup_account(uuid) - # Remove the account from the UUID mapping. - UuidMapping.remove_account(slug) - end - end) - - multi = Enum.reduce(accounts, Ecto.Multi.new(), fn {slug, account_data}, multi -> - account_attrs = atomize_keys(%{ - name: account_data["name"], - slug: slug, - features: Map.get(account_data, "features", %{}), - metadata: Map.get(account_data, "metadata", %{}), - limits: Map.get(account_data, "limits", %{}) - }) - - multi = multi - |> Ecto.Multi.run({:account, slug}, fn repo, _changes -> - case Accounts.fetch_account_by_id_or_slug(slug) do - {:ok, acc} -> - Logger.info("Updating existing account #{slug}") - updated_acc = acc |> Ecto.Changeset.change(account_attrs) |> repo.update!() - {:ok, {:existing, updated_acc}} - _ -> - Logger.info("Creating new account #{slug}") - {:ok, account} = Accounts.create_account(account_attrs) - - Logger.info("Creating internet gateway group") - {:ok, internet_site} = Gateways.create_internet_group(account) - - Logger.info("Creating internet resource") - {:ok, _internet_resource} = Resources.create_internet_resource(account, internet_site) - - # Store mapping of slug to UUID - UuidMapping.update_account(slug, account.id) - {:ok, {:new, account}} - end - end) - |> Ecto.Multi.run({:everyone_group, slug}, fn _repo, changes -> - case Map.get(changes, {:account, slug}) do - {:new, account} -> - Logger.info("Creating everyone group for new account") - {:ok, actor_group} = Actors.create_managed_group(account, %{name: "Everyone"}) - UuidMapping.update_entities(slug, "actor_groups", %{"everyone" => actor_group.id}) - {:ok, actor_group} - {:existing, _account} -> - {:ok, :skipped} - end - end) - |> Ecto.Multi.run({:email_provider, slug}, fn _repo, changes -> - case Map.get(changes, {:account, slug}) do - {:new, account} -> - Logger.info("Creating default email provider for new account") - Auth.create_provider(account, %{name: "Email", adapter: :email, adapter_config: %{}}) - {:existing, account} -> - Auth.Provider.Query.not_disabled() - |> Auth.Provider.Query.by_adapter(:email) - |> Auth.Provider.Query.by_account_id(account.id) - |> Repo.fetch(Auth.Provider.Query, []) - end - end) - |> Ecto.Multi.run({:temp_admin, slug}, fn _repo, changes -> - {_, account} = changes[{:account, slug}] - email_provider = changes[{:email_provider, slug}] - {:ok, create_temp_admin(account, email_provider)} - end) - - # Clean up removed entities for this account after we have an admin subject - multi = multi - |> Ecto.Multi.run({:cleanup_entities, slug}, fn _repo, changes -> - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - - # Store current entities in process dictionary for our helper function - current_entities = collect_current_entities(account_data) - Process.put(:current_entities, current_entities) - - # Define entity types and their cleanup functions - entity_types = [ - {"actors", &cleanup_actor/2}, - {"providers", &cleanup_provider/2}, - {"gateway_groups", &cleanup_gateway_group/2}, - {"relay_groups", &cleanup_relay_group/2}, - {"actor_groups", &cleanup_actor_group/2}, - {"resources", &cleanup_resource/2}, - {"policies", &cleanup_policy/2} - ] - - # Clean up each entity type - Enum.each(entity_types, fn {entity_type, cleanup_fn} -> - cleanup_entity_type(slug, entity_type, cleanup_fn, temp_admin_subject) - end) - - {:ok, :cleaned} - end) - - # Create or update actors - multi = Enum.reduce(account_data["actors"] || %{}, multi, fn {external_id, actor_data}, multi -> - actor_attrs = atomize_keys(%{ - name: actor_data["name"], - type: String.to_atom(actor_data["type"]) - }) - - Ecto.Multi.run(multi, {:actor, slug, external_id}, fn _repo, changes -> - {_, account} = changes[{:account, slug}] - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - uuid = UuidMapping.get_entity(slug, "actors", external_id) - case uuid && Actors.fetch_actor_by_id(uuid, temp_admin_subject) |> nil_if_deleted_or_not_found() do - nil -> - Logger.info("Creating new actor #{actor_data["name"]}") - {:ok, actor} = Actors.create_actor(account, actor_attrs) - # Update the mapping without manually handling Process.get/put. - UuidMapping.update_entities(slug, "actors", %{external_id => actor.id}) - {:ok, {:new, actor}} - {:ok, existing_actor} -> - Logger.info("Updating existing actor #{actor_data["name"]}") - {:ok, updated_act} = Actors.update_actor(existing_actor, actor_attrs, temp_admin_subject) - {:ok, {:existing, updated_act}} - end - end) - |> Ecto.Multi.run({:actor_identity, slug, external_id}, fn repo, changes -> - email_provider = changes[{:email_provider, slug}] - case Map.get(changes, {:actor, slug, external_id}) do - {:new, actor} -> - Logger.info("Creating actor email identity") - Auth.create_identity(actor, email_provider, %{ - provider_identifier: actor_data["email"], - provider_identifier_confirmation: actor_data["email"] - }) - {:existing, actor} -> - Logger.info("Updating actor email identity") - {:ok, identity} = Auth.Identity.Query.not_deleted() - |> Auth.Identity.Query.by_actor_id(actor.id) - |> Auth.Identity.Query.by_provider_id(email_provider.id) - |> Repo.fetch(Auth.Identity.Query, []) - - {:ok, identity |> Ecto.Changeset.change(%{ - provider_identifier: actor_data["email"] - }) |> repo.update!()} - end - end) - end) - - # Create or update providers - multi = Enum.reduce(account_data["auth"] || %{}, multi, fn {external_id, provider_data}, multi -> - Ecto.Multi.run(multi, {:provider, slug, external_id}, fn repo, changes -> - provider_attrs = %{ - name: provider_data["name"], - adapter: String.to_atom(provider_data["adapter"]), - adapter_config: provider_data["adapter_config"] - } - - {_, account} = changes[{:account, slug}] - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - uuid = UuidMapping.get_entity(slug, "providers", external_id) - case uuid && Auth.fetch_provider_by_id(uuid, temp_admin_subject) |> nil_if_deleted_or_not_found() do - nil -> - Logger.info("Creating new provider #{provider_data["name"]}") - {:ok, provider} = Auth.create_provider(account, provider_attrs) - UuidMapping.update_entities(slug, "providers", %{external_id => provider.id}) - {:ok, provider} - {:ok, existing} -> - Logger.info("Updating existing provider #{provider_data["name"]}") - {:ok, existing |> Ecto.Changeset.change(provider_attrs) |> repo.update!()} - end - end) - end) - - # Create or update gateway_groups - multi = Enum.reduce(account_data["gatewayGroups"] || %{}, multi, fn {external_id, gateway_group_data}, multi -> - Ecto.Multi.run(multi, {:gateway_group, slug, external_id}, fn _repo, changes -> - gateway_group_attrs = %{ - name: gateway_group_data["name"], - tokens: [%{}] - } - - {_, account} = changes[{:account, slug}] - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - uuid = UuidMapping.get_entity(slug, "gateway_groups", external_id) - case uuid && Gateways.fetch_group_by_id(uuid, temp_admin_subject) |> nil_if_deleted_or_not_found() do - nil -> - Logger.info("Creating new gateway group #{gateway_group_data["name"]}") - gateway_group = account - |> Gateways.Group.Changeset.create(gateway_group_attrs, temp_admin_subject) - |> Repo.insert!() - UuidMapping.update_entities(slug, "gateway_groups", %{external_id => gateway_group.id}) - {:ok, gateway_group} - {:ok, existing} -> - # Nothing to update - {:ok, existing} - end - end) - end) - - # Create or update relay_groups - multi = Enum.reduce(account_data["relayGroups"] || %{}, multi, fn {external_id, relay_group_data}, multi -> - Ecto.Multi.run(multi, {:relay_group, slug, external_id}, fn _repo, changes -> - relay_group_attrs = %{ - name: relay_group_data["name"] - } - - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - uuid = UuidMapping.get_entity(slug, "relay_groups", external_id) - existing_relay_group = uuid && Relays.fetch_group_by_id(uuid, temp_admin_subject) - case existing_relay_group do - v when v in [nil, {:error, :not_found}] -> - Logger.info("Creating new relay group #{relay_group_data["name"]}") - {:ok, relay_group} = Relays.create_group(relay_group_attrs, temp_admin_subject) - UuidMapping.update_entities(slug, "relay_groups", %{external_id => relay_group.id}) - {:ok, relay_group} - {:ok, existing} -> - # Nothing to update - {:ok, existing} - end - end) - end) - - # Create or update actor_groups - multi = Enum.reduce(account_data["groups"] || %{}, multi, fn {external_id, actor_group_data}, multi -> - Ecto.Multi.run(multi, {:actor_group, slug, external_id}, fn _repo, changes -> - actor_group_attrs = %{ - name: actor_group_data["name"], - type: :static - } - - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - uuid = UuidMapping.get_entity(slug, "actor_groups", external_id) - case uuid && Actors.fetch_group_by_id(uuid, temp_admin_subject) |> nil_if_deleted_or_not_found() do - nil -> - Logger.info("Creating new actor group #{actor_group_data["name"]}") - {:ok, actor_group} = Actors.create_group(actor_group_attrs, temp_admin_subject) - UuidMapping.update_entities(slug, "actor_groups", %{external_id => actor_group.id}) - {:ok, actor_group} - {:ok, existing} -> - # Nothing to update - {:ok, existing} - end - end) - |> Ecto.Multi.run({:actor_group_members, slug, external_id}, fn repo, changes -> - {_, account} = changes[{:account, slug}] - group_uuid = UuidMapping.get_entity(slug, "actor_groups", external_id) - - memberships = - Actors.Membership.Query.all() - |> Actors.Membership.Query.by_group_id(group_uuid) - |> Actors.Membership.Query.returning_all() - |> Repo.all() - - existing_members = Enum.map(memberships, fn membership -> membership.actor_id end) - desired_members = Enum.map(actor_group_data["members"] || [], fn member -> - uuid = UuidMapping.get_entity(slug, "actors", member) - if uuid == nil do - raise "Cannot find provisioned actor #{member} to add to group" - end - uuid - end) - - missing_members = desired_members -- existing_members - untracked_members = existing_members -- desired_members - - Logger.info("Updating members for actor group #{external_id}") - Enum.each(missing_members || [], fn actor_uuid -> - Logger.info("Adding member #{external_id}") - Actors.Membership.Changeset.upsert(account.id, %Actors.Membership{}, %{ - group_id: group_uuid, - actor_id: actor_uuid - }) - |> repo.insert!() - end) - - if actor_group_data["forceMembers"] == true do - # Remove untracked members - to_delete = Enum.map(untracked_members, fn actor_uuid -> {group_uuid, actor_uuid} end) - if to_delete != [] do - Actors.Membership.Query.by_group_id_and_actor_id({:in, to_delete}) - |> repo.delete_all() - end - end - - {:ok, nil} - end) - end) - - # Create or update resources - multi = Enum.reduce(account_data["resources"] || %{}, multi, fn {external_id, resource_data}, multi -> - Ecto.Multi.run(multi, {:resource, slug, external_id}, fn _repo, changes -> - resource_attrs = %{ - type: String.to_atom(resource_data["type"]), - name: resource_data["name"], - address: resource_data["address"], - address_description: resource_data["address_description"], - connections: Enum.map(resource_data["gatewayGroups"] || [], fn group -> - %{gateway_group_id: UuidMapping.get_entity(slug, "gateway_groups", group)} - end), - filters: Enum.map(resource_data["filters"] || [], fn filter -> - %{ - ports: filter["ports"] || [], - protocol: String.to_atom(filter["protocol"]) - } - end) - } - - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - uuid = UuidMapping.get_entity(slug, "resources", external_id) - case uuid && fetch_resource(uuid, temp_admin_subject) |> nil_if_deleted_or_not_found() do - nil -> - Logger.info("Creating new resource #{resource_data["name"]}") - {:ok, resource} = Resources.create_resource(resource_attrs, temp_admin_subject) - UuidMapping.update_entities(slug, "resources", %{external_id => resource.id}) - {:ok, resource} - {:ok, existing} -> - existing = Repo.preload(existing, :connections) - Logger.info("Updating existing resource #{resource_data["name"]}") - only_updated_attrs = resource_attrs - |> Enum.reject(fn {key, value} -> - case key do - # Compare connections by gateway_group_id only - :connections -> value == Enum.map(existing.connections || [], fn conn -> Map.take(conn, [:gateway_group_id]) end) - # Compare filters by ports and protocol only - :filters -> value == Enum.map(existing.filters || [], fn filter -> Map.take(filter, [:ports, :protocol]) end) - _ -> Map.get(existing, key) == value - end - end) - |> Enum.into(%{}) - - if only_updated_attrs == %{} do - {:ok, existing} - else - resource = case existing |> Resources.update_resource(resource_attrs, temp_admin_subject) do - {:replaced, _old, new} -> - UuidMapping.update_entities(slug, "resources", %{external_id => new.id}) - new - {:updated, value} -> value - x -> x - end - - {:ok, resource} - end - end - end) - end) - - # Create or update policies - multi = Enum.reduce(account_data["policies"] || %{}, multi, fn {external_id, policy_data}, multi -> - Ecto.Multi.run(multi, {:policy, slug, external_id}, fn _repo, changes -> - policy_attrs = %{ - description: policy_data["description"], - actor_group_id: UuidMapping.get_entity(slug, "actor_groups", policy_data["group"]), - resource_id: UuidMapping.get_entity(slug, "resources", policy_data["resource"]) - } - - {temp_admin_subject, _, _, _} = changes[{:temp_admin, slug}] - uuid = UuidMapping.get_entity(slug, "policies", external_id) - case uuid && fetch_policy(uuid, temp_admin_subject) |> nil_if_deleted_or_not_found() do - nil -> - Logger.info("Creating new policy #{policy_data["name"]}") - {:ok, policy} = Policies.create_policy(policy_attrs, temp_admin_subject) - UuidMapping.update_entities(slug, "policies", %{external_id => policy.id}) - {:ok, policy} - {:ok, existing} -> - Logger.info("Updating existing policy #{policy_data["name"]}") - only_updated_attrs = policy_attrs - |> Enum.reject(fn {key, value} -> Map.get(existing, key) == value end) - |> Enum.into(%{}) - - if only_updated_attrs == %{} do - {:ok, existing} - else - policy = case existing |> Policies.update_policy(policy_attrs, temp_admin_subject) do - {:replaced, _old, new} -> - UuidMapping.update_entities(slug, "policies", %{external_id => new.id}) - new - {:updated, value} -> value - x -> x - end - - {:ok, policy} - end - end - end) - end) - - # Clean up temporary admin after all operations - multi |> Ecto.Multi.run({:cleanup_temp_admin, slug}, fn _repo, changes -> - {temp_admin_subject, temp_admin_actor, temp_admin_actor_email_identity, temp_admin_actor_token} = - changes[{:temp_admin, slug}] - - cleanup_temp_admin(temp_admin_actor, temp_admin_actor_email_identity, temp_admin_actor_token, temp_admin_subject) - {:ok, :cleaned} - end) - end) - |> Ecto.Multi.run({:save_state}, fn _repo, _changes -> - # Save all UUID mappings to disk. - UuidMapping.save() - {:ok, :saved} - end) - - case Repo.transaction(multi) do - {:ok, _result} -> - Logger.info("Provisioning completed successfully") - {:error, step, reason, _changes} -> - Logger.error("Provisioning failed at step #{inspect(step)}, no changes were applied: #{inspect(reason)}") - end - end -end - -Provision.provision() diff --git a/nixos/modules/services/networking/firezone/server.nix b/nixos/modules/services/networking/firezone/server.nix index 7ca9be490632..66f2072a8426 100644 --- a/nixos/modules/services/networking/firezone/server.nix +++ b/nixos/modules/services/networking/firezone/server.nix @@ -9,12 +9,8 @@ let attrNames boolToString concatLines - concatLists - concatMapAttrs concatStringsSep filterAttrs - filterAttrsRecursive - flip forEach getExe isBool @@ -26,16 +22,11 @@ let mkMerge mkOption mkPackageOption - optionalAttrs - optionalString - recursiveUpdate subtractLists - toUpper types ; cfg = config.services.firezone.server; - jsonFormat = pkgs.formats.json { }; availableAuthAdapters = [ "email" "openid_connect" @@ -47,28 +38,6 @@ let "jumpcloud" ]; - typePortRange = - types.coercedTo types.port - (x: { - from = x; - to = x; - }) - ( - types.submodule { - options = { - from = mkOption { - type = types.port; - description = "The start of the port range, inclusive."; - }; - - to = mkOption { - type = types.port; - description = "The end of the port range, inclusive."; - }; - }; - } - ); - # All non-secret environment variables or the given component collectEnvironment = component: @@ -119,29 +88,6 @@ let ) ); - provisionStateJson = - let - # Convert clientSecretFile options into the real counterpart - augmentedAccounts = flip mapAttrs cfg.provision.accounts ( - accountName: account: - account - // { - auth = flip mapAttrs account.auth ( - authName: auth: - recursiveUpdate auth ( - optionalAttrs (auth.adapter_config.clientSecretFile != null) { - adapter_config.client_secret = "{env:AUTH_CLIENT_SECRET_${toUpper accountName}_${toUpper authName}}"; - } - ) - ); - } - ); - in - jsonFormat.generate "provision-state.json" { - # Do not include any clientSecretFile attributes in the resulting json - accounts = filterAttrsRecursive (k: _: k != "clientSecretFile") augmentedAccounts; - }; - commonServiceConfig = { AmbientCapabilities = [ ]; CapabilityBoundingSet = [ ]; @@ -222,6 +168,12 @@ let }; in { + imports = [ + (lib.mkRemovedOptionModule [ "services" "firezone" "server" "provision" ] '' + Firezone provisioning support has been removed due to outsized maintenance efforts. See https://github.com/NixOS/nixpkgs/pull/529428. + '') + ]; + options.services.firezone.server = { enable = mkEnableOption "all Firezone components"; enableLocalDB = mkEnableOption "a local postgresql database for Firezone"; @@ -521,393 +473,9 @@ in description = "A list of trusted proxies"; }; }; - - provision = { - enable = mkEnableOption "provisioning of the Firezone domain server"; - accounts = mkOption { - type = types.attrsOf ( - types.submodule { - freeformType = jsonFormat.type; - options = { - name = mkOption { - type = types.str; - description = "The account name"; - example = "My Organization"; - }; - - features = - let - mkFeatureOption = - name: default: - mkOption { - type = types.bool; - inherit default; - description = "Whether to enable the `${name}` feature for this account."; - }; - in - { - policy_conditions = mkFeatureOption "policy_conditions" true; - multi_site_resources = mkFeatureOption "multi_site_resources" true; - traffic_filters = mkFeatureOption "traffic_filters" true; - self_hosted_relays = mkFeatureOption "self_hosted_relays" true; - idp_sync = mkFeatureOption "idp_sync" true; - rest_api = mkFeatureOption "rest_api" true; - internet_resource = mkFeatureOption "internet_resource" true; - }; - - actors = mkOption { - type = types.attrsOf ( - types.submodule { - options = { - type = mkOption { - type = types.enum [ - "account_admin_user" - "account_user" - "service_account" - "api_client" - ]; - description = "The account type"; - }; - - name = mkOption { - type = types.str; - description = "The name of this actor"; - }; - - email = mkOption { - type = types.str; - description = "The email address used to authenticate as this account"; - }; - }; - } - ); - default = { }; - example = { - admin = { - type = "account_admin_user"; - name = "Admin"; - email = "admin@myorg.example.com"; - }; - }; - description = '' - All actors (users) to provision. The attribute name will only - be used to track the actor and does not have any significance - for Firezone. - ''; - }; - - auth = mkOption { - type = types.attrsOf ( - types.submodule { - freeformType = jsonFormat.type; - options = { - name = mkOption { - type = types.str; - description = "The name of this authentication provider"; - }; - - adapter = mkOption { - type = types.enum availableAuthAdapters; - description = "The auth adapter type"; - }; - - adapter_config.clientSecretFile = mkOption { - type = types.nullOr types.path; - default = null; - description = '' - A file containing a the client secret for an openid_connect adapter. - You only need to set this if this is an openid_connect provider. - ''; - }; - }; - } - ); - default = { }; - example = { - myoidcprovider = { - adapter = "openid_connect"; - adapter_config = { - client_id = "clientid"; - clientSecretFile = "/run/secrets/oidc-client-secret"; - response_type = "code"; - scope = "openid email name"; - discovery_document_uri = "https://auth.example.com/.well-known/openid-configuration"; - }; - }; - }; - description = '' - All authentication providers to provision. The attribute name - will only be used to track the provider and does not have any - significance for Firezone. - ''; - }; - - resources = mkOption { - type = types.attrsOf ( - types.submodule { - options = { - type = mkOption { - type = types.enum [ - "dns" - "cidr" - "ip" - ]; - description = "The resource type"; - }; - - name = mkOption { - type = types.str; - description = "The name of this resource"; - }; - - address = mkOption { - type = types.str; - description = "The address of this resource. Depending on the resource type, this should be an ip, ip with cidr mask or a domain."; - }; - - addressDescription = mkOption { - type = types.nullOr types.str; - default = null; - description = "An optional description for resource address, usually a full link to the resource including a schema."; - }; - - gatewayGroups = mkOption { - type = types.nonEmptyListOf types.str; - description = "A list of gateway groups (sites) which can reach the resource and may be used to connect to it."; - }; - - filters = mkOption { - type = types.listOf ( - types.submodule { - options = { - protocol = mkOption { - type = types.enum [ - "icmp" - "tcp" - "udp" - ]; - description = "The protocol to allow"; - }; - - ports = mkOption { - type = types.listOf typePortRange; - example = [ - 443 - { - from = 8080; - to = 8100; - } - ]; - default = [ ]; - apply = - xs: map (x: if x.from == x.to then toString x.from else "${toString x.from} - ${toString x.to}") xs; - description = "Either a single port or port range to allow. Both bounds are inclusive."; - }; - }; - } - ); - default = [ ]; - description = "A list of filter to restrict traffic. If no filters are given, all traffic is allowed."; - }; - }; - } - ); - default = { }; - example = { - vaultwarden = { - type = "dns"; - name = "Vaultwarden"; - address = "vault.example.com"; - address_description = "https://vault.example.com"; - gatewayGroups = [ "my-site" ]; - filters = [ - { protocol = "icmp"; } - { - protocol = "tcp"; - ports = [ - 80 - 443 - ]; - } - ]; - }; - }; - description = '' - All resources to provision. The attribute name will only be used to - track the resource and does not have any significance for Firezone. - ''; - }; - - policies = mkOption { - type = types.attrsOf ( - types.submodule { - options = { - description = mkOption { - type = types.nullOr types.str; - description = "The description of this policy"; - }; - - group = mkOption { - type = types.str; - description = "The group which should be allowed access to the given resource."; - }; - - resource = mkOption { - type = types.str; - description = "The resource to which access should be allowed."; - }; - }; - } - ); - default = { }; - example = { - access_vaultwarden = { - name = "Allow anyone to access vaultwarden"; - group = "everyone"; - resource = "vaultwarden"; - }; - }; - description = '' - All policies to provision. The attribute name will only be used to - track the policy and does not have any significance for Firezone. - ''; - }; - - groups = mkOption { - type = types.attrsOf ( - types.submodule { - options = { - name = mkOption { - type = types.str; - description = "The name of this group"; - }; - - members = mkOption { - type = types.listOf types.str; - default = [ ]; - description = "The members of this group"; - }; - - forceMembers = mkOption { - type = types.bool; - default = false; - description = "Ensure that only the given members are part of this group at every server start."; - }; - }; - } - ); - default = { }; - example = { - users = { - name = "Users"; - }; - }; - description = '' - All groups to provision. The attribute name will only be used - to track the group and does not have any significance for - Firezone. - - A group named `everyone` will automatically be managed by Firezone. - ''; - }; - - relayGroups = mkOption { - type = types.attrsOf ( - types.submodule { - options = { - name = mkOption { - type = types.str; - description = "The name of this relay group"; - }; - }; - } - ); - default = { }; - example = { - my-relays = { - name = "My Relays"; - }; - }; - description = '' - All relay groups to provision. The attribute name - will only be used to track the relay group and does not have any - significance for Firezone. - ''; - }; - - gatewayGroups = mkOption { - type = types.attrsOf ( - types.submodule { - options = { - name = mkOption { - type = types.str; - description = "The name of this gateway group"; - }; - }; - } - ); - default = { }; - example = { - my-gateways = { - name = "My Gateways"; - }; - }; - description = '' - All gateway groups (sites) to provision. The attribute name - will only be used to track the gateway group and does not have any - significance for Firezone. - ''; - }; - }; - } - ); - default = { }; - example = { - main = { - name = "My Account / Organization"; - metadata.stripe.billing_email = "org@myorg.example.com"; - features.rest_api = false; - }; - }; - description = '' - All accounts to provision. The attribute name specified here will - become the account slug. By using `"{file:/path/to/file}"` as a - string value anywhere in these settings, the provisioning script will - replace that value with the content of the given file at runtime. - - Please refer to the [Firezone source code](https://github.com/firezone/firezone/blob/main/elixir/apps/domain/lib/domain/accounts/account.ex) - for all available properties. - ''; - }; - }; }; config = mkMerge [ - { - assertions = [ - { - assertion = cfg.provision.enable -> cfg.domain.enable; - message = "Provisioning must be done on a machine running the firezone domain server"; - } - ] - ++ concatLists ( - flip mapAttrsToList cfg.provision.accounts ( - accountName: accountCfg: - [ - { - assertion = (builtins.match "^[[:lower:]_-]+$" accountName) != null; - message = "An account name must contain only lowercase characters and underscores, as it will be used as the URL slug for this account."; - } - ] - ++ flip mapAttrsToList accountCfg.auth ( - authName: _: { - assertion = (builtins.match "^[[:alnum:]_-]+$" authName) != null; - message = "The authentication provider attribute key must contain only letters, numbers, underscores or dashes."; - } - ) - ) - ); - } # Enable all components if the main server is enabled (mkIf cfg.enable { services.firezone.server.domain.enable = true; @@ -1015,7 +583,7 @@ in FEATURE_INTERNET_RESOURCE_ENABLED = mkDefault true; FEATURE_TRAFFIC_FILTERS_ENABLED = mkDefault true; - FEATURE_SIGN_UP_ENABLED = mkDefault (!cfg.provision.enable); + FEATURE_SIGN_UP_ENABLED = mkDefault true; WEB_EXTERNAL_URL = mkDefault cfg.web.externalUrl; API_EXTERNAL_URL = mkDefault cfg.api.externalUrl; @@ -1066,19 +634,6 @@ in OUTBOUND_EMAIL_SMTP_PASSWORD = cfg.smtp.passwordFile; }; }) - (mkIf cfg.provision.enable { - # Load client secrets from authentication providers - services.firezone.server.settingsSecret = flip concatMapAttrs cfg.provision.accounts ( - accountName: accountCfg: - flip concatMapAttrs accountCfg.auth ( - authName: authCfg: - optionalAttrs (authCfg.adapter_config.clientSecretFile != null) { - "AUTH_CLIENT_SECRET_${toUpper accountName}_${toUpper authName}" = - authCfg.adapter_config.clientSecretFile; - } - ) - ); - }) (mkIf (cfg.openClusterFirewall && cfg.domain.enable) { networking.firewall.allowedTCPPorts = [ cfg.domain.settings.ERLANG_DISTRIBUTION_PORT @@ -1156,14 +711,6 @@ in fi count=$((count++)) done - '' - + optionalString cfg.provision.enable '' - # Wait for server to fully come up. Not ideal to use sleep, but at least it works. - sleep 1 - - ${loadSecretEnvironment "domain"} - ln -sTf ${provisionStateJson} provision-state.json - ${getExe cfg.domain.package} rpc 'Code.eval_file("${./provision.exs}")' ''; environment = collectEnvironment "domain"; diff --git a/nixos/modules/services/x11/desktop-managers/cde.nix b/nixos/modules/services/x11/desktop-managers/cde.nix index ba62f430ca3f..a7626e294b89 100644 --- a/nixos/modules/services/x11/desktop-managers/cde.nix +++ b/nixos/modules/services/x11/desktop-managers/cde.nix @@ -71,10 +71,12 @@ in }; }; - system.activationScripts.setup-cde = '' - mkdir -p /var/dt/{tmp,appconfig/appmanager} - chmod a+w+t /var/dt/{tmp,appconfig/appmanager} - ''; + systemd.tmpfiles.settings."10-cde" = { + "/var/dt".d.mode = "0755"; + "/var/dt/tmp".d.mode = "1777"; + "/var/dt/appconfig".d.mode = "0755"; + "/var/dt/appconfig/appmanager".d.mode = "1777"; + }; services.xserver.desktopManager.session = [ { diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 87a361f8298a..f3689cc70a59 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -697,6 +697,7 @@ in grocy = runTest ./grocy.nix; grow-partition = runTest ./grow-partition.nix; grub = runTest ./grub.nix; + gs1200-exporter = runTest ./gs1200-exporter.nix; guacamole-server = runTest ./guacamole-server.nix; guix = handleTest ./guix { }; gvisor = runTest ./gvisor.nix; @@ -1491,6 +1492,7 @@ in sane = runTest ./sane.nix; sanoid = runTest ./sanoid.nix; saunafs = runTest ./saunafs.nix; + scanservjs = runTest ./scanservjs.nix; scaphandre = runTest ./scaphandre.nix; schleuder = runTest ./schleuder.nix; scion-freestanding-deployment = runTest ./scion/freestanding-deployment; diff --git a/nixos/tests/firezone/create-tokens.exs b/nixos/tests/firezone/create-tokens.exs deleted file mode 100644 index 35f977036cb5..000000000000 --- a/nixos/tests/firezone/create-tokens.exs +++ /dev/null @@ -1,86 +0,0 @@ -alias Domain.{Repo, Accounts, Auth, Actors, Tokens} - -mappings = case File.read("provision-uuids.json") do -{:ok, content} -> - case Jason.decode(content) do - {:ok, mapping} -> mapping - _ -> %{"accounts" => %{}} - end -_ -> %{"accounts" => %{}} -end - -IO.puts("INFO: Fetching account") -{:ok, account} = Accounts.fetch_account_by_id_or_slug("main") - -IO.puts("INFO: Fetching email provider") -{:ok, email_provider} = Auth.Provider.Query.not_disabled() - |> Auth.Provider.Query.by_adapter(:email) - |> Auth.Provider.Query.by_account_id(account.id) - |> Repo.fetch(Auth.Provider.Query, []) - -temp_admin_actor_email = "firezone-provision@localhost.local" -temp_admin_actor_context = %Auth.Context{ - type: :browser, - user_agent: "Unspecified/0.0", - remote_ip: {127, 0, 0, 1}, - remote_ip_location_region: "N/A", - remote_ip_location_city: "N/A", - remote_ip_location_lat: 0.0, - remote_ip_location_lon: 0.0 -} - -{:ok, temp_admin_actor} = - Actors.create_actor(account, %{ - type: :account_admin_user, - name: "Token Provisioning" - }) - -{:ok, temp_admin_actor_email_identity} = - Auth.create_identity(temp_admin_actor, email_provider, %{ - provider_identifier: temp_admin_actor_email, - provider_identifier_confirmation: temp_admin_actor_email - }) - -{:ok, temp_admin_actor_token} = - Auth.create_token(temp_admin_actor_email_identity, temp_admin_actor_context, "temporarynonce", DateTime.utc_now() |> DateTime.add(1, :hour)) - -{:ok, temp_admin_subject} = - Auth.build_subject(temp_admin_actor_token, temp_admin_actor_context) - -{:ok, relay_group_token} = - Tokens.create_token(%{ - "type" => :relay_group, - "expires_at" => DateTime.utc_now() |> DateTime.add(1, :hour), - "secret_fragment" => Domain.Crypto.random_token(32, encoder: :hex32), - "relay_group_id" => get_in(mappings, ["accounts", "main", "relay_groups", "my-relays"]) - }) - -relay_group_encoded_token = Tokens.encode_fragment!(relay_group_token) -IO.puts("Created relay token: #{relay_group_encoded_token}") -File.write("relay_token.txt", relay_group_encoded_token) - -{:ok, gateway_group_token} = - Tokens.create_token(%{ - "type" => :gateway_group, - "expires_at" => DateTime.utc_now() |> DateTime.add(1, :hour), - "secret_fragment" => Domain.Crypto.random_token(32, encoder: :hex32), - "account_id" => get_in(mappings, ["accounts", "main", "id"]), - "gateway_group_id" => get_in(mappings, ["accounts", "main", "gateway_groups", "site"]) - }, temp_admin_subject) - -gateway_group_encoded_token = Tokens.encode_fragment!(gateway_group_token) -IO.puts("Created gateway group token: #{gateway_group_encoded_token}") -File.write("gateway_token.txt", gateway_group_encoded_token) - -{:ok, service_account_actor_token} = - Tokens.create_token(%{ - "type" => :client, - "expires_at" => DateTime.utc_now() |> DateTime.add(1, :hour), - "secret_fragment" => Domain.Crypto.random_token(32, encoder: :hex32), - "account_id" => get_in(mappings, ["accounts", "main", "id"]), - "actor_id" => get_in(mappings, ["accounts", "main", "actors", "client"]) - }) - -service_account_actor_encoded_token = Tokens.encode_fragment!(service_account_actor_token) -IO.puts("Created service actor token: #{service_account_actor_encoded_token}") -File.write("client_token.txt", service_account_actor_encoded_token) diff --git a/nixos/tests/firezone/firezone.nix b/nixos/tests/firezone/firezone.nix index 37612395e468..9f87fdd99336 100644 --- a/nixos/tests/firezone/firezone.nix +++ b/nixos/tests/firezone/firezone.nix @@ -84,89 +84,15 @@ in passwordFile = pkgs.writeText "tmpmailpasswd" "verysecurepassword"; }; - provision = { - enable = true; - accounts.main = { - name = "My Account"; - relayGroups.my-relays.name = "Relays"; - gatewayGroups.site.name = "Site"; - actors = { - admin = { - type = "account_admin_user"; - name = "Admin"; - email = "admin@localhost.localdomain"; - }; - client = { - type = "service_account"; - name = "A client"; - email = "client@example.com"; - }; - }; - # service accounts aren't members of 'Everyone' so we need to add a separate group - groups.main = { - name = "main"; - members = [ - "client" - "admin" - ]; - }; - resources.res1 = { - type = "dns"; - name = "Dns Resource"; - address = "resource.example.com"; - gatewayGroups = [ "site" ]; - filters = [ - { protocol = "icmp"; } - { - protocol = "tcp"; - ports = [ 80 ]; - } - ]; - }; - resources.res2 = { - type = "ip"; - name = "Ip Resource"; - address = "172.20.2.1"; - gatewayGroups = [ "site" ]; - }; - resources.res3 = { - type = "cidr"; - name = "Cidr Resource"; - address = "172.20.1.0/24"; - gatewayGroups = [ "site" ]; - }; - policies.pol1 = { - description = "Allow anyone res1 access"; - group = "main"; - resource = "res1"; - }; - policies.pol2 = { - description = "Allow anyone res2 access"; - group = "main"; - resource = "res2"; - }; - policies.pol3 = { - description = "Allow anyone res3 access"; - group = "main"; - resource = "res3"; - }; - }; - }; - api.externalUrl = "https://${domain}/api/"; web.externalUrl = "https://${domain}/"; }; - - systemd.services.firezone-server-domain.postStart = lib.mkAfter '' - ${lib.getExe config.services.firezone.server.domain.package} rpc 'Code.eval_file("${./create-tokens.exs}")' - ''; }; relay = { nodes, config, - lib, ... }: { @@ -181,14 +107,11 @@ in logLevel = "debug"; name = "test-relay"; apiUrl = "wss://${domain}/api/"; - tokenFile = "/tmp/shared/relay_token.txt"; + tokenFile = pkgs.writeText "token" "token"; publicIpv4 = config.networking.primaryIPAddress; publicIpv6 = config.networking.primaryIPv6Address; openFirewall = true; }; - - # Don't auto-start so we can wait until the token was provisioned - systemd.services.firezone-relay.wantedBy = lib.mkForce [ ]; }; # A resource that is only connected to the gateway, @@ -300,11 +223,8 @@ in logLevel = "debug"; name = "test-gateway"; apiUrl = "wss://${domain}/api/"; - tokenFile = "/tmp/shared/gateway_token.txt"; + tokenFile = pkgs.writeText "token" "token"; }; - - # Don't auto-start so we can wait until the token was provisioned - systemd.services.firezone-gateway.wantedBy = lib.mkForce [ ]; }; client = @@ -326,11 +246,8 @@ in logLevel = "debug"; name = "test-client-somebody"; apiUrl = "wss://${domain}/api/"; - tokenFile = "/tmp/shared/client_token.txt"; + tokenFile = pkgs.writeText "token" "token"; }; - - # Don't auto-start so we can wait until the token was provisioned - systemd.services.firezone-headless-client.wantedBy = lib.mkForce [ ]; }; }; @@ -344,43 +261,13 @@ in server.wait_until_succeeds("curl -Lsf https://${domain} | grep 'Welcome to Firezone'") server.wait_until_succeeds("curl -Ls https://${domain}/api | grep 'Not Found'") - # Wait for tokens and copy them to shared folder - server.wait_for_file("/var/lib/private/firezone/relay_token.txt") - server.wait_for_file("/var/lib/private/firezone/gateway_token.txt") - server.wait_for_file("/var/lib/private/firezone/client_token.txt") - server.succeed("cp /var/lib/private/firezone/*_token.txt /tmp/shared") - with subtest("Connect relay"): - relay.succeed("systemctl start firezone-relay") relay.wait_for_unit("firezone-relay.service") - relay.wait_until_succeeds("journalctl --since -2m --unit firezone-relay.service --grep 'Connected to portal.*${domain}'", timeout=30) with subtest("Connect gateway"): - gateway.succeed("systemctl start firezone-gateway") gateway.wait_for_unit("firezone-gateway.service") - gateway.wait_until_succeeds("journalctl --since -2m --unit firezone-gateway.service --grep 'Connected to portal.*${domain}'", timeout=30) - relay.wait_until_succeeds("journalctl --since -2m --unit firezone-relay.service --grep 'Created allocation.*IPv4'", timeout=30) - relay.wait_until_succeeds("journalctl --since -2m --unit firezone-relay.service --grep 'Created allocation.*IPv6'", timeout=30) - - # Assert both relay ips are known - gateway.wait_until_succeeds("journalctl --since -2m --unit firezone-gateway.service --grep 'Updated allocation.*relay_ip4.*Some.*relay_ip6.*Some'", timeout=30) with subtest("Connect headless-client"): - client.succeed("systemctl start firezone-headless-client") client.wait_for_unit("firezone-headless-client.service") - client.wait_until_succeeds("journalctl --since -2m --unit firezone-headless-client.service --grep 'Connected to portal.*${domain}'", timeout=30) - client.wait_until_succeeds("journalctl --since -2m --unit firezone-headless-client.service --grep 'Tunnel ready'", timeout=30) - - with subtest("Check DNS based access"): - # Check that we can access the resource through the VPN via DNS - client.wait_until_succeeds("curl -4 -Lsf http://resource.example.com | grep 'greetings from the resource'") - - with subtest("Check CIDR based access"): - # Check that we can access the resource through the VPN via CIDR - client.wait_until_succeeds("ping -c1 -W1 172.20.1.1") - - with subtest("Check IP based access"): - # Check that we can access the resource through the VPN via IP - client.wait_until_succeeds("ping -c1 -W1 172.20.2.1") ''; } diff --git a/nixos/tests/gs1200-exporter.nix b/nixos/tests/gs1200-exporter.nix new file mode 100644 index 000000000000..5f4b4c611c36 --- /dev/null +++ b/nixos/tests/gs1200-exporter.nix @@ -0,0 +1,20 @@ +{ lib, ... }: +{ + name = "gs1200-exporter"; + meta.maintainers = with lib.maintainers; [ DerGrumpf ]; + nodes.machine = _: { + services.gs1200-exporter = { + enable = true; + address = "192.168.2.4"; + passwordFile = "/run/secrets/gs1200-password"; + }; + systemd.tmpfiles.rules = [ + "f /run/secrets/gs1200-password 0400 root root - testpassword" + ]; + }; + testScript = '' + machine.wait_for_unit("gs1200-exporter.service") + machine.wait_for_open_port(9934) + machine.succeed("curl -f http://localhost:9934/metrics") + ''; +} diff --git a/nixos/tests/scanservjs.nix b/nixos/tests/scanservjs.nix new file mode 100644 index 000000000000..009b00a51d8e --- /dev/null +++ b/nixos/tests/scanservjs.nix @@ -0,0 +1,23 @@ +let + port = 1234; +in +{ + name = "scanservjs"; + + nodes.machine = + { ... }: + { + services.scanservjs = { + enable = true; + settings.host = "0.0.0.0"; + settings.port = port; + }; + }; + + testScript = '' + machine.wait_for_unit("scanservjs.service") + machine.wait_until_succeeds( + "curl --silent --fail --show-error --location http://localhost:${toString port}" + ) + ''; +} diff --git a/pkgs/applications/editors/neovim/tests/default.nix b/pkgs/applications/editors/neovim/tests/default.nix index de18a630cca4..5bc2730da87b 100644 --- a/pkgs/applications/editors/neovim/tests/default.nix +++ b/pkgs/applications/editors/neovim/tests/default.nix @@ -558,4 +558,25 @@ pkgs.lib.recurseIntoAttrs rec { EOF ''; }; + + nvim_require_check_rtp_no_duplicate = vimUtils.buildVimPlugin { + pname = "neovim-require-check-rtp-no-duplicate-test"; + version = "0"; + src = runCommandLocal "neovim-require-check-rtp-no-duplicate-src" { } '' + mkdir -p "$out/lua/require-check-rtp-dedup" + cat > "$out/lua/require-check-rtp-dedup/init.lua" <<'EOF' + local target = "lua/require-check-rtp-dedup/init.lua" + local matches = vim.api.nvim_get_runtime_file(target, true) + if #matches ~= 1 then + error( + ("expected plugin on runtimepath exactly once, found %d:\n%s"):format( + #matches, + table.concat(matches, "\n") + ) + ) + end + return {} + EOF + ''; + }; } diff --git a/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh b/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh index 5a309207cc53..af3960ba98b3 100644 --- a/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh +++ b/pkgs/applications/editors/vim/plugins/hooks/neovim-require-check-hook.sh @@ -98,9 +98,9 @@ run_require_checks() { if [ "$skip" = false ]; then echo "Attempting to require module: $name" if @nvimBinary@ -es --headless -n -u NONE -i NONE --clean -V1 \ - --cmd "set rtp+=$out,${deps// /,}" \ - --cmd "set rtp+=$out,${nativeCheckInputs// /,}" \ - --cmd "set rtp+=$out,${checkInputs// /,}" \ + --cmd "set rtp+=${deps// /,}" \ + --cmd "set rtp+=${nativeCheckInputs// /,}" \ + --cmd "set rtp+=${checkInputs// /,}" \ "${luaPathArgs[@]}" \ --cmd "set packpath^=$packPathDir" \ --cmd "packadd testPlugin" \ diff --git a/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix b/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix index fc50bc4ec831..d3f08bc5df9a 100644 --- a/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix +++ b/pkgs/applications/editors/vscode/extensions/charliermarsh.ruff/default.nix @@ -12,26 +12,26 @@ vscode-utils.buildVscodeMarketplaceExtension { sources = { "x86_64-linux" = { arch = "linux-x64"; - hash = "sha256-l1bwzuEi8sCBsdad2a5UDPN12QtlHhhgXBfsNxP5GwA="; + hash = "sha256-qXGdFXx8Vr9oVStBjaeWEsQjhQUbp9MnLUfJtyhgwkA="; }; "x86_64-darwin" = { arch = "darwin-x64"; - hash = "sha256-31Sj5KlZnRKa0sR2J4A4CRuDF8fwXlzikukH+OX/GpU="; + hash = "sha256-Bd3ool5Ep8I5iiTMUHF48r/sf3F1dROx6Umns0pDGzE="; }; "aarch64-linux" = { arch = "linux-arm64"; - hash = "sha256-7m9or/105/YIjhMlwMFLcN9tP9hj/4NU85Y3/5DDuDw="; + hash = "sha256-Jv2lrdvY0tthJM2fifUlCW/QBzEZAa8QDHj4o+a4KxY="; }; "aarch64-darwin" = { arch = "darwin-arm64"; - hash = "sha256-q7mGGv/L9N7hwM0EIKF7d+lxcl0V00a6I/CK8j5E8SE="; + hash = "sha256-VooAoTyysIFH1AaidcoRs7fJpID0LbmWnLdivGZfdrM="; }; }; in { name = "ruff"; publisher = "charliermarsh"; - version = "2026.46.0"; + version = "2026.48.0"; } // sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}"); diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix index 0c4749f7a520..d6347d246831 100644 --- a/pkgs/applications/editors/vscode/extensions/default.nix +++ b/pkgs/applications/editors/vscode/extensions/default.nix @@ -1215,8 +1215,8 @@ let mktplcRef = { name = "flutter"; publisher = "dart-code"; - version = "3.134.0"; - hash = "sha256-wWANxBh9Tg3VkfbcrR0NgOIC8cpeZJCNfOevT7E4zKY="; + version = "3.136.0"; + hash = "sha256-RK493qHjEK/k8oy/OIzO3bvNnFo+ZftQhZMIAmBCaJk="; }; meta.license = lib.licenses.mit; @@ -1375,8 +1375,8 @@ let mktplcRef = { name = "competitive-programming-helper"; publisher = "DivyanshuAgrawal"; - version = "2026.5.1779885478"; - hash = "sha256-8RU6JWHeYOAxof2TXpeXlXSVD9+0e0E46X85A11l4Pk="; + version = "2026.6.1780508121"; + hash = "sha256-4kb7Nk+gctECMQM/cko+q1Bta1EKPXPEqyCQLBMkbEo="; }; meta = { changelog = "https://marketplace.visualstudio.com/items/DivyanshuAgrawal.competitive-programming-helper/changelog"; @@ -2324,8 +2324,8 @@ let mktplcRef = { name = "vscode-vibrancy-continued"; publisher = "illixion"; - version = "1.1.77"; - hash = "sha256-khxajorzIntF2YwKVd6aZ1+doEr2oN4OliBpc7TTB7o="; + version = "1.1.78"; + hash = "sha256-w0i0Gmqj2atCtEYW+0XvZech37qQaTjkt8MJRdHamxs="; }; meta = { downloadPage = "https://marketplace.visualstudio.com/items?itemName=illixion.vscode-vibrancy-continued"; @@ -3997,8 +3997,8 @@ let mktplcRef = { name = "wikitext"; publisher = "RoweWilsonFrederiskHolme"; - version = "4.0.4"; - hash = "sha256-IEnWoRQfWx4TbysSQlOxG0c8kiqtR4fOhaV1JxDkRCw="; + version = "4.0.5"; + hash = "sha256-VyrcgS93B5Xd4s101lnTw9o27ffcvmxkShCKJ+6H+2w="; }; meta = { description = "Extension that helps users view and write MediaWiki's Wikitext files"; diff --git a/pkgs/applications/editors/vscode/extensions/oracle.oracle-java/default.nix b/pkgs/applications/editors/vscode/extensions/oracle.oracle-java/default.nix index 388d00066800..2c7b61128616 100644 --- a/pkgs/applications/editors/vscode/extensions/oracle.oracle-java/default.nix +++ b/pkgs/applications/editors/vscode/extensions/oracle.oracle-java/default.nix @@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension rec { mktplcRef = { name = "oracle-java"; publisher = "oracle"; - version = "25.1.0"; - hash = "sha256-HjDSlvG6khFJA/3ukjVCrPqbQiAKVhgP6KcCfC/jUrc="; + version = "26.0.0"; + hash = "sha256-SfZMOiSuABXcYVi4CmxUUUIeAUmp6s45jjyy4HXoe24="; }; meta = { 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 ea14151665f0..795b167a667a 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-HECflrFni3eWxMs+BpjWBhU3pqF5jjMIEjkp9ibx784="; + hash = "sha256-7uZZuEijg1Aca1h2NrBwFU9iFnfhG17waXxqVlAKzTA="; arch = "linux-x64"; }; x86_64-darwin = { - hash = "sha256-dCkSOClWWq3DGU9psrinI5f5oC69K+AhdHdXwKIQsFw="; + hash = "sha256-NPh3Sxf2k/Nj4vt0SGsa5H6QOI1IBaL20g79Pl4/iPg="; arch = "darwin-x64"; }; aarch64-linux = { - hash = "sha256-XNIx2ibOe1/1lo8RkYkAv+oBDYpqnmMcIjpoulbrr+w="; + hash = "sha256-tszcouaPUGTH1MpGJfU0RiLvBN7qIhH1vC3XiAmHFK8="; arch = "linux-arm64"; }; aarch64-darwin = { - hash = "sha256-rXVuQN0SDmymQNncFZzyD4H+j6hxp1yoiaNXnbzrlo0="; + hash = "sha256-JV9pZqq48q00GM0cg3Wu00qrrkn2fczbHBVqnCM84lI="; arch = "darwin-arm64"; }; }; @@ -34,7 +34,7 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = base // { name = "tombi"; publisher = "tombi-toml"; - version = "1.1.1"; + version = "1.1.2"; }; meta = { description = "TOML Language Server"; diff --git a/pkgs/applications/emulators/libretro/cores/pcsx2.nix b/pkgs/applications/emulators/libretro/cores/pcsx2.nix index 557ebbfe239b..3524cf6d25b7 100644 --- a/pkgs/applications/emulators/libretro/cores/pcsx2.nix +++ b/pkgs/applications/emulators/libretro/cores/pcsx2.nix @@ -11,13 +11,13 @@ }: mkLibretroCore { core = "pcsx2"; - version = "0-unstable-2026-05-30"; + version = "0-unstable-2026-06-01"; src = fetchFromGitHub { owner = "libretro"; repo = "ps2"; - rev = "a1b104679bcf6a6cf943f1e9daee0e98515944c2"; - hash = "sha256-NmVjqct6DaYdeAt/aMoHg0t5rs1k8srZ9JW6H5bGw5Y="; + rev = "65e8afb9e9ca0a3f3af32d9b35d7d8537cd3cbc1"; + hash = "sha256-H6lZLLO1+ir+vPchq3XGHKsepmYLbohQFvoA0+yiQo0="; fetchSubmodules = true; }; diff --git a/pkgs/applications/graphics/gimp/default.nix b/pkgs/applications/graphics/gimp/default.nix index b6b50a672214..89a8c9f1cbd8 100644 --- a/pkgs/applications/graphics/gimp/default.nix +++ b/pkgs/applications/graphics/gimp/default.nix @@ -129,6 +129,7 @@ stdenv.mkDerivation (finalAttrs: { libxslt # for xsltproc gobject-introspection perl + python vala # for docs @@ -222,6 +223,8 @@ stdenv.mkDerivation (finalAttrs: { gexiv2 ]; + strictDeps = true; + mesonFlags = [ "-Dbug-report-url=https://github.com/NixOS/nixpkgs/issues/new" "-Dicc-directory=/run/current-system/sw/share/color/icc" @@ -335,6 +338,8 @@ stdenv.mkDerivation (finalAttrs: { gtk = gtk3; }; + __structuredAttrs = true; + meta = { description = "GNU Image Manipulation Program"; homepage = "https://www.gimp.org/"; diff --git a/pkgs/applications/misc/redshift/default.nix b/pkgs/applications/misc/redshift/default.nix index ef12052d6c91..4071fc01b652 100644 --- a/pkgs/applications/misc/redshift/default.nix +++ b/pkgs/applications/misc/redshift/default.nix @@ -177,7 +177,7 @@ rec { longDescription = "Gammastep" + lib.removePrefix "Redshift" redshift.meta.longDescription; homepage = "https://gitlab.com/chinstrap/gammastep"; mainProgram = "gammastep"; - maintainers = [ ] ++ redshift.meta.maintainers; + maintainers = with lib.maintainers; [ acidbong ] ++ redshift.meta.maintainers; }; }; } diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index ef09dc30d3d2..938e3af60545 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -1319,11 +1319,11 @@ "vendorHash": "sha256-7ZoJg1HEVj5Nygr46lmBZeJDfZuU4F90yntrgkBVgGg=" }, "tencentcloudstack_tencentcloud": { - "hash": "sha256-hBKPD0hQ9kjypeG8Q8xLD2pKGnyWjKAKGnImYG9hsq8=", + "hash": "sha256-9TTN1DmIXxqIWWiPdFQLRZbJ1mXkibXAOKfF4rJTPBE=", "homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud", "owner": "tencentcloudstack", "repo": "terraform-provider-tencentcloud", - "rev": "v1.82.98", + "rev": "v1.82.101", "spdx": "MPL-2.0", "vendorHash": null }, diff --git a/pkgs/applications/office/mendeley/default.nix b/pkgs/applications/office/mendeley/default.nix index 8d17cec5f610..08a2a91e9ad8 100644 --- a/pkgs/applications/office/mendeley/default.nix +++ b/pkgs/applications/office/mendeley/default.nix @@ -7,13 +7,13 @@ let pname = "mendeley"; - version = "2.144.0"; + version = "2.145.0"; executableName = "${pname}-reference-manager"; src = fetchurl { url = "https://static.mendeley.com/bin/desktop/mendeley-reference-manager-${version}-x86_64.AppImage"; - hash = "sha256-27cUm1ChdzG9Qxo0ntUAVZMA685YFZ3nbsLkZfxR3pk="; + hash = "sha256-yuoNGAV6JuPfm5GagzD4R2ojBRpKo9aZ8K92jC63MQE="; }; appimageContents = appimageTools.extractType2 { diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix index bd1833daad2a..449c2cbac455 100644 --- a/pkgs/applications/virtualization/virtualbox/default.nix +++ b/pkgs/applications/virtualization/virtualbox/default.nix @@ -84,7 +84,7 @@ let # modsrc at all. withModsrc = !enableKvm; - virtualboxGuestAdditionsIso = callPackage guest-additions-iso/default.nix { + virtualboxGuestAdditionsIso = callPackage ./guest-additions-iso { inherit virtualboxVersion; }; diff --git a/pkgs/by-name/af/affine/package.nix b/pkgs/by-name/af/affine/package.nix index ac3dea2ab1ec..9c5fb55b894e 100644 --- a/pkgs/by-name/af/affine/package.nix +++ b/pkgs/by-name/af/affine/package.nix @@ -46,12 +46,12 @@ in stdenv.mkDerivation (finalAttrs: { pname = binName; - version = "0.26.6"; + version = "0.26.7"; src = fetchFromGitHub { owner = "toeverything"; repo = "AFFiNE"; tag = "v${finalAttrs.version}"; - hash = "sha256-aJeW8I7hx9VN5AU6gVq18cKO0QuKtc7JGUDbVsSXXE4="; + hash = "sha256-gtdhWLNZRNY91j9wVVny1bRAjZAwIvNJr11ePQapWYQ="; }; patches = [ diff --git a/pkgs/by-name/ag/agate/package.nix b/pkgs/by-name/ag/agate/package.nix index 21966f3f5860..c7a9d3a57407 100644 --- a/pkgs/by-name/ag/agate/package.nix +++ b/pkgs/by-name/ag/agate/package.nix @@ -14,7 +14,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "agate"; - version = "3.3.22"; + version = "3.3.23"; __darwinAllowLocalNetworking = true; @@ -22,10 +22,10 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "mbrubeck"; repo = "agate"; tag = "v${finalAttrs.version}"; - hash = "sha256-TDBCIioVeuQz4Dj7Pf5VG+tLLokGjhgv5e6z1spr3vk="; + hash = "sha256-6xF1iCAW4tCSoVU0rBSSfREIqPdOPF8Z1+ScMyEX4SQ="; }; - cargoHash = "sha256-dNbtNQlbUZuZNcyydkRtzC0/Md1HrM3SDbA33exafiI="; + cargoHash = "sha256-K6BUKaVULb/x3b9UQ/wJPI/kjBIOUdLnB63FyMJEXDE="; nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ]; diff --git a/pkgs/by-name/al/allure/package.nix b/pkgs/by-name/al/allure/package.nix index 7c5922f260b4..9e64f10b90aa 100644 --- a/pkgs/by-name/al/allure/package.nix +++ b/pkgs/by-name/al/allure/package.nix @@ -8,11 +8,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "allure"; - version = "2.42.0"; + version = "2.42.1"; src = fetchurl { url = "https://github.com/allure-framework/allure2/releases/download/${finalAttrs.version}/allure-${finalAttrs.version}.tgz"; - hash = "sha256-cpEtOo/fIH9RTvVbvu4gD2idIZ5PG7S7SaOmeQ7QTf4="; + hash = "sha256-+Pc79LvSz1uO7lHSdIeu9VydLyZQ2xEaUvqBCIZrqGw="; }; dontConfigure = true; diff --git a/pkgs/by-name/al/altair/package.nix b/pkgs/by-name/al/altair/package.nix index e98b119f8fbe..a0b470ce9ea8 100644 --- a/pkgs/by-name/al/altair/package.nix +++ b/pkgs/by-name/al/altair/package.nix @@ -7,11 +7,11 @@ let pname = "altair"; - version = "8.5.0"; + version = "8.5.3"; src = fetchurl { url = "https://github.com/altair-graphql/altair/releases/download/v${version}/altair_${version}_x86_64_linux.AppImage"; - sha256 = "sha256-ImcnV+Z1J+6wGs3HmlCpXmLb/BbyEcunY+IZ2cbD8Ns="; + sha256 = "sha256-XPw4NCtkInCes471as0Vtvr/SMRaJS6MNBGg0oo/Dro="; }; appimageContents = appimageTools.extract { inherit pname version src; }; diff --git a/pkgs/by-name/an/ananicy-rules-cachyos/package.nix b/pkgs/by-name/an/ananicy-rules-cachyos/package.nix index adc7bfa4b3ef..b3d263bd6fc8 100644 --- a/pkgs/by-name/an/ananicy-rules-cachyos/package.nix +++ b/pkgs/by-name/an/ananicy-rules-cachyos/package.nix @@ -7,13 +7,13 @@ stdenvNoCC.mkDerivation { pname = "ananicy-rules-cachyos"; - version = "0-unstable-2026-05-28"; + version = "0-unstable-2026-06-03"; src = fetchFromGitHub { owner = "CachyOS"; repo = "ananicy-rules"; - rev = "b556fc67b4a648000d0b11092115dd83a3023254"; - hash = "sha256-cNOY3yqZKYwPkz3EiybuW3e8AomO/pD+SJVFHhUGoSI="; + rev = "422e807d3376dc9d07e7acfa82b62b5d62275486"; + hash = "sha256-wDlAbb9O0I7WXsvQ+xLBPRt+haKJjvCJR56TGRC9auA="; }; dontConfigure = true; diff --git a/pkgs/by-name/an/antigravity-cli/package.nix b/pkgs/by-name/an/antigravity-cli/package.nix index be204792a180..f6d67358379d 100644 --- a/pkgs/by-name/an/antigravity-cli/package.nix +++ b/pkgs/by-name/an/antigravity-cli/package.nix @@ -1,58 +1,50 @@ { lib, - stdenv, - fetchzip, + stdenvNoCC, + fetchurl, autoPatchelfHook, versionCheckHook, }: - let - # Version and platform-specific data retrieved from Google's manifests - version = "1.0.6"; + wholeVersion = "1.0.7-5858071034068992"; # unfortunately this has dumb versioning + version = builtins.head (lib.splitString "-" wholeVersion); + + throwSystem = throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}"; sourceData = { - "x86_64-linux" = { - url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.6-5359777384103936/linux-x64/cli_linux_x64.tar.gz"; - hash = "sha256-rxDLuuium+yQl3SiRcFhLzC5+ZCZU/tG2LQfFZMOYx4="; + x86_64-linux = fetchurl { + url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/${wholeVersion}/linux-x64/cli_linux_x64.tar.gz"; + hash = "sha256-8kaHmc0XPAPuATHb4rrkMhUzBqaLqi7n1UQPFcRB4Go="; }; - "aarch64-linux" = { - url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.6-5359777384103936/linux-arm/cli_linux_arm64.tar.gz"; - hash = "sha256-Mol5V3Lt2A89yrGdwWiOdv4y5dCZkMaT8onXG6IsQtc="; + aarch64-linux = fetchurl { + url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/${wholeVersion}/linux-arm/cli_linux_arm64.tar.gz"; + hash = "sha256-3ylG6ZW/9AuKydzzyMLtqC1ec2NnixFG/CJih26S0K0="; }; - "aarch64-darwin" = { - url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.6-5359777384103936/darwin-arm/cli_mac_arm64.tar.gz"; - hash = "sha256-GmAxVP6KW0Zii2kSDvwwzsa88r/4ko2BVVpS8BeING4="; + aarch64-darwin = fetchurl { + url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/${wholeVersion}/darwin-arm/cli_mac_arm64.tar.gz"; + hash = "sha256-e4VhL/9rUNgE2XyW8REz8QXEbzwsUFg41xNpUHfNLK0="; }; - "x86_64-darwin" = { - url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.6-5359777384103936/darwin-x64/cli_mac_x64.tar.gz"; - hash = "sha256-RqjKhRqiW6Fg61eYzem+uXb5LXBYi5Cyv0hwtCaqomo="; + x86_64-darwin = fetchurl { + url = "https://storage.googleapis.com/antigravity-public/antigravity-cli/${wholeVersion}/darwin-x64/cli_mac_x64.tar.gz"; + hash = "sha256-SECE7bAd0VneVeAvBs14Ortkcqg8CJy9xcq3ZnuqfKY="; }; }; - - sources = lib.mapAttrs ( - _system: source: - fetchzip { - inherit (source) url hash; - } - ) sourceData; - - source = - sources.${stdenv.hostPlatform.system} - or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); in -stdenv.mkDerivation (finalAttrs: { +stdenvNoCC.mkDerivation (finalAttrs: { pname = "antigravity-cli"; inherit version; - src = source; - strictDeps = true; __structuredAttrs = true; - nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ]; + src = sourceData.${stdenvNoCC.hostPlatform.system} or throwSystem; + + sourceRoot = "."; + + nativeBuildInputs = lib.optionals stdenvNoCC.hostPlatform.isLinux [ autoPatchelfHook ]; - dontBuild = true; dontConfigure = true; + dontBuild = true; installPhase = '' runHook preInstall @@ -66,15 +58,8 @@ stdenv.mkDerivation (finalAttrs: { doInstallCheck = true; passthru = { - inherit sources; - updateScript = [ - ./update.sh - version - ] - ++ lib.concatMap (system: [ - system - sourceData.${system}.url - ]) (lib.attrNames sourceData); + inherit wholeVersion; # for the updateScript + updateScript = ./update.sh; }; meta = { diff --git a/pkgs/by-name/an/antigravity-cli/update.sh b/pkgs/by-name/an/antigravity-cli/update.sh index 3b1801dfd22f..746a57dd87e7 100755 --- a/pkgs/by-name/an/antigravity-cli/update.sh +++ b/pkgs/by-name/an/antigravity-cli/update.sh @@ -1,60 +1,29 @@ #!/usr/bin/env nix-shell -#!nix-shell -i bash -p bash common-updater-scripts coreutils curl gnutar nix -# shellcheck shell=bash +#!nix-shell -i bash -p bash nix-update common-updater-scripts nix jq + set -euo pipefail -script_dir="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -nixpkgs_root="$(realpath "$script_dir/../../../..")" -package_file="$script_dir/package.nix" -tmpdir="$(mktemp -d)" -trap 'rm -rf "$tmpdir"' EXIT +baseUrl=https://storage.googleapis.com/antigravity-public/antigravity-cli -cd -- "$nixpkgs_root" +currentVersion=$(nix-instantiate --eval --raw -E "with import ./. {}; antigravity-cli.version or (lib.getVersion antigravity-cli)") +latestVersion=$(curl $baseUrl/latest) -if (( $# < 3 || ($# - 1) % 2 != 0 )); then - echo "Usage: $0 [ ]..." >&2 - exit 1 +if [[ "$currentVersion" == "$latestVersion" ]]; then + echo "package is up-to-date: $currentVersion" + exit 0 fi -version="$1" -shift +# urls unfortunately include a weird buildid that make it hard to get +latestWholeVersion=$(curl $baseUrl/$latestVersion/manifest.json | jq -r '.platforms."linux-x64".url' | cut -d/ -f6) -export NIXPKGS_ALLOW_UNFREE=1 +update-source-version --version-key=wholeVersion antigravity-cli $latestWholeVersion || true -hash_url() { - local system="$1" - local url="$2" - local archive="$tmpdir/$system.tar.gz" - local unpack_dir="$tmpdir/$system-unpack" - - mkdir -p "$unpack_dir" - curl -fsSL "$url" -o "$archive" || return - tar -xzf "$archive" -C "$unpack_dir" || return - - if [[ ! -x "$unpack_dir/antigravity" ]]; then - echo "Expected executable 'antigravity' in $url" >&2 - exit 1 - fi - - nix hash path --type sha256 "$unpack_dir" -} - -while (( $# > 0 )); do - system="$1" - url="$2" - shift 2 - - if [[ "$url" != *"/antigravity-cli/$version-"* ]]; then - echo "URL for $system does not match package version $version: $url" >&2 - exit 1 - fi - - echo "Hashing $system from $url" - hash="$(hash_url "$system" "$url")" - update-source-version antigravity-cli "$version" "$hash" \ - --file="$package_file" \ - --ignore-same-hash \ - --ignore-same-version \ - --source-key="sources.$system" \ - --system="$system" +for system in \ + x86_64-linux \ + aarch64-linux \ + x86_64-darwin \ + aarch64-darwin; do + hash=$(nix store prefetch-file --json --hash-type sha256 \ + $(nix-instantiate --eval --raw -E "with import ./. {}; antigravity-cli.src.url" --system "$system") | jq -r '.hash') + update-source-version --version-key=wholeVersion antigravity-cli $latestWholeVersion $hash --system=$system --ignore-same-version done diff --git a/pkgs/by-name/ap/apko/package.nix b/pkgs/by-name/ap/apko/package.nix index 978c9f35a0ee..ba7921c90dc8 100644 --- a/pkgs/by-name/ap/apko/package.nix +++ b/pkgs/by-name/ap/apko/package.nix @@ -11,13 +11,13 @@ buildGoModule (finalAttrs: { pname = "apko"; - version = "1.2.15"; + version = "1.2.16"; src = fetchFromGitHub { owner = "chainguard-dev"; repo = "apko"; tag = "v${finalAttrs.version}"; - hash = "sha256-/Y5JqCCqbP+5Of4K6+Bdag9lLKiY/SJiz6x3W6gQnDE="; + hash = "sha256-RsUoolJ2WOs3wpQilAs6RfpR3YzOhzTvDaxuweErIKs="; # populate values that require us to use git. By doing this in postFetch we # can delete .git afterwards and maintain better reproducibility of the src. leaveDotGit = true; diff --git a/pkgs/by-name/ap/appstream-glib/package.nix b/pkgs/by-name/ap/appstream-glib/package.nix index 0fa34f27c4fe..cd38a4762c8f 100644 --- a/pkgs/by-name/ap/appstream-glib/package.nix +++ b/pkgs/by-name/ap/appstream-glib/package.nix @@ -24,10 +24,13 @@ pkg-config, pngquant, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "appstream-glib"; version = "0.8.3"; + strictDeps = true; + __structuredAttrs = true; + outputs = [ "out" "dev" @@ -39,7 +42,7 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "hughsie"; repo = "appstream-glib"; - tag = "appstream_glib_${lib.replaceStrings [ "." ] [ "_" ] version}"; + tag = "appstream_glib_${lib.replaceStrings [ "." ] [ "_" ] finalAttrs.version}"; hash = "sha256-GjXrYV+EBduhG88LaxQWICKuUDJeeotcZgqgaG0/dqo="; }; @@ -91,11 +94,11 @@ stdenv.mkDerivation rec { ''; meta = { - changelog = "https://github.com/hughsie/appstream-glib/blob/${src.tag}/NEWS"; + changelog = "https://github.com/hughsie/appstream-glib/blob/${finalAttrs.src.tag}/NEWS"; description = "Objects and helper methods to read and write AppStream metadata"; homepage = "https://people.freedesktop.org/~hughsient/appstream-glib/"; license = lib.licenses.lgpl2Plus; platforms = lib.platforms.unix; maintainers = [ ]; }; -} +}) diff --git a/pkgs/by-name/as/ashell/package.nix b/pkgs/by-name/as/ashell/package.nix index 60c2ab0f4b5f..4beac74e9bd9 100644 --- a/pkgs/by-name/as/ashell/package.nix +++ b/pkgs/by-name/as/ashell/package.nix @@ -11,19 +11,20 @@ wayland, udev, vulkan-loader, + nix-update-script, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "ashell"; - version = "0.8.0"; + version = "0.9.0"; src = fetchFromGitHub { owner = "MalpenZibo"; repo = "ashell"; tag = finalAttrs.version; - hash = "sha256-X9TU866PAzaf52qKsCpeJvwE0suu1lJndHNQdPg51HM="; + hash = "sha256-QRNEc2HNqA1tZk/jW/MXDwXda58yNlkw86SCTjH1/1w="; }; - cargoHash = "sha256-nhYbehlgB8pzMoj39G0BHRca9mIT+0QjUaebCx+DDE0="; + cargoHash = "sha256-bLZcRASBGV9Y/QlDVBdOl2ElZDLI1KUAh5MlOsjmlKs="; nativeBuildInputs = [ pkg-config @@ -45,10 +46,12 @@ rustPlatform.buildRustPackage (finalAttrs: { ] ++ finalAttrs.runtimeDependencies; + passthru.updateScript = nix-update-script { }; + meta = { description = "Ready to go Wayland status bar for Hyprland"; homepage = "https://github.com/MalpenZibo/ashell"; - license = lib.licenses.mit; + license = lib.licenses.gpl3Plus; mainProgram = "ashell"; maintainers = with lib.maintainers; [ justdeeevin ]; platforms = lib.platforms.linux; diff --git a/pkgs/by-name/c-/c-blosc/package.nix b/pkgs/by-name/c-/c-blosc/package.nix index a84969e2a80b..1daa4d57f425 100644 --- a/pkgs/by-name/c-/c-blosc/package.nix +++ b/pkgs/by-name/c-/c-blosc/package.nix @@ -7,8 +7,10 @@ testers, static ? stdenv.hostPlatform.isStatic, + snappySupport ? false, lz4, + snappy, zlib, zstd, }: @@ -51,7 +53,8 @@ stdenv.mkDerivation (finalAttrs: { lz4 zlib zstd - ]; + ] + ++ lib.optional snappySupport snappy; cmakeFlags = [ "-DBUILD_STATIC=${if static then "ON" else "OFF"}" @@ -64,7 +67,8 @@ stdenv.mkDerivation (finalAttrs: { "-DBUILD_EXAMPLES=OFF" "-DBUILD_BENCHMARKS=OFF" "-DBUILD_TESTS=${if finalAttrs.finalPackage.doCheck then "ON" else "OFF"}" - ]; + ] + ++ lib.optional snappySupport "-DDEACTIVATE_SNAPPY=OFF"; doCheck = !static; diff --git a/pkgs/by-name/ca/cargo-binstall/package.nix b/pkgs/by-name/ca/cargo-binstall/package.nix index 11b0186ba992..24d3c533228f 100644 --- a/pkgs/by-name/ca/cargo-binstall/package.nix +++ b/pkgs/by-name/ca/cargo-binstall/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cargo-binstall"; - version = "1.19.1"; + version = "1.20.0"; src = fetchFromGitHub { owner = "cargo-bins"; repo = "cargo-binstall"; tag = "v${finalAttrs.version}"; - hash = "sha256-b4S8oPK1U84Oy3hhJSxJxToaFF5l4V2Tea0kGn3hW0A="; + hash = "sha256-EnHBXdaER23fvYJ3iW4JqpE1Qap/sQottkqllNA2n18="; }; - cargoHash = "sha256-E+exhtfJiOTQIZm44WyA0yptUn7wymXFRlDyAsshcKA="; + cargoHash = "sha256-p/IfFnFB7vJPVJH2SvnLagXh9zxLgNxEcZILQcIqnVo="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ca/cargo-tauri/test-app.nix b/pkgs/by-name/ca/cargo-tauri/test-app.nix index 56476795e708..d770fdabc04b 100644 --- a/pkgs/by-name/ca/cargo-tauri/test-app.nix +++ b/pkgs/by-name/ca/cargo-tauri/test-app.nix @@ -7,7 +7,7 @@ nodejs, openssl, pkg-config, - pnpm_9, + pnpm_10, fetchPnpmDeps, pnpmConfigHook, rustPlatform, @@ -31,10 +31,10 @@ stdenv.mkDerivation (finalAttrs: { version src ; - pnpm = pnpm_9; + pnpm = pnpm_10; - fetcherVersion = 3; - hash = "sha256-DiRho0tmR/4XJi7cAZxesVA1iR8uiwknCfmIP2x9i5I="; + fetcherVersion = 4; + hash = "sha256-m7haAF5ZIYG5NfsPwtzVF6Z83h/I4uT0YhNBk4ZXdpo="; }; nativeBuildInputs = [ @@ -43,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: { nodejs pkg-config pnpmConfigHook - pnpm_9 + pnpm_10 rustPlatform.cargoCheckHook rustPlatform.cargoSetupHook wrapGAppsHook4 diff --git a/pkgs/by-name/ce/cent/package.nix b/pkgs/by-name/ce/cent/package.nix index 3a33b768391a..ecab53da92ca 100644 --- a/pkgs/by-name/ce/cent/package.nix +++ b/pkgs/by-name/ce/cent/package.nix @@ -6,13 +6,13 @@ buildGoModule (finalAttrs: { pname = "cent"; - version = "2.0.0"; + version = "2.2.0"; src = fetchFromGitHub { owner = "xm1k3"; repo = "cent"; tag = "v${finalAttrs.version}"; - hash = "sha256-AmOq+n+TcpwDgFjFsFNVl/fAIAJbqYdoR2P1dasb8h8="; + hash = "sha256-dblykbFoYc45czbOnxrfR+HIBEyUo9JlzprhwOkCG58="; }; vendorHash = "sha256-sn4ZIDP07u9dwVJHy7KrQFZHsGrqpkM8CzcIbNMDiIo="; diff --git a/pkgs/by-name/ci/cinny-desktop/package.nix b/pkgs/by-name/ci/cinny-desktop/package.nix index e794f0f49d2b..c37b2a3b6025 100644 --- a/pkgs/by-name/ci/cinny-desktop/package.nix +++ b/pkgs/by-name/ci/cinny-desktop/package.nix @@ -21,13 +21,13 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cinny-desktop"; # We have to be using the same version as cinny-web or this isn't going to work. - version = "4.12.1"; + version = "4.12.2"; src = fetchFromGitHub { owner = "cinnyapp"; repo = "cinny-desktop"; tag = "v${finalAttrs.version}"; - hash = "sha256-SRtnib5C9YlNOC1YgXZVFgO2dIHSmk+I20Ltf4XkJ6E="; + hash = "sha256-gaTgNTn0/HHzULHRL03+t73MEUOGdqcEyqaIt8CWA0k="; }; sourceRoot = "${finalAttrs.src.name}/src-tauri"; diff --git a/pkgs/by-name/ci/cinny-unwrapped/package.nix b/pkgs/by-name/ci/cinny-unwrapped/package.nix index bddf77db30db..add2f7191cc7 100644 --- a/pkgs/by-name/ci/cinny-unwrapped/package.nix +++ b/pkgs/by-name/ci/cinny-unwrapped/package.nix @@ -7,17 +7,17 @@ buildNpmPackage (finalAttrs: { pname = "cinny-unwrapped"; # Remember to update cinny-desktop when bumping this version. - version = "4.12.1"; + version = "4.12.2"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "cinnyapp"; repo = "cinny"; tag = "v${finalAttrs.version}"; - hash = "sha256-s9nu6hYe0OvRcp8n2cOJnhEzIV+nyjnfwTrY477XDT8="; + hash = "sha256-UF5MwV02G0oYIXtvyzHn+DifYM8PFlyb9DZ4w1fuyDE="; }; - npmDepsHash = "sha256-e37tSrqrEXGH2uInFAiikHNwJ13gXlG50SeYF/HO0z4="; + npmDepsHash = "sha256-8SyUFv1wgnqfSyBlykmeGI8RAmFt5Q5uS6OFLi+qPPY="; # Skip rebuilding native modules since they're not needed for the web app npmRebuildFlags = [ diff --git a/pkgs/by-name/cl/click/package.nix b/pkgs/by-name/cl/click/package.nix index 8002635fc937..15f231edc31f 100644 --- a/pkgs/by-name/cl/click/package.nix +++ b/pkgs/by-name/cl/click/package.nix @@ -5,16 +5,19 @@ stdenv, pkg-config, openssl, + versionCheckHook, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "click"; version = "0.6.3"; + __structuredAttrs = true; + src = fetchFromGitHub { owner = "databricks"; repo = "click"; - rev = "v${finalAttrs.version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-tYSbyDipZg6Qj/CWk1QVUT5AG8ncTt+5V1+ekpmsKXA="; }; @@ -24,15 +27,14 @@ rustPlatform.buildRustPackage (finalAttrs: { buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ openssl ]; + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; + meta = { description = "Command Line Interactive Controller for Kubernetes"; homepage = "https://github.com/databricks/click"; license = [ lib.licenses.asl20 ]; maintainers = [ lib.maintainers.mbode ]; - platforms = [ - "x86_64-linux" - "x86_64-darwin" - ]; mainProgram = "click"; }; }) diff --git a/pkgs/by-name/co/codesnap/package.nix b/pkgs/by-name/co/codesnap/package.nix index 797f5412cb56..1c5f02c8b1ea 100644 --- a/pkgs/by-name/co/codesnap/package.nix +++ b/pkgs/by-name/co/codesnap/package.nix @@ -9,16 +9,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "codesnap"; - version = "0.13.1"; + version = "0.13.4"; src = fetchFromGitHub { owner = "codesnap-rs"; repo = "codesnap"; tag = "v${finalAttrs.version}"; - hash = "sha256-baTIxqfxxoHl7h81pboFlze5m/EMiEx9YOMfV0UPESI="; + hash = "sha256-cMxXzLvnqsloKT7ixMlQnAq+ZempLeEzkWyWxG4jt9Y="; }; - cargoHash = "sha256-bi5vvUDMI4WxIpv0sHESmLg3vwAIbNQ11pbJDuSe8z4="; + cargoHash = "sha256-QMpncisumxF02lFQ8xsZiR5AYZVSHWlAuuFDg0ZoPtI="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/de/deezer-desktop/package.nix b/pkgs/by-name/de/deezer-desktop/package.nix index c3a29be27f6c..8ae67c4a07b7 100644 --- a/pkgs/by-name/de/deezer-desktop/package.nix +++ b/pkgs/by-name/de/deezer-desktop/package.nix @@ -8,15 +8,15 @@ }: let - version = "7.1.220"; + version = "7.1.230"; srcs = { x86_64-linux = fetchurl { url = "https://github.com/aunetx/deezer-linux/releases/download/v${version}/deezer-desktop-${version}-x64.tar.xz"; - hash = "sha256-q4j4S88c7xsC+Ax7XY1EVbqRRJXH+JzLrZRRB6rfQOE="; + hash = "sha256-OP5ceyGQQFRgW1GZPElxdjkYikNVMkvomkXCr9dD67Y="; }; aarch64-linux = fetchurl { url = "https://github.com/aunetx/deezer-linux/releases/download/v${version}/deezer-desktop-${version}-arm64.tar.xz"; - hash = "sha256-g94qn+EHr8Dwn21L7z3W7Z5+LJoVSQcAEXHpJiAdbJg="; + hash = "sha256-IiUZgMHdhkU0B5uDLARHpcCUxlsZ4+rj5sAKJXZpcBw="; }; }; diff --git a/pkgs/by-name/de/devin-cli/package.nix b/pkgs/by-name/de/devin-cli/package.nix index d5e6f1a1381d..9658cbb98930 100644 --- a/pkgs/by-name/de/devin-cli/package.nix +++ b/pkgs/by-name/de/devin-cli/package.nix @@ -81,7 +81,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { meta = { description = "Cognition's Devin Agent CLI"; - homepage = "https://devin.ai/"; + homepage = "https://devin.ai/cli"; license = lib.licenses.unfree; sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; maintainers = with lib.maintainers; [ diff --git a/pkgs/by-name/eg/egl-wayland/package.nix b/pkgs/by-name/eg/egl-wayland/package.nix index c16988d026a0..0b22acd905c8 100644 --- a/pkgs/by-name/eg/egl-wayland/package.nix +++ b/pkgs/by-name/eg/egl-wayland/package.nix @@ -70,9 +70,6 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://github.com/NVIDIA/egl-wayland/"; license = lib.licenses.mit; platforms = lib.platforms.linux ++ lib.platforms.freebsd; - maintainers = with lib.maintainers; [ - hedning - ccicnce113424 - ]; + maintainers = with lib.maintainers; [ ccicnce113424 ]; }; }) diff --git a/pkgs/by-name/eg/eglexternalplatform/package.nix b/pkgs/by-name/eg/eglexternalplatform/package.nix index c8ac9db06298..cca65eb0cf2a 100644 --- a/pkgs/by-name/eg/eglexternalplatform/package.nix +++ b/pkgs/by-name/eg/eglexternalplatform/package.nix @@ -40,9 +40,6 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://github.com/NVIDIA/eglexternalplatform"; license = lib.licenses.mit; platforms = lib.platforms.linux ++ lib.platforms.freebsd; - maintainers = with lib.maintainers; [ - hedning - ccicnce113424 - ]; + maintainers = with lib.maintainers; [ ccicnce113424 ]; }; }) diff --git a/pkgs/by-name/el/elan/package.nix b/pkgs/by-name/el/elan/package.nix index 24bcb58f06bd..0ca63a1d50cf 100644 --- a/pkgs/by-name/el/elan/package.nix +++ b/pkgs/by-name/el/elan/package.nix @@ -16,16 +16,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "elan"; - version = "4.2.2"; + version = "4.2.3"; src = fetchFromGitHub { owner = "leanprover"; repo = "elan"; rev = "v${finalAttrs.version}"; - hash = "sha256-2Z/lw6tCloY6Lg+zHkYbfazLXMks6bxYBF5PxhI+654="; + hash = "sha256-Ael2hla+jqiaP8FfYYQ0u3V8cVt+CEFEQU7jB3LYG2E="; }; - cargoHash = "sha256-QilFETnaZtOVIwl+IrCvNjnofnQfEqC0ILsT1nQShgw="; + cargoHash = "sha256-MDe/QBE1gd/4yMAuwBga8x9yv3duf3vaudMongurtQI="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ff/fflogs/package.nix b/pkgs/by-name/ff/fflogs/package.nix index bc3ca4bbae15..2de7dfe9bf3c 100644 --- a/pkgs/by-name/ff/fflogs/package.nix +++ b/pkgs/by-name/ff/fflogs/package.nix @@ -6,10 +6,10 @@ let pname = "fflogs"; - version = "9.3.61"; + version = "9.3.65"; src = fetchurl { url = "https://github.com/RPGLogs/Uploaders-fflogs/releases/download/v${version}/fflogs-v${version}.AppImage"; - hash = "sha256-QBiZR8wjhMsLguzBaM21mADlR1hKHdBuK66DcSzyVtQ="; + hash = "sha256-HsanoX1iJpLC8p64H4enlo20X6LOBNAxkubwPBp5juA="; }; extracted = appimageTools.extractType2 { inherit pname version src; }; in diff --git a/pkgs/by-name/fr/freetube/package.nix b/pkgs/by-name/fr/freetube/package.nix index 9114823a9b3a..89da9140443b 100644 --- a/pkgs/by-name/fr/freetube/package.nix +++ b/pkgs/by-name/fr/freetube/package.nix @@ -20,13 +20,13 @@ let in stdenvNoCC.mkDerivation (finalAttrs: { pname = "freetube"; - version = "0.24.0"; + version = "0.24.1"; src = fetchFromGitHub { owner = "FreeTubeApp"; repo = "FreeTube"; tag = "v${finalAttrs.version}-beta"; - hash = "sha256-4XyN7ENsDwLNB/dt7pp8z0sbdmHSNIyVEHlp5GXIues="; + hash = "sha256-oo5ozdP3d82jY8OOYrt568MoSfPmwBoitdtgESiRMlE="; }; # Darwin requires writable Electron dist diff --git a/pkgs/by-name/ga/gat/package.nix b/pkgs/by-name/ga/gat/package.nix index 13a2fc1ad455..5dd61466495f 100644 --- a/pkgs/by-name/ga/gat/package.nix +++ b/pkgs/by-name/ga/gat/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "gat"; - version = "0.27.3"; + version = "0.30.2"; src = fetchFromGitHub { owner = "koki-develop"; repo = "gat"; tag = "v${finalAttrs.version}"; - hash = "sha256-PCHCBYflW+wUYzwlMOSno/xG5UX34QM9aG0RaCtC9h0="; + hash = "sha256-xDzjahtPD53sCmZOFbogrU7/y+YvpVC0l5K2dtTks1o="; }; - vendorHash = "sha256-tFEir5386McMi5i6Mk/6B4KPZhEucOcWAO2jECouDDg="; + vendorHash = "sha256-HHhvJNuoUHjHdQ864YpUWxRHCXeL/cd4EHSFq3N2mo4="; env.CGO_ENABLED = 0; diff --git a/pkgs/tools/misc/geekbench/4.nix b/pkgs/by-name/ge/geekbench/4.nix similarity index 100% rename from pkgs/tools/misc/geekbench/4.nix rename to pkgs/by-name/ge/geekbench/4.nix diff --git a/pkgs/tools/misc/geekbench/5.nix b/pkgs/by-name/ge/geekbench/5.nix similarity index 100% rename from pkgs/tools/misc/geekbench/5.nix rename to pkgs/by-name/ge/geekbench/5.nix diff --git a/pkgs/tools/misc/geekbench/6.nix b/pkgs/by-name/ge/geekbench/package.nix similarity index 83% rename from pkgs/tools/misc/geekbench/6.nix rename to pkgs/by-name/ge/geekbench/package.nix index 41ff65ced4e0..e351e85219e2 100644 --- a/pkgs/tools/misc/geekbench/6.nix +++ b/pkgs/by-name/ge/geekbench/package.nix @@ -11,15 +11,19 @@ let inherit (stdenv.hostPlatform.uname) processor; - version = "6.4.0"; + version = "6.7.1"; sources = { "x86_64-linux" = { url = "https://cdn.geekbench.com/Geekbench-${version}-Linux.tar.gz"; - hash = "sha256-Q4MwU3dIFheKKSMxzCBZI8XoForaN41BuRGVMhJaUKw="; + hash = "sha256-Ddypd9622dtL2GZIX5QI5y4oadDeoHN7GNS/5HKFis4="; }; "aarch64-linux" = { url = "https://cdn.geekbench.com/Geekbench-${version}-LinuxARMPreview.tar.gz"; - hash = "sha256-PZ95w2X4sqTLZGZ5wygt7WjSK4Gfgtdh/UCPo+8Ysc8="; + hash = "sha256-blmsuD5t6jZx4uKVNl/DfED90oDNvd1QrPJIkQ4UoOM="; + }; + "riscv64-linux" = { + url = "https://cdn.geekbench.com/Geekbench-${version}-LinuxRISCVPreview.tar.gz"; + hash = "sha256-TByNeLqqHrnrLcX/meXNy6Evvebf0/xWnUohd/TwiAk="; }; }; geekbench_avx2 = lib.optionalString stdenv.hostPlatform.isx86_64 "geekbench_avx2"; diff --git a/pkgs/by-name/gi/gitlab-ci-ls/package.nix b/pkgs/by-name/gi/gitlab-ci-ls/package.nix index ac939c38bc36..98fb458854af 100644 --- a/pkgs/by-name/gi/gitlab-ci-ls/package.nix +++ b/pkgs/by-name/gi/gitlab-ci-ls/package.nix @@ -8,15 +8,15 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "gitlab-ci-ls"; - version = "1.3.2"; + version = "1.3.3"; src = fetchFromGitHub { owner = "alesbrelih"; repo = "gitlab-ci-ls"; rev = "${finalAttrs.version}"; - hash = "sha256-b//Yi+7jOQv+pHyeS/t3OSBMCZZ34sP8xXCNivlShYQ="; + hash = "sha256-VA1y24JObxUcY8BPq9xtbajBrFlcq5H1wi8j7jQtsY4="; }; - cargoHash = "sha256-BCV5LU8cVf40vCQCN56dlWiyvfvwF4nPUcLb+mOfsok="; + cargoHash = "sha256-SNc2mgfUaKYGsIDnpigMciO/l8EavlCbE8gCUSdj7aA="; nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ]; diff --git a/pkgs/by-name/go/gogdl/package.nix b/pkgs/by-name/go/gogdl/package.nix index 8d10143de43d..3c5df2a78ba0 100644 --- a/pkgs/by-name/go/gogdl/package.nix +++ b/pkgs/by-name/go/gogdl/package.nix @@ -6,7 +6,7 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "gogdl"; - version = "1.2.1"; + version = "1.2.2"; pyproject = true; src = fetchFromGitHub { @@ -14,7 +14,7 @@ python3Packages.buildPythonApplication (finalAttrs: { repo = "heroic-gogdl"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-qYarDcwrVrTpLHQYdWQvXL5+V1wMyL06+n5t6LXKBHI="; + hash = "sha256-gXAlZa4rml8fH54jpOIXZN0/1iieLpZwpii5ICHQ2Sc="; }; build-system = with python3Packages; [ diff --git a/pkgs/by-name/gs/gs1200-exporter/package.nix b/pkgs/by-name/gs/gs1200-exporter/package.nix new file mode 100644 index 000000000000..bbbec26d705a --- /dev/null +++ b/pkgs/by-name/gs/gs1200-exporter/package.nix @@ -0,0 +1,28 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + nixosTests, +}: +buildGoModule rec { + pname = "gs1200-exporter"; + version = "2.11.12"; + __structuredAttrs = true; + src = fetchFromGitHub { + owner = "robinelfrink"; + repo = "gs1200-exporter"; + tag = "v${version}"; + hash = "sha256-8s2VgaqYXp9PN2oNU/sWpjQjDPSWolbWEVSZcx9Lh3M="; + }; + vendorHash = "sha256-204bFaywOolKVNoeH/w72Ba1PYAVgQawEmlaEXgRaRY="; + passthru.tests = { + inherit (nixosTests) gs1200-exporter; + }; + meta = { + description = "Prometheus exporter for Zyxel GS1200 switches"; + homepage = "https://github.com/robinelfrink/gs1200-exporter"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ DerGrumpf ]; + mainProgram = "gs1200-exporter"; + }; +} diff --git a/pkgs/by-name/he/helmfile/package.nix b/pkgs/by-name/he/helmfile/package.nix index 0c8fc12da80f..2e08367ed9f9 100644 --- a/pkgs/by-name/he/helmfile/package.nix +++ b/pkgs/by-name/he/helmfile/package.nix @@ -10,16 +10,16 @@ buildGoModule (finalAttrs: { pname = "helmfile"; - version = "1.5.0"; + version = "1.5.2"; src = fetchFromGitHub { owner = "helmfile"; repo = "helmfile"; rev = "v${finalAttrs.version}"; - hash = "sha256-Uqm4cnhuILGmdwyZkLNJXrBF4H/zZkg7PfdE//jLP5A="; + hash = "sha256-5eWD4Hr65DDWAXHXk0A9Mt90ZNcGt+6NXH5ggSHA4Fk="; }; - vendorHash = "sha256-8JEKAiEwkzjFzoMVyPd2Wmpt/Fjh+j9ocmIn5cQBVqE="; + vendorHash = "sha256-bbMBesSbDMUqaJWm3Pgauz6tNw8gB0H5vQWKZJSn3sQ="; proxyVendor = true; # darwin/linux hash mismatch diff --git a/pkgs/by-name/hw/hwinfo/package.nix b/pkgs/by-name/hw/hwinfo/package.nix index 832ff5c985ec..9402505a2df6 100644 --- a/pkgs/by-name/hw/hwinfo/package.nix +++ b/pkgs/by-name/hw/hwinfo/package.nix @@ -20,13 +20,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "hwinfo"; - version = "25.3"; + version = "25.4"; src = fetchFromGitHub { owner = "opensuse"; repo = "hwinfo"; rev = finalAttrs.version; - hash = "sha256-lc+x81aPbfoAV8YXH77r+BBERUFbv4stSPq3U36HXAI="; + hash = "sha256-XFb87IuFXYmFnlrjinz7Q+FhoRtpdToW9tos3pFzQYE="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/i7/i7z/package.nix b/pkgs/by-name/i7/i7z/package.nix index 305fd0c689b7..fd270f7c7bc8 100644 --- a/pkgs/by-name/i7/i7z/package.nix +++ b/pkgs/by-name/i7/i7z/package.nix @@ -8,15 +8,18 @@ libsForQt5, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "i7z"; version = "0.27.4"; + strictDeps = true; + __structuredAttrs = true; + src = fetchFromGitHub { owner = "DimitryAndric"; repo = "i7z"; - rev = "v${version}"; - sha256 = "00c4ng30ry88hcya4g1i9dngiqmz3cs31x7qh1a10nalxn1829xy"; + tag = "v${finalAttrs.version}"; + hash = "sha256-vieBgu1UWRBUgPj0MDQbv+L4bEsxPKI8gwj5DMazhAE="; }; buildInputs = [ ncurses ] ++ lib.optional withGui libsForQt5.qtbase; @@ -24,15 +27,15 @@ stdenv.mkDerivation rec { patches = [ (fetchpatch { url = "https://salsa.debian.org/debian/i7z/raw/ad1359764ee7a860a02e0c972f40339058fa9369/debian/patches/fix-insecure-tempfile.patch"; - sha256 = "0ifg06xjw14y4fnzzgkhqm4sv9mcdzgi8m2wffq9z8b1r0znya3s"; + hash = "sha256-eihvP8hhoZ+wc1xUFN9vrKatScVwvv+tI54ELrsBz0U="; }) (fetchpatch { url = "https://salsa.debian.org/debian/i7z/raw/ad1359764ee7a860a02e0c972f40339058fa9369/debian/patches/nehalem.patch"; - sha256 = "1ys6sgm01jkqb6d4y7qc3h89dzph8jjjcfya5c5jcm7dkxlzjq8a"; + hash = "sha256-CmH5aZ/tVCYLK8o7JqVE8P6WEBwMH0+aWXjKAOrTRvs="; }) (fetchpatch { url = "https://salsa.debian.org/debian/i7z/raw/ad1359764ee7a860a02e0c972f40339058fa9369/debian/patches/hyphen-used-as-minus-sign.patch"; - sha256 = "1ji2qvdyq0594cpqz0dlsfggvw3rm63sygh0jxvwjgxpnhykhg1p"; + hash = "sha256-Nzw4PbS3P8l3lwA+r4epefD9ntO0gY8vI6kA7NvGIso="; }) ./qt5.patch ]; @@ -61,4 +64,4 @@ stdenv.mkDerivation rec { # broken on ARM platforms = [ "x86_64-linux" ]; }; -} +}) diff --git a/pkgs/by-name/kr/krita/package.nix b/pkgs/by-name/kr/krita/package.nix index 6dc47408d0b4..67f9e84d29f7 100644 --- a/pkgs/by-name/kr/krita/package.nix +++ b/pkgs/by-name/kr/krita/package.nix @@ -6,20 +6,26 @@ krita-plugin-gmic ], krita-unwrapped, + wrapGAppsHook3, }: symlinkJoin { pname = "krita"; inherit (krita-unwrapped) version buildInputs - nativeBuildInputs meta ; + nativeBuildInputs = krita-unwrapped.nativeBuildInputs ++ [ + wrapGAppsHook3 + ]; + paths = [ krita-unwrapped ] ++ binaryPlugins; postBuild = '' + gappsWrapperArgsHook wrapQtApp "$out/bin/krita" \ + "''${gappsWrapperArgs[@]}" \ --prefix PYTHONPATH : "$PYTHONPATH" \ --set KRITA_PLUGIN_PATH "$out/lib/kritaplugins" ''; diff --git a/pkgs/by-name/li/libation/deps.json b/pkgs/by-name/li/libation/deps.json index b13b057ba0fa..483200e167e9 100644 --- a/pkgs/by-name/li/libation/deps.json +++ b/pkgs/by-name/li/libation/deps.json @@ -11,8 +11,8 @@ }, { "pname": "AudibleApi", - "version": "10.1.5.1", - "hash": "sha256-XSLNUNXlOj0YCqe4Ix+mvbR64Mr/mQgeXTif0q+OSCo=" + "version": "10.2.0.1", + "hash": "sha256-z0IzuOE8eDWyyz7gf1gMGdVMMIhs6axoAceaafaZbbw=" }, { "pname": "Avalonia", @@ -626,13 +626,13 @@ }, { "pname": "ReactiveUI", - "version": "23.2.1", - "hash": "sha256-Na0BtJBMBdz8JiK+2cbaM/7lkd+tuGL9Lr5gEVPfPX0=" + "version": "23.2.28", + "hash": "sha256-GaPH7EqdaamvhyVphO9TLfD5dFMVV2gA33JwbR6Lzoc=" }, { "pname": "ReactiveUI.Avalonia", - "version": "12.0.1", - "hash": "sha256-MoNUvbQ5XTuDNVPC4bVHcxRtRiU/oduaHCRL6IfKb+Q=" + "version": "12.0.2", + "hash": "sha256-bFylVd7nljJMBszmAWNJa9R3Q03s/Bp2M2+GJKjYxWU=" }, { "pname": "Serilog", @@ -701,23 +701,23 @@ }, { "pname": "Splat", - "version": "19.3.1", - "hash": "sha256-ri8qniMdAzAO4cjjVfuSFxMM6MvxFrG6+d2cPWJeLUE=" + "version": "19.4.1", + "hash": "sha256-+huQc0B/7XQA7zPf+4jFLXfBj6Y8K9gRRp7tATKuXH8=" }, { "pname": "Splat.Builder", - "version": "19.3.1", - "hash": "sha256-XN/3+5BEaq6v17eWKFUOqqCmVWJLEVQBm5cvejxetw8=" + "version": "19.4.1", + "hash": "sha256-fVTi/MpA4t6QR3+NgNTL3lRwcVCkKFAZYHGDvChVadM=" }, { "pname": "Splat.Core", - "version": "19.3.1", - "hash": "sha256-Fav212nMhUGO5/1zFKevXVm21MH+x7NTqgq1jD1WRKw=" + "version": "19.4.1", + "hash": "sha256-0XxTbnSH8yLC6XSbnhm1qv3YlDYTzpvFJlt/6mz0o/g=" }, { "pname": "Splat.Logging", - "version": "19.3.1", - "hash": "sha256-rTXD2bqIa/IjeN/mFv9n9mkL2rujEg1iIUPimVpYLBQ=" + "version": "19.4.1", + "hash": "sha256-nk4NgktArB7v9HNdu9NnewYQcwaQl+fZlRZbieXW6Dw=" }, { "pname": "SQLitePCLRaw.bundle_e_sqlite3", diff --git a/pkgs/by-name/li/libation/package.nix b/pkgs/by-name/li/libation/package.nix index 8d0deb654c95..334b5c9ea34a 100644 --- a/pkgs/by-name/li/libation/package.nix +++ b/pkgs/by-name/li/libation/package.nix @@ -16,13 +16,13 @@ buildDotnetModule rec { pname = "libation"; - version = "13.4.4"; + version = "13.4.5"; src = fetchFromGitHub { owner = "rmcrackan"; repo = "Libation"; tag = "v${version}"; - hash = "sha256-qOoPSpNzm31iUpf0tOR5BoL4M0kjZbvNCk3Mb6eN1WI="; + hash = "sha256-t4Fz7aqQg1WPqSKvvVbSx45M6+UNGXacFHXGjzNW67A="; }; sourceRoot = "${src.name}/Source"; diff --git a/pkgs/by-name/lp/lprint/package.nix b/pkgs/by-name/lp/lprint/package.nix index b3cff9d725c4..1cfc3cd8898d 100644 --- a/pkgs/by-name/lp/lprint/package.nix +++ b/pkgs/by-name/lp/lprint/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "lprint"; - version = "1.3.1"; + version = "1.4.0"; src = fetchFromGitHub { owner = "michaelrsweet"; repo = "lprint"; rev = "v${finalAttrs.version}"; - hash = "sha256-1OOLGQ8S4oRNSJanX/AzJ+g5F+jYnE/+o+ie5ucY22U="; + hash = "sha256-r5mOwkU828btDdt0y7JrEl6KSim8VaF/y4R58zPX3eI="; }; outputs = [ diff --git a/pkgs/by-name/ma/maestro/package.nix b/pkgs/by-name/ma/maestro/package.nix index a5c91c4b5f87..95ba032e5135 100644 --- a/pkgs/by-name/ma/maestro/package.nix +++ b/pkgs/by-name/ma/maestro/package.nix @@ -10,11 +10,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "maestro"; - version = "2.5.1"; + version = "2.6.0"; src = fetchurl { url = "https://github.com/mobile-dev-inc/maestro/releases/download/cli-${finalAttrs.version}/maestro.zip"; - hash = "sha256-LZJL/TfMyrykOKcnITZIy/5Pi7cRVZ7I6dGZ3AmlzlI="; + hash = "sha256-gBhRBaXX4ifjs/vPIl9FsxJQjqZ2qfyOGxqhysi5/24="; }; dontUnpack = true; diff --git a/pkgs/by-name/ma/mas/package.nix b/pkgs/by-name/ma/mas/package.nix index cd9a73a192be..b9014aa454c1 100644 --- a/pkgs/by-name/ma/mas/package.nix +++ b/pkgs/by-name/ma/mas/package.nix @@ -5,13 +5,14 @@ installShellFiles, libarchive, p7zip, - testers, - mas, + versionCheckHook, }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "mas"; version = "6.0.1"; + __structuredAttrs = true; + src = let # nix store prefetch-file https://github.com/mas-cli/mas/releases/download/v$VERSION/mas-$VERSION-$ARCH.pkg @@ -65,12 +66,8 @@ stdenvNoCC.mkDerivation (finalAttrs: { runHook postInstall ''; - passthru.tests = { - version = testers.testVersion { - package = mas; - command = "mas version"; - }; - }; + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; meta = { description = "Mac App Store command line interface"; diff --git a/pkgs/by-name/ma/material-symbols/package.nix b/pkgs/by-name/ma/material-symbols/package.nix index c2f78e54ec82..9fec0f1f675e 100644 --- a/pkgs/by-name/ma/material-symbols/package.nix +++ b/pkgs/by-name/ma/material-symbols/package.nix @@ -7,13 +7,13 @@ }: stdenvNoCC.mkDerivation { pname = "material-symbols"; - version = "4.0.0-unstable-2026-05-08"; + version = "4.0.0-unstable-2026-06-05"; src = fetchFromGitHub { owner = "google"; repo = "material-design-icons"; - rev = "5a4e1b7fd26f11ce3d2abf7d7fcd13274f874e6c"; - hash = "sha256-XVza/duC2hsBrT6Ty1XxJy0m/lpuBt2rVoUo5B1JmUc="; + rev = "27aa4d49e4fabcb2a7f3acc86d205d33b159fad3"; + hash = "sha256-l8uXZZZ0rtQIYiEua8xmpuacLiR8hVjclAyc9dUI8z8="; sparseCheckout = [ "variablefont" ]; }; diff --git a/pkgs/applications/networking/p2p/mldonkey/gettext-0.25.patch b/pkgs/by-name/ml/mldonkey/gettext-0.25.patch similarity index 100% rename from pkgs/applications/networking/p2p/mldonkey/gettext-0.25.patch rename to pkgs/by-name/ml/mldonkey/gettext-0.25.patch diff --git a/pkgs/applications/networking/p2p/mldonkey/default.nix b/pkgs/by-name/ml/mldonkey/package.nix similarity index 87% rename from pkgs/applications/networking/p2p/mldonkey/default.nix rename to pkgs/by-name/ml/mldonkey/package.nix index d32465afcf4a..29a7cfb6a507 100644 --- a/pkgs/applications/networking/p2p/mldonkey/default.nix +++ b/pkgs/by-name/ml/mldonkey/package.nix @@ -4,19 +4,22 @@ fetchFromGitHub, autoreconfHook, autoconf-archive, - ocamlPackages, + ocaml-ng, pkg-config, zlib, }: -stdenv.mkDerivation rec { +let + ocamlPackages = ocaml-ng.ocamlPackages_4_14; +in +stdenv.mkDerivation (finalAttrs: { pname = "mldonkey"; version = "3.2.1"; src = fetchFromGitHub { owner = "ygrek"; repo = "mldonkey"; - tag = "release-${lib.replaceStrings [ "." ] [ "-" ] version}"; + tag = "release-${lib.replaceStrings [ "." ] [ "-" ] finalAttrs.version}"; hash = "sha256-Dbb7163CdqHY7/FJY2yWBFRudT+hTFT6fO4sFgt6C/A="; }; @@ -30,6 +33,7 @@ stdenv.mkDerivation rec { ''; strictDeps = true; + __structuredAttrs = true; nativeBuildInputs = [ autoreconfHook @@ -70,4 +74,4 @@ stdenv.mkDerivation rec { license = lib.licenses.gpl2Only; platforms = lib.platforms.unix; }; -} +}) diff --git a/pkgs/by-name/mp/mpdris2/package.nix b/pkgs/by-name/mp/mpdris2/package.nix index 8beb193aafb5..bb1f9cca323c 100644 --- a/pkgs/by-name/mp/mpdris2/package.nix +++ b/pkgs/by-name/mp/mpdris2/package.nix @@ -60,7 +60,7 @@ python3Packages.buildPythonApplication (finalAttrs: { description = "MPRIS 2 support for mpd"; homepage = "https://github.com/eonpatapon/mpDris2/"; license = lib.licenses.gpl3Plus; - maintainers = [ ]; + maintainers = with lib.maintainers; [ acidbong ]; platforms = lib.platforms.unix; mainProgram = "mpDris2"; }; diff --git a/pkgs/by-name/n8/n8n-task-runner-launcher/package.nix b/pkgs/by-name/n8/n8n-task-runner-launcher/package.nix index 233e3d3a1264..ca33e97df851 100644 --- a/pkgs/by-name/n8/n8n-task-runner-launcher/package.nix +++ b/pkgs/by-name/n8/n8n-task-runner-launcher/package.nix @@ -6,13 +6,13 @@ }: buildGoModule (finalAttrs: { pname = "n8n-task-runner-launcher"; - version = "1.4.5"; + version = "1.4.6"; src = fetchFromGitHub { owner = "n8n-io"; repo = "task-runner-launcher"; tag = finalAttrs.version; - hash = "sha256-7V//x/AG/3dNWIAQpjBrcOJNn9T9iboKEvJvDV2EK5A="; + hash = "sha256-9XbeAssVQBcAfuiCgLEAX0CkI9u1410PE2HOcrI2Uxs="; }; vendorHash = "sha256-5dcIELsNFGB5qTmfpY/YRWeN2z9GdanysGw4Lqpfsi0="; diff --git a/pkgs/by-name/ni/nix-bash-completions/package.nix b/pkgs/by-name/ni/nix-bash-completions/package.nix index 0504a7612224..689eb2a0e694 100644 --- a/pkgs/by-name/ni/nix-bash-completions/package.nix +++ b/pkgs/by-name/ni/nix-bash-completions/package.nix @@ -60,10 +60,7 @@ stdenv.mkDerivation (finalAttrs: { description = "Bash completions for Nix, NixOS, and NixOps"; license = lib.licenses.bsd3; platforms = lib.platforms.all; - maintainers = with lib.maintainers; [ - hedning - ncfavier - ]; + maintainers = with lib.maintainers; [ ncfavier ]; # Set a lower priority such that Nix wins in case of conflicts. priority = 10; }; diff --git a/pkgs/by-name/ni/nix-zsh-completions/package.nix b/pkgs/by-name/ni/nix-zsh-completions/package.nix index 61cf1a8dc867..2cd61a54d2f4 100644 --- a/pkgs/by-name/ni/nix-zsh-completions/package.nix +++ b/pkgs/by-name/ni/nix-zsh-completions/package.nix @@ -37,7 +37,6 @@ stdenvNoCC.mkDerivation (finalAttrs: { platforms = lib.platforms.all; maintainers = with lib.maintainers; [ olejorgenb - hedning ma27 ]; }; diff --git a/pkgs/by-name/ni/nixpkgs-vet/package.nix b/pkgs/by-name/ni/nixpkgs-vet/package.nix index a764d2e627c7..2901878e9a94 100644 --- a/pkgs/by-name/ni/nixpkgs-vet/package.nix +++ b/pkgs/by-name/ni/nixpkgs-vet/package.nix @@ -6,16 +6,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "nixpkgs-vet"; - version = "0.3.0"; + version = "0.3.2"; src = fetchFromGitHub { owner = "NixOS"; repo = "nixpkgs-vet"; - tag = finalAttrs.version; - hash = "sha256-Rk1p6qAqAtl5bwg9dNZ0yc4m1yOOxybWvTwfuNcOkFQ="; + tag = "v${finalAttrs.version}"; + hash = "sha256-GJhN77zLtV2fUEL5wxjcybtDqUa6ODg39d3UxuOrapo="; }; - cargoHash = "sha256-GaQ2ldsGabsDMx1bHuZwnSvtPp1LgPkj2C07cnEBdDY="; + cargoHash = "sha256-zTh18jec0trJP4q3rYheHZz01lbkhpDaotuPbvgzMpo="; doCheck = false; @@ -23,6 +23,7 @@ rustPlatform.buildRustPackage (finalAttrs: { meta = { description = "Tool to vet (check) Nixpkgs, including its pkgs/by-name directory"; + changelog = "https://github.com/NixOS/nixpkgs-vet/blob/${finalAttrs.src.rev}/CHANGELOG.md"; homepage = "https://github.com/NixOS/nixpkgs-vet"; license = lib.licenses.mit; mainProgram = "nixpkgs-vet"; diff --git a/pkgs/by-name/no/notesnook/package.nix b/pkgs/by-name/no/notesnook/package.nix index e8cc52f57f8d..8669a0f49526 100644 --- a/pkgs/by-name/no/notesnook/package.nix +++ b/pkgs/by-name/no/notesnook/package.nix @@ -9,7 +9,7 @@ let pname = "notesnook"; - version = "3.3.20"; + version = "3.3.21"; inherit (stdenv.hostPlatform) system; throwSystem = throw "Unsupported system: ${system}"; @@ -27,10 +27,10 @@ let url = "https://github.com/streetwriters/notesnook/releases/download/v${version}/notesnook_${suffix}"; hash = { - x86_64-linux = "sha256-4TMQAs4ovBc2HFPxu0aNGZpA+N/xUBgcforJqT7jSCg="; - aarch64-linux = "sha256-royjfwu8bU6FJY3M18c0fRoRoM1dwWzhkuftdZ/XKeI="; - x86_64-darwin = "sha256-iqZbOlSkCXMsDYUsImAVROeKb11Rj6vKVbyTDGayfzY="; - aarch64-darwin = "sha256-ozPAwuM3mTq8r9iD+kKAXzeb8Z5xYaMBbHyXx4UEhY8="; + x86_64-linux = "sha256-NmhV+x5HrKBO7BX1bJyjChKQF/j38kQqJ3x0amSXzGU="; + aarch64-linux = "sha256-IU4hF/ol4pyh+ABTri2aqwqaB+cfrHLtsF7wrqE+wEY="; + x86_64-darwin = "sha256-YhJvkKreWUReEgs4R9lWV0/cx3d0hrjKTHZn0hDsp3k="; + aarch64-darwin = "sha256-9CTGpCPJY6sq6JWDpoCTyOTt/vtCazDaoDzFFUzR9zg="; } .${system} or throwSystem; }; diff --git a/pkgs/development/tools/ocaml/obelisk/default.nix b/pkgs/by-name/ob/obelisk/package.nix similarity index 68% rename from pkgs/development/tools/ocaml/obelisk/default.nix rename to pkgs/by-name/ob/obelisk/package.nix index 7a24d014a733..98c6f67cd961 100644 --- a/pkgs/development/tools/ocaml/obelisk/default.nix +++ b/pkgs/by-name/ob/obelisk/package.nix @@ -2,22 +2,22 @@ lib, fetchFromGitHub, ocamlPackages, - menhir, }: -ocamlPackages.buildDunePackage rec { +ocamlPackages.buildDunePackage (finalAttrs: { pname = "obelisk"; version = "0.8.1"; + src = fetchFromGitHub { owner = "Lelio-Brun"; - repo = pname; - rev = "v${version}"; - sha256 = "sha256-JJ8k9/6awKZH87T9Ut8x/hlshiUI6sy2fZtY6x2dIIk="; + repo = "obelisk"; + tag = "v${finalAttrs.version}"; + hash = "sha256-JJ8k9/6awKZH87T9Ut8x/hlshiUI6sy2fZtY6x2dIIk="; }; strictDeps = true; - nativeBuildInputs = [ menhir ]; + nativeBuildInputs = with ocamlPackages; [ menhir ]; buildInputs = with ocamlPackages; [ re ]; meta = { @@ -27,4 +27,4 @@ ocamlPackages.buildDunePackage rec { maintainers = [ lib.maintainers.vbgl ]; homepage = "https://github.com/Lelio-Brun/Obelisk"; }; -} +}) diff --git a/pkgs/by-name/om/omnictl/package.nix b/pkgs/by-name/om/omnictl/package.nix index dc086ccd503e..d1b494da617b 100644 --- a/pkgs/by-name/om/omnictl/package.nix +++ b/pkgs/by-name/om/omnictl/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "omnictl"; - version = "1.8.0"; + version = "1.8.2"; src = fetchFromGitHub { owner = "siderolabs"; repo = "omni"; rev = "v${version}"; - hash = "sha256-8oTLe4ZGXqL62h+AbjjKv/SmDd9cMvFO3k/0K3VdrNI="; + hash = "sha256-cgFbez5SqQa0aOMXEijvepJgWO4I6HDww6Ymjf9KTOI="; }; - vendorHash = "sha256-yO9b26bXCg5pSXX65vQf/8YII/92sDjGJMK40zu/3s8="; + vendorHash = "sha256-b+1ysxtnzaY1G2aiZt+cke5k5NOL93jciTpf0VB1F4w="; ldflags = [ "-s" diff --git a/pkgs/by-name/op/openmm/package.nix b/pkgs/by-name/op/openmm/package.nix index cf6c70d3dbad..381622a5f842 100644 --- a/pkgs/by-name/op/openmm/package.nix +++ b/pkgs/by-name/op/openmm/package.nix @@ -1,12 +1,13 @@ { - stdenv, lib, + stdenv, fetchFromGitHub, cmake, gfortran, fftwSinglePrec, doxygen, swig, + graphviz, enablePython ? false, python3Packages, enableOpencl ? true, @@ -15,18 +16,27 @@ config, enableCuda ? config.cudaSupport, cudaPackages, - addDriverRunpath, + autoAddDriverRunpath, + + # passthru + nix-update-script, }: -stdenv.mkDerivation (finalAttrs: { +let + effectiveStdenv = if enableCuda then cudaPackages.backendStdenv else stdenv; +in +effectiveStdenv.mkDerivation (finalAttrs: { pname = "openmm"; - version = "8.5.1"; + version = "8.5.2"; + + __structuredAttrs = true; + strictDeps = true; src = fetchFromGitHub { owner = "openmm"; repo = "openmm"; - rev = finalAttrs.version; - hash = "sha256-YGoQGOP6Use4ivhxlWfKMpEjpm5ovFH1Qf0yVK5jr48="; + tag = finalAttrs.version; + hash = "sha256-9mOgnMgRU7zE9UWJ03VNoOTt76nPTHXZ4xkSKtOTwng="; }; # "This test is stochastic and may occasionally fail". It does. @@ -42,6 +52,7 @@ stdenv.mkDerivation (finalAttrs: { gfortran swig doxygen + graphviz # doxygen missing components: dot python3Packages.python ] ++ lib.optionals enablePython [ @@ -49,7 +60,10 @@ stdenv.mkDerivation (finalAttrs: { python3Packages.installer python3Packages.wheel ] - ++ lib.optional enableCuda addDriverRunpath; + ++ lib.optionals enableCuda [ + cudaPackages.cuda_nvcc + autoAddDriverRunpath + ]; buildInputs = [ fftwSinglePrec @@ -58,7 +72,12 @@ stdenv.mkDerivation (finalAttrs: { ocl-icd opencl-headers ] - ++ lib.optional enableCuda cudaPackages.cudatoolkit; + ++ lib.optionals enableCuda [ + cudaPackages.cuda_cudart # CUDA::cuda_driver (driver stub) + cudaPackages.cuda_nvrtc # runtime kernel compilation + cudaPackages.cuda_profiler_api # cudaProfiler.h + cudaPackages.libcufft # CUDA::cufft + ]; propagatedBuildInputs = lib.optionals enablePython ( with python3Packages; @@ -71,31 +90,29 @@ stdenv.mkDerivation (finalAttrs: { ); cmakeFlags = [ - "-DBUILD_TESTING=ON" - "-DOPENMM_BUILD_AMOEBA_PLUGIN=ON" - "-DOPENMM_BUILD_CPU_LIB=ON" - "-DOPENMM_BUILD_C_AND_FORTRAN_WRAPPERS=ON" - "-DOPENMM_BUILD_DRUDE_PLUGIN=ON" - "-DOPENMM_BUILD_PME_PLUGIN=ON" - "-DOPENMM_BUILD_RPMD_PLUGIN=ON" - "-DOPENMM_BUILD_SHARED_LIB=ON" + (lib.cmakeBool "BUILD_TESTING" true) + (lib.cmakeBool "OPENMM_BUILD_AMOEBA_PLUGIN" true) + (lib.cmakeBool "OPENMM_BUILD_CPU_LIB" true) + (lib.cmakeBool "OPENMM_BUILD_C_AND_FORTRAN_WRAPPERS" true) + (lib.cmakeBool "OPENMM_BUILD_DRUDE_PLUGIN" true) + (lib.cmakeBool "OPENMM_BUILD_PME_PLUGIN" true) + (lib.cmakeBool "OPENMM_BUILD_RPMD_PLUGIN" true) + (lib.cmakeBool "OPENMM_BUILD_SHARED_LIB" true) ] ++ lib.optionals enablePython [ - "-DOPENMM_BUILD_PYTHON_WRAPPERS=ON" + (lib.cmakeBool "OPENMM_BUILD_PYTHON_WRAPPERS" true) ] ++ lib.optionals enableOpencl [ - "-DOPENMM_BUILD_OPENCL_LIB=ON" - "-DOPENMM_BUILD_AMOEBA_OPENCL_LIB=ON" - "-DOPENMM_BUILD_DRUDE_OPENCL_LIB=ON" - "-DOPENMM_BUILD_RPMD_OPENCL_LIB=ON" + (lib.cmakeBool "OPENMM_BUILD_AMOEBA_OPENCL_LIB" true) + (lib.cmakeBool "OPENMM_BUILD_DRUDE_OPENCL_LIB" true) + (lib.cmakeBool "OPENMM_BUILD_OPENCL_LIB" true) + (lib.cmakeBool "OPENMM_BUILD_RPMD_OPENCL_LIB" true) ] ++ lib.optionals enableCuda [ - "-DCUDA_SDK_ROOT_DIR=${cudaPackages.cudatoolkit}" - "-DOPENMM_BUILD_AMOEBA_CUDA_LIB=ON" - "-DOPENMM_BUILD_CUDA_LIB=ON" - "-DOPENMM_BUILD_DRUDE_CUDA_LIB=ON" - "-DOPENMM_BUILD_RPMD_CUDA_LIB=ON" - "-DCMAKE_LIBRARY_PATH=${cudaPackages.cudatoolkit}/lib64/stubs" + (lib.cmakeBool "OPENMM_BUILD_AMOEBA_CUDA_LIB" true) + (lib.cmakeBool "OPENMM_BUILD_CUDA_LIB" true) + (lib.cmakeBool "OPENMM_BUILD_DRUDE_CUDA_LIB" true) + (lib.cmakeBool "OPENMM_BUILD_RPMD_CUDA_LIB" true) ]; postInstall = lib.strings.optionalString enablePython '' @@ -106,15 +123,13 @@ stdenv.mkDerivation (finalAttrs: { ${python3Packages.python.pythonOnBuildForHost.interpreter} -m installer --prefix $out dist/*.whl ''; - postFixup = '' - for lib in $out/lib/plugins/*CUDA.so $out/lib/plugins/*Cuda*.so; do - addDriverRunpath "$lib" - done - ''; - # Couldn't get CUDA to run properly in the sandbox doCheck = !enableCuda && !enableOpencl; + passthru = { + updateScript = nix-update-script { }; + }; + meta = { description = "Toolkit for molecular simulation using high performance GPU code"; mainProgram = "TestReferenceHarmonicBondForce"; diff --git a/pkgs/by-name/op/openspec/package.nix b/pkgs/by-name/op/openspec/package.nix index 9888d80869bc..c8c48047f71c 100644 --- a/pkgs/by-name/op/openspec/package.nix +++ b/pkgs/by-name/op/openspec/package.nix @@ -3,7 +3,7 @@ stdenvNoCC, fetchFromGitHub, nodejs, - pnpm_9, + pnpm_11, fetchPnpmDeps, pnpmConfigHook, makeWrapper, @@ -24,15 +24,15 @@ stdenvNoCC.mkDerivation (finalAttrs: { pnpmDeps = fetchPnpmDeps { inherit (finalAttrs) pname version src; - pnpm = pnpm_9; - fetcherVersion = 3; - hash = "sha256-9s2kdvd7svK4hofnD66HkDc86WTQeayfF5y7L2dmjNg="; + pnpm = pnpm_11; + fetcherVersion = 4; + hash = "sha256-p44ctVCA3d1CXoq+zzhswVqhScF23ZhvpLUVVcrgQlM="; }; nativeBuildInputs = [ nodejs pnpmConfigHook - pnpm_9 + pnpm_11 makeWrapper installShellFiles ]; diff --git a/pkgs/by-name/pa/packer/package.nix b/pkgs/by-name/pa/packer/package.nix index 70f90ce82637..6d59320d504f 100644 --- a/pkgs/by-name/pa/packer/package.nix +++ b/pkgs/by-name/pa/packer/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "packer"; - version = "1.15.3"; + version = "1.15.4"; src = fetchFromGitHub { owner = "hashicorp"; repo = "packer"; rev = "v${version}"; - hash = "sha256-5B/PUVJMpc/9JEk1O6rYTswRuIXweeF2xMVCA/W6Md8="; + hash = "sha256-mhHES+/FCvVBBQm1qDQeH6WY2c9hIV7N3iFBCqJqJLw="; }; - vendorHash = "sha256-9aba6LnTjVmY3UgF9YyI9GoleCglTCU83QmHNPI3T2U="; + vendorHash = "sha256-HMaT1TZ2lHcKiKpZLZdRkmePb6SWV+z6QbS2q2rR/cY="; subPackages = [ "." ]; diff --git a/pkgs/by-name/pc/pcsc-tools/package.nix b/pkgs/by-name/pc/pcsc-tools/package.nix index e6f72c8e3333..e55135523a00 100644 --- a/pkgs/by-name/pc/pcsc-tools/package.nix +++ b/pkgs/by-name/pc/pcsc-tools/package.nix @@ -27,13 +27,13 @@ assert systemdSupport -> dbusSupport; stdenv.mkDerivation (finalAttrs: { pname = "pcsc-tools"; - version = "1.7.4"; + version = "1.7.5"; src = fetchFromGitHub { owner = "LudovicRousseau"; repo = "pcsc-tools"; tag = finalAttrs.version; - hash = "sha256-LSu+s/XcO4wM3Yvc1G/70ak+4KW+wKQ9dRm9Fdm+NsE="; + hash = "sha256-xakJwBzsZfqSLZ2wwwQoWtNIC82zOwOtm5CEVx4d+q4="; }; configureFlags = [ diff --git a/pkgs/by-name/pg/pgrok/package.nix b/pkgs/by-name/pg/pgrok/package.nix index f651f430a818..231fbb265f68 100644 --- a/pkgs/by-name/pg/pgrok/package.nix +++ b/pkgs/by-name/pg/pgrok/package.nix @@ -82,7 +82,7 @@ buildGoModule { description = "Selfhosted TCP/HTTP tunnel, ngrok alternative, written in Go"; homepage = "https://github.com/pgrok/pgrok"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ marie ]; + maintainers = with lib.maintainers; [ tbutter ]; mainProgram = "pgrok"; }; } diff --git a/pkgs/by-name/pl/plasticity/package.nix b/pkgs/by-name/pl/plasticity/package.nix index 7a29cb1f65ab..ca3725ffc902 100644 --- a/pkgs/by-name/pl/plasticity/package.nix +++ b/pkgs/by-name/pl/plasticity/package.nix @@ -18,6 +18,7 @@ libnotify, libxkbcommon, libgbm, + libGL, nspr, nss, openssl, @@ -122,9 +123,17 @@ stdenv.mkDerivation rec { runHook postInstall ''; - #--use-gl=egl for it to use hardware rendering it seems. Otherwise there are terrible framerates preFixup = '' - gappsWrapperArgs+=(--add-flags "--use-gl=egl") + patchelf --add-needed libGL.so.1 \ + --set-rpath "${ + lib.makeLibraryPath [ + libGL + ] + }" \ + $out/bin/Plasticity + + rm "$out/lib/Plasticity/libvulkan.so.1" + ln -s -t "$out/lib/Plasticity" "${lib.getLib vulkan-loader}/lib/libvulkan.so.1" ''; meta = { diff --git a/pkgs/by-name/pr/pragtical/package.nix b/pkgs/by-name/pr/pragtical/package.nix index da6b86952fc6..076d89f39b3b 100644 --- a/pkgs/by-name/pr/pragtical/package.nix +++ b/pkgs/by-name/pr/pragtical/package.nix @@ -14,7 +14,7 @@ libzip, lua5_4, luajit, - mbedtls, + mbedtls_4, pcre2, sdl3, sdl3-image, @@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "pragtical"; version = "3.11.2"; - pluginManagerRev = "v1.5.1"; + pluginManagerRev = "v1.5.2"; linenoiseRev = "e78e236c8d85c078fdd9fc4e1f08716058aa1a42"; src = fetchFromGitHub { @@ -47,14 +47,12 @@ stdenv.mkDerivation (finalAttrs: { --replace-fail 'revision = master' 'revision = ${finalAttrs.linenoiseRev}' ${lib.getExe meson} subprojects download \ - colors linenoise plugins ppm widget mbedtls - # TODO: remove mbedtls from list once ppm supports mbedtls_4 - # See https://github.com/pragtical/plugin-manager/issues/11 + colors linenoise plugins ppm widget find subprojects -type d -name .git -prune -execdir rm -r {} + ''; - hash = "sha256-6S4hnmSsejLr7IiZ4mtHT5ImBsVlyKFtLx9PBgv6b90="; + hash = "sha256-OkvtPH8XiF3nkZ66PnKm+++NWWDK1ypGmjiZYGOiIe8="; }; strictDeps = true; @@ -75,7 +73,7 @@ stdenv.mkDerivation (finalAttrs: { libzip lua5_4 luajit - mbedtls + mbedtls_4 pcre2 sdl3 sdl3-image diff --git a/pkgs/by-name/pr/prometheus-qbittorrent-exporter/package.nix b/pkgs/by-name/pr/prometheus-qbittorrent-exporter/package.nix index 08b3c0e5969c..b002ac2bfdc3 100644 --- a/pkgs/by-name/pr/prometheus-qbittorrent-exporter/package.nix +++ b/pkgs/by-name/pr/prometheus-qbittorrent-exporter/package.nix @@ -6,23 +6,25 @@ }: buildGoModule (finalAttrs: { pname = "prometheus-qbittorrent-exporter"; - version = "1.13.0"; + version = "2.0.1"; src = fetchFromGitHub { owner = "martabal"; repo = "qbittorrent-exporter"; tag = "v${finalAttrs.version}"; - hash = "sha256-ivHTGj2+6c23KW5aT5a8NFzUxV13u0y9UnHttZYTkuA="; + hash = "sha256-bVfYDIT3FMCFs/p+fFwm+xKiqbffPJ26Z2KFmBlqMjg="; }; - sourceRoot = "${finalAttrs.src.name}/src"; - vendorHash = "sha256-FHKt2QpvianVVbAJUcaou/+Ok69a8NbkM7ymVgxUi0I="; + vendorHash = "sha256-vw4uwQt/PI8yl81NC3wAdgCiPacg/Pmv2MNlnR9Y/v0="; ldflags = [ "-s" "-X 'qbit-exp/app.version=v${finalAttrs.version}'" ]; + # Tests create a local http server + __darwinAllowLocalNetworking = true; + passthru.updateScript = nix-update-script { }; meta = { diff --git a/pkgs/tools/misc/psrecord/default.nix b/pkgs/by-name/ps/psrecord/package.nix similarity index 54% rename from pkgs/tools/misc/psrecord/default.nix rename to pkgs/by-name/ps/psrecord/package.nix index 8ad799f85d67..ed33f2b67153 100644 --- a/pkgs/tools/misc/psrecord/default.nix +++ b/pkgs/by-name/ps/psrecord/package.nix @@ -1,27 +1,29 @@ { lib, - buildPythonApplication, fetchPypi, - psutil, - matplotlib, - pytest, + python3Packages, }: -buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "psrecord"; - version = "1.2"; - format = "setuptools"; + version = "1.4"; + pyproject = true; src = fetchPypi { - inherit pname version; - sha256 = "5d48410e543b71e5dc4677705acc2a753db65814d3ccbdfbca8d5d3a09b053b1"; + inherit (finalAttrs) pname version; + sha256 = "sha256-WXcYVIi1ZwI5xziVGcqEy5BN3fEQH/825EWJjYcUVLE="; }; - propagatedBuildInputs = [ + build-system = with python3Packages; [ + setuptools + setuptools-scm + ]; + + propagatedBuildInputs = with python3Packages; [ psutil matplotlib ]; - nativeCheckInputs = [ + nativeCheckInputs = with python3Packages; [ pytest ]; @@ -38,4 +40,4 @@ buildPythonApplication rec { maintainers = with lib.maintainers; [ johnazoidberg ]; mainProgram = "psrecord"; }; -} +}) diff --git a/pkgs/by-name/qt/qtwebapp/package.nix b/pkgs/by-name/qt/qtwebapp/package.nix index b495955f5a6c..c2f04ff5df82 100644 --- a/pkgs/by-name/qt/qtwebapp/package.nix +++ b/pkgs/by-name/qt/qtwebapp/package.nix @@ -1,9 +1,10 @@ { fetchFromGitHub, stdenv, + testers, + validatePkgConfig, lib, qt6, - ... }: stdenv.mkDerivation (finalAttrs: { pname = "qtwebapp"; @@ -15,6 +16,8 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-RbFgz2ed1eEVy44LX+milP4hPSeiabakU3TMvHYR7TU="; }; + __structuredAttrs = true; + sourceRoot = "source/QtWebApp"; postPatch = '' @@ -29,19 +32,47 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ qt6.qmake qt6.wrapQtAppsHook + validatePkgConfig ]; - buildInputs = [ + propagatedBuildInputs = [ + # For libs in the pkg-config, they must be + # propagated so that packages that depend on + # it can properly use it. qt6.qtbase qt6.qt5compat ]; qmakeFlags = [ "QtWebApp.pro" ]; + pkgConfigFile = ./pkg-config.in; + + postInstall = '' + mkdir -p "$out/lib/pkgconfig" + cp "$pkgConfigFile" "$out/lib/pkgconfig/QtWebApp.pc" + substituteInPlace "$out/lib/pkgconfig/QtWebApp.pc" \ + --subst-var out \ + --subst-var version + + mkdir -p "$out/include/QtWebApp/httpserver" + cp httpserver/*.h "$out/include/QtWebApp/httpserver" + + mkdir -p "$out/include/QtWebApp/logging" + cp logging/*.h "$out/include/QtWebApp/logging" + + mkdir -p "$out/include/QtWebApp/templateengine" + cp templateengine/*.h "$out/include/QtWebApp/templateengine" + ''; + + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + meta = { maintainers = with lib.maintainers; [ xddxdd ]; description = "HTTP server library in C++, inspired by Java Servlets"; homepage = "https://stefanfrings.de/qtwebapp/index-en.html"; license = lib.licenses.lgpl3Plus; + pkgConfigModules = [ + "QtWebApp" + ]; }; }) diff --git a/pkgs/by-name/qt/qtwebapp/pkg-config.in b/pkgs/by-name/qt/qtwebapp/pkg-config.in new file mode 100644 index 000000000000..265cbfda591a --- /dev/null +++ b/pkgs/by-name/qt/qtwebapp/pkg-config.in @@ -0,0 +1,14 @@ +prefix=@out@ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir_http=${prefix}/include/QtWebApp/httpserver +includedir_logging=${prefix}/include/QtWebApp/logging +includedir_template=${prefix}/include/QtWebApp/templateengine + +Name: QtWebApp +Description: HTTP server and utility library in C++ +Version: @version@ +Requires: Qt6Network Qt6Core5Compat +Libs: -L${libdir} -lQtWebApp +Cflags: -I${includedir_http} -I${includedir_logging} -I${includedir_template} + diff --git a/pkgs/by-name/qu/quarkus/package.nix b/pkgs/by-name/qu/quarkus/package.nix index d8ca9b34961d..d6e0b5362112 100644 --- a/pkgs/by-name/qu/quarkus/package.nix +++ b/pkgs/by-name/qu/quarkus/package.nix @@ -8,11 +8,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "quarkus-cli"; - version = "3.35.3"; + version = "3.36.1"; src = fetchurl { url = "https://github.com/quarkusio/quarkus/releases/download/${finalAttrs.version}/quarkus-cli-${finalAttrs.version}.tar.gz"; - hash = "sha256-fxwAYpQimDmctRCfPqi11RzK2/95DeSh+ULaC9jrHQo="; + hash = "sha256-fhGWH8ksB0JzhQL8EWkKCFA+8EpY7EMsgnTMHqGFbQ0="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/ra/rattler-build/package.nix b/pkgs/by-name/ra/rattler-build/package.nix index 768c68388a38..d9aaa0427ae3 100644 --- a/pkgs/by-name/ra/rattler-build/package.nix +++ b/pkgs/by-name/ra/rattler-build/package.nix @@ -14,16 +14,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "rattler-build"; - version = "0.65.0"; + version = "0.65.1"; src = fetchFromGitHub { owner = "prefix-dev"; repo = "rattler-build"; tag = "v${finalAttrs.version}"; - hash = "sha256-RhFaNron6gsRSTwBsncKlaCwQWCp5Ks7XYN6/DfKjQA="; + hash = "sha256-e9Alo7ZiPUhpupl46WDiHUDSAe9N8T+3eBy83o+Hf1g="; }; - cargoHash = "sha256-FfiHTXTVjLiyUG05wmz2jnIhW0Z/544Thg8Y7WgUHFE="; + cargoHash = "sha256-eUG2/jNNLF0OJEQ9griNbl3UxY9CwWOjsdM5gZDcHrI="; doCheck = false; # test requires network access diff --git a/pkgs/by-name/rg/rgx/package.nix b/pkgs/by-name/rg/rgx/package.nix index 361f9b517a2a..76f73023b76a 100644 --- a/pkgs/by-name/rg/rgx/package.nix +++ b/pkgs/by-name/rg/rgx/package.nix @@ -8,7 +8,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "rgx"; - version = "0.12.6"; + version = "0.14.1"; __structuredAttrs = true; @@ -16,10 +16,10 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "brevity1swos"; repo = "rgx"; tag = "v${finalAttrs.version}"; - hash = "sha256-YdbuyVhqu1LUaHecF1iFS62/qcW9IgXPlsEoWpNdrEQ="; + hash = "sha256-4ubPvcxRjwIbPsnxEu6QXPflPUJRnij8WIKeFT+Jxkg="; }; - cargoHash = "sha256-ILq0oB+Xq4agQMWqGLV0LC4NlMkUMVFppLJ+FJpsTRM="; + cargoHash = "sha256-u0qCt/XwCayAOKDwD+nQiy41F/x6HORZmqzgpTsBdzM="; buildInputs = [ pcre2 ]; diff --git a/pkgs/by-name/ro/routinator/package.nix b/pkgs/by-name/ro/routinator/package.nix index 01d325a27135..1a70a1127c61 100644 --- a/pkgs/by-name/ro/routinator/package.nix +++ b/pkgs/by-name/ro/routinator/package.nix @@ -7,16 +7,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "routinator"; - version = "0.15.1"; + version = "0.15.2"; src = fetchFromGitHub { owner = "NLnetLabs"; repo = "routinator"; rev = "v${finalAttrs.version}"; - hash = "sha256-tgDhIM8Dw4k/ocXa3U1xqS/TDmqNbjnNzIyCxEmu294="; + hash = "sha256-y/L9l++uB627lEHK+mASNwLohqWk+R0FUNYMKKNg38A="; }; - cargoHash = "sha256-XOy8sm6nzmihFYsgLcusoYKwgTvx0qX8o8XWV4EMXZ8="; + cargoHash = "sha256-rDFwfRXd8oMNh8iOPEWM1eADFQjys0GwPVr2r5hLW4Y="; meta = { description = "RPKI Validator written in Rust"; diff --git a/pkgs/by-name/rs/rshell/package.nix b/pkgs/by-name/rs/rshell/package.nix index 6386de38ef9a..64b0d1122eda 100644 --- a/pkgs/by-name/rs/rshell/package.nix +++ b/pkgs/by-name/rs/rshell/package.nix @@ -2,27 +2,37 @@ lib, python3Packages, fetchPypi, + versionCheckHook, }: python3Packages.buildPythonApplication (finalAttrs: { pname = "rshell"; version = "0.0.36"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchPypi { inherit (finalAttrs) pname version; hash = "sha256-SmbYNSB0eVUOWdDdPoMAPQTE7KeKTkklD4h+0t1LC/U="; }; + build-system = [ + python3Packages.setuptools + ]; + dependencies = with python3Packages; [ pyserial pyudev ]; + nativeCheckInputs = [ versionCheckHook ]; + meta = { homepage = "https://github.com/dhylands/rshell"; description = "Remote Shell for MicroPython"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ c0deaddict ]; + mainProgram = "rshell"; }; }) diff --git a/pkgs/by-name/sc/scanservjs/decouple-from-source-tree.patch b/pkgs/by-name/sc/scanservjs/decouple-from-source-tree.patch deleted file mode 100644 index d39da70e5c5f..000000000000 --- a/pkgs/by-name/sc/scanservjs/decouple-from-source-tree.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/packages/server/src/api.js b/packages/server/src/api.js -index bd43842..71ce7c9 100644 ---- a/packages/server/src/api.js -+++ b/packages/server/src/api.js -@@ -105,7 +105,7 @@ module.exports = new class Api { - } - - // If not then it's possible the default image is not quite the correct aspect ratio -- const buffer = FileInfo.create(`${config.previewDirectory}/default.jpg`).toBuffer(); -+ const buffer = FileInfo.create('NIX_OUT_PLACEHOLDER/lib/node_modules/scanservjs-api/data/preview/default.jpg').toBuffer(); - - try { - // We need to know the correct aspect ratio from the device -diff --git a/packages/server/src/application.js b/packages/server/src/application.js -index 2771036..0c2a4c0 100644 ---- a/packages/server/src/application.js -+++ b/packages/server/src/application.js -@@ -26,7 +26,7 @@ module.exports = new class Application { - - userOptions() { - if (this._userOptions === null) { -- this._userOptions = new UserOptions('../../config/config.local.js'); -+ this._userOptions = new UserOptions(process.env.NIX_SCANSERVJS_CONFIG_PATH); - } - return this._userOptions; - } -diff --git a/packages/server/src/classes/user-options.js b/packages/server/src/classes/user-options.js -index f129e3c..c71e754 100644 ---- a/packages/server/src/classes/user-options.js -+++ b/packages/server/src/classes/user-options.js -@@ -4,7 +4,7 @@ const path = require('path'); - module.exports = class UserOptions { - constructor(localConfigPath) { - if (localConfigPath) { -- const localPath = path.join(__dirname, localConfigPath); -+ const localPath = localConfigPath; - if (fs.existsSync(localPath)) { - this.local = require(localPath); - } -diff --git a/packages/server/src/configure.js b/packages/server/src/configure.js -index c9e5ed8..484949c 100644 ---- a/packages/server/src/configure.js -+++ b/packages/server/src/configure.js -@@ -71,6 +71,7 @@ function initialize(rootPath) { - - try { - fs.mkdirSync(config.outputDirectory, { recursive: true }); -+ fs.mkdirSync(config.previewDirectory, { recursive: true }); - fs.mkdirSync(config.tempDirectory, { recursive: true }); - } catch (exception) { - log.warn(`Error ensuring output and temp directories exist: ${exception}`); -diff --git a/packages/server/src/server.js b/packages/server/src/server.js -index e1a9fb0..3d58d37 100644 ---- a/packages/server/src/server.js -+++ b/packages/server/src/server.js -@@ -5,7 +5,7 @@ const configure = require('./configure'); - const config = application.config(); - const app = express(); - --app.use(express.static('client')); -+app.use(express.static('@client@')); - - configure(app); - diff --git a/pkgs/by-name/sc/scanservjs/nix-compatibility.patch b/pkgs/by-name/sc/scanservjs/nix-compatibility.patch new file mode 100644 index 000000000000..3aa8324e4596 --- /dev/null +++ b/pkgs/by-name/sc/scanservjs/nix-compatibility.patch @@ -0,0 +1,47 @@ +diff --git a/app-server/src/application.js b/app-server/src/application.js +index a2c065f..2d594bf 100644 +--- a/app-server/src/application.js ++++ b/app-server/src/application.js +@@ -26,7 +26,7 @@ module.exports = new class Application { + + userOptions() { + if (this._userOptions === null) { +- this._userOptions = new UserOptions('../../config/config.local.js'); ++ this._userOptions = new UserOptions(process.env.NIX_SCANSERVJS_CONFIG_PATH); + } + return this._userOptions; + } +diff --git a/app-server/src/classes/user-options.js b/app-server/src/classes/user-options.js +index f129e3c..c71e754 100644 +--- a/app-server/src/classes/user-options.js ++++ b/app-server/src/classes/user-options.js +@@ -4,7 +4,7 @@ const path = require('path'); + module.exports = class UserOptions { + constructor(localConfigPath) { + if (localConfigPath) { +- const localPath = path.join(__dirname, localConfigPath); ++ const localPath = localConfigPath; + if (fs.existsSync(localPath)) { + this.local = require(localPath); + } +diff --git a/app-server/src/express-configurer.js b/app-server/src/express-configurer.js +index 945dae2..1b456cc 100644 +--- a/app-server/src/express-configurer.js ++++ b/app-server/src/express-configurer.js +@@ -166,6 +166,7 @@ module.exports = class ExpressConfigurer { + + try { + fs.mkdirSync(config.outputDirectory, { recursive: true }); ++ fs.mkdirSync(config.previewDirectory, { recursive: true }); + fs.mkdirSync(config.thumbnailDirectory, { recursive: true }); + fs.mkdirSync(config.tempDirectory, { recursive: true }); + } catch (exception) { +@@ -220,7 +221,7 @@ module.exports = class ExpressConfigurer { + * @returns {ExpressConfigurer} + */ + statics() { +- this.app.use(express.static('client')); ++ this.app.use(express.static('@client@')); + return this; + } + diff --git a/pkgs/by-name/sc/scanservjs/package.nix b/pkgs/by-name/sc/scanservjs/package.nix index c386bf6b3dca..76a0c39909f1 100644 --- a/pkgs/by-name/sc/scanservjs/package.nix +++ b/pkgs/by-name/sc/scanservjs/package.nix @@ -3,6 +3,7 @@ fetchFromGitHub, buildNpmPackage, nodejs, + nixosTests, }: buildNpmPackage (finalAttrs: { @@ -18,13 +19,42 @@ buildNpmPackage (finalAttrs: { npmDepsHash = "sha256-HIWT09G8gqSFt9CIjsjJaDRnj2GO0G6JOGeI0p4/1vw="; - postInstall = '' - mkdir $out/bin + patches = [ + ./nix-compatibility.patch + ]; + + postBuild = '' + # Install runtime dependencies + npm install \ + --prefix ./dist \ + --offline \ + --production \ + --ignore-scripts + ''; + + installPhase = '' + runHook preInstall + + rm -rf $out/lib + + mkdir -p $out/lib + cp -r dist/* $out/lib + + substituteInPlace "$out/lib/server/express-configurer.js" \ + --replace-fail "@client@" "$out/lib/client" + + mkdir -p $out/bin makeWrapper ${lib.getExe nodejs} $out/bin/scanservjs \ --set NODE_ENV production \ - --add-flags "'$out/lib/node_modules/scanservjs/app-server/src/server.js'" + --add-flags "$out/lib/server/server.js" + + runHook postInstall ''; + passthru = { + tests.smoke-test = nixosTests.scanservjs; + }; + meta = { description = "SANE scanner nodejs web ui"; longDescription = "scanservjs is a simple web-based UI for SANE which allows you to share a scanner on a network without the need for drivers or complicated installation."; diff --git a/pkgs/by-name/so/songrec/package.nix b/pkgs/by-name/so/songrec/package.nix index 9de4c5154238..a61ef8400419 100644 --- a/pkgs/by-name/so/songrec/package.nix +++ b/pkgs/by-name/so/songrec/package.nix @@ -12,24 +12,28 @@ ffmpeg, glib, libpulseaudio, + versionCheckHook, + nix-update-script, + pipewire, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "songrec"; - version = "0.6.7"; + version = "0.7.3"; src = fetchFromGitHub { owner = "marin-m"; repo = "songrec"; - rev = finalAttrs.version; - hash = "sha256-lCwFMBQ6IimNtXYMfTnFOpwOO2qbwijOEZ+oMsQKAP0="; + tag = finalAttrs.version; + hash = "sha256-6DT5KY6Y3CPTFLNG+EostAlMgZ35SLv8r9EXtRadC2U="; }; - cargoHash = "sha256-BhDFGkvY6c8XbhJpFX1w8CSXK9IY/HiysNoooytFT9I="; + cargoHash = "sha256-9R7HwTwjeCBIxX2xHs++9Zl0SMRmHPHDD1OHNa4q+jI="; nativeBuildInputs = [ pkg-config wrapGAppsHook4 + rustPlatform.bindgenHook ]; buildInputs = [ @@ -40,6 +44,7 @@ rustPlatform.buildRustPackage (finalAttrs: { libadwaita libpulseaudio libsoup_3 + pipewire ]; preFixup = '' @@ -52,12 +57,21 @@ rustPlatform.buildRustPackage (finalAttrs: { mv packaging/rootfs/usr/share $out/share ''; + doInstallCheck = true; + nativeInstallCheckInputs = [ versionCheckHook ]; + + passthru.updateScript = nix-update-script { }; + meta = { description = "Open-source Shazam client for Linux, written in Rust"; homepage = "https://github.com/marin-m/SongRec"; + changelog = "https://github.com/marin-m/SongRec/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.gpl3Plus; platforms = lib.platforms.linux; - maintainers = with lib.maintainers; [ tcbravo ]; + maintainers = with lib.maintainers; [ + tcbravo + tomasrivera + ]; mainProgram = "songrec"; }; }) diff --git a/pkgs/by-name/sp/spruce/package.nix b/pkgs/by-name/sp/spruce/package.nix index a371df25bc2b..f654ca2b32e6 100644 --- a/pkgs/by-name/sp/spruce/package.nix +++ b/pkgs/by-name/sp/spruce/package.nix @@ -6,13 +6,13 @@ buildGoModule (finalAttrs: { pname = "spruce"; - version = "1.35.5"; + version = "1.35.6"; src = fetchFromGitHub { owner = "geofffranks"; repo = "spruce"; rev = "v${finalAttrs.version}"; - hash = "sha256-VMHtIjg0Fact1gupE0GeZNHX0Tk34rpS6/M8Yiyeuhk="; + hash = "sha256-Rk8NZ8CKK1bzwbfFrBx4I2lkAkViwVknZpuJGSAqGyA="; }; vendorHash = null; diff --git a/pkgs/by-name/st/strongswan/package.nix b/pkgs/by-name/st/strongswan/package.nix index fd285dc213f3..f0bd7aed2c00 100644 --- a/pkgs/by-name/st/strongswan/package.nix +++ b/pkgs/by-name/st/strongswan/package.nix @@ -122,13 +122,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "strongswan"; - version = "6.0.6"; # Make sure to also update when upgrading! + version = "6.0.7"; # Make sure to also update when upgrading! src = fetchFromGitHub { owner = "strongswan"; repo = "strongswan"; tag = finalAttrs.version; - hash = "sha256-Ojb+aAb9Ame4E9qzKcP9HZ+1AmP4XuxZO89nKca9Vl8="; + hash = "sha256-OgLvCrAwFJA2t78pu+p+3DrsD53QizVotQqTiNoY1dk="; }; patches = [ diff --git a/pkgs/by-name/sy/system76-firmware/package.nix b/pkgs/by-name/sy/system76-firmware/package.nix index 00f1b368fafe..d10a10d68b08 100644 --- a/pkgs/by-name/sy/system76-firmware/package.nix +++ b/pkgs/by-name/sy/system76-firmware/package.nix @@ -12,13 +12,13 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "system76-firmware"; # Check Makefile when updating, make sure postInstall matches make install - version = "1.0.74"; + version = "1.0.76"; src = fetchFromGitHub { owner = "pop-os"; repo = "system76-firmware"; rev = finalAttrs.version; - sha256 = "sha256-lgBEzOxTmVAksZ7yo7dIUzP6Z8KKmUpEIDEpU7CL69Y="; + sha256 = "sha256-WODPJ9uW81hNOuXF1OfBcI4ByXi6lKEFt4mN6qd5i0Q="; }; nativeBuildInputs = [ @@ -34,7 +34,7 @@ rustPlatform.buildRustPackage (finalAttrs: { cargoBuildFlags = [ "--workspace" ]; - cargoHash = "sha256-Xztvc8t3w6a5vf0zPU6roFIIgGLjebWmw18UaU1BdhA="; + cargoHash = "sha256-UTc4z2ulhwefQQtudkTq3GO8YygPXcBlrxIYURX2jYc="; # Purposefully don't install systemd unit file, that's for NixOS postInstall = '' diff --git a/pkgs/by-name/te/telegraf/package.nix b/pkgs/by-name/te/telegraf/package.nix index 09adb69afd7c..f2a8b0c73612 100644 --- a/pkgs/by-name/te/telegraf/package.nix +++ b/pkgs/by-name/te/telegraf/package.nix @@ -10,7 +10,7 @@ buildGoModule (finalAttrs: { pname = "telegraf"; - version = "1.38.4"; + version = "1.39.0"; subPackages = [ "cmd/telegraf" ]; @@ -18,10 +18,10 @@ buildGoModule (finalAttrs: { owner = "influxdata"; repo = "telegraf"; rev = "v${finalAttrs.version}"; - hash = "sha256-sd0kZz2R+DusoBH6J2B3DRJmwaWYNWiIJ2QsOq8Y+3g="; + hash = "sha256-pWf68000E6oSS8EWwWbfqFrPDTU6T6HkFpGljdQfyDw="; }; - vendorHash = "sha256-ZBAeuDF2SgqZx2XeoE3yN8Q6fVj8/zjtU7GogF/Z1Kg="; + vendorHash = "sha256-0nvkV/MWq6eT1Pi0oD5LEHTRmAZljXC/wT3CwRoNgHQ="; proxyVendor = true; ldflags = [ diff --git a/pkgs/by-name/te/terraform-ls/package.nix b/pkgs/by-name/te/terraform-ls/package.nix index 77aba54cace8..b819fb19f9cb 100644 --- a/pkgs/by-name/te/terraform-ls/package.nix +++ b/pkgs/by-name/te/terraform-ls/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "terraform-ls"; - version = "0.38.6"; + version = "0.38.7"; src = fetchFromGitHub { owner = "hashicorp"; repo = "terraform-ls"; rev = "v${finalAttrs.version}"; - hash = "sha256-pIZoTAWl6J2z/BHxrpyVjhyA54v9vM8r1Q1eCmBvUZs="; + hash = "sha256-uxdQHfjqthvNqqLjuuQsIPbjSx7STpH4Pmtw1Z2Npy4="; }; - vendorHash = "sha256-MMmL/1yHMzNZSXmMVGawrhIi4fIluBgozWFMuiFEoBs="; + vendorHash = "sha256-GVToa/RfXZaKIPWRkCu6rLN8qU3sI6zmgn4kjeNW6iI="; ldflags = [ "-s" diff --git a/pkgs/by-name/ti/tigerbeetle/package.nix b/pkgs/by-name/ti/tigerbeetle/package.nix index 740be70f3db1..6b1ed449569b 100644 --- a/pkgs/by-name/ti/tigerbeetle/package.nix +++ b/pkgs/by-name/ti/tigerbeetle/package.nix @@ -10,14 +10,14 @@ let platform = if stdenvNoCC.hostPlatform.isDarwin then "universal-macos" else stdenvNoCC.hostPlatform.system; hash = builtins.getAttr platform { - "universal-macos" = "sha256-MyTSCp5bf24Z6VnwYL3tkj7HNUcQ0S5m5fmzYjKmg08="; - "x86_64-linux" = "sha256-tkg7SP3ln5cw7rs7qM+yd8l/FICC98argrkMZPjrkKk="; - "aarch64-linux" = "sha256-SLw2mFQWylfwNbxYQi0wCje1A4foPqxZn9GxkQEu6Zs="; + "universal-macos" = "sha256-orry8BOlsAqq44OuKxAkKN/yyLK61qJTrUf6Ohk/psQ="; + "x86_64-linux" = "sha256-p3KD0Z5JdH9IjtqWyCnaUZcZXiwKO6rwZB9wGdVKIz4="; + "aarch64-linux" = "sha256-Z4kBc006b3e8MUROxQBImxRKaW9IWQ4NZdVgd9mkLkA="; }; in stdenvNoCC.mkDerivation (finalAttrs: { pname = "tigerbeetle"; - version = "0.17.4"; + version = "0.17.5"; src = fetchzip { url = "https://github.com/tigerbeetle/tigerbeetle/releases/download/${finalAttrs.version}/tigerbeetle-${platform}.zip"; diff --git a/pkgs/by-name/ut/utterly-nord-plasma/package.nix b/pkgs/by-name/ut/utterly-nord-plasma/package.nix index 7a1755fe99fe..e06577c6f6b4 100644 --- a/pkgs/by-name/ut/utterly-nord-plasma/package.nix +++ b/pkgs/by-name/ut/utterly-nord-plasma/package.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation { pname = "utterly-nord-plasma"; - version = "3.2"; + version = "3.3"; src = fetchFromGitHub { owner = "HimDek"; repo = "utterly-nord-plasma"; - rev = "e513b4dfeddd587a34bfdd9ba6b1d1eac8ecadf5"; - hash = "sha256-moLgBFR+BgoiEBzV3y/LA6JZfLHrG1weL1+h8LN9ztA="; + rev = "ae0de9d555b518226627b2d10ee5df4a18073c60"; + hash = "sha256-lXX7Gk2QYyMP96qbYdHtommW0DM1DUK03cti1gAeBBc="; }; dontWrapQtApps = true; @@ -25,6 +25,7 @@ stdenv.mkDerivation { libplasma.out plasma5support.out plasma-workspace.out + ksvg.out ]; installPhase = '' diff --git a/pkgs/by-name/vc/vcv-rack/package.nix b/pkgs/by-name/vc/vcv-rack/package.nix index d7dcbe4c22ca..97f4e51cab15 100644 --- a/pkgs/by-name/vc/vcv-rack/package.nix +++ b/pkgs/by-name/vc/vcv-rack/package.nix @@ -31,6 +31,7 @@ stdenv, wrapGAppsHook3, zstd, + versionCheckHook, }: let @@ -208,6 +209,10 @@ stdenv.mkDerivation (finalAttrs: { --replace-fail \ "LightButton>" \ "struct rack::componentlibrary::LightButton>" + + # Set RACK_VERSION to avoid git describe, which fails in the Nix build sandbox. + substituteInPlace Makefile \ + --replace-fail 'RACK_VERSION ?= $' 'RACK_VERSION ?= ${finalAttrs.version}#$' '' + lib.optionalString stdenv.hostPlatform.isLinux '' # Fix reference to zenity @@ -218,7 +223,6 @@ stdenv.mkDerivation (finalAttrs: { --replace-fail '__yield();' 'asm volatile("yield");' '' + lib.optionalString stdenv.hostPlatform.isDarwin '' - # * Set VERSION from finalAttrs to avoid build using git to determine version # * Darwin needs to build the dist target, which builds the .app container, # yet we want to exclude the documentation from dist target. # * Skip stripping the binary to avoid "unsupported load command" error, which @@ -226,7 +230,6 @@ stdenv.mkDerivation (finalAttrs: { # * Replace path to Fundamental module with path to produced build artifact # to avoid downloading a pre-compiled version substituteInPlace Makefile \ - --replace-fail 'VERSION ?= $' 'VERSION ?= ${finalAttrs.version}#$' \ --replace-fail 'DIST_HTML :=' '#DIST_HTML :=' \ --replace-fail '$(STRIP)' '#$(STRIP)' \ --replace-fail 'FUNDAMENTAL_FILENAME := Fundamental' 'FUNDAMENTAL_FILENAME := plugins/Fundamental/dist/Fundamental' @@ -306,7 +309,7 @@ stdenv.mkDerivation (finalAttrs: { install -D -m755 -t $out/lib libRack.so mkdir -p $out/share/vcv-rack - cp -r res cacert.pem Core.json template.vcv LICENSE-GPLv3.txt $out/share/vcv-rack + cp -r res translations cacert.pem Core.json template.vcv LICENSE-GPLv3.txt $out/share/vcv-rack cp -r plugins/Fundamental/dist/Fundamental-*.vcvplugin $out/share/vcv-rack/Fundamental.vcvplugin # Extract pngs from the Apple icon image and create @@ -348,6 +351,9 @@ stdenv.mkDerivation (finalAttrs: { --add-flags "-s $out/Applications/'VCV Rack ${lib.versions.major finalAttrs.version} Free.app'/Contents/Resources" ''; + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; + meta = { description = "Open-source virtual modular synthesizer"; homepage = "https://vcvrack.com/"; diff --git a/pkgs/by-name/wa/wakatime-cli/package.nix b/pkgs/by-name/wa/wakatime-cli/package.nix index 493aacf57bda..237ef59a626a 100644 --- a/pkgs/by-name/wa/wakatime-cli/package.nix +++ b/pkgs/by-name/wa/wakatime-cli/package.nix @@ -9,13 +9,13 @@ buildGoModule (finalAttrs: { pname = "wakatime-cli"; - version = "2.14.12"; + version = "2.15.0"; src = fetchFromGitHub { owner = "wakatime"; repo = "wakatime-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-bfDaIJweh8RMXey0AypHEsZZO9eqToKjbLQR9//J0yc="; + hash = "sha256-jEQ9c0dejAEAgIyUeJ/PSsAFDUkNPsaU0FW3AVDmL7g="; }; vendorHash = "sha256-xrIvtUfOFOgcKJ+2VgUgOzF2Cwp3NPBf39yXgAHN/cQ="; diff --git a/pkgs/by-name/ya/yacreader/darwin-unarr-use-pkg-config.patch b/pkgs/by-name/ya/yacreader/darwin-unarr-use-pkg-config.patch deleted file mode 100644 index dff2b69df514..000000000000 --- a/pkgs/by-name/ya/yacreader/darwin-unarr-use-pkg-config.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/compressed_archive/unarr/unarr-wrapper.pri b/compressed_archive/unarr/unarr-wrapper.pri -index 0115267..5d3d6f5 100644 ---- a/compressed_archive/unarr/unarr-wrapper.pri -+++ b/compressed_archive/unarr/unarr-wrapper.pri -@@ -6,7 +6,7 @@ HEADERS += $$PWD/extract_delegate.h \ - - SOURCES += $$PWD/compressed_archive.cpp - --if(mingw|unix):!macx:!contains(QT_CONFIG, no-pkg-config):packagesExist(libunarr) { -+if(mingw|unix):!contains(QT_CONFIG, no-pkg-config):packagesExist(libunarr) { - message(Using system provided unarr installation found by pkg-config.) - CONFIG += link_pkgconfig - PKGCONFIG += libunarr diff --git a/pkgs/by-name/ya/yacreader/package.nix b/pkgs/by-name/ya/yacreader/package.nix index 1a9ed2c685b7..b678a634fa0d 100644 --- a/pkgs/by-name/ya/yacreader/package.nix +++ b/pkgs/by-name/ya/yacreader/package.nix @@ -2,50 +2,86 @@ lib, stdenv, fetchFromGitHub, + cmake, + pkg-config, + ctestCheckHook, libGLU, libunarr, - libsForQt5, - pkg-config, + expat, + libdeflate, + lerc, + xz, + libwebp, + qtwebapp, + pipewire, + qt6Packages, + onlyServer ? false, }: - +let + qtPackages = qt6Packages; +in stdenv.mkDerivation (finalAttrs: { pname = "yacreader"; - version = "9.16.3"; + version = "10.0.0"; src = fetchFromGitHub { owner = "YACReader"; repo = "yacreader"; tag = finalAttrs.version; - hash = "sha256-3mLmH6HJnH+LH/NkqI4G8Si5od3YiWnQ/kv5rmPFhlE="; + hash = "sha256-nJ4S4ej/I+ifDNa3CPpusFpDsEwZwYDt0JLaebptjuU="; }; patches = [ - # make the unarr backend logic use pkg-config even on Darwin - ./darwin-unarr-use-pkg-config.patch + # Devendor qtwebapp, use pkg-config instead + ./qtwebapp-devendor.patch ]; - qmakeFlags = [ + # Ensure devendor works + postPatch = '' + rm -rf third_party/QtWebApp + ''; + + # Pipewire is dlopen'd, so we must tell it where to look + preConfigure = '' + qtWrapperArgs+=("--prefix" "LD_LIBRARY_PATH" ":" "${lib.makeLibraryPath [ pipewire ]}") + ''; + + strictDeps = true; + __structuredAttrs = true; + + cmakeFlags = [ # force unarr backend on all platforms - "CONFIG+=unarr" + (lib.cmakeBool "BUILD_SERVER_STANDALONE" onlyServer) + (lib.cmakeFeature "PDF_BACKEND" "poppler") + (lib.cmakeFeature "DECOMPRESSION_BACKEND" "unarr") ]; nativeBuildInputs = [ - libsForQt5.qmake - libsForQt5.qttools # for translations - libsForQt5.wrapQtAppsHook + cmake pkg-config + qtPackages.wrapQtAppsHook ]; buildInputs = [ libGLU - libsForQt5.poppler - libsForQt5.qtgraphicaleffects # imported, but not declared as a dependency - libsForQt5.qtmultimedia - libsForQt5.qtquickcontrols2 libunarr - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - libsForQt5.qtmacextras # can be removed when using qt6 + expat + libdeflate + lerc + xz + libwebp + qtwebapp + qtPackages.qtbase + qtPackages.qttools + qtPackages.qtmultimedia + qtPackages.qtspeech + qtPackages.poppler + qtPackages.qt5compat + ]; + + doCheck = true; + nativeCheckInputs = [ + ctestCheckHook ]; # custom Darwin install instructions taken from the upstream compileOSX.sh script diff --git a/pkgs/by-name/ya/yacreader/qtwebapp-devendor.patch b/pkgs/by-name/ya/yacreader/qtwebapp-devendor.patch new file mode 100644 index 000000000000..0de92f2311ce --- /dev/null +++ b/pkgs/by-name/ya/yacreader/qtwebapp-devendor.patch @@ -0,0 +1,69 @@ +diff --git a/YACReaderLibrary/server/CMakeLists.txt b/YACReaderLibrary/server/CMakeLists.txt +index 839072efe4..8b8a2a5dd4 100644 +--- a/YACReaderLibrary/server/CMakeLists.txt ++++ b/YACReaderLibrary/server/CMakeLists.txt +@@ -77,10 +77,10 @@ + Qt6::Core + Qt6::Network + Qt6::Sql +- QtWebApp_httpserver +- QtWebApp_templateengine + QsLog + common_all + comic_backend + db_helper ++ PRIVATE ++ PkgConfig::QtWebApp + ) +diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt +index 512e57457f..787f334698 100644 +--- a/third_party/CMakeLists.txt ++++ b/third_party/CMakeLists.txt +@@ -31,45 +31,8 @@ + target_include_directories(QrCode PUBLIC QrCode) + + # --- QtWebApp HTTP server --- +-add_library(QtWebApp_httpserver STATIC +- QtWebApp/httpserver/httpglobal.cpp +- QtWebApp/httpserver/httplistener.cpp +- QtWebApp/httpserver/httpconnectionhandler.cpp +- QtWebApp/httpserver/httpconnectionhandlerpool.cpp +- QtWebApp/httpserver/httprequest.cpp +- QtWebApp/httpserver/httpresponse.cpp +- QtWebApp/httpserver/httpcookie.cpp +- QtWebApp/httpserver/httprequesthandler.cpp +- QtWebApp/httpserver/httpsession.cpp +- QtWebApp/httpserver/httpsessionstore.cpp +- QtWebApp/httpserver/staticfilecontroller.cpp +- QtWebApp/httpserver/httpglobal.h +- QtWebApp/httpserver/httplistener.h +- QtWebApp/httpserver/httpconnectionhandler.h +- QtWebApp/httpserver/httpconnectionhandlerpool.h +- QtWebApp/httpserver/httprequest.h +- QtWebApp/httpserver/httpresponse.h +- QtWebApp/httpserver/httpcookie.h +- QtWebApp/httpserver/httprequesthandler.h +- QtWebApp/httpserver/httpsession.h +- QtWebApp/httpserver/httpsessionstore.h +- QtWebApp/httpserver/staticfilecontroller.h +-) +-target_include_directories(QtWebApp_httpserver PUBLIC QtWebApp/httpserver) +-target_link_libraries(QtWebApp_httpserver PUBLIC Qt6::Network) +- +-# --- QtWebApp template engine --- +-add_library(QtWebApp_templateengine STATIC +- QtWebApp/templateengine/template.cpp +- QtWebApp/templateengine/templateloader.cpp +- QtWebApp/templateengine/templatecache.cpp +- QtWebApp/templateengine/templateglobal.h +- QtWebApp/templateengine/template.h +- QtWebApp/templateengine/templateloader.h +- QtWebApp/templateengine/templatecache.h +-) +-target_include_directories(QtWebApp_templateengine PUBLIC QtWebApp/templateengine) +-target_link_libraries(QtWebApp_templateengine PUBLIC Qt6::Core5Compat) ++find_package(PkgConfig REQUIRED) ++pkg_check_modules(QtWebApp REQUIRED IMPORTED_TARGET GLOBAL QtWebApp) + + # --- KDSignalThrottler (from KDToolBox) --- + add_library(KDSignalThrottler STATIC diff --git a/pkgs/by-name/za/zarf/package.nix b/pkgs/by-name/za/zarf/package.nix index b9942e5fc767..8c790fc36cc4 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.76.0"; + version = "0.77.0"; src = fetchFromGitHub { owner = "zarf-dev"; repo = "zarf"; tag = "v${finalAttrs.version}"; - hash = "sha256-IipisjgJZszgFZ+BfB81/Q5jpzpFc+rM6gyxr/nQ1dA="; + hash = "sha256-kVXJ0ByW/v68f65tmgsvvHnp5v9x4y4vq6Qnu5kA9ZQ="; }; - vendorHash = "sha256-9l2fVCHhsZu8uJgAXucbSHbozNPi2Pbhh81IYYCMjM4="; + vendorHash = "sha256-xP0hXk6D/EzgxVYScOnET203ip390zgxIr5fAEj7wqI="; proxyVendor = true; nativeBuildInputs = [ diff --git a/pkgs/by-name/zf/zfp/package.nix b/pkgs/by-name/zf/zfp/package.nix index 12a0ce57d6b9..2a25bb109ffa 100644 --- a/pkgs/by-name/zf/zfp/package.nix +++ b/pkgs/by-name/zf/zfp/package.nix @@ -10,6 +10,7 @@ stdenv, config, testers, + bitStreamWordSize ? 64, enableCfp ? true, enableCuda ? config.cudaSupport, enableFortran ? builtins.elem stdenv.hostPlatform.system gfortran.meta.platforms, @@ -70,6 +71,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { cmakeFlags = [ ] + ++ lib.optional (bitStreamWordSize != 64) "-DZFP_BIT_STREAM_WORD_SIZE=${toString bitStreamWordSize}" ++ lib.optional enableCfp "-DBUILD_CFP=ON" ++ lib.optional enableCuda "-DZFP_WITH_CUDA=ON" ++ lib.optional enableFortran "-DBUILD_ZFORP=ON" @@ -79,6 +81,11 @@ effectiveStdenv.mkDerivation (finalAttrs: { doCheck = true; + # the testzfp regression test only supports the default 64-bit bitstream word + preCheck = lib.optionalString (bitStreamWordSize != 64) '' + checkFlagsArray+=(ARGS="--exclude-regex testzfp") + ''; + passthru.tests = { cmake-config = testers.hasCmakeConfigModules { moduleNames = [ "zfp" ]; diff --git a/pkgs/by-name/zi/zigbee2mqtt/package.nix b/pkgs/by-name/zi/zigbee2mqtt/package.nix index 7991d5a7c972..74bf9850caed 100644 --- a/pkgs/by-name/zi/zigbee2mqtt/package.nix +++ b/pkgs/by-name/zi/zigbee2mqtt/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, nodejs, npmHooks, - pnpm_9, + pnpm_10, fetchPnpmDeps, pnpmConfigHook, systemdMinimal, @@ -25,16 +25,16 @@ stdenv.mkDerivation (finalAttrs: { pnpmDeps = fetchPnpmDeps { inherit (finalAttrs) pname version src; - pnpm = pnpm_9; - fetcherVersion = 3; - hash = "sha256-KSPdu9v34WYxyZtcL0NtP58LWmhK0KU0be6Z/VkZjH0="; + pnpm = pnpm_10; + fetcherVersion = 4; + hash = "sha256-0jFNbUOaWJBlkDeq2oU7fkpX0P5rPqR3n03v0dkEr/o="; }; nativeBuildInputs = [ nodejs npmHooks.npmInstallHook pnpmConfigHook - pnpm_9 + pnpm_10 ]; buildInputs = lib.optionals withSystemd [ diff --git a/pkgs/development/coq-modules/coq-lsp/default.nix b/pkgs/development/coq-modules/coq-lsp/default.nix index 608b674c27b1..e9ed905ff3f5 100644 --- a/pkgs/development/coq-modules/coq-lsp/default.nix +++ b/pkgs/development/coq-modules/coq-lsp/default.nix @@ -66,7 +66,7 @@ installPhase = '' runHook preInstall dune install -p ${pname} --prefix=$out --libdir $OCAMLFIND_DESTDIR - wrapProgram $out/bin/coq-lsp --prefix OCAMLPATH : $OCAMLPATH + wrapProgram $out/bin/coq-lsp --prefix OCAMLPATH : $OCAMLFIND_DESTDIR --prefix OCAMLPATH : $OCAMLPATH runHook postInstall ''; diff --git a/pkgs/development/interpreters/supercollider/default.nix b/pkgs/development/interpreters/supercollider/default.nix index b1534f8c25aa..078b6782a3d0 100644 --- a/pkgs/development/interpreters/supercollider/default.nix +++ b/pkgs/development/interpreters/supercollider/default.nix @@ -12,13 +12,9 @@ fftw, curl, gcc, - libsForQt5, + qt6, libxt, - qtbase, - qttools, readline, - qtwebsockets, - qtwayland, useSCEL ? false, emacs, gitUpdater, @@ -30,27 +26,18 @@ stdenv.mkDerivation rec { pname = "supercollider"; - version = "3.13.1"; + version = "3.14.1"; src = fetchurl { url = "https://github.com/supercollider/supercollider/releases/download/Version-${version}/SuperCollider-${version}-Source.tar.bz2"; - sha256 = "sha256-aXnAFdqs/bVZMovoDV1P4mv2PtdFD2QuXHjnsnEyMSs="; + sha256 = "sha256-7mQMaHd65pdoIGbOXEqLflbFsiPnbHnBO1vlOH7lW7I="; }; patches = [ - # add support for SC_DATA_DIR and SC_PLUGIN_DIR env vars to override compile-time values - ./supercollider-3.12.0-env-dirs.patch - - # Fixes the build with CMake 4 + # add support for Qt 6.11 in SuperCollider 3.14.1 (fetchpatch { - url = "https://github.com/supercollider/supercollider/commit/7d1f3fbe54e122889489a2f60bbc6cd6bb3bce28.patch"; - hash = "sha256-gyE0B2qTbj0ppbLlYTMa2ooY3FHzzIrdrpWYr81Hy1Y="; - }) - - # Fixes the build with GCC 15 - (fetchpatch { - url = "https://github.com/supercollider/supercollider/commit/edfac5e24959b12286938a9402326e521c2d2b63.patch"; - hash = "sha256-8DNCO5VEX6V0Q29A/v5tFC7u835bwNHvcNlZzmS0ADg="; + url = "https://github.com/supercollider/supercollider/commit/e997e47890a9cee137756dede664811a58dbf85a.patch"; + hash = "sha256-Koh5CwkedDEXwvSFyZSrdKyVIKpX7nPrIcsr2FXaejo="; }) ]; @@ -63,8 +50,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkg-config - qttools - libsForQt5.wrapQtAppsHook + qt6.qttools + qt6.wrapQtAppsHook ] ++ lib.optionals useSCEL [ emacs ]; @@ -75,9 +62,9 @@ stdenv.mkDerivation rec { fftw curl libxt - qtbase - qtwebsockets - qtwayland + qt6.qtbase + qt6.qtwebsockets + qt6.qtwayland readline ] ++ lib.optional (!stdenv.hostPlatform.isDarwin) alsa-lib; diff --git a/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix b/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix index b3d5df6ac587..a3203e87bc06 100644 --- a/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix +++ b/pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nix @@ -11,26 +11,13 @@ stdenv.mkDerivation rec { pname = "sc3-plugins"; - version = "3.13.0"; + version = "3.14.0"; src = fetchurl { url = "https://github.com/supercollider/sc3-plugins/releases/download/Version-${version}/sc3-plugins-${version}-Source.tar.bz2"; - sha256 = "sha256-+N7rhh1ALipy21HUC0jEQ2kCYbWlOveJg9TPe6dnF6I="; + sha256 = "sha256-CW9JVVdgeITg2/0TLprw1V8WW4VhBmCN2Ns8XmiZKh0="; }; - patches = [ - (fetchpatch2 { - url = "https://github.com/supercollider/sc3-plugins/commit/3dc56bf7fcc1f2261afc13f96da762b78bcbfa51.patch"; - hash = "sha256-lvXvGunfmjt6i+XPog14IKdnH1Qk8vefxplSDkXXXHU="; - }) - - # Fix build with GCC 15 - (fetchpatch2 { - url = "https://github.com/supercollider/sc3-plugins/commit/deaa55a7204bedf65a2000a463ae87a481bf3eb8.patch"; - hash = "sha256-d8+4ZmedAwVt/AlU/YKqQF+80shEa8DiPnvMwJtW/RM="; - }) - ]; - strictDeps = true; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch b/pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch deleted file mode 100644 index dd92028b5225..000000000000 --- a/pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch +++ /dev/null @@ -1,65 +0,0 @@ -diff --git a/common/SC_Filesystem_unix.cpp b/common/SC_Filesystem_unix.cpp -index 52dc1fd2d..aae09ed9c 100644 ---- a/common/SC_Filesystem_unix.cpp -+++ b/common/SC_Filesystem_unix.cpp -@@ -94,6 +94,10 @@ bool SC_Filesystem::isNonHostPlatformDirectoryName(const std::string& s) { - } - - Path SC_Filesystem::defaultSystemAppSupportDirectory() { -+ const char* sc_data_dir = getenv("SC_DATA_DIR"); -+ if (sc_data_dir) -+ return Path(sc_data_dir); -+ - # ifdef SC_DATA_DIR - return Path(SC_DATA_DIR); - # else -@@ -125,6 +129,10 @@ Path SC_Filesystem::defaultUserConfigDirectory() { - } - - Path SC_Filesystem::defaultResourceDirectory() { -+ const char* sc_data_dir = getenv("SC_DATA_DIR"); -+ if (sc_data_dir) -+ return Path(sc_data_dir); -+ - # ifdef SC_DATA_DIR - return Path(SC_DATA_DIR); - # else -diff --git a/server/scsynth/SC_Lib_Cintf.cpp b/server/scsynth/SC_Lib_Cintf.cpp -index f6219307e..28e13eb98 100644 ---- a/server/scsynth/SC_Lib_Cintf.cpp -+++ b/server/scsynth/SC_Lib_Cintf.cpp -@@ -178,9 +178,13 @@ void initialize_library(const char* uGensPluginPath) { - using DirName = SC_Filesystem::DirName; - - if (loadUGensExtDirs) { -+ const char* sc_plugin_dir = getenv("SC_PLUGIN_DIR"); -+ if (sc_plugin_dir) { -+ PlugIn_LoadDir(sc_plugin_dir, true); -+ } - #ifdef SC_PLUGIN_DIR - // load globally installed plugins -- if (bfs::is_directory(SC_PLUGIN_DIR)) { -+ else if (bfs::is_directory(SC_PLUGIN_DIR)) { - PlugIn_LoadDir(SC_PLUGIN_DIR, true); - } - #endif // SC_PLUGIN_DIR -diff --git a/server/supernova/server/main.cpp b/server/supernova/server/main.cpp -index b2b5adf4e..6cb8c411c 100644 ---- a/server/supernova/server/main.cpp -+++ b/server/supernova/server/main.cpp -@@ -224,8 +224,14 @@ void set_plugin_paths(server_arguments const& args, nova::sc_ugen_factory* facto - } - } - } else { -+ const char* sc_plugin_dir = getenv("SC_PLUGIN_DIR"); -+ if (sc_plugin_dir) { -+ factory->load_plugin_folder(sc_plugin_dir); -+ } - #ifdef SC_PLUGIN_DIR -- factory->load_plugin_folder(SC_PLUGIN_DIR); -+ else { -+ factory->load_plugin_folder(SC_PLUGIN_DIR); -+ } - #endif - factory->load_plugin_folder(SC_Filesystem::instance().getDirectory(DirName::Resource) / SC_PLUGIN_DIR_NAME); - factory->load_plugin_folder(SC_Filesystem::instance().getDirectory(DirName::SystemExtension)); diff --git a/pkgs/development/ocaml-modules/dockerfile/default.nix b/pkgs/development/ocaml-modules/dockerfile/default.nix index 6f354a16c5f6..c51b03746cb7 100644 --- a/pkgs/development/ocaml-modules/dockerfile/default.nix +++ b/pkgs/development/ocaml-modules/dockerfile/default.nix @@ -10,13 +10,13 @@ buildDunePackage (finalAttrs: { pname = "dockerfile"; - version = "8.3.9"; + version = "8.4.0"; src = fetchFromGitHub { owner = "ocurrent"; repo = "ocaml-dockerfile"; tag = finalAttrs.version; - hash = "sha256-O2+kjQnjKSYFZM28RwAUTnNlvEW2CrfdMjT9J8LcPcc="; + hash = "sha256-5CHKuVWOVWJ1ZO7r+lrSpHK1mm75Ek1vDR14pDXR9Dk="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/php-packages/composer/default.nix b/pkgs/development/php-packages/composer/default.nix index ea1349feb366..152da49f3037 100644 --- a/pkgs/development/php-packages/composer/default.nix +++ b/pkgs/development/php-packages/composer/default.nix @@ -13,14 +13,14 @@ }: php.buildComposerProject2 (finalAttrs: { pname = "composer"; - version = "2.10.0"; + version = "2.10.1"; __structuredAttrs = true; src = fetchFromGitHub { owner = "composer"; repo = "composer"; tag = finalAttrs.version; - hash = "sha256-DMwkArGYtrfWGCNjkD3hzRLXAV24KlntyydduZxKc/0="; + hash = "sha256-0EeELI4jCSgG6S5sR6tQbwgcqdhe0JTcObvE5x49v1A="; }; nativeBuildInputs = [ @@ -34,7 +34,7 @@ php.buildComposerProject2 (finalAttrs: { inherit (finalAttrs.passthru) pharHash; }; - vendorHash = "sha256-LlhB1Qo/tp2YcNAqwl3OS2QCN/SoZpeVYHMct5LsmXM="; + vendorHash = "sha256-58l07Gt0j4g412rJfsRNSIAQ6Yd3ADpiQ9LXN+pHKNg="; postInstall = '' wrapProgram $out/bin/composer \ @@ -56,7 +56,7 @@ php.buildComposerProject2 (finalAttrs: { # use together with the version from this package to keep the # bootstrap phar file up-to-date together with the end user composer # package. - passthru.pharHash = "sha256-o0ZTiFGYjq0RHRHjy9fTcu66RKvQr0EuCYkNPCHqbDE="; + passthru.pharHash = "sha256-NFucapjaXDDcvUsNmfyHEL8K6Yo4mO6hj3sq2d7JPwY="; meta = { changelog = "https://github.com/composer/composer/releases/tag/${finalAttrs.version}"; diff --git a/pkgs/development/python-modules/aioaudiobookshelf/default.nix b/pkgs/development/python-modules/aioaudiobookshelf/default.nix index ca0e964e5674..7ff57afe9d90 100644 --- a/pkgs/development/python-modules/aioaudiobookshelf/default.nix +++ b/pkgs/development/python-modules/aioaudiobookshelf/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "aioaudiobookshelf"; - version = "0.1.20"; + version = "0.1.21"; pyproject = true; src = fetchFromGitHub { owner = "music-assistant"; repo = "aioaudiobookshelf"; tag = version; - hash = "sha256-MEkIcPtNNHvWUBLGRhJGbMnS5cMclGqINuLqvGK8Ivg="; + hash = "sha256-TB7Zemt4kr3r68K/wf96FO7ecUswl6WtkgiJ/B2Mj1E="; }; build-system = [ diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index 0605328253b2..9e4fed7d3dc2 100644 --- a/pkgs/development/python-modules/boto3-stubs/default.nix +++ b/pkgs/development/python-modules/boto3-stubs/default.nix @@ -358,13 +358,13 @@ buildPythonPackage (finalAttrs: { pname = "boto3-stubs"; - version = "1.43.23"; + version = "1.43.25"; pyproject = true; src = fetchPypi { pname = "boto3_stubs"; inherit (finalAttrs) version; - hash = "sha256-LFAeGxELocL2mFVofNOMqvNDIauRB2eN84A+x4NRBac="; + hash = "sha256-HhY3fGAi+qKL6QdY/8fRq56STqPv1rSKIMINkc7Y0vw="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/certvalidator/default.nix b/pkgs/development/python-modules/certvalidator/default.nix index 76580bff70c5..ff2967b46aa7 100644 --- a/pkgs/development/python-modules/certvalidator/default.nix +++ b/pkgs/development/python-modules/certvalidator/default.nix @@ -2,24 +2,29 @@ lib, buildPythonPackage, fetchFromGitHub, + setuptools, asn1crypto, oscrypto, cacert, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "certvalidator"; version = "0.11.1"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchFromGitHub { owner = "wbond"; repo = "certvalidator"; - rev = version; + tag = finalAttrs.version; hash = "sha256-yVF7t4FuU3C9fDg67JeM7LWZZh/mv5F4EKmjlO4AuBY="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ asn1crypto oscrypto ]; @@ -39,4 +44,4 @@ buildPythonPackage rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ baloo ]; }; -} +}) diff --git a/pkgs/development/python-modules/cielo-connect-api/default.nix b/pkgs/development/python-modules/cielo-connect-api/default.nix new file mode 100644 index 000000000000..a52e67aa1605 --- /dev/null +++ b/pkgs/development/python-modules/cielo-connect-api/default.nix @@ -0,0 +1,34 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + aiohttp, +}: + +buildPythonPackage (finalAttrs: { + pname = "cielo-connect-api"; + version = "1.0.6"; + pyproject = true; + + src = fetchFromGitHub { + owner = "cielo-connect"; + repo = "cielo-connect-api"; + tag = finalAttrs.version; + hash = "sha256-rFI3oNv8TYLwSu5Mofg2SjNcfq0WoVoN0KReigLj5ZU="; + }; + + build-system = [ setuptools ]; + + dependencies = [ aiohttp ]; + + pythonImportsCheck = [ "cieloconnectapi" ]; + + meta = { + description = "Async Python API client for Cielo Home devices"; + homepage = "https://github.com/cielo-connect/cielo-connect-api"; + changelog = "https://github.com/cielo-connect/cielo-connect-api/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.jamiemagee ]; + }; +}) diff --git a/pkgs/development/python-modules/cock/default.nix b/pkgs/development/python-modules/cock/default.nix index b93a106afdd8..7344a660f155 100644 --- a/pkgs/development/python-modules/cock/default.nix +++ b/pkgs/development/python-modules/cock/default.nix @@ -2,30 +2,37 @@ lib, buildPythonPackage, fetchPypi, + setuptools, click, sortedcontainers, pyyaml, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "cock"; version = "0.11.0"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchPypi { - inherit pname version; + inherit (finalAttrs) pname version; hash = "sha256-Hi8aFxATsYcEO6qNzZnF73V8WLTQjb6Dw2xF4VgT2o4="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ click sortedcontainers pyyaml ]; + pythonImportsCheck = [ "cock" ]; + meta = { homepage = "https://github.com/pohmelie/cock"; description = "Configuration file with click"; license = lib.licenses.mit; }; -} +}) diff --git a/pkgs/development/python-modules/cohere/default.nix b/pkgs/development/python-modules/cohere/default.nix index ed99ba645a2a..5ce5e9df992b 100644 --- a/pkgs/development/python-modules/cohere/default.nix +++ b/pkgs/development/python-modules/cohere/default.nix @@ -24,14 +24,14 @@ buildPythonPackage rec { pname = "cohere"; - version = "7.0.1"; + version = "7.0.3"; pyproject = true; src = fetchFromGitHub { owner = "cohere-ai"; repo = "cohere-python"; tag = version; - hash = "sha256-+zjMs6frZYNb5g7TFLwcUiBfWKpYqJBwBoMIcNkFt0U="; + hash = "sha256-MEw1H17Cy5ItCek72HSPLDYBmRpTzFEDg9SZE1iMWFE="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/colanderalchemy/default.nix b/pkgs/development/python-modules/colanderalchemy/default.nix index 78dfa0330163..daa9a5371ed2 100644 --- a/pkgs/development/python-modules/colanderalchemy/default.nix +++ b/pkgs/development/python-modules/colanderalchemy/default.nix @@ -2,22 +2,27 @@ lib, buildPythonPackage, fetchPypi, + setuptools, colander, sqlalchemy, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "colanderalchemy"; version = "0.3.4"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchPypi { - inherit version; + inherit (finalAttrs) version; pname = "ColanderAlchemy"; - sha256 = "006wcfch2skwvma9bq3l06dyjnz309pa75h1rviq7i4pd9g463bl"; + hash = "sha256-dA1DXmqXxIPjzgGWo24C41vpmwF04JVU3XxqAZlj3AA="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ colander sqlalchemy ]; @@ -25,9 +30,11 @@ buildPythonPackage rec { # Tests are not included in Pypi doCheck = false; + pythonImportsCheck = [ "colanderalchemy" ]; + meta = { description = "Autogenerate Colander schemas based on SQLAlchemy models"; homepage = "https://github.com/stefanofontanelli/ColanderAlchemy"; license = lib.licenses.mit; }; -} +}) diff --git a/pkgs/development/python-modules/colorlover/default.nix b/pkgs/development/python-modules/colorlover/default.nix index 54c0924a151e..1a22b37d4b02 100644 --- a/pkgs/development/python-modules/colorlover/default.nix +++ b/pkgs/development/python-modules/colorlover/default.nix @@ -2,25 +2,32 @@ lib, buildPythonPackage, fetchPypi, + setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "colorlover"; version = "0.3.0"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchPypi { - inherit pname version; - sha256 = "b8fb7246ab46e1f5e6715649453c1762e245a515de5ff2d2b4aab7a6e67fa4e2"; + inherit (finalAttrs) pname version; + hash = "sha256-uPtyRqtG4fXmcVZJRTwXYuJFpRXeX/LStKq3puZ/pOI="; }; + build-system = [ setuptools ]; + # no tests included in distributed archive doCheck = false; + pythonImportsCheck = [ "colorlover" ]; + meta = { - homepage = "https://github.com/jackparmer/colorlover"; + homepage = "https://github.com/plotly/colorlover"; description = "Color scales in Python for humans"; license = lib.licenses.mit; maintainers = [ ]; }; -} +}) diff --git a/pkgs/development/python-modules/colorspacious/default.nix b/pkgs/development/python-modules/colorspacious/default.nix index 34f2221ef225..a52c46e37bcd 100644 --- a/pkgs/development/python-modules/colorspacious/default.nix +++ b/pkgs/development/python-modules/colorspacious/default.nix @@ -2,20 +2,27 @@ lib, buildPythonPackage, fetchPypi, + setuptools, numpy, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "colorspacious"; version = "1.1.2"; - format = "setuptools"; + pyproject = true; + + __structuredAttrs = true; src = fetchPypi { - inherit pname version; - sha256 = "065n24zbm9ymy2gvf03vx5cggk1258vcjdaw8jn9v26arpl7542y"; + inherit (finalAttrs) pname version; + hash = "sha256-XpBy6M3KiJ2sRFw1yTYqIsz3WOl7ALef8NWnuj4Rthg="; }; - propagatedBuildInputs = [ numpy ]; + build-system = [ setuptools ]; + + dependencies = [ numpy ]; + + pythonImportsCheck = [ "colorspacious" ]; meta = { homepage = "https://github.com/njsmith/colorspacious"; @@ -23,4 +30,4 @@ buildPythonPackage rec { license = lib.licenses.mit; maintainers = [ ]; }; -} +}) diff --git a/pkgs/development/python-modules/data-grand-lyon-ha/default.nix b/pkgs/development/python-modules/data-grand-lyon-ha/default.nix new file mode 100644 index 000000000000..bfac2ea79d02 --- /dev/null +++ b/pkgs/development/python-modules/data-grand-lyon-ha/default.nix @@ -0,0 +1,41 @@ +{ + lib, + buildPythonPackage, + fetchFromCodeberg, + hatchling, + aiohttp, + pytest-asyncio, + pytestCheckHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "data-grand-lyon-ha"; + version = "0.8.0"; + pyproject = true; + + src = fetchFromCodeberg { + owner = "Crocmagnon"; + repo = "data_grand_lyon_ha"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Wpn3Ou8Cm+h5uyROw+6weDYyZHvLXLNpW3aIyKnUueE="; + }; + + build-system = [ hatchling ]; + + dependencies = [ aiohttp ]; + + nativeCheckInputs = [ + pytest-asyncio + pytestCheckHook + ]; + + pythonImportsCheck = [ "data_grand_lyon_ha" ]; + + meta = { + description = "Python library to retrieve data from Grand Lyon open data platform, for Home Assistant"; + homepage = "https://codeberg.org/Crocmagnon/data_grand_lyon_ha"; + changelog = "https://codeberg.org/Crocmagnon/data_grand_lyon_ha/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.jamiemagee ]; + }; +}) diff --git a/pkgs/development/python-modules/deep-chainmap/default.nix b/pkgs/development/python-modules/deep-chainmap/default.nix index f32feba1aaa3..be67bf1198f1 100644 --- a/pkgs/development/python-modules/deep-chainmap/default.nix +++ b/pkgs/development/python-modules/deep-chainmap/default.nix @@ -7,13 +7,13 @@ buildPythonPackage rec { pname = "deep-chainmap"; - version = "0.1.3"; + version = "0.2.0"; pyproject = true; src = fetchPypi { pname = "deep_chainmap"; inherit version; - hash = "sha256-Cw6Eiey501mzeigfdwnMuZH28abG4rcoACUGlmkzECA="; + hash = "sha256-lrCg6GGxjq/Y3t1c1HpJuaP+XVvVrOcB5aVaem5E/I8="; }; build-system = [ flit-core ]; diff --git a/pkgs/development/python-modules/fontmake/default.nix b/pkgs/development/python-modules/fontmake/default.nix index 0a30a49d05c5..fa345ddf90ca 100644 --- a/pkgs/development/python-modules/fontmake/default.nix +++ b/pkgs/development/python-modules/fontmake/default.nix @@ -17,14 +17,14 @@ buildPythonPackage rec { pname = "fontmake"; - version = "3.11.1"; + version = "3.12.1"; pyproject = true; src = fetchFromGitHub { owner = "googlefonts"; repo = "fontmake"; tag = "v${version}"; - hash = "sha256-tiZpuucEzqizgzM8Ry/srwjfYMUL3256HZA1l18vRsI="; + hash = "sha256-dgforezrilmD2d6MFY3Z5X/82yPRfSW/I/OxXcZ+xJw="; }; build-system = [ diff --git a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix index 2ee1890b66ee..37baef3a4a08 100644 --- a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix +++ b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix @@ -9,13 +9,13 @@ buildPythonPackage (finalAttrs: { pname = "google-cloud-access-context-manager"; - version = "0.5.0"; + version = "0.6.0"; pyproject = true; src = fetchPypi { pname = "google_cloud_access_context_manager"; inherit (finalAttrs) version; - hash = "sha256-lQzmWXMIWB4//TeP/TheoOFsCZzdVmkyhXzBDF53R1I="; + hash = "sha256-dgJn+6H4voY24qjXwwICfzECYP/4BRxGuLCbl9VGjuA="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix index 349359e90fe0..d9a70e5f7c9e 100644 --- a/pkgs/development/python-modules/google-cloud-securitycenter/default.nix +++ b/pkgs/development/python-modules/google-cloud-securitycenter/default.nix @@ -11,15 +11,15 @@ setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "google-cloud-securitycenter"; - version = "1.44.0"; + version = "1.45.0"; pyproject = true; src = fetchPypi { pname = "google_cloud_securitycenter"; - inherit version; - hash = "sha256-ir0rdSUREsfGTyR8YbSWbpDd1GxYOZ2hj8f7jwTmVsc="; + inherit (finalAttrs) version; + hash = "sha256-LG1O/I8MKL/39zrY0ODXFJz3XJ+MXQfHq8m3VVSWqyM="; }; build-system = [ setuptools ]; @@ -51,8 +51,8 @@ buildPythonPackage rec { meta = { description = "Cloud Security Command Center API API client library"; homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-securitycenter"; - changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-securitycenter-v${version}/packages/google-cloud-securitycenter/CHANGELOG.md"; + changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-securitycenter-v${finalAttrs.version}/packages/google-cloud-securitycenter/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = [ ]; }; -} +}) diff --git a/pkgs/development/python-modules/hdf5plugin/default.nix b/pkgs/development/python-modules/hdf5plugin/default.nix index ff3364379dfd..a52e339e0630 100644 --- a/pkgs/development/python-modules/hdf5plugin/default.nix +++ b/pkgs/development/python-modules/hdf5plugin/default.nix @@ -6,9 +6,12 @@ py-cpuinfo, h5py, pkgconfig, + c-blosc, c-blosc2, + bzip2, charls, lz4, + zfp, zlib, zstd, stdenv, @@ -18,7 +21,12 @@ avx512Support ? stdenv.hostPlatform.avx512Support, }: -buildPythonPackage rec { +let + c-blosc' = c-blosc.override { snappySupport = true; }; + # H5Z-ZFP needs an 8-bit bitstream word so the compressed HDF5 data is byte-portable + zfp' = zfp.override { bitStreamWordSize = 8; }; +in +buildPythonPackage (finalAttrs: { pname = "hdf5plugin"; version = "6.0.0"; pyproject = true; @@ -26,7 +34,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "silx-kit"; repo = "hdf5plugin"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-LW6rY+zLta4hENBbTll+1amf9TYJiuAumwzgpk1LZ3M="; }; @@ -39,27 +47,25 @@ buildPythonPackage rec { dependencies = [ h5py ]; buildInputs = [ - #c-blosc + c-blosc' c-blosc2 - # bzip2_1_1 + bzip2 charls lz4 - # snappy - # zfp + zfp' zlib zstd ]; # opt-in to use use system libs instead env.HDF5PLUGIN_SYSTEM_LIBRARIES = lib.concatStringsSep "," [ - #"blosc" # AssertionError: 4000 not less than 4000 + "blosc" "blosc2" - # "bz2" # only works with bzip2_1_1 + "bz2" "charls" "lz4" - # "snappy" # snappy tests fail # "sperr" # not packaged? - # "zfp" # pkgconfig: (lib)zfp not found + "zfp" "zlib" "zstd" ]; @@ -82,6 +88,19 @@ buildPythonPackage rec { preBuild = '' mkdir src/hdf5plugin/plugins + + mkdir -p pkg-config + ln -s ${lib.getDev bzip2}/lib/pkgconfig/bzip2.pc pkg-config/bz2.pc + # zfp ships only a CMake config; synthesise the pkg-config module hdf5plugin probes for + { + echo "includedir=${lib.getDev zfp'}/include" + echo "Name: zfp" + echo "Version: ${zfp'.version}" + echo "Description: zfp" + echo "Libs: -L${lib.getLib zfp'}/lib -lzfp" + echo "Cflags: -I${lib.getDev zfp'}/include" + } > pkg-config/zfp.pc + export PKG_CONFIG_PATH="$PWD/pkg-config''${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}" ''; meta = { @@ -94,4 +113,4 @@ buildPythonPackage rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ pbsds ]; }; -} +}) diff --git a/pkgs/development/python-modules/iamdata/default.nix b/pkgs/development/python-modules/iamdata/default.nix index 02300e28f180..a56e9144c04d 100644 --- a/pkgs/development/python-modules/iamdata/default.nix +++ b/pkgs/development/python-modules/iamdata/default.nix @@ -8,14 +8,14 @@ buildPythonPackage (finalAttrs: { pname = "iamdata"; - version = "0.1.202606061"; + version = "0.1.202606081"; pyproject = true; src = fetchFromGitHub { owner = "cloud-copilot"; repo = "iam-data-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-YF173OPIYdGR6m33wJEiH6gznVlAj2tMn1KDCzFND08="; + hash = "sha256-HSbPchHp31UCv/XPWfzlrYq3BBzFvm+S++IzRurFj5U="; }; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/indevolt-api/default.nix b/pkgs/development/python-modules/indevolt-api/default.nix index 8025ca1798ef..baa67cd9b52b 100644 --- a/pkgs/development/python-modules/indevolt-api/default.nix +++ b/pkgs/development/python-modules/indevolt-api/default.nix @@ -8,14 +8,14 @@ buildPythonPackage (finalAttrs: { pname = "indevolt-api"; - version = "1.8.3"; + version = "1.8.5"; pyproject = true; src = fetchFromGitHub { owner = "Xirt"; repo = "indevolt-api"; tag = "v${finalAttrs.version}"; - hash = "sha256-AHW4fh9Smfu2wW6zhIbTHbUm1RHGzgaAMEFolq+19dA="; + hash = "sha256-FLbZIz2gnmjflDFr/8ExUYE9cgz+LCFtp/C9eqWihZ8="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/mmengine/default.nix b/pkgs/development/python-modules/mmengine/default.nix index dcede7e2c76c..b2dbd44709e5 100644 --- a/pkgs/development/python-modules/mmengine/default.nix +++ b/pkgs/development/python-modules/mmengine/default.nix @@ -160,6 +160,9 @@ buildPythonPackage (finalAttrs: { ]; disabledTests = [ + # AssertionError: No valid profiler activities found + "test_with_runner" + # Require network access "test_fileclient" "test_http_backend" diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix index 311579f28645..aef5fe5abba5 100644 --- a/pkgs/development/python-modules/mypy-boto3/default.nix +++ b/pkgs/development/python-modules/mypy-boto3/default.nix @@ -327,8 +327,8 @@ in "sha256-sXIPfVu+Ss+UHCZ7W1qof+rbEb266dqrSU3V6/j5PzY="; mypy-boto3-compute-optimizer = - buildMypyBoto3Package "compute-optimizer" "1.43.22" - "sha256-TYrnhgzhH6+o+cTpBBpiEO6MPkz4xbLOqiOJf/IAvto="; + buildMypyBoto3Package "compute-optimizer" "1.43.25" + "sha256-OetbBzcvQZ3d7bW5fd6Uljqn61+AusqZgh4hH0eV8nE="; mypy-boto3-config = buildMypyBoto3Package "config" "1.43.23" @@ -503,8 +503,8 @@ in "sha256-fvFFfq6wf98uG59Zb4dQFIx+i+NH14zn94lX7jwKPkI="; mypy-boto3-emr-serverless = - buildMypyBoto3Package "emr-serverless" "1.43.0" - "sha256-2Ly3Ty1hw3U5NTRf1KCIw4Q/1WSD7pFEBafr1JiYLPA="; + buildMypyBoto3Package "emr-serverless" "1.43.24" + "sha256-VTCKMo/iFUNS6n3Ppl7jf9YxHPx0+IpU1atVh8KOgR4="; mypy-boto3-entityresolution = buildMypyBoto3Package "entityresolution" "1.43.2" @@ -858,8 +858,8 @@ in "sha256-4hBMy4j3GdSdq7MyeU8a1WHYrM0mb56OlqPeKkdbt7w="; mypy-boto3-mediaconvert = - buildMypyBoto3Package "mediaconvert" "1.43.0" - "sha256-jiYmf0SWN0WBh6kJRllwmPMgcZyCxPRuP2GD2DavqKM="; + buildMypyBoto3Package "mediaconvert" "1.43.24" + "sha256-VaGwdqgERTszcGip4FytIsm6r9mADouitpOWVmBFBko="; mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.43.16" @@ -874,8 +874,8 @@ in "sha256-5AqWiNGz9jemWb8dZkuGQXxPXIruMdDWcoRzbT+ZGro="; mypy-boto3-mediapackagev2 = - buildMypyBoto3Package "mediapackagev2" "1.43.9" - "sha256-1SSjLgLoGB2C7nqpAJty+BX94cwIcwoBGk03lMOgMBg="; + buildMypyBoto3Package "mediapackagev2" "1.43.25" + "sha256-Xxe8UAxyEe0E4cQmBB4ik1o4VVtUWmBhrGqVO41gZgU="; mypy-boto3-mediastore = buildMypyBoto3Package "mediastore" "1.43.0" @@ -906,8 +906,8 @@ in "sha256-V6xgiUn87wqIlWJGOpc7Zu24EDzROAspAn3qkRifsFU="; mypy-boto3-mgn = - buildMypyBoto3Package "mgn" "1.43.8" - "sha256-qLvs7F/FPOLHsVnzvAGLqKRedZmdx6OWJNkP7QSLE7Q="; + buildMypyBoto3Package "mgn" "1.43.25" + "sha256-fMcbT83WHYMmKgH5KSJ5maSLjkYaXdcj/x8wXhGNTAk="; mypy-boto3-migration-hub-refactor-spaces = buildMypyBoto3Package "migration-hub-refactor-spaces" "1.43.0" @@ -962,8 +962,8 @@ in "sha256-BUl/wnJKR3TB1YsTCLrJdEoH9Lz8DZ6H94STOOX8gkQ="; mypy-boto3-omics = - buildMypyBoto3Package "omics" "1.43.18" - "sha256-aMV1kli90lXUsGmOwP1lPW9yTH+0/520hBonZC3AIjY="; + buildMypyBoto3Package "omics" "1.43.25" + "sha256-EcyGzTAvrwhS25jx7LrKCa4cKgcO+FvlS41Va0YhOIY="; mypy-boto3-opensearch = buildMypyBoto3Package "opensearch" "1.43.16" @@ -998,8 +998,8 @@ in "sha256-DDNWvmo+i3O3s8sL16zg+QhWYzfrSTPOBHni8PVOgbs="; mypy-boto3-payment-cryptography = - buildMypyBoto3Package "payment-cryptography" "1.43.1" - "sha256-0O67JQj59+esJWCBGVzRNj73yBbnldhay28rxh7nlN0="; + buildMypyBoto3Package "payment-cryptography" "1.43.24" + "sha256-R+9NhCyUKOhMZCyWll1kilbBGlcNfpqEXgQVskDo/nU="; mypy-boto3-payment-cryptography-data = buildMypyBoto3Package "payment-cryptography-data" "1.43.12" @@ -1070,8 +1070,8 @@ in "sha256-YrrEKl3aGz//5Z5JGapHhWtk6hBXQ4cuRQmLqGYztzg="; mypy-boto3-quicksight = - buildMypyBoto3Package "quicksight" "1.43.19" - "sha256-7KjkPWai+mZzPUwwC93YyvSQVbWgpvFlr41T08YzT6M="; + buildMypyBoto3Package "quicksight" "1.43.24" + "sha256-9qBqNSVOR8W14XbzkN1pr6v3qWmgOIIPpBHC5SKXjls="; mypy-boto3-ram = buildMypyBoto3Package "ram" "1.43.0" @@ -1170,8 +1170,8 @@ in "sha256-T+JIJpHxD7IzAwq8yxgq6zbVMj/btpbhKnylMyfFvvU="; mypy-boto3-sagemaker = - buildMypyBoto3Package "sagemaker" "1.43.23" - "sha256-1UBh6FC9qhhzBL4ede41SlHGigrKcbdexAnnMWW9XOM="; + buildMypyBoto3Package "sagemaker" "1.43.24" + "sha256-jCg1JCbX32PdW2y/Fz41Uo37J3vzn2ACX3L20mSOMBw="; mypy-boto3-sagemaker-a2i-runtime = buildMypyBoto3Package "sagemaker-a2i-runtime" "1.43.0" diff --git a/pkgs/development/python-modules/prometheus-client/default.nix b/pkgs/development/python-modules/prometheus-client/default.nix index db3849ebbb45..94ff16c15f47 100644 --- a/pkgs/development/python-modules/prometheus-client/default.nix +++ b/pkgs/development/python-modules/prometheus-client/default.nix @@ -8,18 +8,19 @@ twisted, pytest-benchmark, pytestCheckHook, + nix-update-script, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "prometheus-client"; - version = "0.24.1"; + version = "0.25.0"; pyproject = true; src = fetchFromGitHub { owner = "prometheus"; repo = "client_python"; - tag = "v${version}"; - hash = "sha256-4swqhoCVrD7GflFbQX+QH9yGVDjbfwXvd7trs30STQQ="; + tag = "v${finalAttrs.version}"; + hash = "sha256-vue/5ulOnKkYjiHYWgT6HZ5mhV2vqAstm44+zwm+po0="; }; build-system = [ setuptools ]; @@ -34,7 +35,7 @@ buildPythonPackage rec { pytest-benchmark pytestCheckHook ] - ++ lib.concatAttrValues optional-dependencies; + ++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies; pytestFlags = [ "--benchmark-disable" ]; @@ -45,11 +46,13 @@ buildPythonPackage rec { "test_instance_ip_grouping_key" ]; + passthru.updateScript = nix-update-script { }; + meta = { description = "Prometheus instrumentation library for Python applications"; homepage = "https://github.com/prometheus/client_python"; - changelog = "https://github.com/prometheus/client_python/releases/tag/${src.tag}"; + changelog = "https://github.com/prometheus/client_python/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = [ ]; }; -} +}) diff --git a/pkgs/development/python-modules/pydo/default.nix b/pkgs/development/python-modules/pydo/default.nix index 8502813aa7ca..5146ef6a3703 100644 --- a/pkgs/development/python-modules/pydo/default.nix +++ b/pkgs/development/python-modules/pydo/default.nix @@ -21,14 +21,14 @@ buildPythonPackage (finalAttrs: { pname = "pydo"; - version = "0.34.0"; + version = "0.35.0"; pyproject = true; src = fetchFromGitHub { owner = "digitalocean"; repo = "pydo"; tag = "v${finalAttrs.version}"; - hash = "sha256-ykGrZN5Q4qcFLSHdOoiR4zOW1iTk8/laxcItcX7pJug="; + hash = "sha256-XCCud5F5JbeVTWkAOP3DRXBNzVeAGh8VvhvHU5N78y8="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/pyfluidsynth/default.nix b/pkgs/development/python-modules/pyfluidsynth/default.nix index 3dac3be49dff..be2bd9032ccd 100644 --- a/pkgs/development/python-modules/pyfluidsynth/default.nix +++ b/pkgs/development/python-modules/pyfluidsynth/default.nix @@ -10,12 +10,12 @@ buildPythonPackage rec { pname = "pyfluidsynth"; - version = "1.3.4"; + version = "1.4.0"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-ynQcJity5IljFJxzv4roDkXITCPJvfgDomujJMuy1bI="; + hash = "sha256-ap4duvRp/RH0UYTzfsKOGYsdZJWtdPYdxKV3JrKxujE="; }; postPatch = '' diff --git a/pkgs/development/python-modules/python-resize-image/default.nix b/pkgs/development/python-modules/python-resize-image/default.nix new file mode 100644 index 000000000000..f0e272b7e8d9 --- /dev/null +++ b/pkgs/development/python-modules/python-resize-image/default.nix @@ -0,0 +1,43 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + setuptools, + pillow, + requests, +}: + +buildPythonPackage (finalAttrs: { + pname = "python-resize-image"; + version = "1.1.20"; + pyproject = true; + + src = fetchPypi { + inherit (finalAttrs) pname version; + hash = "sha256-sFXauRnWI+zo7JUmLUvb8AbLGhDoGOmzYiHIsYhfmSI="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + pillow + requests + ]; + + pythonImportsCheck = [ + "resizeimage" + ]; + + doCheck = false; # sdist missing test artifact + + __structuredAttrs = true; + + meta = { + description = "Python package to easily resize images"; + homepage = "https://pypi.org/project/python-resize-image"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ hexa ]; + }; +}) diff --git a/pkgs/development/python-modules/qcelemental/default.nix b/pkgs/development/python-modules/qcelemental/default.nix index fd47af85989b..5be8226db2f6 100644 --- a/pkgs/development/python-modules/qcelemental/default.nix +++ b/pkgs/development/python-modules/qcelemental/default.nix @@ -19,12 +19,12 @@ buildPythonPackage rec { pname = "qcelemental"; - version = "0.50.1"; + version = "0.50.2"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-QELCSkpSYxd/Hbhz2ln572l/P8TZvUg8zsv7fZBFNUk="; + hash = "sha256-7gCWNwlCh58UWQM2CRmZIpjVE36vHu/eluMaDpUy6UI="; }; build-system = [ diff --git a/pkgs/development/python-modules/securityreporter/default.nix b/pkgs/development/python-modules/securityreporter/default.nix index 2b5e11cfdce8..a534ef706a2d 100644 --- a/pkgs/development/python-modules/securityreporter/default.nix +++ b/pkgs/development/python-modules/securityreporter/default.nix @@ -11,14 +11,14 @@ buildPythonPackage (finalAttrs: { pname = "securityreporter"; - version = "1.4.0"; + version = "1.5.0"; pyproject = true; src = fetchFromGitHub { owner = "dongit-org"; repo = "python-reporter"; tag = "v${finalAttrs.version}"; - hash = "sha256-bM11ztDd7Zg0O2+yGn9ZxKSo3B8nvhqUHSmdea/6sTg="; + hash = "sha256-XlM3xrQwfuKYkW9NJmNcq/9QiaUrJla5P1fjonqGkE8="; }; postPatch = '' diff --git a/pkgs/development/python-modules/simplemma/default.nix b/pkgs/development/python-modules/simplemma/default.nix index 98ea2cf4c823..1a278b02dcc3 100644 --- a/pkgs/development/python-modules/simplemma/default.nix +++ b/pkgs/development/python-modules/simplemma/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "simplemma"; - version = "1.1.2"; + version = "1.2.0"; pyproject = true; src = fetchFromGitHub { owner = "adbar"; repo = "simplemma"; tag = "v${version}"; - hash = "sha256-aFN/cOSqsrTJ5GMw0/SM7uoC+T1RhDTQFf8AF00Tz/o="; + hash = "sha256-VT6+wjyrHLquccnZpDTow7omDqeqlfbrdW3fozo/biU="; }; build-system = [ diff --git a/pkgs/development/python-modules/smpclient/default.nix b/pkgs/development/python-modules/smpclient/default.nix index f711cccca14f..ab15d1a01dcd 100644 --- a/pkgs/development/python-modules/smpclient/default.nix +++ b/pkgs/development/python-modules/smpclient/default.nix @@ -26,6 +26,7 @@ buildPythonPackage rec { }; env.HATCH_BUILD_HOOK_VCS_VERSION = version; + __darwinAllowLocalNetworking = true; build-system = [ hatchling diff --git a/pkgs/development/python-modules/torch-cluster/default.nix b/pkgs/development/python-modules/torch-cluster/default.nix index af9f049d5496..83c47b0d9867 100644 --- a/pkgs/development/python-modules/torch-cluster/default.nix +++ b/pkgs/development/python-modules/torch-cluster/default.nix @@ -23,7 +23,7 @@ buildPythonPackage.override { inherit (torch) stdenv; } (finalAttrs: { pname = "torch-cluster"; - version = "1.6.3-unstable-2026-03-26"; + version = "1.6.3-unstable-2026-06-05"; pyproject = true; __structuredAttrs = true; @@ -33,8 +33,8 @@ buildPythonPackage.override { inherit (torch) stdenv; } (finalAttrs: { src = fetchFromGitHub { owner = "rusty1s"; repo = "pytorch_cluster"; - rev = "af7b9f0af6b74be1594eb3d0a1685470cbb21265"; - hash = "sha256-2SXkk7m+feqk7uDir3Ov31TujyIUrRSEwONaiaq3Vvs="; + rev = "e9a855c284b45edcbf0282cf70ac09bee0ce4e49"; + hash = "sha256-0VgJBo37IUXZT3NC40fQ9pttDM3J6l2ks0061Mv3hk8="; }; build-system = [ diff --git a/pkgs/development/python-modules/trsfile/default.nix b/pkgs/development/python-modules/trsfile/default.nix index ccfb61c7695b..156a21d63ad8 100644 --- a/pkgs/development/python-modules/trsfile/default.nix +++ b/pkgs/development/python-modules/trsfile/default.nix @@ -7,20 +7,20 @@ numpy, pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "trsfile"; version = "2.2.5"; src = fetchFromGitHub { owner = "Keysight"; repo = "python-trsfile"; - rev = version; + tag = finalAttrs.version; hash = "sha256-mY4L1FFg2wDWAGVadOca7GDffA05O3v317SCqHxt4F0="; }; pyproject = true; - SETUPTOOLS_SCM_PRETEND_VERSION = version; + env.SETUPTOOLS_SCM_PRETEND_VERSION = finalAttrs.version; build-system = [ setuptools @@ -39,10 +39,10 @@ buildPythonPackage rec { "trsfile" ]; - meta = with lib; { + meta = { description = "Python library for reading/writing .trs files used by Riscure Inspector"; homepage = "https://github.com/Keysight/python-trsfile"; - license = licenses.bsd3; + license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ mach ]; }; -} +}) diff --git a/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix b/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix index 8f53a89075d6..17e3a854f91a 100644 --- a/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix +++ b/pkgs/development/python-modules/tuya-device-sharing-sdk/default.nix @@ -10,14 +10,14 @@ buildPythonPackage (finalAttrs: { pname = "tuya-device-sharing-sdk"; - version = "0.2.9"; + version = "0.2.10"; pyproject = true; src = fetchFromGitHub { owner = "tuya"; repo = "tuya-device-sharing-sdk"; tag = finalAttrs.version; - hash = "sha256-kNWg+AXISThwK14ByObUr+/4GMntrZgtEEMNpw/HjLw="; + hash = "sha256-FaybnhXYxxc3OwLPsi16U4UOLvKYqG5eaO+IM9ZASDc="; }; build-system = [ setuptools ]; diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 71b1cac92d68..4ac6ec7ea259 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -1011,7 +1011,8 @@ ]; "cielo_home" = ps: with ps; [ - ]; # missing inputs: cielo-connect-api + cielo-connect-api + ]; "cisco_ios" = ps: with ps; [ pexpect @@ -1207,7 +1208,8 @@ ]; "data_grand_lyon" = ps: with ps; [ - ]; # missing inputs: data-grand-lyon-ha + data-grand-lyon-ha + ]; "datadog" = ps: with ps; [ datadog @@ -7854,6 +7856,7 @@ "cert_expiry" "chacon_dio" "chess_com" + "cielo_home" "citybikes" "clicksend_tts" "climate" @@ -7881,6 +7884,7 @@ "crownstone" "cync" "daikin" + "data_grand_lyon" "datadog" "date" "datetime" diff --git a/pkgs/servers/home-assistant/custom-components/opendisplay/package.nix b/pkgs/servers/home-assistant/custom-components/opendisplay/package.nix new file mode 100644 index 000000000000..ce0781ea8beb --- /dev/null +++ b/pkgs/servers/home-assistant/custom-components/opendisplay/package.nix @@ -0,0 +1,79 @@ +{ + lib, + buildHomeAssistantComponent, + fetchFromGitHub, + + # dependencies + bleak, + bleak-retry-connector, + python-resize-image, + numpy, + qrcode, + requests-toolbelt, + websocket-client, + websockets, + + # tests + pytest-asyncio, + pytest-homeassistant-custom-component, + pytestCheckHook, +}: + +buildHomeAssistantComponent (finalAttrs: { + owner = "OpenDisplay"; + domain = "opendisplay"; + version = "2.0.2"; + + src = fetchFromGitHub { + inherit (finalAttrs) owner; + repo = "Home_Assistant_Integration"; + tag = finalAttrs.version; + hash = "sha256-EmcDY31cTWK+JRErM6EWO0jrQvIaxKXgeI6i5qiwYGU="; + }; + + dependencies = [ + bleak + bleak-retry-connector + numpy + python-resize-image + qrcode + requests-toolbelt + websocket-client + websockets + ] + ++ qrcode.optional-dependencies.pil; + + ignoreVersionRequirement = [ + "qrcode" + "websocket-client" + ]; + + nativeCheckInputs = [ + pytest-asyncio + pytest-homeassistant-custom-component + pytestCheckHook + ]; + + disabledTestPaths = [ + # Probably mismatch in fontconfig priorities + "tests/drawcustom/text_multiline_test.py::test_text_multiline_delimiter" # AssertionError: Multiline text with delimiter rendering failed + "tests/drawcustom/text_multiline_test.py::test_text_multiline_empty_line" # AssertionError: Multiline text with empty line rendering failed + "tests/drawcustom/text_multiline_test.py::test_text_multiline_delimiter_and_newline" # AssertionError: Multiline text with delimiter and newline rendering failed + "tests/drawcustom/text_test.py::test_small_font_size" # AssertionError: Small font size rendering failed + "tests/drawcustom/text_test.py::test_large_font_size" # AssertionError: Large font size rendering failed + "tests/drawcustom/text_test.py::test_text_wrapping" # AssertionError: Text wrapping failed + "tests/drawcustom/text_test.py::test_text_wrapping_with_anchor" # AssertionError: Text wrapping failed + "tests/drawcustom/text_test.py::test_text_with_special_characters" # AssertionError: Special characters rendering failed + "tests/drawcustom/text_test.py::test_text_percentage" # AssertionError: Text with percentage rendering failed + "tests/drawcustom/text_test.py::test_text_anchors" # AssertionError: Text anchor points failed + "tests/drawcustom/text_test.py::test_text_truncate" # AssertionError: Text truncation failed + ]; + + meta = { + description = "Home Assistant Integration for OpenDisplay"; + homepage = "https://github.com/OpenDisplay/Home_Assistant_Integration"; + changelog = "https://github.com/OpenDisplay/Home_Assistant_Integration/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ hexa ]; + }; +}) diff --git a/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix b/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix index 8bcc2e23b9c5..724d5650f561 100644 --- a/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix +++ b/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix @@ -2,8 +2,8 @@ grafanaPlugin { pname = "victoriametrics-metrics-datasource"; - version = "0.24.0"; - zipHash = "sha256-NR5mUC5ctByObxRb+wJw7lRxuXbC4jgNjaIUXY0Y/94="; + version = "0.25.0"; + zipHash = "sha256-eMXn1rBf0adc0obsMVbkPf3FPFpt7x+k0hr6rdCoGwE="; meta = { description = "VictoriaMetrics metrics datasource for Grafana"; license = lib.licenses.agpl3Only; diff --git a/pkgs/tools/compression/bzip2/1_1.nix b/pkgs/tools/compression/bzip2/1_1.nix deleted file mode 100644 index 1becf083055f..000000000000 --- a/pkgs/tools/compression/bzip2/1_1.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ - lib, - stdenv, - fetchFromGitLab, - meson, - python3, - ninja, - testers, -}: - -stdenv.mkDerivation (finalAttrs: { - pname = "bzip2-unstable"; - version = "2020-08-11"; - - src = fetchFromGitLab { - owner = "federicomenaquintero"; - repo = "bzip2"; - rev = "15255b553e7c095fb7a26d4dc5819a11352ebba1"; - hash = "sha256-BAyz35D62LWi47B/gNcCSKpdaECHBGSpt21vtnk3fKs="; - }; - - postPatch = '' - patchShebangs install_links.py - ''; - - nativeBuildInputs = [ - meson - python3 - ninja - ]; - - outputs = [ - "bin" - "dev" - "out" - "man" - ]; - - mesonFlags = [ - "-Ddocs=disabled" - ]; - - strictDeps = true; - - passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - - meta = { - description = "High-quality data compression program"; - homepage = "https://gitlab.com/federicomenaquintero/bzip2"; - license = lib.licenses.bzip2; - pkgConfigModules = [ "bz2" ]; - platforms = lib.platforms.all; - maintainers = [ ]; - knownVulnerabilities = [ - "CVE-2026-42250" - ]; - }; -}) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index be1e8b7dbdb4..e6c2115a932f 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -423,6 +423,7 @@ mapAliases { buildXenPackage = throw "'buildXenPackage' has been removed as a custom Xen build can now be achieved by simply overriding 'xen'."; # Added 2025-05-12 bullet-roboschool = throw "'bullet-roboschool' has been removed as its build was broken and it was deprecated with its last update in 2019."; # Added 2025-11-15 bwidget = throw "'bwidget' has been renamed to/replaced by 'tclPackages.bwidget'"; # Converted to throw 2025-10-27 + bzip2_1_1 = throw "'bzip2_1_1' has been removed as it was an unmaintained 2020 snapshot with no remaining users; use 'bzip2' instead"; # Added 2026-05-31 bzrtp = throw "'bzrtp' has been moved to 'linphonePackages.bzrtp'"; # Added 2025-09-20 c0 = throw "'c0' has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05 caido = warnAlias "'caido' has been split into 'caido-cli' and 'caido-desktop'." caido-desktop; # Added 2026-03-03 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bfbf974ece2d..54b44200ed48 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1728,10 +1728,9 @@ with pkgs; inherit (go-containerregistry) crane gcrane; - geekbench_4 = callPackage ../tools/misc/geekbench/4.nix { }; - geekbench_5 = callPackage ../tools/misc/geekbench/5.nix { }; - geekbench_6 = callPackage ../tools/misc/geekbench/6.nix { }; - geekbench = geekbench_6; + geekbench_4 = callPackage ../by-name/ge/geekbench/4.nix { }; + geekbench_5 = callPackage ../by-name/ge/geekbench/5.nix { }; + geekbench_6 = geekbench; ghidra = callPackage ../tools/security/ghidra/build.nix { protobuf = protobuf_21; @@ -1836,8 +1835,6 @@ with pkgs; pixcat = with python3Packages; toPythonApplication pixcat; - psrecord = python3Packages.callPackage ../tools/misc/psrecord { }; - remarkable-mouse = python3Packages.callPackage ../applications/misc/remarkable/remarkable-mouse { }; ropgadget = with python3Packages; toPythonApplication ropgadget; @@ -1888,8 +1885,6 @@ with pkgs; bzip2 = callPackage ../tools/compression/bzip2 { }; - bzip2_1_1 = callPackage ../tools/compression/bzip2/1_1.nix { }; - davix-copy = davix.override { enableThirdPartyCopy = true; }; libceph = ceph.lib; @@ -5517,8 +5512,6 @@ with pkgs; sdk = true; }; - obelisk = callPackage ../development/tools/ocaml/obelisk { menhir = ocamlPackages.menhir; }; - openai = with python3Packages; toPythonApplication openai; openai-whisper = with python3.pkgs; toPythonApplication openai-whisper; @@ -9380,10 +9373,6 @@ with pkgs; mercurialFull = mercurial.override { fullBuild = true; }; - mldonkey = callPackage ../applications/networking/p2p/mldonkey { - ocamlPackages = ocaml-ng.ocamlPackages_4_14; - }; - monotone = callPackage ../applications/version-management/monotone { lua = lua5; }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4715e6012cb6..011468b93d5c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2763,6 +2763,8 @@ self: super: with self; { ci-py = callPackage ../development/python-modules/ci-py { }; + cielo-connect-api = callPackage ../development/python-modules/cielo-connect-api { }; + cinemagoer = callPackage ../development/python-modules/cinemagoer { }; circuit-webhook = callPackage ../development/python-modules/circuit-webhook { }; @@ -3628,6 +3630,8 @@ self: super: with self; { dask-yarn = callPackage ../development/python-modules/dask-yarn { }; + data-grand-lyon-ha = callPackage ../development/python-modules/data-grand-lyon-ha { }; + databackend = callPackage ../development/python-modules/databackend { }; databases = callPackage ../development/python-modules/databases { }; @@ -16212,6 +16216,8 @@ self: super: with self; { python-registry = callPackage ../development/python-modules/python-registry { }; + python-resize-image = callPackage ../development/python-modules/python-resize-image { }; + python-ripple-api = callPackage ../development/python-modules/python-ripple-api { }; python-roborock = callPackage ../development/python-modules/python-roborock { };