diff --git a/doc/README.md b/doc/README.md index 09a38d9dabbe..531c38acdfa5 100644 --- a/doc/README.md +++ b/doc/README.md @@ -108,6 +108,7 @@ A few markups for other kinds of literals are also available: These literal kinds are used mostly in NixOS option documentation. This syntax is taken from [MyST](https://myst-parser.readthedocs.io/en/latest/syntax/syntax.html#roles-an-in-line-extension-point). Though, the feature originates from [reStructuredText](https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-manpage) with slightly different syntax. +They are handled by `myst_role` defined per renderer. #### Admonitions diff --git a/lib/default.nix b/lib/default.nix index e69a1cc3860c..f1822307d2ee 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -156,6 +156,7 @@ let makeScope makeScopeWithSplicing makeScopeWithSplicing' extendMkDerivation; inherit (self.derivations) lazyDerivation optionalDrvAttr warnOnInstantiate; + inherit (self.generators) mkLuaInline; inherit (self.meta) addMetaAttrs dontDistribute setName updateName appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio hiPrioSet licensesSpdx getLicenseFromSpdxId getLicenseFromSpdxIdOr diff --git a/lib/generators.nix b/lib/generators.nix index 352644df0431..eb8d76626e71 100644 --- a/lib/generators.nix +++ b/lib/generators.nix @@ -743,6 +743,8 @@ in rec { "nil" else if isInt v || isFloat v || isString v || isBool v then toJSON v + else if isPath v || isDerivation v then + toJSON "${v}" else if isList v then (if v == [ ] then "{}" else "{${introSpace}${concatItems (map (value: "${toLua innerArgs value}") v)}${outroSpace}}") @@ -752,8 +754,6 @@ in rec { "(${v.expr})" else if v == { } then "{}" - else if isDerivation v then - ''"${toString v}"'' else "{${introSpace}${concatItems ( mapAttrsToList (key: value: "[${toJSON key}] = ${toLua innerArgs value}") v diff --git a/lib/licenses.nix b/lib/licenses.nix index 44fca61afbbd..97ed489bd1ab 100644 --- a/lib/licenses.nix +++ b/lib/licenses.nix @@ -140,11 +140,6 @@ lib.mapAttrs mkLicense ({ fullName = "Apache License 2.0"; }; - asl20-llvm = { - spdxId = "Apache-2.0 WITH LLVM-exception"; - fullName = "Apache License 2.0 with LLVM Exceptions"; - }; - bitstreamVera = { spdxId = "Bitstream-Vera"; fullName = "Bitstream Vera Font License"; @@ -859,6 +854,11 @@ lib.mapAttrs mkLicense ({ url = "https://opensource.franz.com/preamble.html"; }; + llvm-exception = { + spdxId = "LLVM-exception"; + fullName = "LLVM Exception"; # LLVM exceptions to the Apache 2.0 License + }; + lppl1 = { spdxId = "LPPL-1.0"; fullName = "LaTeX Project Public License v1.0"; diff --git a/lib/types.nix b/lib/types.nix index cdba500ae07f..3ca25cafa8eb 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -834,6 +834,15 @@ rec { }; }; + # A value produced by `lib.mkLuaInline` + luaInline = mkOptionType { + name = "luaInline"; + description = "inline lua"; + descriptionClass = "noun"; + check = x: x._type or null == "lua-inline"; + merge = mergeEqualOption; + }; + uniq = unique { message = ""; }; unique = { message }: type: mkOptionType rec { diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index ac3341e5c508..4f698b806660 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -579,6 +579,17 @@ githubId = 50264672; name = "Adam Freeth"; }; + adamperkowski = { + name = "Adam Perkowski"; + email = "adas1per@protonmail.com"; + matrix = "@xx0a_q:matrix.org"; + github = "adamperkowski"; + githubId = 75480869; + keys = [ + { fingerprint = "00F6 1623 FB56 BC5B B709 4E63 4CE6 C117 2DF6 BE79"; } + { fingerprint = "5A53 0832 DA91 20B0 CA57 DDB6 7CBD B58E CF1D 3478"; } + ]; + }; adamt = { email = "mail@adamtulinius.dk"; github = "adamtulinius"; @@ -1185,6 +1196,18 @@ githubId = 30437811; name = "Alex Andrews"; }; + alikindsys = { + email = "alice@blocovermelho.org"; + github = "alikindsys"; + githubId = 36565196; + name = "Alikind System"; + + keys = [ + { + fingerprint = "7D31 15DC D912 C15A 2781 F7BB 511C B44B C752 2A89"; + } + ]; + }; alirezameskin = { email = "alireza.meskin@gmail.com"; github = "alirezameskin"; @@ -9103,6 +9126,12 @@ githubId = 39066502; name = "Guekka"; }; + guelakais = { + email = "koroyeldiores@gmail.com"; + github = "Guelakais"; + githubId = 76840985; + name = "GueLaKais"; + }; guibert = { email = "david.guibert@gmail.com"; github = "dguibert"; @@ -9176,6 +9205,11 @@ github = "gytis-ivaskevicius"; githubId = 23264966; }; + GZGavinZhao = { + name = "Gavin Zhao"; + github = "GZGavinZhao"; + githubId = 74938940; + }; h3cth0r = { name = "Hector Miranda"; email = "hector.miranda@tec.mx"; @@ -10514,6 +10548,12 @@ githubId = 94313; name = "Xianyi Lin"; }; + izelnakri = { + email = "contact@izelnakri.com"; + github = "izelnakri"; + githubId = 1190931; + name = "Izel Nakri"; + }; izorkin = { email = "Izorkin@gmail.com"; github = "Izorkin"; @@ -11415,6 +11455,13 @@ githubId = 22916782; name = "Joan Massachs"; }; + joaomoreira = { + matrix = "@joaomoreira:matrix.org"; + github = "joaoymoreira"; + githubId = 151087767; + name = "João Moreira"; + keys = [ { fingerprint = "F457 0A3A 5F89 22F8 F572 E075 EF8B F2C8 C5F4 097D"; } ]; + }; joaquintrinanes = { email = "hi@joaquint.io"; github = "JoaquinTrinanes"; @@ -14202,6 +14249,17 @@ githubId = 7910815; name = "Alex McGrath"; }; + lykos153 = { + email = "silvio.ankermann@cloudandheat.com"; + github = "Lykos153"; + githubId = 6453662; + name = "Silvio Ankermann"; + keys = [ + { + fingerprint = "8D47 6294 7205 541C 62A4 9C88 F422 6CA3 971C 4E97"; + } + ]; + }; lyn = { name = "Lyn"; matrix = "@lynatic:catgirl.cloud"; @@ -21399,6 +21457,11 @@ githubId = 19472270; name = "Sebastian"; }; + sebaguardian = { + name = "Sebaguardian"; + github = "Sebaguardian"; + githubId = 68247013; + }; sebastianblunt = { name = "Sebastian Blunt"; email = "nix@sebastianblunt.com"; @@ -21986,6 +22049,11 @@ githubId = 91412114; keys = [ { fingerprint = "C1DA A551 B422 7A6F 3FD9 6B3A 467B 7D12 9EA7 3AC9"; } ]; }; + silvanshade = { + github = "silvanshade"; + githubId = 11022302; + name = "silvanshade"; + }; Silver-Golden = { name = "Brendan Golden"; email = "github+nixpkgs@brendan.ie"; @@ -22510,6 +22578,13 @@ githubId = 47164123; name = "Spoonbaker"; }; + sportshead = { + email = "me@sportshead.dev"; + github = "sportshead"; + githubId = 32637656; + name = "sportshead"; + keys = [ { fingerprint = "A6B6 D031 782E BDF7 631A 8E7E A874 DB2C BFD3 CFD0"; } ]; + }; sprock = { email = "rmason@mun.ca"; github = "sprock"; diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix index 65fc6ca54edd..199e2ff4f751 100644 --- a/maintainers/team-list.nix +++ b/maintainers/team-list.nix @@ -1018,8 +1018,9 @@ with lib.maintainers; rocm = { members = [ - Madouura Flakebi + GZGavinZhao + LunNova mschwaig ]; githubTeams = [ "rocm-maintainers" ]; diff --git a/nixos/doc/manual/development/option-types.section.md b/nixos/doc/manual/development/option-types.section.md index dc16e5113fd1..f39472e2ba61 100644 --- a/nixos/doc/manual/development/option-types.section.md +++ b/nixos/doc/manual/development/option-types.section.md @@ -232,6 +232,13 @@ merging is handled. definitions cannot be merged. The regular expression is processed using `builtins.match`. +### Specialised types {#sec-option-types-specialised} + +`types.luaInline` + +: A string wrapped using `lib.mkLuaInline`. Allows embedding lua expressions + inline within generated lua. Multiple definitions cannot be merged. + ## Submodule types {#sec-option-types-submodule} Submodules are detailed in [Submodule](#section-option-types-submodule). diff --git a/nixos/doc/manual/development/settings-options.section.md b/nixos/doc/manual/development/settings-options.section.md index 28d0716cb0ed..4b49a1e82090 100644 --- a/nixos/doc/manual/development/settings-options.section.md +++ b/nixos/doc/manual/development/settings-options.section.md @@ -402,6 +402,31 @@ have a predefined type and string generator already declared under : Outputs the given attribute set as an Elixir map, instead of the default Elixir keyword list +`pkgs.formats.lua { asBindings ? false, multiline ? true, columnWidth ? 100, indentWidth ? 2, indentUsingTabs ? false }` + +: A function taking an attribute set with values + + `asBindings` (default `false`) + + : Whether to treat attributes as variable bindings + + `multiline` (default `true`) + + : Whether to procude a multiline output. The output may still wrap across + multiple lines if it would otherwise exceed `columnWidth`. + + `columnWidth` (default `100`) + + : The column width to use to attempt to wrap lines. + + `indentWidth` (default `2`) + + : The width of a single indentation level. + + `indentUsingTabs` (default `false`) + + : Whether the indentation should use tabs instead of spaces. + `pkgs.formats.php { finalVariable }` []{#pkgs-formats-php} : A function taking an attribute set with values diff --git a/nixos/doc/manual/redirects.json b/nixos/doc/manual/redirects.json index 950266de4e35..29f7f9d51996 100644 --- a/nixos/doc/manual/redirects.json +++ b/nixos/doc/manual/redirects.json @@ -1592,6 +1592,9 @@ "sec-option-types-string": [ "index.html#sec-option-types-string" ], + "sec-option-types-specialised": [ + "index.html#sec-option-types-specialised" + ], "sec-option-types-submodule": [ "index.html#sec-option-types-submodule" ], diff --git a/nixos/doc/manual/release-notes/rl-2505.section.md b/nixos/doc/manual/release-notes/rl-2505.section.md index 27c4911ea265..5166c7ca775e 100644 --- a/nixos/doc/manual/release-notes/rl-2505.section.md +++ b/nixos/doc/manual/release-notes/rl-2505.section.md @@ -111,6 +111,8 @@ - [Schroot](https://codeberg.org/shelter/reschroot), a lightweight virtualisation tool. Securely enter a chroot and run a command or login shell. Available as [programs.schroot](#opt-programs.schroot.enable). +- [Firezone](https://firezone.dev), an enterprise-ready zero-trust access platform built on WireGuard. This includes the server stack as [services.firezone.server.enable](#opt-services.firezone.server.enable), a TURN/STUN relay service as [services.firezone.relay.enable](#opt-services.firezone.relay.enable), a gateway service as [services.firezone.gateway.enable](#opt-services.firezone.gateway.enable), a headless client as [services.firezone.headless-client.enable](#opt-services.firezone.headless-client.enable) and a GUI client as [services.firezone.gui-client.enable](#opt-services.firezone.gui-client.enable). + - [crab-hole](https://github.com/LuckyTurtleDev/crab-hole), a cross platform Pi-hole clone written in Rust using hickory-dns/trust-dns. Available as [services.crab-hole](#opt-services.crab-hole.enable). - [zwave-js-ui](https://zwave-js.github.io/zwave-js-ui/), a full featured Z-Wave Control Panel and MQTT Gateway. Available as [services.zwave-js-ui](#opt-services.zwave-js-ui.enable). diff --git a/nixos/modules/config/update-users-groups.pl b/nixos/modules/config/update-users-groups.pl index f0b692a759d1..a2be448d625b 100644 --- a/nixos/modules/config/update-users-groups.pl +++ b/nixos/modules/config/update-users-groups.pl @@ -376,4 +376,4 @@ foreach my $u (values %usersOut) { updateFile("/etc/subuid", join("\n", @subUids) . "\n"); updateFile("/etc/subgid", join("\n", @subGids) . "\n"); -updateFile($subUidMapFile, encode_json($subUidMap) . "\n"); +updateFile($subUidMapFile, to_json($subUidMap) . "\n"); diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix index e4b547b3b289..34d5dd802115 100644 --- a/nixos/modules/config/users-groups.nix +++ b/nixos/modules/config/users-groups.nix @@ -951,6 +951,21 @@ in { } ] ++ flatten (flip mapAttrsToList cfg.users (name: user: [ + ( + let + # Things fail in various ways with especially non-ascii usernames. + # This regex mirrors the one from shadow's is_valid_name: + # https://github.com/shadow-maint/shadow/blob/bee77ffc291dfed2a133496db465eaa55e2b0fec/lib/chkname.c#L68 + # though without the trailing $, because Samba 3 got its last release + # over 10 years ago and is not in Nixpkgs anymore, + # while later versions don't appear to require anything like that. + nameRegex = "[a-zA-Z0-9_.][a-zA-Z0-9_.-]*"; + in + { + assertion = builtins.match nameRegex user.name != null; + message = "The username \"${user.name}\" is not valid, it does not match the regex \"${nameRegex}\"."; + } + ) { assertion = (user.hashedPassword != null) -> (match ".*:.*" user.hashedPassword == null); diff --git a/nixos/modules/image/images.nix b/nixos/modules/image/images.nix index 3f57b2dcf606..f3cdde327d36 100644 --- a/nixos/modules/image/images.nix +++ b/nixos/modules/image/images.nix @@ -47,7 +47,10 @@ let let module = ../. + "/installer/sd-card/sd-image-${pkgs.targetPlatform.qemuArch}.nix"; in - if builtins.pathExists module then [ module ] else throw "The module ${module} does not exist."; + if builtins.pathExists module then + [ module ] + else + throw "The module ${toString module} does not exist."; }; kexec = ../installer/netboot/netboot-minimal.nix; }; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 4c7bed90e69d..3c13e2baa664 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1101,6 +1101,11 @@ ./services/networking/firewall.nix ./services/networking/firewall-iptables.nix ./services/networking/firewall-nftables.nix + ./services/networking/firezone/gateway.nix + ./services/networking/firezone/gui-client.nix + ./services/networking/firezone/headless-client.nix + ./services/networking/firezone/relay.nix + ./services/networking/firezone/server.nix ./services/networking/flannel.nix ./services/networking/freenet.nix ./services/networking/freeradius.nix @@ -1364,6 +1369,7 @@ ./services/scheduling/atd.nix ./services/scheduling/cron.nix ./services/scheduling/fcron.nix + ./services/scheduling/prefect.nix ./services/scheduling/scx.nix ./services/search/elasticsearch-curator.nix ./services/search/elasticsearch.nix diff --git a/nixos/modules/services/matrix/mautrix-telegram.nix b/nixos/modules/services/matrix/mautrix-telegram.nix index a489c9c72485..f3adbc26ab58 100644 --- a/nixos/modules/services/matrix/mautrix-telegram.nix +++ b/nixos/modules/services/matrix/mautrix-telegram.nix @@ -9,7 +9,8 @@ let registrationFile = "${dataDir}/telegram-registration.yaml"; cfg = config.services.mautrix-telegram; settingsFormat = pkgs.formats.json { }; - settingsFile = settingsFormat.generate "mautrix-telegram-config.json" cfg.settings; + settingsFileUnsubstituted = settingsFormat.generate "mautrix-telegram-config.json" cfg.settings; + settingsFile = "${dataDir}/config.json"; in { @@ -132,10 +133,37 @@ in List of Systemd services to require and wait for when starting the application service. ''; }; + + registerToSynapse = lib.mkOption { + type = lib.types.bool; + default = config.services.matrix-synapse.enable; + defaultText = lib.literalExpression "config.services.matrix-synapse.enable"; + description = '' + Whether to add the bridge's app service registration file to + `services.matrix-synapse.settings.app_service_config_files`. + ''; + }; }; }; config = lib.mkIf cfg.enable { + + users.users.mautrix-telegram = { + isSystemUser = true; + group = "mautrix-telegram"; + home = dataDir; + description = "Mautrix-Telegram bridge user"; + }; + + users.groups.mautrix-telegram = { }; + + services.matrix-synapse = lib.mkIf cfg.registerToSynapse { + settings.app_service_config_files = [ registrationFile ]; + }; + systemd.services.matrix-synapse = lib.mkIf cfg.registerToSynapse { + serviceConfig.SupplementaryGroups = [ "mautrix-telegram" ]; + }; + systemd.services.mautrix-telegram = { description = "Mautrix-Telegram, a Matrix-Telegram hybrid puppeting/relaybot bridge."; @@ -161,6 +189,16 @@ in preStart = '' + # substitute the settings file by environment variables + # in this case read from EnvironmentFile + test -f '${settingsFile}' && rm -f '${settingsFile}' + old_umask=$(umask) + umask 0177 + ${pkgs.envsubst}/bin/envsubst \ + -o '${settingsFile}' \ + -i '${settingsFileUnsubstituted}' + umask $old_umask + # generate the appservice's registration file if absent if [ ! -f '${registrationFile}' ]; then ${pkgs.mautrix-telegram}/bin/mautrix-telegram \ @@ -168,6 +206,19 @@ in --config='${settingsFile}' \ --registration='${registrationFile}' fi + + old_umask=$(umask) + umask 0177 + # 1. Overwrite registration tokens in config + # is set, set it as the login shared secret value for the configured + # homeserver domain. + ${pkgs.yq}/bin/yq -s '.[0].appservice.as_token = .[1].as_token + | .[0].appservice.hs_token = .[1].hs_token + | .[0]' \ + '${settingsFile}' '${registrationFile}' > '${settingsFile}.tmp' + mv '${settingsFile}.tmp' '${settingsFile}' + + umask $old_umask '' + lib.optionalString (pkgs.mautrix-telegram ? alembic) '' # run automatic database init and migration scripts @@ -175,6 +226,8 @@ in ''; serviceConfig = { + User = "mautrix-telegram"; + Group = "mautrix-telegram"; Type = "simple"; Restart = "always"; @@ -184,7 +237,6 @@ in ProtectKernelModules = true; ProtectControlGroups = true; - DynamicUser = true; PrivateTmp = true; WorkingDirectory = pkgs.mautrix-telegram; # necessary for the database migration scripts to be found StateDirectory = baseNameOf dataDir; diff --git a/nixos/modules/services/networking/firezone/gateway.nix b/nixos/modules/services/networking/firezone/gateway.nix new file mode 100644 index 000000000000..915478000edb --- /dev/null +++ b/nixos/modules/services/networking/firezone/gateway.nix @@ -0,0 +1,159 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + boolToString + getExe + mkEnableOption + mkIf + mkOption + mkPackageOption + types + ; + + cfg = config.services.firezone.gateway; +in +{ + options = { + services.firezone.gateway = { + enable = mkOption { + default = false; + example = true; + description = '' + Whether to enable the firezone gateway. + + You have to manually masquerade and forward traffic from the + tun-firezone interface to your resource! Refer to the + [upstream setup script](https://github.com/firezone/firezone/blob/8c7c0a9e8e33ae790aeb75fdb5a15432c2870b79/scripts/gateway-systemd-install.sh#L154-L168) + for a list of iptable commands. + + See the firezone nixos test in this repository for an nftables based example. + ''; + type = lib.types.bool; + }; + package = mkPackageOption pkgs "firezone-gateway" { }; + + name = mkOption { + type = types.str; + description = "The name of this gateway as shown in firezone"; + }; + + apiUrl = mkOption { + type = types.strMatching "^wss://.+/$"; + example = "wss://firezone.example.com/api/"; + description = '' + The URL of your firezone server's API. This should be the same + as your server's setting for {option}`services.firezone.server.settings.api.externalUrl`, + but with `wss://` instead of `https://`. + ''; + }; + + tokenFile = mkOption { + type = types.path; + example = "/run/secrets/firezone-gateway-token"; + description = '' + A file containing the firezone gateway token. Do not use a nix-store path here + as it will make the token publicly readable! + + This file will be passed via systemd credentials, it should only be accessible + by the root user. + ''; + }; + + logLevel = mkOption { + type = types.str; + default = "info"; + description = '' + The log level for the firezone application. See + [RUST_LOG](https://docs.rs/env_logger/latest/env_logger/#enabling-logging) + for the format. + ''; + }; + + enableTelemetry = mkEnableOption "telemetry"; + }; + }; + + config = mkIf cfg.enable { + systemd.services.firezone-gateway = { + description = "Gateway service for the Firezone zero-trust access platform"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + path = [ pkgs.util-linux ]; + script = '' + # If FIREZONE_ID is not given by the user, use a persisted (or newly generated) uuid. + if [[ -z "''${FIREZONE_ID:-}" ]]; then + if [[ ! -e gateway_id ]]; then + uuidgen -r > gateway_id + fi + export FIREZONE_ID=$(< gateway_id) + fi + + export FIREZONE_TOKEN=$(< "$CREDENTIALS_DIRECTORY/firezone-token") + exec ${getExe cfg.package} + ''; + + environment = { + FIREZONE_API_URL = cfg.apiUrl; + FIREZONE_NAME = cfg.name; + FIREZONE_NO_TELEMETRY = boolToString (!cfg.enableTelemetry); + RUST_LOG = cfg.logLevel; + }; + + serviceConfig = { + Type = "exec"; + DynamicUser = true; + User = "firezone-gateway"; + LoadCredential = [ "firezone-token:${cfg.tokenFile}" ]; + + DeviceAllow = "/dev/net/tun"; + AmbientCapabilities = [ "CAP_NET_ADMIN" ]; + CapabilityBoundingSet = [ "CAP_NET_ADMIN" ]; + + StateDirectory = "firezone-gateway"; + WorkingDirectory = "/var/lib/firezone-gateway"; + + Restart = "on-failure"; + RestartSec = 10; + + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateMounts = true; + PrivateTmp = true; + PrivateUsers = false; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_NETLINK" + ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallFilter = "@system-service"; + UMask = "077"; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; +} diff --git a/nixos/modules/services/networking/firezone/gui-client.nix b/nixos/modules/services/networking/firezone/gui-client.nix new file mode 100644 index 000000000000..8ddb4223111f --- /dev/null +++ b/nixos/modules/services/networking/firezone/gui-client.nix @@ -0,0 +1,138 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + boolToString + getExe' + mkEnableOption + mkIf + mkOption + mkPackageOption + types + ; + + cfg = config.services.firezone.gui-client; +in +{ + options = { + services.firezone.gui-client = { + enable = mkEnableOption "the firezone gui client"; + package = mkPackageOption pkgs "firezone-gui-client" { }; + + allowedUsers = mkOption { + type = types.listOf types.str; + default = [ ]; + description = '' + All listed users will become part of the `firezone-client` group so + they can control the IPC service. This is a convenience option. + ''; + }; + + name = mkOption { + type = types.str; + description = "The name of this client as shown in firezone"; + }; + + logLevel = mkOption { + type = types.str; + default = "info"; + description = '' + The log level for the firezone application. See + [RUST_LOG](https://docs.rs/env_logger/latest/env_logger/#enabling-logging) + for the format. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + users.groups.firezone-client.members = cfg.allowedUsers; + + # Required for deep-link mimetype registration + environment.systemPackages = [ cfg.package ]; + + # Required for the token store in the gui application + services.gnome.gnome-keyring.enable = true; + + systemd.services.firezone-ipc-service = { + description = "GUI IPC service for the Firezone zero-trust access platform"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + path = [ pkgs.util-linux ]; + script = '' + # If FIREZONE_ID is not given by the user, use a persisted (or newly generated) uuid. + if [[ -z "''${FIREZONE_ID:-}" ]]; then + if [[ ! -e client_id ]]; then + uuidgen -r > client_id + fi + export FIREZONE_ID=$(< client_id) + fi + + exec ${getExe' cfg.package "firezone-client-ipc"} run + ''; + + environment = { + FIREZONE_NAME = cfg.name; + LOG_DIR = "%L/dev.firezone.client"; + RUST_LOG = cfg.logLevel; + }; + + serviceConfig = { + Type = "notify"; + + DeviceAllow = "/dev/net/tun"; + AmbientCapabilities = [ "CAP_NET_ADMIN" ]; + CapabilityBoundingSet = [ "CAP_NET_ADMIN" ]; + + # This block contains hardcoded values in the client, we cannot change these :( + Group = "firezone-client"; + RuntimeDirectory = "dev.firezone.client"; + StateDirectory = "dev.firezone.client"; + WorkingDirectory = "/var/lib/dev.firezone.client"; + LogsDirectory = "dev.firezone.client"; + + Restart = "on-failure"; + RestartSec = 10; + + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateMounts = true; + PrivateTmp = true; + PrivateUsers = false; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_NETLINK" + "AF_UNIX" + ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallFilter = "@system-service"; + UMask = "077"; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; +} diff --git a/nixos/modules/services/networking/firezone/headless-client.nix b/nixos/modules/services/networking/firezone/headless-client.nix new file mode 100644 index 000000000000..c369fe5220b1 --- /dev/null +++ b/nixos/modules/services/networking/firezone/headless-client.nix @@ -0,0 +1,148 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + boolToString + getExe + mkEnableOption + mkIf + mkOption + mkPackageOption + types + ; + + cfg = config.services.firezone.headless-client; +in +{ + options = { + services.firezone.headless-client = { + enable = mkEnableOption "the firezone headless client"; + package = mkPackageOption pkgs "firezone-headless-client" { }; + + name = mkOption { + type = types.str; + description = "The name of this client as shown in firezone"; + }; + + apiUrl = mkOption { + type = types.strMatching "^wss://.+/$"; + example = "wss://firezone.example.com/api/"; + description = '' + The URL of your firezone server's API. This should be the same + as your server's setting for {option}`services.firezone.server.settings.api.externalUrl`, + but with `wss://` instead of `https://`. + ''; + }; + + tokenFile = mkOption { + type = types.path; + example = "/run/secrets/firezone-client-token"; + description = '' + A file containing the firezone client token. Do not use a nix-store path here + as it will make the token publicly readable! + + This file will be passed via systemd credentials, it should only be accessible + by the root user. + ''; + }; + + logLevel = mkOption { + type = types.str; + default = "info"; + description = '' + The log level for the firezone application. See + [RUST_LOG](https://docs.rs/env_logger/latest/env_logger/#enabling-logging) + for the format. + ''; + }; + + enableTelemetry = mkEnableOption "telemetry"; + }; + }; + + config = mkIf cfg.enable { + systemd.services.firezone-headless-client = { + description = "headless client service for the Firezone zero-trust access platform"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + path = [ pkgs.util-linux ]; + script = '' + # If FIREZONE_ID is not given by the user, use a persisted (or newly generated) uuid. + if [[ -z "''${FIREZONE_ID:-}" ]]; then + if [[ ! -e client_id ]]; then + uuidgen -r > client_id + fi + export FIREZONE_ID=$(< client_id) + fi + + exec ${getExe cfg.package} + ''; + + environment = { + FIREZONE_API_URL = cfg.apiUrl; + FIREZONE_NAME = cfg.name; + FIREZONE_NO_TELEMETRY = boolToString (!cfg.enableTelemetry); + FIREZONE_TOKEN_PATH = "%d/firezone-token"; + LOG_DIR = "%L/dev.firezone.client"; + RUST_LOG = cfg.logLevel; + }; + + serviceConfig = { + Type = "exec"; + LoadCredential = [ "firezone-token:${cfg.tokenFile}" ]; + + DeviceAllow = "/dev/net/tun"; + AmbientCapabilities = [ "CAP_NET_ADMIN" ]; + CapabilityBoundingSet = [ "CAP_NET_ADMIN" ]; + + # Hardcoded values in the client :( + RuntimeDirectory = "dev.firezone.client"; + StateDirectory = "dev.firezone.client"; + WorkingDirectory = "/var/lib/dev.firezone.client"; + LogsDirectory = "dev.firezone.client"; + + Restart = "on-failure"; + RestartSec = 10; + + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateMounts = true; + PrivateTmp = true; + PrivateUsers = false; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_NETLINK" + "AF_UNIX" + ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallFilter = "@system-service"; + UMask = "077"; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; +} diff --git a/nixos/modules/services/networking/firezone/provision.exs b/nixos/modules/services/networking/firezone/provision.exs new file mode 100644 index 000000000000..d8e60d32cf32 --- /dev/null +++ b/nixos/modules/services/networking/firezone/provision.exs @@ -0,0 +1,709 @@ +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", membership_rules: [%{operator: true}]}) + 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/relay.nix b/nixos/modules/services/networking/firezone/relay.nix new file mode 100644 index 000000000000..b5bc86abae5b --- /dev/null +++ b/nixos/modules/services/networking/firezone/relay.nix @@ -0,0 +1,202 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + boolToString + getExe + mkEnableOption + mkIf + mkOption + mkPackageOption + types + ; + + cfg = config.services.firezone.relay; +in +{ + options = { + services.firezone.relay = { + enable = mkEnableOption "the firezone relay server"; + package = mkPackageOption pkgs "firezone-relay" { }; + + name = mkOption { + type = types.str; + example = "My relay"; + description = "The name of this gateway as shown in firezone"; + }; + + publicIpv4 = mkOption { + type = types.nullOr types.str; + default = null; + description = "The public ipv4 address of this relay"; + }; + + publicIpv6 = mkOption { + type = types.nullOr types.str; + default = null; + description = "The public ipv6 address of this relay"; + }; + + openFirewall = mkOption { + type = types.bool; + default = true; + description = "Opens up the main STUN port and the TURN allocation range."; + }; + + port = mkOption { + type = types.port; + default = 3478; + description = "The port to listen on for STUN messages"; + }; + + lowestPort = mkOption { + type = types.port; + default = 49152; + description = "The lowest port to use in TURN allocation"; + }; + + highestPort = mkOption { + type = types.port; + default = 65535; + description = "The highest port to use in TURN allocation"; + }; + + apiUrl = mkOption { + type = types.strMatching "^wss://.+/$"; + example = "wss://firezone.example.com/api/"; + description = '' + The URL of your firezone server's API. This should be the same + as your server's setting for {option}`services.firezone.server.settings.api.externalUrl`, + but with `wss://` instead of `https://`. + ''; + }; + + tokenFile = mkOption { + type = types.path; + example = "/run/secrets/firezone-relay-token"; + description = '' + A file containing the firezone relay token. Do not use a nix-store path here + as it will make the token publicly readable! + + This file will be passed via systemd credentials, it should only be accessible + by the root user. + ''; + }; + + logLevel = mkOption { + type = types.str; + default = "info"; + description = '' + The log level for the firezone application. See + [RUST_LOG](https://docs.rs/env_logger/latest/env_logger/#enabling-logging) + for the format. + ''; + }; + + enableTelemetry = mkEnableOption "telemetry"; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + { + assertion = cfg.publicIpv4 != null || cfg.publicIpv6 != null; + message = "At least one of `services.firezone.relay.publicIpv4` and `services.firezone.relay.publicIpv6` must be set"; + } + ]; + + networking.firewall.allowedUDPPorts = mkIf cfg.openFirewall [ cfg.port ]; + networking.firewall.allowedUDPPortRanges = mkIf cfg.openFirewall [ + { + from = cfg.lowestPort; + to = cfg.highestPort; + } + ]; + + systemd.services.firezone-relay = { + description = "relay service for the Firezone zero-trust access platform"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + path = [ pkgs.util-linux ]; + script = '' + # If FIREZONE_ID is not given by the user, use a persisted (or newly generated) uuid. + if [[ -z "''${FIREZONE_ID:-}" ]]; then + if [[ ! -e relay_id ]]; then + uuidgen -r > relay_id + fi + export FIREZONE_ID=$(< relay_id) + fi + + export FIREZONE_TOKEN=$(< "$CREDENTIALS_DIRECTORY/firezone-token") + exec ${getExe cfg.package} + ''; + + environment = { + FIREZONE_API_URL = cfg.apiUrl; + FIREZONE_NAME = cfg.name; + FIREZONE_TELEMETRY = boolToString cfg.enableTelemetry; + + PUBLIC_IP4_ADDR = cfg.publicIpv4; + PUBLIC_IP6_ADDR = cfg.publicIpv6; + + LISTEN_PORT = toString cfg.port; + LOWEST_PORT = toString cfg.lowestPort; + HIGHEST_PORT = toString cfg.highestPort; + + RUST_LOG = cfg.logLevel; + LOG_FORMAT = "human"; + }; + + serviceConfig = { + Type = "exec"; + DynamicUser = true; + User = "firezone-relay"; + LoadCredential = [ "firezone-token:${cfg.tokenFile}" ]; + + StateDirectory = "firezone-relay"; + WorkingDirectory = "/var/lib/firezone-relay"; + + Restart = "on-failure"; + RestartSec = 10; + + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateMounts = true; + PrivateTmp = true; + PrivateUsers = false; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_NETLINK" + ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallFilter = "@system-service"; + UMask = "077"; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; +} diff --git a/nixos/modules/services/networking/firezone/server.nix b/nixos/modules/services/networking/firezone/server.nix new file mode 100644 index 000000000000..04ffa1b7d64c --- /dev/null +++ b/nixos/modules/services/networking/firezone/server.nix @@ -0,0 +1,1210 @@ +{ + lib, + pkgs, + config, + ... +}: +let + inherit (lib) + attrNames + boolToString + concatLines + concatLists + concatMapAttrs + concatStringsSep + filterAttrs + filterAttrsRecursive + flip + forEach + getExe + isBool + mapAttrs + mapAttrsToList + mkDefault + mkEnableOption + mkIf + mkMerge + mkOption + mkPackageOption + optionalAttrs + optionalString + recursiveUpdate + subtractLists + toUpper + types + ; + + cfg = config.services.firezone.server; + jsonFormat = pkgs.formats.json { }; + availableAuthAdapters = [ + "email" + "openid_connect" + "userpass" + "token" + "google_workspace" + "microsoft_entra" + "okta" + "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: + mapAttrs (_: v: if isBool v then boolToString v else toString v) ( + cfg.settings // cfg.${component}.settings + ); + + # All mandatory secrets which were not explicitly provided by the user will + # have to be generated, if they do not yet exist. + generateSecrets = + let + requiredSecrets = filterAttrs (_: v: v == null) cfg.settingsSecret; + in + '' + mkdir -p secrets + chmod 700 secrets + '' + + concatLines ( + forEach (attrNames requiredSecrets) (secret: '' + if [[ ! -e secrets/${secret} ]]; then + echo "Generating ${secret}" + # Some secrets like TOKENS_KEY_BASE require a value >=64 bytes. + head -c 64 /dev/urandom | base64 -w 0 > secrets/${secret} + chmod 600 secrets/${secret} + fi + '') + ); + + # All secrets given in `cfg.settingsSecret` must be loaded from a file and + # exported into the environment. Also exclude any variables that were + # overwritten by the local component settings. + loadSecretEnvironment = + component: + let + relevantSecrets = subtractLists (attrNames cfg.${component}.settings) ( + attrNames cfg.settingsSecret + ); + in + concatLines ( + forEach relevantSecrets ( + secret: + ''export ${secret}=$(< ${ + if cfg.settingsSecret.${secret} == null then + "secrets/${secret}" + else + "\"$CREDENTIALS_DIRECTORY/${secret}\"" + })'' + ) + ); + + 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 = { + AmbientCapablities = [ ]; + CapabilityBoundingSet = [ ]; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateMounts = true; + PrivateTmp = true; + PrivateUsers = false; + ProcSubset = "pid"; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProtectSystem = "strict"; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_NETLINK" + "AF_UNIX" + ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallFilter = "@system-service"; + UMask = "077"; + + DynamicUser = true; + User = "firezone"; + + Slice = "system-firezone.slice"; + StateDirectory = "firezone"; + WorkingDirectory = "/var/lib/firezone"; + + LoadCredential = mapAttrsToList (secretName: secretFile: "${secretName}:${secretFile}") ( + filterAttrs (_: v: v != null) cfg.settingsSecret + ); + Type = "exec"; + Restart = "on-failure"; + RestartSec = 10; + }; + + componentOptions = component: { + enable = mkEnableOption "the Firezone ${component} server"; + package = mkPackageOption pkgs "firezone-server-${component}" { }; + + settings = mkOption { + description = '' + Environment variables for this component of the Firezone server. For a + list of available variables, please refer to the [upstream definitions](https://github.com/firezone/firezone/blob/main/elixir/apps/domain/lib/domain/config/definitions.ex). + Some variables like `OUTBOUND_EMAIL_ADAPTER_OPTS` require json values + for which you can use `VAR = builtins.toJSON { /* ... */ }`. + + This component will automatically inherit all variables defined via + {option}`services.firezone.server.settings` and + {option}`services.firezone.server.settingsSecret`, but which can be + overwritten by this option. + ''; + default = { }; + type = types.submodule { + freeformType = types.attrsOf ( + types.oneOf [ + types.bool + types.float + types.int + types.str + types.path + types.package + ] + ); + }; + }; + }; +in +{ + options.services.firezone.server = { + enable = mkEnableOption "all Firezone components"; + enableLocalDB = mkEnableOption "a local postgresql database for Firezone"; + nginx.enable = mkEnableOption "nginx virtualhost definition"; + + openClusterFirewall = mkOption { + type = types.bool; + default = false; + description = '' + Opens up the erlang distribution port of all enabled components to + allow reaching the server cluster from the internet. You only need to + set this if you are actually distributing your cluster across multiple + machines. + ''; + }; + + clusterHosts = mkOption { + type = types.listOf types.str; + default = [ + "api@localhost.localdomain" + "web@localhost.localdomain" + "domain@localhost.localdomain" + ]; + description = '' + A list of components and their hosts that are part of this cluster. For + a single-machine setup, the default value will be sufficient. This + value will automatically set `ERLANG_CLUSTER_ADAPTER_CONFIG`. + + The format is `@`. + ''; + }; + + settingsSecret = mkOption { + default = { }; + description = '' + This is a convenience option which allows you to set secret values for + environment variables by specifying a file which will contain the value + at runtime. Before starting the server, the content of each file will + be loaded into the respective environment variable. + + Otherwise, this option is equivalent to + {option}`services.firezone.server.settings`. Refer to the settings + option for more information regarding the actual variables and how + filtering rules are applied for each component. + ''; + type = types.submodule { + freeformType = types.attrsOf types.path; + options = { + RELEASE_COOKIE = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + A file containing a unique secret identifier for the Erlang + cluster. All Firezone components in your cluster must use the + same value. + + If this is `null`, a shared value will automatically be generated + on startup and used for all components on this machine. You do + not need to set this except when you spread your cluster over + multiple hosts. + ''; + }; + + TOKENS_KEY_BASE = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + A file containing a unique base64 encoded secret for the + `TOKENS_KEY_BASE`. All Firezone components in your cluster must + use the same value. + + If this is `null`, a shared value will automatically be generated + on startup and used for all components on this machine. You do + not need to set this except when you spread your cluster over + multiple hosts. + ''; + }; + + SECRET_KEY_BASE = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + A file containing a unique base64 encoded secret for the + `SECRET_KEY_BASE`. All Firezone components in your cluster must + use the same value. + + If this is `null`, a shared value will automatically be generated + on startup and used for all components on this machine. You do + not need to set this except when you spread your cluster over + multiple hosts. + ''; + }; + + TOKENS_SALT = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + A file containing a unique base64 encoded secret for the + `TOKENS_SALT`. All Firezone components in your cluster must + use the same value. + + If this is `null`, a shared value will automatically be generated + on startup and used for all components on this machine. You do + not need to set this except when you spread your cluster over + multiple hosts. + ''; + }; + + LIVE_VIEW_SIGNING_SALT = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + A file containing a unique base64 encoded secret for the + `LIVE_VIEW_SIGNING_SALT`. All Firezone components in your cluster must + use the same value. + + If this is `null`, a shared value will automatically be generated + on startup and used for all components on this machine. You do + not need to set this except when you spread your cluster over + multiple hosts. + ''; + }; + + COOKIE_SIGNING_SALT = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + A file containing a unique base64 encoded secret for the + `COOKIE_SIGNING_SALT`. All Firezone components in your cluster must + use the same value. + + If this is `null`, a shared value will automatically be generated + on startup and used for all components on this machine. You do + not need to set this except when you spread your cluster over + multiple hosts. + ''; + }; + + COOKIE_ENCRYPTION_SALT = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + A file containing a unique base64 encoded secret for the + `COOKIE_ENCRYPTION_SALT`. All Firezone components in your cluster must + use the same value. + + If this is `null`, a shared value will automatically be generated + on startup and used for all components on this machine. You do + not need to set this except when you spread your cluster over + multiple hosts. + ''; + }; + }; + }; + }; + + settings = mkOption { + description = '' + Environment variables for the Firezone server. For a list of available + variables, please refer to the [upstream definitions](https://github.com/firezone/firezone/blob/main/elixir/apps/domain/lib/domain/config/definitions.ex). + Some variables like `OUTBOUND_EMAIL_ADAPTER_OPTS` require json values + for which you can use `VAR = builtins.toJSON { /* ... */ }`. + + Each component has an additional `settings` option which allows you to + override specific variables passed to that component. + ''; + default = { }; + type = types.submodule { + freeformType = types.attrsOf ( + types.oneOf [ + types.bool + types.float + types.int + types.str + types.path + types.package + ] + ); + }; + }; + + smtp = { + configureManually = mkOption { + type = types.bool; + default = false; + description = '' + Outbound email configuration is mandatory for Firezone and supports + many different delivery adapters. Yet, most users will only need an + SMTP relay to send emails, so this configuration enforced by default. + + If you want to utilize an alternative way to send emails (e.g. via a + supportd API-based service), enable this option and define + `OUTBOUND_EMAIL_FROM`, `OUTBOUND_EMAIL_ADAPTER` and + `OUTBOUND_EMAIL_ADAPTER_OPTS` manually via + {option}`services.firezone.server.settings` and/or + {option}`services.firezone.server.settingsSecret`. + + The Firezone documentation holds [a list of supported Swoosh adapters](https://github.com/firezone/firezone/blob/main/website/src/app/docs/reference/env-vars/readme.mdx#outbound-emails). + ''; + }; + + from = mkOption { + type = types.str; + example = "firezone@example.com"; + description = "Outbound SMTP FROM address"; + }; + + host = mkOption { + type = types.str; + example = "mail.example.com"; + description = "Outbound SMTP host"; + }; + + port = mkOption { + type = types.port; + example = 465; + description = "Outbound SMTP port"; + }; + + implicitTls = mkOption { + type = types.bool; + default = false; + description = "Whether to use implicit TLS instead of STARTTLS (usually port 465)"; + }; + + username = mkOption { + type = types.str; + example = "firezone@example.com"; + description = "Username to authenticate against the SMTP relay"; + }; + + passwordFile = mkOption { + type = types.path; + example = "/run/secrets/smtp-password"; + description = "File containing the password for the given username. Beware that a file in the nix store will be world readable."; + }; + }; + + domain = componentOptions "domain"; + + web = componentOptions "web" // { + externalUrl = mkOption { + type = types.strMatching "^https://.+/$"; + example = "https://firezone.example.com/"; + description = '' + The external URL under which you will serve the web interface. You + need to setup a reverse proxy for TLS termination, either with + {option}`services.firezone.server.nginx.enable` or manually. + ''; + }; + + address = mkOption { + type = types.str; + default = "127.0.0.1"; + description = "The address to listen on"; + }; + + port = mkOption { + type = types.port; + default = 8080; + description = "The port under which the web interface will be served locally"; + }; + + trustedProxies = mkOption { + type = types.listOf types.str; + default = [ ]; + description = "A list of trusted proxies"; + }; + }; + + api = componentOptions "api" // { + externalUrl = mkOption { + type = types.strMatching "^https://.+/$"; + example = "https://firezone.example.com/api/"; + description = '' + The external URL under which you will serve the api. You need to + setup a reverse proxy for TLS termination, either with + {option}`services.firezone.server.nginx.enable` or manually. + ''; + }; + + address = mkOption { + type = types.str; + default = "127.0.0.1"; + description = "The address to listen on"; + }; + + port = mkOption { + type = types.port; + default = 8081; + description = "The port under which the api will be served locally"; + }; + + trustedProxies = mkOption { + type = types.listOf types.str; + default = [ ]; + 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 + { + flow_activities = mkFeatureOption "flow_activities" true; + 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; + services.firezone.server.web.enable = true; + services.firezone.server.api.enable = true; + }) + # Create (and configure) a local database if desired + (mkIf cfg.enableLocalDB { + services.postgresql = { + enable = true; + ensureUsers = [ + { + name = "firezone"; + ensureDBOwnership = true; + } + ]; + ensureDatabases = [ "firezone" ]; + }; + + services.firezone.server.settings = { + DATABASE_SOCKET_DIR = "/run/postgresql"; + DATABASE_PORT = "5432"; + DATABASE_NAME = "firezone"; + DATABASE_USER = "firezone"; + DATABASE_PASSWORD = "firezone"; + }; + }) + # Create a local nginx reverse proxy + (mkIf cfg.nginx.enable { + services.nginx = mkMerge [ + { + enable = true; + } + ( + let + urlComponents = builtins.elemAt (builtins.split "https://([^/]*)(/?.*)" cfg.web.externalUrl) 1; + domain = builtins.elemAt urlComponents 0; + location = builtins.elemAt urlComponents 1; + in + { + virtualHosts.${domain} = { + forceSSL = mkDefault true; + locations.${location} = { + # The trailing slash is important to strip the location prefix from the request + proxyPass = "http://${cfg.web.address}:${toString cfg.web.port}/"; + proxyWebsockets = true; + }; + }; + } + ) + ( + let + urlComponents = builtins.elemAt (builtins.split "https://([^/]*)(/?.*)" cfg.api.externalUrl) 1; + domain = builtins.elemAt urlComponents 0; + location = builtins.elemAt urlComponents 1; + in + { + virtualHosts.${domain} = { + forceSSL = mkDefault true; + locations.${location} = { + # The trailing slash is important to strip the location prefix from the request + proxyPass = "http://${cfg.api.address}:${toString cfg.api.port}/"; + proxyWebsockets = true; + }; + }; + } + ) + ]; + }) + # Specify sensible defaults + { + services.firezone.server = { + settings = { + LOG_LEVEL = mkDefault "info"; + RELEASE_HOSTNAME = mkDefault "localhost.localdomain"; + + ERLANG_CLUSTER_ADAPTER = mkDefault "Elixir.Cluster.Strategy.Epmd"; + ERLANG_CLUSTER_ADAPTER_CONFIG = mkDefault ( + builtins.toJSON { + hosts = cfg.clusterHosts; + } + ); + + TZDATA_DIR = mkDefault "/var/lib/firezone/tzdata"; + TELEMETRY_ENABLED = mkDefault false; + + # By default this will open nproc * 2 connections for each component, + # which can exceeds the (default) maximum of 100 connections for + # postgresql on a 12 core +SMT machine. 16 connections will be + # sufficient for small to medium deployments + DATABASE_POOL_SIZE = "16"; + + AUTH_PROVIDER_ADAPTERS = mkDefault (concatStringsSep "," availableAuthAdapters); + + FEATURE_FLOW_ACTIVITIES_ENABLED = mkDefault true; + FEATURE_POLICY_CONDITIONS_ENABLED = mkDefault true; + FEATURE_MULTI_SITE_RESOURCES_ENABLED = mkDefault true; + FEATURE_SELF_HOSTED_RELAYS_ENABLED = mkDefault true; + FEATURE_IDP_SYNC_ENABLED = mkDefault true; + FEATURE_REST_API_ENABLED = mkDefault true; + FEATURE_INTERNET_RESOURCE_ENABLED = mkDefault true; + FEATURE_TRAFFIC_FILTERS_ENABLED = mkDefault true; + + FEATURE_SIGN_UP_ENABLED = mkDefault (!cfg.provision.enable); + + WEB_EXTERNAL_URL = mkDefault cfg.web.externalUrl; + API_EXTERNAL_URL = mkDefault cfg.api.externalUrl; + }; + + domain.settings = { + ERLANG_DISTRIBUTION_PORT = mkDefault 9000; + HEALTHZ_PORT = mkDefault 4000; + BACKGROUND_JOBS_ENABLED = mkDefault true; + }; + + web.settings = { + ERLANG_DISTRIBUTION_PORT = mkDefault 9001; + HEALTHZ_PORT = mkDefault 4001; + BACKGROUND_JOBS_ENABLED = mkDefault false; + + PHOENIX_LISTEN_ADDRESS = mkDefault cfg.web.address; + PHOENIX_EXTERNAL_TRUSTED_PROXIES = mkDefault (builtins.toJSON cfg.web.trustedProxies); + PHOENIX_HTTP_WEB_PORT = mkDefault cfg.web.port; + PHOENIX_HTTP_API_PORT = mkDefault cfg.api.port; + PHOENIX_SECURE_COOKIES = mkDefault true; # enforce HTTPS on cookies + }; + + api.settings = { + ERLANG_DISTRIBUTION_PORT = mkDefault 9002; + HEALTHZ_PORT = mkDefault 4002; + BACKGROUND_JOBS_ENABLED = mkDefault false; + + PHOENIX_LISTEN_ADDRESS = mkDefault cfg.api.address; + PHOENIX_EXTERNAL_TRUSTED_PROXIES = mkDefault (builtins.toJSON cfg.api.trustedProxies); + PHOENIX_HTTP_WEB_PORT = mkDefault cfg.web.port; + PHOENIX_HTTP_API_PORT = mkDefault cfg.api.port; + PHOENIX_SECURE_COOKIES = mkDefault true; # enforce HTTPS on cookies + }; + }; + } + (mkIf (!cfg.smtp.configureManually) { + services.firezone.server.settings = { + OUTBOUND_EMAIL_ADAPTER = "Elixir.Swoosh.Adapters.Mua"; + OUTBOUND_EMAIL_ADAPTER_OPTS = builtins.toJSON { }; + OUTBOUND_EMAIL_FROM = cfg.smtp.from; + OUTBOUND_EMAIL_SMTP_HOST = cfg.smtp.host; + OUTBOUND_EMAIL_SMTP_PORT = toString cfg.smtp.port; + OUTBOUND_EMAIL_SMTP_PROTOCOL = if cfg.smtp.implicitTls then "ssl" else "tcp"; + OUTBOUND_EMAIL_SMTP_USERNAME = cfg.smtp.username; + }; + services.firezone.server.settingsSecret = { + 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 + ]; + }) + (mkIf (cfg.openClusterFirewall && cfg.web.enable) { + networking.firewall.allowedTCPPorts = [ + cfg.web.settings.ERLANG_DISTRIBUTION_PORT + ]; + }) + (mkIf (cfg.openClusterFirewall && cfg.api.enable) { + networking.firewall.allowedTCPPorts = [ + cfg.api.settings.ERLANG_DISTRIBUTION_PORT + ]; + }) + (mkIf (cfg.domain.enable || cfg.web.enable || cfg.api.enable) { + systemd.slices.system-firezone = { + description = "Firezone Slice"; + }; + + systemd.targets.firezone = { + description = "Common target for all Firezone services."; + wantedBy = [ "multi-user.target" ]; + }; + + systemd.services.firezone-initialize = { + description = "Backend initialization service for the Firezone zero-trust access platform"; + + after = mkIf cfg.enableLocalDB [ "postgresql.service" ]; + requires = mkIf cfg.enableLocalDB [ "postgresql.service" ]; + wantedBy = [ "firezone.target" ]; + partOf = [ "firezone.target" ]; + + script = '' + mkdir -p "$TZDATA_DIR" + + # Generate and load secrets + ${generateSecrets} + ${loadSecretEnvironment "domain"} + + echo "Running migrations" + ${getExe cfg.domain.package} eval Domain.Release.migrate + ''; + + # We use the domain environment to be able to run migrations + environment = collectEnvironment "domain"; + serviceConfig = commonServiceConfig // { + Type = "oneshot"; + RemainAfterExit = true; + }; + }; + + systemd.services.firezone-server-domain = mkIf cfg.domain.enable { + description = "Backend domain server for the Firezone zero-trust access platform"; + after = [ "firezone-initialize.service" ]; + bindsTo = [ "firezone-initialize.service" ]; + wantedBy = [ "firezone.target" ]; + partOf = [ "firezone.target" ]; + + script = '' + ${loadSecretEnvironment "domain"} + exec ${getExe cfg.domain.package} start; + ''; + + path = [ pkgs.curl ]; + postStart = + '' + # Wait for the firezone server to come online + count=0 + while [[ "$(curl -s "http://localhost:${toString cfg.domain.settings.HEALTHZ_PORT}" 2>/dev/null || echo)" != '{"status":"ok"}' ]] + do + sleep 1 + if [[ "$count" -eq 30 ]]; then + echo "Tried for at least 30 seconds, giving up..." + exit 1 + 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"; + serviceConfig = commonServiceConfig; + }; + + systemd.services.firezone-server-web = mkIf cfg.web.enable { + description = "Backend web server for the Firezone zero-trust access platform"; + after = [ "firezone-initialize.service" ]; + bindsTo = [ "firezone-initialize.service" ]; + wantedBy = [ "firezone.target" ]; + partOf = [ "firezone.target" ]; + + script = '' + ${loadSecretEnvironment "web"} + exec ${getExe cfg.web.package} start; + ''; + + environment = collectEnvironment "web"; + serviceConfig = commonServiceConfig; + }; + + systemd.services.firezone-server-api = mkIf cfg.api.enable { + description = "Backend api server for the Firezone zero-trust access platform"; + after = [ "firezone-initialize.service" ]; + bindsTo = [ "firezone-initialize.service" ]; + wantedBy = [ "firezone.target" ]; + partOf = [ "firezone.target" ]; + + script = '' + ${loadSecretEnvironment "api"} + exec ${getExe cfg.api.package} start; + ''; + + environment = collectEnvironment "api"; + serviceConfig = commonServiceConfig; + }; + }) + ]; + + meta.maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; +} diff --git a/nixos/modules/services/scheduling/prefect.nix b/nixos/modules/services/scheduling/prefect.nix new file mode 100644 index 000000000000..409279edd692 --- /dev/null +++ b/nixos/modules/services/scheduling/prefect.nix @@ -0,0 +1,232 @@ +{ + lib, + pkgs, + config, + ... +}: + +let + cfg = config.services.prefect; + inherit (lib.types) + bool + str + enum + path + attrsOf + nullOr + submodule + port + ; + +in +{ + options.services.prefect = { + enable = lib.mkOption { + type = bool; + default = false; + description = "enable prefect server and worker services"; + }; + + package = lib.mkPackageOption pkgs "prefect" { }; + + host = lib.mkOption { + type = str; + default = "127.0.0.1"; + example = "0.0.0.0"; + description = "Prefect server host"; + }; + + port = lib.mkOption { + type = port; + default = 4200; + description = "Prefect server port"; + }; + + dataDir = lib.mkOption { + type = path; + default = "/var/lib/prefect-server"; + description = '' + Specify the directory for Prefect. + ''; + }; + + database = lib.mkOption { + type = enum [ + "sqlite" + "postgres" + ]; + default = "sqlite"; + description = "which database to use for prefect server: sqlite or postgres"; + }; + + databaseHost = lib.mkOption { + type = str; + default = "localhost"; + description = "database host for postgres only"; + }; + + databasePort = lib.mkOption { + type = str; + default = "5432"; + description = "database port for postgres only"; + }; + + databaseName = lib.mkOption { + type = str; + default = "prefect"; + description = "database name for postgres only"; + }; + + databaseUser = lib.mkOption { + type = str; + default = "postgres"; + description = "database user for postgres only"; + }; + + databasePasswordFile = lib.mkOption { + type = nullOr str; + default = null; + description = '' + path to a file containing e.g.: + DBPASSWORD=supersecret + + stored outside the nix store, read by systemd as EnvironmentFile. + ''; + }; + + # now define workerPools as an attribute set of submodules, + # each key is the pool name, and the submodule has an installPolicy + workerPools = lib.mkOption { + type = attrsOf (submodule { + options = { + installPolicy = lib.mkOption { + type = enum [ + "always" + "if-not-present" + "never" + "prompt" + ]; + default = "always"; + description = "install policy for the worker (always, if-not-present, never, prompt)"; + }; + }; + }); + default = { }; + description = '' + define a set of worker pools with submodule config. example: + workerPools.my-pool = { + installPolicy = "never"; + }; + ''; + }; + + baseUrl = lib.mkOption { + type = nullOr str; + default = null; + description = "external url when served by a reverse proxy, e.g. https://example.com/prefect"; + }; + }; + + config = lib.mkIf cfg.enable { + # define systemd.services as the server plus any worker definitions + systemd.services = + { + "prefect-server" = { + description = "prefect server"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + serviceConfig = { + DynamicUser = true; + StateDirectory = "prefect-server"; + # TODO all my efforts to setup the database url + # have failed with some unable to open file + Environment = [ + "PREFECT_HOME=%S/prefect-server" + "PREFECT_UI_STATIC_DIRECTORY=%S/prefect-server" + "PREFECT_SERVER_ANALYTICS_ENABLED=off" + "PREFECT_UI_API_URL=${cfg.baseUrl}/api" + "PREFECT_UI_URL=${cfg.baseUrl}" + ]; + EnvironmentFile = + if cfg.database == "postgres" && cfg.databasePasswordFile != null then + [ cfg.databasePasswordFile ] + else + [ ]; + + # ReadWritePaths = [ cfg.dataDir ]; + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + NoNewPrivileges = true; + MemoryDenyWriteExecute = true; + LockPersonality = true; + CapabilityBoundingSet = [ ]; + AmbientCapabilities = [ ]; + RestrictSUIDSGID = true; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_UNIX" + ]; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectKernelLogs = true; + ProtectControlGroups = true; + MemoryAccounting = true; + CPUAccounting = true; + + ExecStart = "${pkgs.prefect}/bin/prefect server start --host ${cfg.host} --port ${toString cfg.port}"; + Restart = "always"; + WorkingDirectory = cfg.dataDir; + }; + }; + } + // lib.concatMapAttrs (poolName: poolCfg: { + # return a partial attr set with one key: "prefect-worker-..." + "prefect-worker-${poolName}" = { + description = "prefect worker for pool '${poolName}'"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + + environment.systemPackages = cfg.package; + + serviceConfig = { + DynamicUser = true; + StateDirectory = "prefect-worker-${poolName}"; + Environment = [ + "PREFECT_HOME=%S/prefect-worker-${poolName}" + "PREFECT_API_URL=${cfg.baseUrl}/api" + ]; + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + NoNewPrivileges = true; + MemoryDenyWriteExecute = true; + LockPersonality = true; + CapabilityBoundingSet = [ ]; + AmbientCapabilities = [ ]; + RestrictSUIDSGID = true; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_UNIX" + ]; + ProtectKernelTunables = true; + ProtectKernelModules = true; + ProtectKernelLogs = true; + ProtectControlGroups = true; + MemoryAccounting = true; + CPUAccounting = true; + ExecStart = '' + ${pkgs.prefect}/bin/prefect worker start \ + --pool ${poolName} \ + --type process \ + --install-policy ${poolCfg.installPolicy} + ''; + Restart = "always"; + }; + }; + }) cfg.workerPools; + }; +} diff --git a/nixos/modules/services/web-apps/echoip.nix b/nixos/modules/services/web-apps/echoip.nix index 4bfba2ae138a..369ff35f4978 100644 --- a/nixos/modules/services/web-apps/echoip.nix +++ b/nixos/modules/services/web-apps/echoip.nix @@ -75,9 +75,12 @@ in ); # Hardening + AmbientCapabilities = ""; CapabilityBoundingSet = [ "" ]; - DeviceAllow = [ "" ]; + DevicePolicy = "closed"; LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; PrivateDevices = true; PrivateTmp = true; PrivateUsers = true; @@ -91,15 +94,19 @@ in ProtectKernelTunables = true; ProtectProc = "invisible"; ProtectSystem = "strict"; - RestrictAddressFamilies = [ - "AF_INET" - "AF_INET6" - "AF_UNIX" - ]; + RemoveIPC = true; + RestrictAddressFamilies = [ "AF_INET AF_INET6 AF_UNIX" ]; RestrictNamespaces = true; RestrictRealtime = true; RestrictSUIDSGID = true; SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "~@privileged" + "~@resources" + "setrlimit" + ]; + UMask = "0077"; }; }; diff --git a/nixos/modules/services/web-apps/zipline.nix b/nixos/modules/services/web-apps/zipline.nix index b8c80b273ec8..86cb3a1d7e81 100644 --- a/nixos/modules/services/web-apps/zipline.nix +++ b/nixos/modules/services/web-apps/zipline.nix @@ -107,9 +107,11 @@ in ExecStart = lib.getExe cfg.package; # Hardening + AmbientCapabilities = ""; CapabilityBoundingSet = [ "" ]; - DeviceAllow = [ "" ]; + DevicePolicy = "closed"; LockPersonality = true; + NoNewPrivileges = true; PrivateDevices = true; PrivateTmp = true; PrivateUsers = true; @@ -123,15 +125,18 @@ in ProtectKernelTunables = true; ProtectProc = "invisible"; ProtectSystem = "strict"; - RestrictAddressFamilies = [ - "AF_INET" - "AF_INET6" - "AF_UNIX" - ]; + RemoveIPC = true; + RestrictAddressFamilies = [ "AF_INET AF_INET6 AF_UNIX AF_NETLINK" ]; RestrictNamespaces = true; RestrictRealtime = true; RestrictSUIDSGID = true; SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "~@privileged" + "~@resources" + ]; + UMask = "0077"; }; }; }; diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix index ff7cf4777ddf..1aab9548a595 100644 --- a/nixos/modules/system/boot/stage-1.nix +++ b/nixos/modules/system/boot/stage-1.nix @@ -19,6 +19,7 @@ let kernel = config.system.modulesTree; firmware = config.hardware.firmware; allowMissing = false; + inherit (config.boot.initrd) extraFirmwarePaths; }; @@ -484,6 +485,14 @@ in ''; }; + boot.initrd.extraFirmwarePaths = mkOption { + default = [ ]; + type = types.listOf types.str; + description = '' + Other firmware files (relative to `"''${config.hardware.firmware}/lib/firmware"`) to include in the final initrd we are building. + ''; + }; + boot.initrd.checkJournalingFS = mkOption { default = true; type = types.bool; diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index 3096517c0b08..3b4bdaae071e 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -104,7 +104,7 @@ let "sleep.target" "hybrid-sleep.target" "systemd-hibernate.service" - "systemd-hibernate-clear.service" + ] ++ (lib.optional cfg.package.withEfi "systemd-hibernate-clear.service") ++ [ "systemd-hybrid-sleep.service" "systemd-suspend.service" "systemd-suspend-then-hibernate.service" @@ -130,11 +130,13 @@ let "systemd-ask-password-wall.service" # Varlink APIs + ] ++ lib.optionals cfg.package.withBootloader [ "systemd-bootctl@.service" "systemd-bootctl.socket" + ] ++ [ "systemd-creds@.service" "systemd-creds.socket" - ] ++ lib.optional cfg.package.withTpm2Tss [ + ] ++ lib.optional cfg.package.withTpm2Units [ "systemd-pcrlock@.service" "systemd-pcrlock.socket" ] ++ [ diff --git a/nixos/modules/system/boot/systemd/initrd.nix b/nixos/modules/system/boot/systemd/initrd.nix index 472c72fb3889..23b9e232c64d 100644 --- a/nixos/modules/system/boot/systemd/initrd.nix +++ b/nixos/modules/system/boot/systemd/initrd.nix @@ -105,6 +105,7 @@ let kernel = config.system.modulesTree; firmware = config.hardware.firmware; allowMissing = false; + inherit (config.boot.initrd) extraFirmwarePaths; }; initrdBinEnv = pkgs.buildEnv { @@ -703,10 +704,11 @@ in "|stage1panic" ]; }; - script = '' - echo c > /proc/sysrq-trigger - ''; - serviceConfig.Type = "oneshot"; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${pkgs.coreutils}/bin/echo c"; + StandardOutput = "file:/proc/sysrq-trigger"; + }; }; }; }; diff --git a/nixos/modules/system/boot/systemd/tpm2.nix b/nixos/modules/system/boot/systemd/tpm2.nix index 6b6c9fb23f24..8bf3b8413574 100644 --- a/nixos/modules/system/boot/systemd/tpm2.nix +++ b/nixos/modules/system/boot/systemd/tpm2.nix @@ -27,13 +27,13 @@ options = { systemd.tpm2.enable = lib.mkEnableOption "systemd TPM2 support" // { - default = config.systemd.package.withTpm2Tss; - defaultText = "systemd.package.withTpm2Tss"; + default = config.systemd.package.withTpm2Units; + defaultText = "systemd.package.withTpm2Units"; }; boot.initrd.systemd.tpm2.enable = lib.mkEnableOption "systemd initrd TPM2 support" // { - default = config.boot.initrd.systemd.package.withTpm2Tss; - defaultText = "boot.initrd.systemd.package.withTpm2Tss"; + default = config.boot.initrd.systemd.package.withTpm2Units; + defaultText = "boot.initrd.systemd.package.withTpm2Units"; }; }; diff --git a/nixos/modules/virtualisation/docker.nix b/nixos/modules/virtualisation/docker.nix index 00a99b6fcd7d..511c377ca984 100644 --- a/nixos/modules/virtualisation/docker.nix +++ b/nixos/modules/virtualisation/docker.nix @@ -1,6 +1,6 @@ # Systemd services for docker. -{ config, lib, pkgs, ... }: +{ config, lib, utils, pkgs, ... }: with lib; @@ -271,11 +271,15 @@ in restartIfChanged = false; unitConfig.X-StopOnRemoval = false; - serviceConfig.Type = "oneshot"; - - script = '' - ${cfg.package}/bin/docker system prune -f ${toString cfg.autoPrune.flags} - ''; + serviceConfig = { + Type = "oneshot"; + ExecStart = utils.escapeSystemdExecArgs ([ + (lib.getExe cfg.package) + "system" + "prune" + "-f" + ] ++ cfg.autoPrune.flags); + }; startAt = optional cfg.autoPrune.enable cfg.autoPrune.dates; after = [ "docker.service" ]; diff --git a/nixos/modules/virtualisation/nixos-containers.nix b/nixos/modules/virtualisation/nixos-containers.nix index 9e999e479638..acb5d1ce8384 100644 --- a/nixos/modules/virtualisation/nixos-containers.nix +++ b/nixos/modules/virtualisation/nixos-containers.nix @@ -178,7 +178,6 @@ let exec ${config.systemd.package}/bin/systemd-nspawn \ --keep-unit \ -M "$INSTANCE" -D "$root" "''${extraFlags[@]}" \ - $EXTRA_NSPAWN_FLAGS \ --notify-ready=yes \ --kill-signal=SIGRTMIN+3 \ --bind-ro=/nix/store:/nix/store$NIX_BIND_OPT \ @@ -203,6 +202,7 @@ let ${optionalString (cfg.tmpfs != null && cfg.tmpfs != []) ''--tmpfs=${concatStringsSep " --tmpfs=" cfg.tmpfs}'' } \ + $EXTRA_NSPAWN_FLAGS \ ${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init" ''; diff --git a/nixos/modules/virtualisation/podman/default.nix b/nixos/modules/virtualisation/podman/default.nix index bfaefb0eecf6..51a9dee6efa6 100644 --- a/nixos/modules/virtualisation/podman/default.nix +++ b/nixos/modules/virtualisation/podman/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, utils, pkgs, ... }: let cfg = config.virtualisation.podman; json = pkgs.formats.json { }; @@ -202,11 +202,15 @@ in restartIfChanged = false; unitConfig.X-StopOnRemoval = false; - serviceConfig.Type = "oneshot"; - - script = '' - ${cfg.package}/bin/podman system prune -f ${toString cfg.autoPrune.flags} - ''; + serviceConfig = { + Type = "oneshot"; + ExecStart = utils.escapeSystemdExecArgs ([ + (lib.getExe cfg.package) + "system" + "prune" + "-f" + ] ++ cfg.autoPrune.flags); + }; startAt = lib.optional cfg.autoPrune.enable cfg.autoPrune.dates; after = [ "podman.service" ]; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 83bd0c45c6f7..43103c6b91c1 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -353,7 +353,7 @@ in { early-mount-options = handleTest ./early-mount-options.nix {}; ec2-config = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-config or {}; ec2-nixops = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-nixops or {}; - echoip = handleTest ./echoip.nix {}; + echoip = runTest ./echoip.nix; ecryptfs = handleTest ./ecryptfs.nix {}; fscrypt = handleTest ./fscrypt.nix {}; fastnetmon-advanced = runTest ./fastnetmon-advanced.nix; @@ -425,6 +425,7 @@ in { firewall = handleTest ./firewall.nix { nftables = false; }; firewall-nftables = handleTest ./firewall.nix { nftables = true; }; fish = runTest ./fish.nix; + firezone = handleTest ./firezone/firezone.nix {}; flannel = handleTestOn ["x86_64-linux"] ./flannel.nix {}; flaresolverr = handleTest ./flaresolverr.nix {}; flood = handleTest ./flood.nix {}; @@ -969,6 +970,7 @@ in { pppd = handleTest ./pppd.nix {}; predictable-interface-names = handleTest ./predictable-interface-names.nix {}; pretalx = runTest ./web-apps/pretalx.nix; + prefect = runTest ./prefect.nix; pretix = runTest ./web-apps/pretix.nix; printing-socket = handleTest ./printing.nix { socket = true; listenTcp = true; }; printing-service = handleTest ./printing.nix { socket = false; listenTcp = true; }; diff --git a/nixos/tests/echoip.nix b/nixos/tests/echoip.nix index 036018b26438..0e7747d713c1 100644 --- a/nixos/tests/echoip.nix +++ b/nixos/tests/echoip.nix @@ -1,29 +1,28 @@ -import ./make-test-python.nix ( - { lib, ... }: - { - name = "echoip"; - meta.maintainers = with lib.maintainers; [ defelo ]; +{ lib, ... }: - nodes.machine = { - services.echoip = { - enable = true; - virtualHost = "echoip.local"; - }; +{ + name = "echoip"; + meta.maintainers = with lib.maintainers; [ defelo ]; - networking.hosts = { - "127.0.0.1" = [ "echoip.local" ]; - "::1" = [ "echoip.local" ]; - }; + nodes.machine = { + services.echoip = { + enable = true; + virtualHost = "echoip.local"; }; - testScript = '' - machine.wait_for_unit("echoip.service") - machine.wait_for_open_port(8080) + networking.hosts = { + "127.0.0.1" = [ "echoip.local" ]; + "::1" = [ "echoip.local" ]; + }; + }; - resp = machine.succeed("curl -4 http://echoip.local/ip") - assert resp.strip() == "127.0.0.1" - resp = machine.succeed("curl -6 http://echoip.local/ip") - assert resp.strip() == "::1" - ''; - } -) + testScript = '' + machine.wait_for_unit("echoip.service") + machine.wait_for_open_port(8080) + + resp = machine.succeed("curl -4 http://echoip.local/ip") + assert resp.strip() == "127.0.0.1" + resp = machine.succeed("curl -6 http://echoip.local/ip") + assert resp.strip() == "::1" + ''; +} diff --git a/nixos/tests/firezone/create-tokens.exs b/nixos/tests/firezone/create-tokens.exs new file mode 100644 index 000000000000..35f977036cb5 --- /dev/null +++ b/nixos/tests/firezone/create-tokens.exs @@ -0,0 +1,86 @@ +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 new file mode 100644 index 000000000000..10d89778a4c6 --- /dev/null +++ b/nixos/tests/firezone/firezone.nix @@ -0,0 +1,349 @@ +import ../make-test-python.nix ( + { pkgs, ... }: + let + certs = import ../common/acme/server/snakeoil-certs.nix; + domain = certs.domain; + in + { + name = "firezone"; + meta.maintainers = with pkgs.lib.maintainers; [ oddlama ]; + + nodes = { + server = + { + config, + lib, + pkgs, + ... + }: + { + security.pki.certificateFiles = [ certs.ca.cert ]; + + networking.extraHosts = '' + ${config.networking.primaryIPAddress} ${domain} + ${config.networking.primaryIPv6Address} ${domain} + ''; + + networking.firewall.allowedTCPPorts = [ + 80 + 443 + ]; + + services.nginx = { + enable = true; + virtualHosts.${domain} = { + sslCertificate = certs.${domain}.cert; + sslCertificateKey = certs.${domain}.key; + }; + }; + + services.firezone.server = { + enable = true; + enableLocalDB = true; + nginx.enable = true; + + # Doesn't need to work for this test, but needs to be configured + # otherwise the server will not start. + smtp = { + from = "firezone@example.com"; + host = "mail.localhost"; + port = 465; + implicitTls = true; + username = "firezone@example.com"; + passwordFile = pkgs.writeText "tmpmailpasswd" "supermailpassword"; + }; + + 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@example.com"; + }; + client = { + type = "service_account"; + name = "A client"; + email = "client@example.com"; + }; + }; + 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 = "everyone"; + resource = "res1"; + }; + policies.pol2 = { + description = "Allow anyone res2 access"; + group = "everyone"; + resource = "res2"; + }; + policies.pol3 = { + description = "Allow anyone res3 access"; + group = "everyone"; + 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, + ... + }: + { + security.pki.certificateFiles = [ certs.ca.cert ]; + networking.extraHosts = '' + ${nodes.server.networking.primaryIPAddress} ${domain} + ${nodes.server.networking.primaryIPv6Address} ${domain} + ''; + + services.firezone.relay = { + enable = true; + logLevel = "debug"; + name = "test-relay"; + apiUrl = "wss://${domain}/api/"; + tokenFile = "/tmp/shared/relay_token.txt"; + 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, + # allowing us to confirm the VPN works + resource = { + virtualisation.vlans = [ + 1 + 2 + ]; + + networking.interfaces.eth1.ipv4.addresses = [ + { + address = "172.20.1.1"; + prefixLength = 24; + } + ]; + + networking.interfaces.eth2.ipv4.addresses = [ + { + address = "172.20.2.1"; + prefixLength = 24; + } + ]; + + networking.firewall.allowedTCPPorts = [ + 80 + ]; + + services.nginx = { + enable = true; + virtualHosts = { + "localhost" = { + default = true; + locations."/".extraConfig = '' + return 200 'greetings from the resource'; + add_header Content-Type text/plain; + ''; + }; + }; + }; + }; + + gateway = + { + nodes, + lib, + ... + }: + { + virtualisation.vlans = [ + 1 + 2 + ]; + + networking = { + interfaces.eth1.ipv4.addresses = [ + { + address = "172.20.1.2"; + prefixLength = 24; + } + ]; + + interfaces.eth2.ipv4.addresses = [ + { + address = "172.20.2.2"; + prefixLength = 24; + } + ]; + + firewall.enable = false; + nftables.enable = true; + nftables.tables."filter".family = "inet"; + nftables.tables."filter".content = '' + chain incoming { + type filter hook input priority 0; policy accept; + } + + chain postrouting { + type nat hook postrouting priority srcnat; policy accept; + meta protocol ip iifname "tun-firezone" oifname { "eth1", "eth2" } masquerade random + } + + chain forward { + type filter hook forward priority 0; policy drop; + iifname "tun-firezone" accept + oifname "tun-firezone" accept + } + + chain output { + type filter hook output priority 0; policy accept; + } + ''; + }; + + boot.kernel.sysctl."net.ipv4.ip_forward" = "1"; + # boot.kernel.sysctl."net.ipv4.conf.all.src_valid_mark" = "1"; + boot.kernel.sysctl."net.ipv6.conf.default.forwarding" = "1"; + boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = "1"; + + security.pki.certificateFiles = [ certs.ca.cert ]; + networking.extraHosts = '' + ${nodes.server.networking.primaryIPAddress} ${domain} + ${nodes.server.networking.primaryIPv6Address} ${domain} + 172.20.1.1 resource.example.com + ''; + + services.firezone.gateway = { + enable = true; + logLevel = "debug"; + name = "test-gateway"; + apiUrl = "wss://${domain}/api/"; + tokenFile = "/tmp/shared/gateway_token.txt"; + }; + + # Don't auto-start so we can wait until the token was provisioned + systemd.services.firezone-gateway.wantedBy = lib.mkForce [ ]; + }; + + client = + { + nodes, + lib, + ... + }: + { + security.pki.certificateFiles = [ certs.ca.cert ]; + networking.useNetworkd = true; + networking.extraHosts = '' + ${nodes.server.networking.primaryIPAddress} ${domain} + ${nodes.server.networking.primaryIPv6Address} ${domain} + ''; + + services.firezone.headless-client = { + enable = true; + logLevel = "debug"; + name = "test-client-somebody"; + apiUrl = "wss://${domain}/api/"; + tokenFile = "/tmp/shared/client_token.txt"; + }; + + # Don't auto-start so we can wait until the token was provisioned + systemd.services.firezone-headless-client.wantedBy = lib.mkForce [ ]; + }; + }; + + testScript = + { ... }: + '' + start_all() + + with subtest("Start server"): + server.wait_for_unit("firezone.target") + 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'") + client.wait_until_succeeds("curl -6 -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/grocy.nix b/nixos/tests/grocy.nix index 0cfaf1e7fc58..3031ed15c743 100644 --- a/nixos/tests/grocy.nix +++ b/nixos/tests/grocy.nix @@ -25,7 +25,10 @@ import ./make-test-python.nix ( machine.wait_for_open_port(80) machine.wait_for_unit("multi-user.target") + # This establishes _something_ machine.succeed("curl -sSf http://localhost") + # The second request creates the database, unsure why both are required + machine.succeed("curl -sSf http://localhost/") machine.succeed( "curl -c cookies -sSf -X POST http://localhost/login -d 'username=admin&password=admin'" diff --git a/nixos/tests/paretosecurity.nix b/nixos/tests/paretosecurity.nix index 239ec1eff86d..9e4c11c5f5c9 100644 --- a/nixos/tests/paretosecurity.nix +++ b/nixos/tests/paretosecurity.nix @@ -9,8 +9,8 @@ services.paretosecurity.enable = true; }; - # very basic test for now, need to add output asserts testScript = '' - machine.wait_until_succeeds("paretosecurity check") + (status, out) = machine.execute("paretosecurity check") + assert status == 1, "paretosecurity did not return 1 on failing checks" ''; } diff --git a/nixos/tests/prefect.nix b/nixos/tests/prefect.nix new file mode 100644 index 000000000000..0e2f1a36c687 --- /dev/null +++ b/nixos/tests/prefect.nix @@ -0,0 +1,27 @@ +{ lib, ... }: +let + mainPort = "4200"; +in +{ + name = "prefect"; + + nodes = { + machine = + { ... }: + { + services.prefect = { + enable = true; + }; + }; + }; + + testScript = '' + machine.start() + machine.wait_for_unit("prefect-server.service") + machine.wait_for_open_port("${mainPort}") + ''; + + meta = with lib.maintainers; { + maintainers = [ happysalada ]; + }; +} diff --git a/nixos/tests/zipline.nix b/nixos/tests/zipline.nix index dfda9230ea7c..023c4484a810 100644 --- a/nixos/tests/zipline.nix +++ b/nixos/tests/zipline.nix @@ -1,4 +1,5 @@ { lib, ... }: + { name = "zipline"; meta.maintainers = with lib.maintainers; [ defelo ]; @@ -20,6 +21,18 @@ networking.hosts."127.0.0.1" = [ "zipline.local" ]; }; + interactive.nodes.machine = { + services.zipline.settings.CORE_HOSTNAME = lib.mkForce "0.0.0.0"; + networking.firewall.allowedTCPPorts = [ 8000 ]; + virtualisation.forwardPorts = [ + { + from = "host"; + host.port = 8000; + guest.port = 8000; + } + ]; + }; + testScript = '' import json import re diff --git a/pkgs/README.md b/pkgs/README.md index 59cc84468546..e6a05c19f834 100644 --- a/pkgs/README.md +++ b/pkgs/README.md @@ -36,7 +36,7 @@ Before adding a new package, please consider the following questions: If any of these questions' answer is no, then you should probably not add the package. -This is section describes a general framework of understanding and exceptions might apply. +This section describes a general framework of understanding and exceptions might apply. Luckily it's pretty easy to maintain your own package set with Nix, which can then be added to the [Nix User Repository](https://github.com/nix-community/nur) project. diff --git a/pkgs/applications/audio/musescore/default.nix b/pkgs/applications/audio/musescore/default.nix index b737e70d2a12..fa51200dc9c9 100644 --- a/pkgs/applications/audio/musescore/default.nix +++ b/pkgs/applications/audio/musescore/default.nix @@ -35,13 +35,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "musescore"; - version = "4.4.4"; + version = "4.5"; src = fetchFromGitHub { owner = "musescore"; repo = "MuseScore"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-/1kAgzmSbnuCqd6YxbaYW2+gE0Gvy373y5VfUK4OVzI="; + sha256 = "sha256-7sD9AAuuDT0+VycKLL19DYdmuSLmt0Uy2NmoKQ1+c3A="; }; cmakeFlags = [ @@ -127,17 +127,12 @@ stdenv.mkDerivation (finalAttrs: { qtwayland ]; - postInstall = - '' - # Remove unneeded bundled libraries and headers - rm -r $out/{include,lib} - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - mkdir -p "$out/Applications" - mv "$out/mscore.app" "$out/Applications/mscore.app" - mkdir -p $out/bin - ln -s $out/Applications/mscore.app/Contents/MacOS/mscore $out/bin/mscore - ''; + postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' + mkdir -p "$out/Applications" + mv "$out/mscore.app" "$out/Applications/mscore.app" + mkdir -p $out/bin + ln -s $out/Applications/mscore.app/Contents/MacOS/mscore $out/bin/mscore + ''; # muse-sounds-manager installs Muse Sounds sampler libMuseSamplerCoreLib.so. # It requires that argv0 of the calling process ends with "/mscore" or "/MuseScore-4". diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix index e567266349b1..76b1ecbdd148 100644 --- a/pkgs/applications/editors/vim/plugins/generated.nix +++ b/pkgs/applications/editors/vim/plugins/generated.nix @@ -850,6 +850,19 @@ final: prev: meta.hydraPlatforms = [ ]; }; + arshlib-nvim = buildVimPlugin { + pname = "arshlib.nvim"; + version = "2024-05-18"; + src = fetchFromGitHub { + owner = "arsham"; + repo = "arshlib.nvim"; + rev = "111fd439268adda206a24b133096893869a50764"; + sha256 = "1jmac14w37lybanr8jg4jpi3rkbsjhmz65x5fr7mgd7kagsn3r1n"; + }; + meta.homepage = "https://github.com/arsham/arshlib.nvim/"; + meta.hydraPlatforms = [ ]; + }; + astrocore = buildVimPlugin { pname = "astrocore"; version = "2025-02-18"; @@ -6125,6 +6138,19 @@ final: prev: meta.hydraPlatforms = [ ]; }; + indent-tools-nvim = buildVimPlugin { + pname = "indent-tools.nvim"; + version = "2023-10-28"; + src = fetchFromGitHub { + owner = "arsham"; + repo = "indent-tools.nvim"; + rev = "31b839d65aa04b568fabe5e100a63cc44ef3f5d5"; + sha256 = "0vw3j9plwi6ari5p5hmds257xw0szlj2ddf75mjfj6nfzd93ni0p"; + }; + meta.homepage = "https://github.com/arsham/indent-tools.nvim/"; + meta.hydraPlatforms = [ ]; + }; + indentLine = buildVimPlugin { pname = "indentLine"; version = "2023-07-14"; diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index c81e450df2e7..ffa18c0da167 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -6,7 +6,6 @@ buildVimPlugin, callPackage, fetchFromGitHub, - fetchFromSourcehut, fetchpatch, fetchurl, neovimUtils, @@ -158,14 +157,6 @@ in ####################### # Regular overrides - aerial-nvim = super.aerial-nvim.overrideAttrs { - # optional dependencies - nvimSkipModule = [ - "lualine.components.aerial" - "telescope._extensions.aerial" - ]; - }; - advanced-git-search-nvim = super.advanced-git-search-nvim.overrideAttrs { dependencies = with self; [ telescope-nvim @@ -176,6 +167,14 @@ in ]; }; + aerial-nvim = super.aerial-nvim.overrideAttrs { + # optional dependencies + nvimSkipModule = [ + "lualine.components.aerial" + "telescope._extensions.aerial" + ]; + }; + agitator-nvim = super.agitator-nvim.overrideAttrs { dependencies = with self; [ telescope-nvim @@ -183,6 +182,23 @@ in ]; }; + aider-nvim = super.aider-nvim.overrideAttrs { + patches = [ + (replaceVars ./patches/aider-nvim/bin.patch { aider = lib.getExe' aider-chat "aider"; }) + ]; + }; + + animation-nvim = super.animation-nvim.overrideAttrs { + dependencies = [ self.middleclass ]; + }; + + arshlib-nvim = super.arshlib-nvim.overrideAttrs { + dependencies = with self; [ + nui-nvim + plenary-nvim + ]; + }; + astrocore = super.astrocore.overrideAttrs { dependencies = [ self.lazy-nvim ]; }; @@ -200,10 +216,6 @@ in ]; }; - animation-nvim = super.animation-nvim.overrideAttrs { - dependencies = [ self.middleclass ]; - }; - autosave-nvim = super.autosave-nvim.overrideAttrs { dependencies = [ self.plenary-nvim ]; }; @@ -296,6 +308,10 @@ in dependencies = [ self.plenary-nvim ]; }; + blink-cmp-git = super.blink-cmp-git.overrideAttrs { + dependencies = [ self.plenary-nvim ]; + }; + blink-emoji-nvim = super.blink-emoji-nvim.overrideAttrs { dependencies = [ self.blink-cmp ]; }; @@ -304,10 +320,6 @@ in dependencies = [ self.blink-cmp ]; }; - blink-cmp-git = super.blink-cmp-git.overrideAttrs { - dependencies = [ self.plenary-nvim ]; - }; - blink-pairs = callPackage ./non-generated/blink-pairs { }; bluloco-nvim = super.bluloco-nvim.overrideAttrs { @@ -578,6 +590,10 @@ in dependencies = [ self.vim-lsp ]; }; + cmp-vimtex = super.cmp-vimtex.overrideAttrs { + checkInputs = [ self.nvim-cmp ]; + }; + cmp-vimwiki-tags = super.cmp-vimwiki-tags.overrideAttrs { checkInputs = [ self.nvim-cmp ]; dependencies = [ self.vimwiki ]; @@ -587,10 +603,6 @@ in checkInputs = [ self.nvim-cmp ]; }; - cmp-vimtex = super.cmp-vimtex.overrideAttrs { - checkInputs = [ self.nvim-cmp ]; - }; - cmp-zsh = super.cmp-zsh.overrideAttrs { checkInputs = [ self.nvim-cmp ]; dependencies = [ zsh ]; @@ -946,29 +958,14 @@ in dependencies = [ self.ddc-vim ]; }; - ddc-source-lsp = super.ddc-source-lsp.overrideAttrs { - dependencies = [ self.ddc-vim ]; - }; - - ddc-vim = super.ddc-vim.overrideAttrs { - dependencies = [ self.denops-vim ]; - }; - ddc-filter-sorter_rank = super.ddc-filter-sorter_rank.overrideAttrs { dependencies = [ self.ddc-vim ]; }; - ddc-ui-native = super.ddc-ui-native.overrideAttrs { + ddc-fuzzy = super.ddc-fuzzy.overrideAttrs { dependencies = [ self.ddc-vim ]; }; - ddc-ui-pum = super.ddc-ui-pum.overrideAttrs { - dependencies = with self; [ - ddc-vim - pum-vim - ]; - }; - ddc-source-around = super.ddc-source-around.overrideAttrs { dependencies = [ self.ddc-vim ]; }; @@ -977,10 +974,25 @@ in dependencies = [ self.ddc-vim ]; }; - ddc-fuzzy = super.ddc-fuzzy.overrideAttrs { + ddc-source-lsp = super.ddc-source-lsp.overrideAttrs { dependencies = [ self.ddc-vim ]; }; + ddc-ui-pum = super.ddc-ui-pum.overrideAttrs { + dependencies = with self; [ + ddc-vim + pum-vim + ]; + }; + + ddc-ui-native = super.ddc-ui-native.overrideAttrs { + dependencies = [ self.ddc-vim ]; + }; + + ddc-vim = super.ddc-vim.overrideAttrs { + dependencies = [ self.denops-vim ]; + }; + defx-nvim = super.defx-nvim.overrideAttrs { dependencies = [ self.nvim-yarp ]; }; @@ -1196,18 +1208,6 @@ in ''; }); - fuzzy-nvim = super.fuzzy-nvim.overrideAttrs { - checkInputs = with self; [ - # Optional sorters - telescope-zf-native-nvim - ]; - dependencies = [ self.telescope-fzf-native-nvim ]; - nvimSkipModule = [ - # TODO: package fzy-lua-native - "fuzzy_nvim.fzy_matcher" - ]; - }; - fugit2-nvim = super.fugit2-nvim.overrideAttrs { # Requires web-devicons but mini.icons can mock them up checkInputs = [ @@ -1226,6 +1226,18 @@ in ''; }; + fuzzy-nvim = super.fuzzy-nvim.overrideAttrs { + checkInputs = with self; [ + # Optional sorters + telescope-zf-native-nvim + ]; + dependencies = [ self.telescope-fzf-native-nvim ]; + nvimSkipModule = [ + # TODO: package fzy-lua-native + "fuzzy_nvim.fzy_matcher" + ]; + }; + fzf-checkout-vim = super.fzf-checkout-vim.overrideAttrs { # The plugin has a makefile which tries to run tests in a docker container. # This prevents it. @@ -1288,6 +1300,18 @@ in dependencies = [ self.plenary-nvim ]; }; + git-conflict-nvim = super.git-conflict-nvim.overrideAttrs { + # TODO: Remove after next fixed version + # https://github.com/akinsho/git-conflict.nvim/issues/103 + version = "2.1.0"; + src = fetchFromGitHub { + owner = "akinsho"; + repo = "git-conflict.nvim"; + tag = "v2.1.0"; + hash = "sha256-1t0kKxTGLuOvuRkoLgkoqMZpF+oKo8+gMsTdgPsSb+8="; + }; + }; + git-worktree-nvim = super.git-worktree-nvim.overrideAttrs { dependencies = [ self.plenary-nvim ]; }; @@ -1363,14 +1387,14 @@ in ]; }; - haskell-snippets-nvim = super.haskell-snippets-nvim.overrideAttrs { - dependencies = [ self.luasnip ]; - }; - haskell-scope-highlighting-nvim = super.haskell-scope-highlighting-nvim.overrideAttrs { dependencies = [ self.nvim-treesitter ]; }; + haskell-snippets-nvim = super.haskell-snippets-nvim.overrideAttrs { + dependencies = [ self.luasnip ]; + }; + haskell-tools-nvim = neovimUtils.buildNeovimPlugin { luaAttr = luaPackages.haskell-tools-nvim; nvimSkipModule = [ @@ -1447,6 +1471,14 @@ in nvimSkipModule = "ibl.config.types"; }; + indent-tools-nvim = super.indent-tools-nvim.overrideAttrs { + dependencies = with self; [ + arshlib-nvim + nvim-treesitter + nvim-treesitter-textobjects + ]; + }; + instant-nvim = super.instant-nvim.overrideAttrs { nvimSkipModule = [ # Requires global variable config @@ -1533,13 +1565,6 @@ in ]; }; - lean-nvim = super.lean-nvim.overrideAttrs { - dependencies = with self; [ - nvim-lspconfig - plenary-nvim - ]; - }; - LeaderF = super.LeaderF.overrideAttrs { nativeBuildInputs = [ python3.pkgs.setuptools ]; buildInputs = [ python3 ]; @@ -1553,6 +1578,13 @@ in stripDebugList = [ "autoload/leaderf/python" ]; }; + lean-nvim = super.lean-nvim.overrideAttrs { + dependencies = with self; [ + nvim-lspconfig + plenary-nvim + ]; + }; + leap-ast-nvim = super.leap-ast-nvim.overrideAttrs { dependencies = with self; [ leap-nvim @@ -1663,12 +1695,6 @@ in dependencies = [ self.nvim-lspconfig ]; }; - lsp_extensions-nvim = super.lsp_extensions-nvim.overrideAttrs { - dependencies = [ self.plenary-nvim ]; - }; - - lsp_lines-nvim = callPackage ./non-generated/lsp_lines-nvim { }; - lspecho-nvim = super.lspecho-nvim.overrideAttrs { meta.license = lib.licenses.mit; }; @@ -1678,6 +1704,12 @@ in nvimRequireCheck = "lspsaga"; }; + lsp_extensions-nvim = super.lsp_extensions-nvim.overrideAttrs { + dependencies = [ self.plenary-nvim ]; + }; + + lsp_lines-nvim = callPackage ./non-generated/lsp_lines-nvim { }; + ltex_extra-nvim = super.ltex_extra-nvim.overrideAttrs { # Other modules require setup call first nvimRequireCheck = "ltex_extra"; @@ -1806,18 +1838,6 @@ in ''; }; - git-conflict-nvim = super.git-conflict-nvim.overrideAttrs { - # TODO: Remove after next fixed version - # https://github.com/akinsho/git-conflict.nvim/issues/103 - version = "2.1.0"; - src = fetchFromGitHub { - owner = "akinsho"; - repo = "git-conflict.nvim"; - tag = "v2.1.0"; - hash = "sha256-1t0kKxTGLuOvuRkoLgkoqMZpF+oKo8+gMsTdgPsSb+8="; - }; - }; - minimap-vim = super.minimap-vim.overrideAttrs { preFixup = '' substituteInPlace $out/plugin/minimap.vim \ @@ -2229,11 +2249,11 @@ in dependencies = [ self.plenary-nvim ]; }; - notmuch-vim = notmuch.vim; - NotebookNavigator-nvim = super.NotebookNavigator-nvim.overrideAttrs { }; + notmuch-vim = notmuch.vim; + nterm-nvim = super.nterm-nvim.overrideAttrs { dependencies = [ self.aniseed ]; }; @@ -2296,12 +2316,6 @@ in dependencies = [ self.plenary-nvim ]; }; - nvim-dap-cortex-debug = super.nvim-dap-cortex-debug.overrideAttrs { - dependencies = [ self.nvim-dap ]; - }; - - nvim-dbee = callPackage ./non-generated/nvim-dbee { }; - nvim-coverage = super.nvim-coverage.overrideAttrs { dependencies = with self; [ neotest @@ -2313,6 +2327,10 @@ in ]; }; + nvim-dap-cortex-debug = super.nvim-dap-cortex-debug.overrideAttrs { + dependencies = [ self.nvim-dap ]; + }; + nvim-dap-lldb = super.nvim-dap-lldb.overrideAttrs { dependencies = [ self.nvim-dap ]; }; @@ -2342,16 +2360,18 @@ in dependencies = [ self.nvim-dap ]; }; + nvim-dbee = callPackage ./non-generated/nvim-dbee { }; + + nvim-FeMaco-lua = super.nvim-FeMaco-lua.overrideAttrs { + dependencies = [ self.nvim-treesitter ]; + }; + nvim-fzf-commands = super.nvim-fzf-commands.overrideAttrs { dependencies = [ self.nvim-fzf ]; # Requires global variable setup nvim_fzf_directory nvimSkipModule = "fzf-commands.rg"; }; - nvim-FeMaco-lua = super.nvim-FeMaco-lua.overrideAttrs { - dependencies = [ self.nvim-treesitter ]; - }; - nvim-genghis = super.nvim-genghis.overrideAttrs { dependencies = [ self.dressing-nvim ]; @@ -2428,6 +2448,9 @@ in nvim-navic ]; }; + nvim-navic = super.nvim-navic.overrideAttrs { + dependencies = [ self.nvim-lspconfig ]; + }; nvim-neoclip-lua = super.nvim-neoclip-lua.overrideAttrs { nvimSkipModule = [ @@ -2442,6 +2465,11 @@ in checkInputs = [ self.nvim-web-devicons ]; }; + nvim-notify = super.nvim-notify.overrideAttrs { + # Optional fzf integration + nvimSkipModule = "notify.integrations.fzf"; + }; + nvim-nu = super.nvim-nu.overrideAttrs { dependencies = with self; [ nvim-treesitter @@ -2449,19 +2477,6 @@ in ]; }; - vim-mediawiki-editor = super.vim-mediawiki-editor.overrideAttrs { - passthru.python3Dependencies = [ python3.pkgs.mwclient ]; - }; - - nvim-navic = super.nvim-navic.overrideAttrs { - dependencies = [ self.nvim-lspconfig ]; - }; - - nvim-notify = super.nvim-notify.overrideAttrs { - # Optional fzf integration - nvimSkipModule = "notify.integrations.fzf"; - }; - nvim-paredit = super.nvim-paredit.overrideAttrs { dependencies = with self; [ nvim-treesitter ]; }; @@ -2497,6 +2512,29 @@ in vimCommandCheck = "TealBuild"; }; + nvim-test = super.nvim-test.overrideAttrs { + dependencies = with self; [ + nvim-treesitter + nvim-treesitter-parsers.c_sharp + nvim-treesitter-parsers.go + nvim-treesitter-parsers.haskell + nvim-treesitter-parsers.javascript + nvim-treesitter-parsers.python + nvim-treesitter-parsers.ruby + nvim-treesitter-parsers.rust + nvim-treesitter-parsers.typescript + nvim-treesitter-parsers.zig + ]; + nvimSkipModule = [ + # Optional toggleterm integration + "nvim-test.terms.toggleterm" + # Broken runners + "nvim-test.runners.zig" + "nvim-test.runners.hspec" + "nvim-test.runners.stack" + ]; + }; + nvim-tree-lua = super.nvim-tree-lua.overrideAttrs { nvimSkipModule = [ # Meta can't be required @@ -2548,29 +2586,6 @@ in dependencies = [ self.nvim-treesitter ]; }; - nvim-test = super.nvim-test.overrideAttrs { - dependencies = with self; [ - nvim-treesitter - nvim-treesitter-parsers.c_sharp - nvim-treesitter-parsers.go - nvim-treesitter-parsers.haskell - nvim-treesitter-parsers.javascript - nvim-treesitter-parsers.python - nvim-treesitter-parsers.ruby - nvim-treesitter-parsers.rust - nvim-treesitter-parsers.typescript - nvim-treesitter-parsers.zig - ]; - nvimSkipModule = [ - # Optional toggleterm integration - "nvim-test.terms.toggleterm" - # Broken runners - "nvim-test.runners.zig" - "nvim-test.runners.hspec" - "nvim-test.runners.stack" - ]; - }; - nvim-ufo = super.nvim-ufo.overrideAttrs { dependencies = [ self.promise-async ]; }; @@ -2590,6 +2605,10 @@ in dependencies = [ self.nvzone-volt ]; }; + nvzone-typr = super.nvzone-typr.overrideAttrs { + dependencies = [ self.nvzone-volt ]; + }; + obsidian-nvim = super.obsidian-nvim.overrideAttrs { checkInputs = with self; [ # Optional pickers @@ -2615,10 +2634,6 @@ in dependencies = [ self.plenary-nvim ]; }; - onehalf = super.onehalf.overrideAttrs { - configurePhase = "cd vim"; - }; - omni-vim = super.omni-vim.overrideAttrs { # Optional lightline integration nvimSkipModule = "omni-lightline"; @@ -2634,6 +2649,10 @@ in ]; }; + onehalf = super.onehalf.overrideAttrs { + configurePhase = "cd vim"; + }; + one-nvim = super.one-nvim.overrideAttrs { # E5108: /lua/one-nvim.lua:14: Unknown option 't_Co' # https://github.com/Th3Whit3Wolf/one-nvim/issues/23 @@ -2785,6 +2804,17 @@ in ]; }; + quarto-nvim = super.quarto-nvim.overrideAttrs { + checkInputs = [ + # Optional runner + self.iron-nvim + ]; + dependencies = with self; [ + nvim-lspconfig + otter-nvim + ]; + }; + quicker-nvim = super.quicker-nvim.overrideAttrs { }; @@ -2802,12 +2832,6 @@ in ''; }; - aider-nvim = super.aider-nvim.overrideAttrs { - patches = [ - (replaceVars ./patches/aider-nvim/bin.patch { aider = lib.getExe' aider-chat "aider"; }) - ]; - }; - refactoring-nvim = super.refactoring-nvim.overrideAttrs { dependencies = with self; [ nvim-treesitter @@ -2855,6 +2879,21 @@ in ]; }; + rocks-nvim = + (neovimUtils.buildNeovimPlugin { + luaAttr = luaPackages.rocks-nvim; + }).overrideAttrs + (oa: { + passthru = oa.passthru // { + initLua = '' + vim.g.rocks_nvim = { + luarocks_binary = "${neovim-unwrapped.lua.pkgs.luarocks_bootstrap}/bin/luarocks" + } + ''; + }; + + }); + rustaceanvim = neovimUtils.buildNeovimPlugin { checkInputs = [ # Optional integration @@ -3090,16 +3129,16 @@ in meta.maintainers = with lib.maintainers; [ callumio ]; }; - taskwarrior3 = buildVimPlugin { - inherit (taskwarrior3) version pname; - src = "${taskwarrior3.src}/scripts/vim"; - }; - taskwarrior2 = buildVimPlugin { inherit (taskwarrior2) version pname; src = "${taskwarrior2.src}/scripts/vim"; }; + taskwarrior3 = buildVimPlugin { + inherit (taskwarrior3) version pname; + src = "${taskwarrior3.src}/scripts/vim"; + }; + telekasten-nvim = super.telekasten-nvim.overrideAttrs { dependencies = with self; [ plenary-nvim @@ -3284,17 +3323,6 @@ in dependencies = with self; [ telescope-nvim ]; }; - quarto-nvim = super.quarto-nvim.overrideAttrs { - checkInputs = [ - # Optional runner - self.iron-nvim - ]; - dependencies = with self; [ - nvim-lspconfig - otter-nvim - ]; - }; - telescope-zoxide = super.telescope-zoxide.overrideAttrs { dependencies = with self; [ telescope-nvim ]; @@ -3344,6 +3372,11 @@ in dependencies = [ self.plenary-nvim ]; }; + trouble-nvim = super.trouble-nvim.overrideAttrs { + # Meta file + nvimSkipModule = "trouble.docs"; + }; + tsc-nvim = super.tsc-nvim.overrideAttrs { patches = [ ./patches/tsc.nvim/fix-path.patch ]; @@ -3355,11 +3388,6 @@ in nvimSkipModule = "tsc.better-messages-test"; }; - trouble-nvim = super.trouble-nvim.overrideAttrs { - # Meta file - nvimSkipModule = "trouble.docs"; - }; - tssorter-nvim = super.tssorter-nvim.overrideAttrs { dependencies = [ self.nvim-treesitter ]; }; @@ -3400,8 +3428,13 @@ in ]; }; - nvzone-typr = super.nvzone-typr.overrideAttrs { - dependencies = [ self.nvzone-volt ]; + typst-preview-nvim = super.typst-preview-nvim.overrideAttrs { + postPatch = '' + substituteInPlace lua/typst-preview/config.lua \ + --replace-fail "['tinymist'] = nil," "tinymist = '${lib.getExe tinymist}'," \ + --replace-fail "['websocat'] = nil," "websocat = '${lib.getExe websocat}'," + ''; + }; unicode-vim = @@ -3439,6 +3472,22 @@ in }; }; + vimacs = super.vimacs.overrideAttrs { + buildPhase = '' + substituteInPlace bin/vim \ + --replace-fail '/usr/bin/vim' 'vim' \ + --replace-fail '/usr/bin/gvim' 'gvim' + # remove unnecessary duplicated bin wrapper script + rm -r plugin/vimacs + ''; + meta = with lib; { + description = "Vim-Improved eMACS: Emacs emulation plugin for Vim"; + homepage = "http://algorithm.com.au/code/vimacs"; + license = licenses.gpl2Plus; + maintainers = with lib.maintainers; [ millerjason ]; + }; + }; + vimade = super.vimade.overrideAttrs { checkInputs = with self; [ # Optional providers @@ -3448,6 +3497,51 @@ in ]; }; + # The GitHub repository returns 404, which breaks the update script + VimCompletesMe = buildVimPlugin { + pname = "VimCompletesMe"; + version = "2022-02-18"; + src = fetchFromGitHub { + owner = "ackyshake"; + repo = "VimCompletesMe"; + rev = "9adf692d7ae6424038458a89d4a411f0a27d1388"; + sha256 = "1sndgb3291dyifaa8adri2mb8cgbinbar3nw1fnf67k9ahwycaz0"; + }; + meta.homepage = "https://github.com/ackyshake/VimCompletesMe/"; + }; + + vim2nix = buildVimPlugin { + pname = "vim2nix"; + version = "1.0"; + src = ./vim2nix; + dependencies = [ self.vim-addon-manager ]; + }; + + vimsence = super.vimsence.overrideAttrs { + meta = with lib; { + description = "Discord rich presence for Vim"; + homepage = "https://github.com/hugolgst/vimsence"; + maintainers = with lib.maintainers; [ hugolgst ]; + }; + }; + + vimproc-vim = super.vimproc-vim.overrideAttrs { + buildInputs = [ which ]; + + # TODO: revisit + buildPhase = '' + substituteInPlace autoload/vimproc.vim \ + --replace-fail vimproc_mac.so vimproc_unix.so \ + --replace-fail vimproc_linux64.so vimproc_unix.so \ + --replace-fail vimproc_linux32.so vimproc_unix.so + make -f make_unix.mak + ''; + }; + + vimshell-vim = super.vimshell-vim.overrideAttrs { + dependencies = [ self.vimproc-vim ]; + }; + vim-addon-actions = super.vim-addon-actions.overrideAttrs { dependencies = with self; [ vim-addon-mw-utils @@ -3678,6 +3772,10 @@ in nvimSkipModule = "treesitter-matchup.third-party.query"; }; + vim-mediawiki-editor = super.vim-mediawiki-editor.overrideAttrs { + passthru.python3Dependencies = [ python3.pkgs.mwclient ]; + }; + vim-metamath = super.vim-metamath.overrideAttrs { preInstall = "cd vim"; }; @@ -3743,6 +3841,12 @@ in nvimSkipModule = "tpipeline.main"; }; + vim-ultest = super.vim-ultest.overrideAttrs { + # NOTE: vim-ultest is no longer maintained. + # If using Neovim, you can switch to using neotest (https://github.com/nvim-neotest/neotest) instead. + nvimSkipModule = "ultest"; + }; + vim-unimpaired = super.vim-unimpaired.overrideAttrs { dependencies = [ self.vim-repeat ]; }; @@ -3773,73 +3877,6 @@ in ''; }; - vim2nix = buildVimPlugin { - pname = "vim2nix"; - version = "1.0"; - src = ./vim2nix; - dependencies = [ self.vim-addon-manager ]; - }; - - vimacs = super.vimacs.overrideAttrs { - buildPhase = '' - substituteInPlace bin/vim \ - --replace-fail '/usr/bin/vim' 'vim' \ - --replace-fail '/usr/bin/gvim' 'gvim' - # remove unnecessary duplicated bin wrapper script - rm -r plugin/vimacs - ''; - meta = with lib; { - description = "Vim-Improved eMACS: Emacs emulation plugin for Vim"; - homepage = "http://algorithm.com.au/code/vimacs"; - license = licenses.gpl2Plus; - maintainers = with lib.maintainers; [ millerjason ]; - }; - }; - - # The GitHub repository returns 404, which breaks the update script - VimCompletesMe = buildVimPlugin { - pname = "VimCompletesMe"; - version = "2022-02-18"; - src = fetchFromGitHub { - owner = "ackyshake"; - repo = "VimCompletesMe"; - rev = "9adf692d7ae6424038458a89d4a411f0a27d1388"; - sha256 = "1sndgb3291dyifaa8adri2mb8cgbinbar3nw1fnf67k9ahwycaz0"; - }; - meta.homepage = "https://github.com/ackyshake/VimCompletesMe/"; - }; - - vimsence = super.vimsence.overrideAttrs { - meta = with lib; { - description = "Discord rich presence for Vim"; - homepage = "https://github.com/hugolgst/vimsence"; - maintainers = with lib.maintainers; [ hugolgst ]; - }; - }; - - vimproc-vim = super.vimproc-vim.overrideAttrs { - buildInputs = [ which ]; - - # TODO: revisit - buildPhase = '' - substituteInPlace autoload/vimproc.vim \ - --replace-fail vimproc_mac.so vimproc_unix.so \ - --replace-fail vimproc_linux64.so vimproc_unix.so \ - --replace-fail vimproc_linux32.so vimproc_unix.so - make -f make_unix.mak - ''; - }; - - vimshell-vim = super.vimshell-vim.overrideAttrs { - dependencies = [ self.vimproc-vim ]; - }; - - vim-ultest = super.vim-ultest.overrideAttrs { - # NOTE: vim-ultest is no longer maintained. - # If using Neovim, you can switch to using neotest (https://github.com/nvim-neotest/neotest) instead. - nvimSkipModule = "ultest"; - }; - vim-zettel = super.vim-zettel.overrideAttrs { dependencies = with self; [ vimwiki @@ -3987,28 +4024,4 @@ in --replace-fail "'zoxide_executable', 'zoxide'" "'zoxide_executable', '${zoxide}/bin/zoxide'" ''; }; - - typst-preview-nvim = super.typst-preview-nvim.overrideAttrs { - postPatch = '' - substituteInPlace lua/typst-preview/config.lua \ - --replace-fail "['tinymist'] = nil," "tinymist = '${lib.getExe tinymist}'," \ - --replace-fail "['websocat'] = nil," "websocat = '${lib.getExe websocat}'," - ''; - - }; - - rocks-nvim = - (neovimUtils.buildNeovimPlugin { - luaAttr = luaPackages.rocks-nvim; - }).overrideAttrs - (oa: { - passthru = oa.passthru // { - initLua = '' - vim.g.rocks_nvim = { - luarocks_binary = "${neovim-unwrapped.lua.pkgs.luarocks_bootstrap}/bin/luarocks" - } - ''; - }; - - }); } diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names index b5ac5a364d9e..cb5f07e43aa3 100644 --- a/pkgs/applications/editors/vim/plugins/vim-plugin-names +++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names @@ -64,6 +64,7 @@ https://github.com/ckarnell/antonys-macro-repeater/,, https://github.com/solarnz/arcanist.vim/,, https://github.com/vim-scripts/argtextobj.vim/,, https://github.com/otavioschwanck/arrow.nvim/,, +https://github.com/arsham/arshlib.nvim/,HEAD, https://github.com/AstroNvim/astrocore/,HEAD, https://github.com/AstroNvim/astrolsp/,HEAD, https://github.com/AstroNvim/astrotheme/,, @@ -469,6 +470,7 @@ https://github.com/haya14busa/incsearch-easymotion.vim/,, https://github.com/haya14busa/incsearch.vim/,, https://github.com/lukas-reineke/indent-blankline.nvim/,, https://github.com/Darazaki/indent-o-matic/,, +https://github.com/arsham/indent-tools.nvim/,HEAD, https://github.com/Yggdroot/indentLine/,, https://github.com/ciaranm/inkpot/,, https://github.com/jbyuki/instant.nvim/,HEAD, diff --git a/pkgs/applications/editors/vscode/extensions/rooveterinaryinc.roo-cline/default.nix b/pkgs/applications/editors/vscode/extensions/rooveterinaryinc.roo-cline/default.nix index 2690383e57fd..988b02475cfc 100644 --- a/pkgs/applications/editors/vscode/extensions/rooveterinaryinc.roo-cline/default.nix +++ b/pkgs/applications/editors/vscode/extensions/rooveterinaryinc.roo-cline/default.nix @@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { publisher = "RooVeterinaryInc"; name = "roo-cline"; - version = "3.8.6"; - hash = "sha256-t3QUqe0qYizrJQcsEmYYmNYS/cpYiHQXJHtzHk9MGS8="; + version = "3.9.2"; + hash = "sha256-zRVppwnYpw03L+socmxAtLnkD72Ag7Wz9B4BbxpdFrk="; }; meta = { diff --git a/pkgs/applications/graphics/eddy/default.nix b/pkgs/applications/graphics/eddy/default.nix index 71157b656031..c398e8b98026 100644 --- a/pkgs/applications/graphics/eddy/default.nix +++ b/pkgs/applications/graphics/eddy/default.nix @@ -8,13 +8,13 @@ python3Packages.buildPythonApplication rec { pname = "eddy"; - version = "3.6"; + version = "3.7"; src = fetchFromGitHub { owner = "obdasystems"; repo = pname; tag = "v${version}"; - sha256 = "sha256-vRmLUIqU0qfcnKzymBGb9gfM/uQiAcUHUnyz8iH/GrM="; + sha256 = "sha256-ywAxlXuKoTXfJSzSsvVXxhycVEklIPQfUogs8QJ8DGQ="; }; propagatedBuildInputs = [ diff --git a/pkgs/applications/misc/1password-gui/default.nix b/pkgs/applications/misc/1password-gui/default.nix index 75ef7b1a9bf0..bf705566c2b3 100644 --- a/pkgs/applications/misc/1password-gui/default.nix +++ b/pkgs/applications/misc/1password-gui/default.nix @@ -12,7 +12,8 @@ let pname = "1password"; versions = builtins.fromJSON (builtins.readFile ./versions.json); - inherit (versions.${channel} or (throw "unknown channel ${channel}")) version; + hostOs = if stdenv.hostPlatform.isLinux then "linux" else "darwin"; + version = versions."${channel}-${hostOs}" or (throw "unknown channel-os ${channel}-${hostOs}"); sources = builtins.fromJSON (builtins.readFile ./sources.json); diff --git a/pkgs/applications/misc/1password-gui/sources.json b/pkgs/applications/misc/1password-gui/sources.json index e6f70a4e3f01..18c27f4d62fe 100644 --- a/pkgs/applications/misc/1password-gui/sources.json +++ b/pkgs/applications/misc/1password-gui/sources.json @@ -1,20 +1,20 @@ { "stable": { "x86_64-linux": { - "url": "https://downloads.1password.com/linux/tar/stable/x86_64/1password-8.10.60.x64.tar.gz", - "hash": "sha256-QCoV66LvGo6vA5fjuE3fG+LwehKVMPmgaDghh9YEvmA=" + "url": "https://downloads.1password.com/linux/tar/stable/x86_64/1password-8.10.68.x64.tar.gz", + "hash": "sha256-6MekdtKnjvrP0dai6VfBEFJ+oKf2WvPp+sU/kVIzCTw=" }, "aarch64-linux": { - "url": "https://downloads.1password.com/linux/tar/stable/aarch64/1password-8.10.60.arm64.tar.gz", - "hash": "sha256-E5TniXur9ATJ3ER/zTFc6EiBrH/kbNvIao0ADLyBZZE=" + "url": "https://downloads.1password.com/linux/tar/stable/aarch64/1password-8.10.68.arm64.tar.gz", + "hash": "sha256-2SpfkLu/4K1t2ILwOBMVAXeW7rbEzsjofn8naM1Szfc=" }, "x86_64-darwin": { - "url": "https://downloads.1password.com/mac/1Password-8.10.60-x86_64.zip", - "hash": "sha256-2Nv4CHKLgCFbU1TeJQhIq8YdkJSQJXtUw2S17B8cS4s=" + "url": "https://downloads.1password.com/mac/1Password-8.10.68-x86_64.zip", + "hash": "sha256-t/glPvEGJH+IcYyrnW0fMSEeLB8mKqGqmZ8wnVFCJpo=" }, "aarch64-darwin": { - "url": "https://downloads.1password.com/mac/1Password-8.10.60-aarch64.zip", - "hash": "sha256-drJiM8EiUM3M54+KPQdLvAmSfBH5YPqQk14yjHzoBtM=" + "url": "https://downloads.1password.com/mac/1Password-8.10.68-aarch64.zip", + "hash": "sha256-bhmuy8gUVCv+hYSIpYXgm8a0f1+JtyKb4g5cUIJCb28=" } }, "beta": { diff --git a/pkgs/applications/misc/1password-gui/update.sh b/pkgs/applications/misc/1password-gui/update.sh index c32076304537..1d31ef972f76 100755 --- a/pkgs/applications/misc/1password-gui/update.sh +++ b/pkgs/applications/misc/1password-gui/update.sh @@ -30,8 +30,8 @@ mk_url() { } cleanup() { - if [[ -f ${GPG_KEYRING-} ]]; then - rm "${GPG_KEYRING}" + if [[ -d ${TMP_GNUPGHOME-} ]]; then + rm -r "${TMP_GNUPGHOME}" fi if [[ -f ${JSON_HEAP-} ]]; then @@ -42,14 +42,14 @@ cleanup() { trap cleanup EXIT # Get channel versions from versions.json -declare -A version=( - ["stable"]=$(jq -r '.stable.version' versions.json) - ["beta"]=$(jq -r '.beta.version' versions.json) -) +declare -A versions +while IFS='=' read -r key value; do + versions["${key}"]="${value}" +done < <(jq -r 'to_entries[] | "\(.key)=\(.value)"' versions.json) -# -GPG_KEYRING=$(mktemp -t 1password.kbx.XXXXXX) -gpg --no-default-keyring --keyring "${GPG_KEYRING}" \ +TMP_GNUPGHOME=$(mktemp -dt 1password-gui.gnupghome.XXXXXX) +export GNUPGHOME="${TMP_GNUPGHOME}" +gpg --no-default-keyring --keyring trustedkeys.kbx \ --keyserver keyserver.ubuntu.com \ --receive-keys 3FEF9748469ADBE15DA7CA80AC2D62742012EA22 @@ -57,7 +57,8 @@ JSON_HEAP=$(mktemp -t 1password-gui.jsonheap.XXXXXX) for channel in stable beta; do for os in linux darwin; do for arch in x86_64 aarch64; do - url=$(mk_url ${os} ${channel} ${arch} "${version[${channel}]}") + version="${versions[${channel}-${os}]}" + url=$(mk_url ${os} ${channel} ${arch} ${version}) nix store prefetch-file --json "${url}" | jq " { \"${channel}\": { @@ -71,7 +72,7 @@ for channel in stable beta; do # For some reason 1Password PGP signs only Linux binaries. if [[ ${os} == "linux" ]]; then - gpgv --keyring "${GPG_KEYRING}" \ + gpgv \ $(nix store prefetch-file --json "${url}.sig" | jq -r .storePath) \ $(jq -r --slurp ".[-1].[].[].storePath" "${JSON_HEAP}") fi diff --git a/pkgs/applications/misc/1password-gui/versions.json b/pkgs/applications/misc/1password-gui/versions.json index 803d5238d94c..95dfd6b9078d 100644 --- a/pkgs/applications/misc/1password-gui/versions.json +++ b/pkgs/applications/misc/1password-gui/versions.json @@ -1,9 +1,6 @@ { - "stable": { - "version": "8.10.60" - }, - - "beta": { - "version": "8.10.68-12.BETA" - } + "stable-linux": "8.10.68", + "stable-darwin": "8.10.68", + "beta-linux":"8.10.68-12.BETA", + "beta-darwin": "8.10.68-12.BETA" } diff --git a/pkgs/applications/misc/heimer/default.nix b/pkgs/applications/misc/heimer/default.nix index 19a63f9e8a21..564d28e73f2b 100644 --- a/pkgs/applications/misc/heimer/default.nix +++ b/pkgs/applications/misc/heimer/default.nix @@ -9,13 +9,13 @@ mkDerivation rec { pname = "heimer"; - version = "4.4.0"; + version = "4.5.0"; src = fetchFromGitHub { owner = "juzzlin"; repo = pname; rev = version; - hash = "sha256-47bQmT2bHcbWpeosuF/vpSJcws4SqTmalY/XFEf7cxQ="; + hash = "sha256-eKnGCYxC3b7qd/g2IMDyZveBg+jvFA9s3tWEGeTPSkU="; }; nativeBuildInputs = [ diff --git a/pkgs/applications/networking/cluster/helm/plugins/helm-dt.nix b/pkgs/applications/networking/cluster/helm/plugins/helm-dt.nix index f4815a6653ed..098b1d1741e5 100644 --- a/pkgs/applications/networking/cluster/helm/plugins/helm-dt.nix +++ b/pkgs/applications/networking/cluster/helm/plugins/helm-dt.nix @@ -5,16 +5,16 @@ }: buildGoModule rec { pname = "helm-dt"; - version = "0.4.4"; + version = "0.4.5"; src = fetchFromGitHub { owner = "vmware-labs"; repo = "distribution-tooling-for-helm"; rev = "refs/tags/v${version}"; - hash = "sha256-jSX18FJCQORHFIUBROWZqAO5EBPXFvN/k0NRfkdkUFM="; + hash = "sha256-/TRhi4YgEB5RwRZXuwGCCqHz3SoBfs1SdKLBWg1yed0="; }; - vendorHash = "sha256-8HefE1a3pcbBgq/bC0mnhWzSa5xTi2dbqw0tyJ9EyTI="; + vendorHash = "sha256-54QB8dZSqSpDb4z7di5K6d8/fFbXftKfQJAljV50/Jk="; ldflags = [ "-s" diff --git a/pkgs/applications/networking/cluster/rke2/1_31/versions.nix b/pkgs/applications/networking/cluster/rke2/1_31/versions.nix index 9fcc4fd66b7f..3de4683cd6a3 100644 --- a/pkgs/applications/networking/cluster/rke2/1_31/versions.nix +++ b/pkgs/applications/networking/cluster/rke2/1_31/versions.nix @@ -1,11 +1,11 @@ { - rke2Version = "1.31.5+rke2r1"; - rke2Commit = "08e198bbe3f0b8d4c9b0af4d92085c06bb94aa89"; - rke2TarballHash = "sha256-GG1GOs/kLWDCvc/+l0ymRpJzEthIyGpampCjvfnEPB8="; - rke2VendorHash = "sha256-xWqMidOWiLgJXp6AEITkyOieLw4yi1JMmi80YS4RNy0="; - k8sImageTag = "v1.31.5-rke2r1-build20250115"; - etcdVersion = "v3.5.16-k3s1-build20241106"; + rke2Version = "1.31.6+rke2r1"; + rke2Commit = "f75cdf813703af4bc224b91bfb3c48d10aeb9fd0"; + rke2TarballHash = "sha256-6HMF3EngR2S8LTpMq4b3B1ZUiBUJO8D3fhwaNMuAuPc="; + rke2VendorHash = "sha256-ug1dO4t/QfPpg3mobCIJWb8/MERUoP9tEMlKRKZigXo="; + k8sImageTag = "v1.31.6-rke2r1-build20250213"; + etcdVersion = "v3.5.18-k3s1-build20250210"; pauseVersion = "3.6"; ccmVersion = "v1.31.2-0.20241016053446-0955fa330f90-build20241016"; - dockerizedVersion = "v1.31.5-rke2r1"; + dockerizedVersion = "v1.31.6-rke2r1"; } diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 3253d1b18c69..0ecbe433da60 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -866,6 +866,15 @@ "spdx": "MPL-2.0", "vendorHash": "sha256-ZZtfVgxp7YXNRXpeUisLzweQhHzgYOuQDAp1MsxAVhg=" }, + "nexus": { + "hash": "sha256-6RPga80ZoqEEFL7I2OVXcrwaxbdhSzZDEV07xL07rZs=", + "homepage": "https://registry.terraform.io/providers/datadrivers/nexus", + "owner": "datadrivers", + "repo": "terraform-provider-nexus", + "rev": "v2.5.0", + "spdx": "MPL-2.0", + "vendorHash": "sha256-wOpR+AJYW7YiARSIACta8Tr4bmGLUONRTEBLxHyHZZk=" + }, "nomad": { "hash": "sha256-k61iQ9FQG3nscBp5CE/fFCbHpeLawbUAtGPM+IZtfVc=", "homepage": "https://registry.terraform.io/providers/hashicorp/nomad", @@ -1066,11 +1075,11 @@ "vendorHash": "sha256-j+3qtGlueKZgf0LuNps4Wc9G3EmpSgl8ZNSLqslyizI=" }, "rancher2": { - "hash": "sha256-9I5awIsF/hQ4l4u518GoaUS+ik89mVPSkhHd9itE2eU=", + "hash": "sha256-LJgYGgJ7PLRq3WlT2rAnnM8svn4EGghLy3rY7lpmJxI=", "homepage": "https://registry.terraform.io/providers/rancher/rancher2", "owner": "rancher", "repo": "terraform-provider-rancher2", - "rev": "v6.0.0", + "rev": "v6.1.4", "spdx": "MPL-2.0", "vendorHash": "sha256-uIyLOqabx8wQurxcG70LHm+jBga+bCNyf5XxGrt5OKA=" }, @@ -1300,11 +1309,11 @@ "vendorHash": "sha256-0B2XRpvUk0mgDu3inz37LLJijwH3aQyoSb8IaHr6was=" }, "tencentcloud": { - "hash": "sha256-UO3Gjz5+h4YIj62gCJccFWW8k7qNbmmBzFlT1WWdXl8=", + "hash": "sha256-vWMEaA64/h1dhXJDw2kqoWgpp79ZuWP25rvfd6GiReg=", "homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud", "owner": "tencentcloudstack", "repo": "terraform-provider-tencentcloud", - "rev": "v1.81.171", + "rev": "v1.81.174", "spdx": "MPL-2.0", "vendorHash": null }, diff --git a/pkgs/applications/science/logic/z3/default.nix b/pkgs/applications/science/logic/z3/default.nix index 20be36ebda6c..2152f68fe270 100644 --- a/pkgs/applications/science/logic/z3/default.nix +++ b/pkgs/applications/science/logic/z3/default.nix @@ -153,6 +153,10 @@ let fixupPatches = dir: map (patch: replaceVars patch { inherit dir; }); in { + z3_4_14 = common { + version = "4.14.1"; + sha256 = "sha256-pTsDzf6Frk4mYAgF81wlR5Kb1x56joFggO5Fa3G2s70="; + }; z3_4_13 = common { version = "4.13.4"; sha256 = "sha256-8hWXCr6IuNVKkOegEmWooo5jkdmln9nU7wI8T882BSE="; diff --git a/pkgs/applications/version-management/nbstripout/default.nix b/pkgs/applications/version-management/nbstripout/default.nix index 6ce5b2919bb4..4978722e6382 100644 --- a/pkgs/applications/version-management/nbstripout/default.nix +++ b/pkgs/applications/version-management/nbstripout/default.nix @@ -2,25 +2,27 @@ lib, python3, fetchPypi, + fetchFromGitHub, coreutils, gitMinimal, mercurial, }: python3.pkgs.buildPythonApplication rec { - version = "0.6.1"; + version = "0.8.1"; pname = "nbstripout"; src = fetchPypi { inherit pname version; - hash = "sha256-kGW83RSIs4bk88CB/8HUj0UTovjYv00NmiggjF2v6dM="; + hash = "sha256-6qyLa05yno3+Hl3ywPi6RKvFoXplRI8EgBQfgL4jC7E="; }; - # for some reason, darwin uses /bin/sh echo native instead of echo binary, so - # force using the echo binary - postPatch = '' - substituteInPlace tests/test-git.t --replace "echo" "${coreutils}/bin/echo" - ''; + testAssets = fetchFromGitHub { + owner = "kynan"; + repo = "nbstripout"; + rev = "${version}"; + hash = "sha256-OSJLrWkYQIhcdyofS3Bo39ppsU6K3A4546UKB8Q1GGg="; + }; propagatedBuildInputs = with python3.pkgs; [ nbformat @@ -33,14 +35,21 @@ python3.pkgs.buildPythonApplication rec { mercurial ] ++ (with python3.pkgs; [ - pytest-cram pytestCheckHook ]); + checkInputs = [ + testAssets + ]; + preCheck = '' export HOME=$(mktemp -d) export PATH=$out/bin:$PATH git config --global init.defaultBranch main + + cp -r --no-preserve=mode,ownership ${testAssets}/tests/e2e_notebooks $TMPDIR/e2e_notebooks + chmod -R +w $TMPDIR/e2e_notebooks + substituteInPlace tests/test_end_to_end.py --replace "tests/e2e_notebooks" "$TMPDIR/e2e_notebooks" ''; meta = { diff --git a/pkgs/applications/virtualization/crosvm/default.nix b/pkgs/applications/virtualization/crosvm/default.nix index 7e95a2df2d8c..0971bcf3b788 100644 --- a/pkgs/applications/virtualization/crosvm/default.nix +++ b/pkgs/applications/virtualization/crosvm/default.nix @@ -21,19 +21,19 @@ rustPlatform.buildRustPackage { pname = "crosvm"; - version = "0-unstable-2025-02-18"; + version = "0-unstable-2025-03-14"; src = fetchgit { url = "https://chromium.googlesource.com/chromiumos/platform/crosvm"; - rev = "10d2f33440475cb1a96eba1dc27c59c8b57b68bd"; - hash = "sha256-FUTscDaqRgsabLcYq/fny3qXtBiwRRf8RVQBmDUyYrY="; + rev = "af765802907dafe1ae1d1f39704c5020a882d362"; + hash = "sha256-p15gljpEaSloorT37J8Akn5DaqkjVD/QInik4FaF1HE="; fetchSubmodules = true; }; separateDebugInfo = true; useFetchCargoVendor = true; - cargoHash = "sha256-hkDfqNoDn0TSvnQ2eVYEeB+f+JAnPI7BVcQBd9sjYzk="; + cargoHash = "sha256-3+gV/4l+N4U2zZWU+UtA1gcmdwnXavbhBPQOB3hhGDk="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/applications/virtualization/singularity/packages.nix b/pkgs/applications/virtualization/singularity/packages.nix index 2c7690864456..0866cce66a4b 100644 --- a/pkgs/applications/virtualization/singularity/packages.nix +++ b/pkgs/applications/virtualization/singularity/packages.nix @@ -9,19 +9,19 @@ let callPackage (import ./generic.nix rec { pname = "apptainer"; - version = "1.3.6"; + version = "1.4.0"; projectName = "apptainer"; src = fetchFromGitHub { owner = "apptainer"; repo = "apptainer"; tag = "v${version}"; - hash = "sha256-ZdSo9bKZ7Q1xwMe4SR840U3+fVpKwtiZQA5KDM5qF9M="; + hash = "sha256-whitdwFOvQgRS9lwbsWhhm92+i1qGW+OFOreNSyvldk="; }; # Override vendorHash with overrideAttrs. # See https://nixos.org/manual/nixpkgs/unstable/#buildGoModule-vendorHash - vendorHash = "sha256-W853++SSvkAYYUczbl8vnoBQZnimUdsAEXp4MCkLPBU="; + vendorHash = "sha256-HP5XJ74ELaZT/bZgAPqe7vBPvJhHwyZVSNrUa+KToIE="; extraDescription = " (previously known as Singularity)"; extraMeta.homepage = "https://apptainer.org"; diff --git a/pkgs/build-support/kernel/modules-closure.nix b/pkgs/build-support/kernel/modules-closure.nix index a830c97eea9a..611c01abe018 100644 --- a/pkgs/build-support/kernel/modules-closure.nix +++ b/pkgs/build-support/kernel/modules-closure.nix @@ -11,6 +11,7 @@ rootModules, kmod, allowMissing ? false, + extraFirmwarePaths ? [ ], }: stdenvNoCC.mkDerivation { @@ -25,6 +26,7 @@ stdenvNoCC.mkDerivation { firmware rootModules allowMissing + extraFirmwarePaths ; allowedReferences = [ "out" ]; } diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh index b53c64e30525..45423d21a570 100644 --- a/pkgs/build-support/kernel/modules-closure.sh +++ b/pkgs/build-support/kernel/modules-closure.sh @@ -87,6 +87,15 @@ for module in $(< ~-/closure); do done || : done +for path in $extraFirmwarePaths; do + mkdir -p $(dirname $out/lib/firmware/$path) + for name in "$path" "$path.xz" "$path.zst" ""; do + if cp -v --parents --no-preserve=mode lib/firmware/$name "$out" 2>/dev/null; then + break + fi + done +done + if test -e lib/firmware/edid ; then echo "lib/firmware/edid found, copying." mkdir -p "$out/lib/firmware" diff --git a/pkgs/by-name/ab/ab-av1/package.nix b/pkgs/by-name/ab/ab-av1/package.nix index 210c7537ccc9..c2a305cc0663 100644 --- a/pkgs/by-name/ab/ab-av1/package.nix +++ b/pkgs/by-name/ab/ab-av1/package.nix @@ -2,17 +2,17 @@ rustPlatform.buildRustPackage rec { pname = "ab-av1"; - version = "0.9.1"; + version = "0.9.3"; src = fetchFromGitHub { owner = "alexheretic"; repo = "ab-av1"; rev = "v${version}"; - hash = "sha256-I9XApll0/mvfhL/BLWoVwL0ffqa5r3dOBWYTHizJ0hc="; + hash = "sha256-rj02Opkwi4M249Ya4uBl4u1l8Mx+FBcRcxDgD6ng9kg="; }; useFetchCargoVendor = true; - cargoHash = "sha256-y+5rW3LruV1WeJXizbhHs01jkWrYsMXZkn1NG0Xz3bg="; + cargoHash = "sha256-Vi38eNn+SnhQx7Gp1T2RPIBeu3bUAZ74dr0mMG5Mha0="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/ac/acpi/package.nix b/pkgs/by-name/ac/acpi/package.nix index 2d9decc66244..54ea37c8ca2e 100644 --- a/pkgs/by-name/ac/acpi/package.nix +++ b/pkgs/by-name/ac/acpi/package.nix @@ -6,11 +6,11 @@ stdenv.mkDerivation rec { pname = "acpi"; - version = "1.7"; + version = "1.8"; src = fetchurl { url = "mirror://sourceforge/acpiclient/${version}/${pname}-${version}.tar.gz"; - sha256 = "01ahldvf0gc29dmbd5zi4rrnrw2i1ajnf30sx2vyaski3jv099fp"; + sha256 = "sha256-5kxuALU815dCfqMqFgUTQlsD7U8HdzP3Hx8J/zQPIws="; }; meta = with lib; { diff --git a/pkgs/by-name/al/alterx/package.nix b/pkgs/by-name/al/alterx/package.nix index 035db050cbf3..198b8fed43be 100644 --- a/pkgs/by-name/al/alterx/package.nix +++ b/pkgs/by-name/al/alterx/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "alterx"; - version = "0.0.3"; + version = "0.0.6"; src = fetchFromGitHub { owner = "projectdiscovery"; repo = "alterx"; tag = "v${version}"; - hash = "sha256-A01XROFB2NkArfFtRMv/r9Nu5QoKMTOVzVIUnFoVe78="; + hash = "sha256-IjCK0TVZOBegNdfpqOFoOTuj8KtmCuIqNPvcIa1vSo0="; }; - vendorHash = "sha256-efwU41kFR8QYa2cevvj4pYAXgCisJ4OHaRIhWVnETvc="; + vendorHash = "sha256-aTA5KGeYmJnbVRbEhT9LigQoJFLD17q9spzBV4BGhNw="; meta = with lib; { description = "Fast and customizable subdomain wordlist generator using DSL"; diff --git a/pkgs/by-name/an/annextimelog/package.nix b/pkgs/by-name/an/annextimelog/package.nix index 88a914f94f63..d1259995737b 100644 --- a/pkgs/by-name/an/annextimelog/package.nix +++ b/pkgs/by-name/an/annextimelog/package.nix @@ -2,32 +2,44 @@ lib, python3, fetchFromGitLab, + fetchPypi, }: +let + tzdata = python3.pkgs.tzdata.overrideAttrs rec { + version = "2023.4"; + + src = fetchPypi { + pname = "tzdata"; + inherit version; + hash = "sha256-3VTJTylHZVIsdzmWSbT+/ZVSJHmmZKDOyH9BvrxhSMk="; + }; + }; +in python3.pkgs.buildPythonApplication rec { pname = "annextimelog"; - version = "0.13.1"; + version = "0.14.0"; format = "pyproject"; src = fetchFromGitLab { owner = "nobodyinperson"; repo = "annextimelog"; rev = "v${version}"; - hash = "sha256-VgeILw8WfqVrmsU/kBw+jHTOt2a6sVT7YgP2pKRp2AY="; + hash = "sha256-+3PkG33qKckagSVvVdqkypulO7uu5AMOv8fQiP8IUbs="; }; nativeBuildInputs = with python3.pkgs; [ setuptools wheel poetry-core - ]; + ] ++ [ tzdata ]; propagatedBuildInputs = with python3.pkgs; [ rich ]; meta = with lib; { - description = "️Git Annex-backed Time Tracking"; + description = "git-annex based cli time tracker"; homepage = "https://gitlab.com/nobodyinperson/annextimelog"; license = licenses.gpl3Plus; maintainers = with maintainers; [ matthiasbeyer ]; diff --git a/pkgs/by-name/aq/aquamarine/package.nix b/pkgs/by-name/aq/aquamarine/package.nix index 66197c162d8d..80a34de0a0e7 100644 --- a/pkgs/by-name/aq/aquamarine/package.nix +++ b/pkgs/by-name/aq/aquamarine/package.nix @@ -23,13 +23,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "aquamarine"; - version = "0.7.2"; + version = "0.8.0"; src = fetchFromGitHub { owner = "hyprwm"; repo = "aquamarine"; rev = "v${finalAttrs.version}"; - hash = "sha256-ldWD4ci3LcBIfUN41qlBO/oR5chcsRLejMbSW8eH628="; + hash = "sha256-ybpV2+yNExdHnMhhhmtxqgBCgI+nRr8gi/D+VVb9lQY="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix b/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix index 90c5fb5a2581..1caaab62108e 100644 --- a/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix +++ b/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix @@ -32,13 +32,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "ayatana-indicator-datetime"; - version = "24.5.0"; + version = "24.5.1"; src = fetchFromGitHub { owner = "AyatanaIndicators"; repo = "ayatana-indicator-datetime"; tag = finalAttrs.version; - hash = "sha256-lY49v2uZ7BawQoN/hmN6pbetHlSGjMHbS6S8Wl1bDmQ="; + hash = "sha256-rbKAixFjXOMYzduABmoIXissQXAoehfbkNntdtRyAqA="; }; postPatch = '' diff --git a/pkgs/by-name/ba/badger/package.nix b/pkgs/by-name/ba/badger/package.nix index 190129e5e204..9dc855b9ded8 100644 --- a/pkgs/by-name/ba/badger/package.nix +++ b/pkgs/by-name/ba/badger/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "badger"; - version = "4.5.2"; + version = "4.6.0"; src = fetchFromGitHub { owner = "dgraph-io"; repo = "badger"; rev = "v${version}"; - hash = "sha256-kjMLJAEZN+WANgXsQT7XYLEsc+IL9QwBmaNeD3kyjGw="; + hash = "sha256-W3vPTLGI7YT7dFklJnOcpfYqQ9aBCsel9L6q4WNincY="; }; - vendorHash = "sha256-m4Bv8RhaUzqyzQ78/Ktr+wLRwL4mlXEsisW4pOJw1DI="; + vendorHash = "sha256-UVdOiaj1FN0etB9F0kt+THfO0Aa1kgdGYVeSVv4GpxY="; subPackages = [ "badger" ]; diff --git a/pkgs/by-name/be/below/package.nix b/pkgs/by-name/be/below/package.nix index 9478efa68fd3..684dbda9eca7 100644 --- a/pkgs/by-name/be/below/package.nix +++ b/pkgs/by-name/be/below/package.nix @@ -11,19 +11,24 @@ rustPlatform.buildRustPackage rec { pname = "below"; - version = "0.8.1"; + version = "0.9.0"; src = fetchFromGitHub { owner = "facebookincubator"; repo = "below"; - rev = "v${version}"; - sha256 = "sha256-87Fdx3Jqi3dNWM5DZl+UYs031qn2DoiiWd3IysT/glQ="; + tag = "v${version}"; + hash = "sha256-tPweJFqhZMOL+M08bDjW6HPmtuhr9IXJNP0c938O7Cg="; }; - useFetchCargoVendor = true; - cargoHash = "sha256-iRDe3zg7tfEYGLCRY6bJ6OdoT8ej0MB/vteCIf5xqNA="; + # Upstream forgot to commit an up-to-date lockfile. + cargoPatches = [ ./update-Cargo.lock.patch ]; - prePatch = ''sed -i "s,ExecStart=.*/bin,ExecStart=$out/bin," etc/below.service''; + useFetchCargoVendor = true; + cargoHash = "sha256-uNeWdsvJtkUz3E1NL10heDC7B55yKzDMMYzRhEE32EQ="; + + prePatch = '' + sed -i "s,ExecStart=.*/bin,ExecStart=$out/bin," etc/below.service + ''; postInstall = '' install -d $out/lib/systemd/system install -t $out/lib/systemd/system etc/below.service @@ -48,11 +53,11 @@ rustPlatform.buildRustPackage rec { # needs /sys/fs/cgroup doCheck = false; - meta = with lib; { - platforms = platforms.linux; - maintainers = with maintainers; [ globin ]; + meta = { + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ globin ]; description = "Time traveling resource monitor for modern Linux systems"; - license = licenses.asl20; + license = lib.licenses.asl20; homepage = "https://github.com/facebookincubator/below"; mainProgram = "below"; }; diff --git a/pkgs/by-name/be/below/update-Cargo.lock.patch b/pkgs/by-name/be/below/update-Cargo.lock.patch new file mode 100644 index 000000000000..74c7c1b3e659 --- /dev/null +++ b/pkgs/by-name/be/below/update-Cargo.lock.patch @@ -0,0 +1,3079 @@ +diff --git a/Cargo.lock b/Cargo.lock +index e1f0f1f4..851b1b36 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -1,39 +1,40 @@ + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. +-version = 3 ++version = 4 + + [[package]] + name = "addr2line" +-version = "0.21.0" ++version = "0.24.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" ++checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" + dependencies = [ + "gimli", + ] + + [[package]] +-name = "adler" +-version = "1.0.2" ++name = "adler2" ++version = "2.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" ++checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + + [[package]] + name = "ahash" +-version = "0.8.0" ++version = "0.8.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "57e6e951cfbb2db8de1828d49073a113a29fd7117b1596caa781a258c7e38d72" ++checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" + dependencies = [ + "cfg-if", +- "getrandom", ++ "getrandom 0.2.15", + "once_cell", + "version_check", ++ "zerocopy 0.7.35", + ] + + [[package]] + name = "aho-corasick" +-version = "1.0.5" ++version = "1.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" ++checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" + dependencies = [ + "memchr", + ] +@@ -55,104 +56,95 @@ dependencies = [ + + [[package]] + name = "anstream" +-version = "0.6.13" ++version = "0.6.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" ++checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" + dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", ++ "is_terminal_polyfill", + "utf8parse", + ] + + [[package]] + name = "anstyle" +-version = "1.0.1" ++version = "1.0.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" ++checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + + [[package]] + name = "anstyle-parse" +-version = "0.2.1" ++version = "0.2.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" ++checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" + dependencies = [ + "utf8parse", + ] + + [[package]] + name = "anstyle-query" +-version = "1.0.0" ++version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" ++checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" + dependencies = [ +- "windows-sys 0.48.0", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "anstyle-wincon" +-version = "3.0.2" ++version = "3.0.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" ++checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" + dependencies = [ + "anstyle", +- "windows-sys 0.52.0", ++ "once_cell", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "anyhow" +-version = "1.0.80" ++version = "1.0.97" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" ++checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" + + [[package]] + name = "async-trait" +-version = "0.1.71" ++version = "0.1.88" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf" ++checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.52", +-] +- +-[[package]] +-name = "atty" +-version = "0.2.14" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +-dependencies = [ +- "hermit-abi 0.1.19", +- "libc", +- "winapi", ++ "syn 2.0.100", + ] + + [[package]] + name = "autocfg" +-version = "1.1.0" ++version = "1.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" ++checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + + [[package]] + name = "backtrace" +-version = "0.3.69" ++version = "0.3.74" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" ++checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" + dependencies = [ + "addr2line", +- "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", ++ "windows-targets 0.52.6", + ] + + [[package]] + name = "below" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "anyhow", + "below-common", +@@ -182,27 +174,26 @@ dependencies = [ + "tar", + "tempfile", + "tokio", +- "uzers", + ] + + [[package]] + name = "below-btrfs" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "below-common", + "libc", +- "nix 0.25.0", ++ "nix", + "openat", + "rand", + "rand_distr", + "serde", + "slog", +- "thiserror", ++ "thiserror 2.0.12", + ] + + [[package]] + name = "below-common" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "anyhow", + "chrono", +@@ -218,19 +209,19 @@ dependencies = [ + + [[package]] + name = "below-config" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "anyhow", + "below-btrfs", + "cgroupfs", + "serde", + "tempfile", +- "toml 0.8.6", ++ "toml", + ] + + [[package]] + name = "below-dump" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "anyhow", + "below-common", +@@ -246,21 +237,21 @@ dependencies = [ + "slog", + "tar", + "tempfile", +- "toml 0.8.6", ++ "toml", + ] + + [[package]] + name = "below-ethtool" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ +- "nix 0.25.0", ++ "nix", + "serde", +- "thiserror", ++ "thiserror 2.0.12", + ] + + [[package]] + name = "below-gpu-stats" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "below-common", + "serde", +@@ -268,7 +259,7 @@ dependencies = [ + + [[package]] + name = "below-model" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "anyhow", + "async-trait", +@@ -281,7 +272,7 @@ dependencies = [ + "cgroupfs", + "enum-iterator", + "fb_procfs", +- "futures 0.3.30", ++ "futures 0.3.31", + "hostname", + "os_info", + "regex", +@@ -293,7 +284,7 @@ dependencies = [ + + [[package]] + name = "below-render" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "below-common", + "below-model", +@@ -301,19 +292,19 @@ dependencies = [ + + [[package]] + name = "below-store" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "anyhow", + "below-common", + "below-model", +- "bitflags 2.4.0", ++ "bitflags 2.9.0", + "bytes", + "humantime", + "itertools", + "lazy_static", + "maplit", + "memmap2", +- "nix 0.25.0", ++ "nix", + "paste", + "serde", + "serde_cbor", +@@ -327,20 +318,19 @@ dependencies = [ + + [[package]] + name = "below-tc" +-version = "0.0.1" ++version = "0.9.0" + dependencies = [ + "netlink-packet-core", + "netlink-packet-route", +- "netlink-packet-utils", + "netlink-sys", +- "nix 0.27.1", ++ "nix", + "serde", +- "thiserror", ++ "thiserror 2.0.12", + ] + + [[package]] + name = "below-view" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "anyhow", + "below-common", +@@ -348,10 +338,11 @@ dependencies = [ + "below-render", + "below-store", + "chrono", +- "crossterm 0.27.0", ++ "crossterm 0.28.1", + "cursive", + "cursive_buffered_backend", + "enum-iterator", ++ "fb_procfs", + "humantime", + "itertools", + "libc", +@@ -359,12 +350,12 @@ dependencies = [ + "serde", + "slog", + "tempfile", +- "toml 0.8.6", ++ "toml", + ] + + [[package]] + name = "below_derive" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "proc-macro2", + "quote", +@@ -379,18 +370,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + + [[package]] + name = "bitflags" +-version = "2.4.0" ++version = "2.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" ++checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" + dependencies = [ + "serde", + ] + + [[package]] + name = "bumpalo" +-version = "3.11.1" ++version = "3.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" ++checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" + + [[package]] + name = "byteorder" +@@ -400,27 +391,27 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + + [[package]] + name = "bytes" +-version = "1.6.0" ++version = "1.10.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" ++checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + dependencies = [ + "serde", + ] + + [[package]] + name = "camino" +-version = "1.1.1" ++version = "1.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e" ++checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" + dependencies = [ + "serde", + ] + + [[package]] + name = "cargo-platform" +-version = "0.1.2" ++version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27" ++checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" + dependencies = [ + "serde", + ] +@@ -436,17 +427,18 @@ dependencies = [ + "semver", + "serde", + "serde_json", +- "thiserror", ++ "thiserror 1.0.69", + ] + + [[package]] + name = "cc" +-version = "1.0.90" ++version = "1.2.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" ++checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" + dependencies = [ + "jobserver", + "libc", ++ "shlex", + ] + + [[package]] +@@ -455,36 +447,43 @@ version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + ++[[package]] ++name = "cfg_aliases" ++version = "0.2.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" ++ + [[package]] + name = "cgroupfs" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ +- "nix 0.25.0", ++ "below-common", ++ "nix", + "openat", + "paste", + "serde", + "tempfile", +- "thiserror", ++ "thiserror 2.0.12", + ] + + [[package]] + name = "chrono" +-version = "0.4.29" ++version = "0.4.40" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d87d9d13be47a5b7c3907137f1290b0459a7f80efb26be8c52afb11963bccb02" ++checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" + dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", +- "windows-targets 0.48.0", ++ "windows-link", + ] + + [[package]] + name = "clap" +-version = "4.5.4" ++version = "4.5.32" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" ++checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" + dependencies = [ + "clap_builder", + "clap_derive", +@@ -492,124 +491,104 @@ dependencies = [ + + [[package]] + name = "clap_builder" +-version = "4.5.2" ++version = "4.5.32" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" ++checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" + dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +- "terminal_size 0.3.0", ++ "terminal_size", + "unicase", +- "unicode-width", ++ "unicode-width 0.2.0", + ] + + [[package]] + name = "clap_complete" +-version = "4.5.1" ++version = "4.5.46" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c" ++checksum = "f5c5508ea23c5366f77e53f5a0070e5a84e51687ec3ef9e0464c86dc8d13ce98" + dependencies = [ + "clap", + ] + + [[package]] + name = "clap_derive" +-version = "4.5.4" ++version = "4.5.32" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" ++checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" + dependencies = [ +- "heck 0.5.0", ++ "heck", + "proc-macro2", + "quote", +- "syn 2.0.52", ++ "syn 2.0.100", + ] + + [[package]] + name = "clap_lex" +-version = "0.7.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +- +-[[package]] +-name = "codespan-reporting" +-version = "0.11.1" ++version = "0.7.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +-dependencies = [ +- "termcolor", +- "unicode-width", +-] ++checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + + [[package]] + name = "colorchoice" +-version = "1.0.0" ++version = "1.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" ++checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + + [[package]] + name = "console" +-version = "0.15.2" ++version = "0.15.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c" ++checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" + dependencies = [ + "encode_unicode", +- "lazy_static", + "libc", +- "terminal_size 0.1.17", +- "unicode-width", +- "winapi", ++ "once_cell", ++ "unicode-width 0.2.0", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "core-foundation-sys" +-version = "0.8.3" ++version = "0.8.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" ++checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + + [[package]] + name = "crossbeam-channel" +-version = "0.5.6" ++version = "0.5.14" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" ++checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" + dependencies = [ +- "cfg-if", + "crossbeam-utils", + ] + + [[package]] + name = "crossbeam-deque" +-version = "0.8.2" ++version = "0.8.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" ++checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" + dependencies = [ +- "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", + ] + + [[package]] + name = "crossbeam-epoch" +-version = "0.9.11" ++version = "0.9.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" ++checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" + dependencies = [ +- "autocfg", +- "cfg-if", + "crossbeam-utils", +- "memoffset 0.6.5", +- "scopeguard", + ] + + [[package]] + name = "crossbeam-utils" +-version = "0.8.12" ++version = "0.8.21" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +-dependencies = [ +- "cfg-if", +-] ++checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + + [[package]] + name = "crossterm" +@@ -620,7 +599,7 @@ dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", +- "mio", ++ "mio 0.8.11", + "parking_lot", + "signal-hook", + "signal-hook-mio", +@@ -629,16 +608,16 @@ dependencies = [ + + [[package]] + name = "crossterm" +-version = "0.27.0" ++version = "0.28.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" ++checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" + dependencies = [ +- "bitflags 2.4.0", ++ "bitflags 2.9.0", + "crossterm_winapi", + "futures-core", +- "libc", +- "mio", ++ "mio 1.0.3", + "parking_lot", ++ "rustix 0.38.44", + "signal-hook", + "signal-hook-mio", + "winapi", +@@ -669,28 +648,28 @@ dependencies = [ + "log", + "signal-hook", + "unicode-segmentation", +- "unicode-width", ++ "unicode-width 0.1.14", + ] + + [[package]] + name = "cursive_buffered_backend" +-version = "0.6.1" ++version = "0.6.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e902dfdc09ca6729606f45a5ce6ce4ef9637fc257e8b11ca7806fc9aabd03cf7" ++checksum = "cf6287f9e06f44558a3264976e70c51187482a0271d48abfd88f0d3af18d3ee6" + dependencies = [ + "cursive_core", + "enumset", + "log", + "smallvec", + "unicode-segmentation", +- "unicode-width", ++ "unicode-width 0.2.0", + ] + + [[package]] + name = "cursive_core" +-version = "0.3.5" ++version = "0.3.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e8c04587ebe2dc513de481bfaadd99edef636269b3b722ad11db6a12307aecbe" ++checksum = "4db3b58161228d0dcb45c7968c5e74c3f03ad39e8983e58ad7d57061aa2cd94d" + dependencies = [ + "ahash", + "crossbeam-channel", +@@ -702,59 +681,15 @@ dependencies = [ + "owning_ref", + "time", + "unicode-segmentation", +- "unicode-width", ++ "unicode-width 0.1.14", + "xi-unicode", + ] + +-[[package]] +-name = "cxx" +-version = "1.0.80" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6b7d4e43b25d3c994662706a1d4fcfc32aaa6afd287502c111b237093bb23f3a" +-dependencies = [ +- "cc", +- "cxxbridge-flags", +- "cxxbridge-macro", +- "link-cplusplus", +-] +- +-[[package]] +-name = "cxx-build" +-version = "1.0.80" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "84f8829ddc213e2c1368e51a2564c552b65a8cb6a28f31e576270ac81d5e5827" +-dependencies = [ +- "cc", +- "codespan-reporting", +- "once_cell", +- "proc-macro2", +- "quote", +- "scratch", +- "syn 1.0.109", +-] +- +-[[package]] +-name = "cxxbridge-flags" +-version = "1.0.80" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e72537424b474af1460806647c41d4b6d35d09ef7fe031c5c2fa5766047cc56a" +- +-[[package]] +-name = "cxxbridge-macro" +-version = "1.0.80" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "309e4fb93eed90e1e14bea0da16b209f81813ba9fc7830c20ed151dd7bc0a4d7" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn 1.0.109", +-] +- + [[package]] + name = "darling" +-version = "0.14.2" ++version = "0.20.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b0dd3cd20dc6b5a876612a6e5accfe7f3dd883db6d07acfbf14c128f61550dfa" ++checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" + dependencies = [ + "darling_core", + "darling_macro", +@@ -762,26 +697,35 @@ dependencies = [ + + [[package]] + name = "darling_core" +-version = "0.14.2" ++version = "0.20.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a784d2ccaf7c98501746bf0be29b2022ba41fd62a2e622af997a03e9f972859f" ++checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" + dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", +- "syn 1.0.109", ++ "syn 2.0.100", + ] + + [[package]] + name = "darling_macro" +-version = "0.14.2" ++version = "0.20.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7618812407e9402654622dd402b0a89dff9ba93badd6540781526117b92aab7e" ++checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" + dependencies = [ + "darling_core", + "quote", +- "syn 1.0.109", ++ "syn 2.0.100", ++] ++ ++[[package]] ++name = "deranged" ++version = "0.4.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" ++dependencies = [ ++ "powerfmt", + ] + + [[package]] +@@ -807,145 +751,136 @@ dependencies = [ + + [[package]] + name = "either" +-version = "1.8.0" ++version = "1.15.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" ++checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + + [[package]] + name = "encode_unicode" +-version = "0.3.6" ++version = "1.0.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" ++checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + + [[package]] + name = "enum-iterator" +-version = "1.4.1" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7add3873b5dd076766ee79c8e406ad1a472c385476b9e38849f8eec24f1be689" ++checksum = "9fd242f399be1da0a5354aa462d57b4ab2b4ee0683cc552f7c007d2d12d36e94" + dependencies = [ + "enum-iterator-derive", + ] + + [[package]] + name = "enum-iterator-derive" +-version = "1.2.1" ++version = "1.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" ++checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.52", ++ "syn 2.0.100", + ] + + [[package]] + name = "enum-map" +-version = "2.4.1" ++version = "2.7.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f5a56d54c8dd9b3ad34752ed197a4eb2a6601bc010808eb097a04a58ae4c43e1" ++checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" + dependencies = [ + "enum-map-derive", + ] + + [[package]] + name = "enum-map-derive" +-version = "0.10.0" ++version = "0.17.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a9045e2676cd5af83c3b167d917b0a5c90a4d8e266e2683d6631b235c457fc27" ++checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" + dependencies = [ + "proc-macro2", + "quote", +- "syn 1.0.109", ++ "syn 2.0.100", + ] + + [[package]] + name = "enumset" +-version = "1.0.12" ++version = "1.1.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "19be8061a06ab6f3a6cf21106c873578bf01bd42ad15e0311a9c76161cb1c753" ++checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293" + dependencies = [ + "enumset_derive", + ] + + [[package]] + name = "enumset_derive" +-version = "0.6.1" ++version = "0.10.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "03e7b551eba279bf0fa88b83a46330168c1560a52a94f5126f892f0b364ab3e0" ++checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242" + dependencies = [ + "darling", + "proc-macro2", + "quote", +- "syn 1.0.109", ++ "syn 2.0.100", + ] + + [[package]] + name = "equivalent" +-version = "1.0.0" ++version = "1.0.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" ++checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + + [[package]] + name = "erased-serde" +-version = "0.3.23" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "54558e0ba96fbe24280072642eceb9d7d442e32c7ec0ea9e7ecd7b4ea2cf4e11" ++checksum = "6c138974f9d5e7fe373eb04df7cae98833802ae4b11c24ac7039a21d5af4b26c" + dependencies = [ + "serde", + ] + + [[package]] + name = "errno" +-version = "0.3.1" ++version = "0.3.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" ++checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" + dependencies = [ +- "errno-dragonfly", +- "libc", +- "windows-sys 0.48.0", +-] +- +-[[package]] +-name = "errno-dragonfly" +-version = "0.1.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +-dependencies = [ +- "cc", + "libc", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "fastrand" +-version = "2.0.1" ++version = "2.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" ++checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + + [[package]] + name = "fb_procfs" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ ++ "below-common", + "lazy_static", + "libc", +- "nix 0.25.0", ++ "nix", + "openat", ++ "parking_lot", + "serde", + "slog", + "slog-term", + "tempfile", +- "thiserror", ++ "thiserror 2.0.12", + "threadpool", + ] + + [[package]] + name = "filetime" +-version = "0.2.18" ++version = "0.2.25" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" ++checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" + dependencies = [ + "cfg-if", + "libc", +- "redox_syscall 0.2.16", +- "windows-sys 0.42.0", ++ "libredox", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -962,9 +897,9 @@ checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + + [[package]] + name = "futures" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" ++checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" + dependencies = [ + "futures-channel", + "futures-core", +@@ -977,9 +912,9 @@ dependencies = [ + + [[package]] + name = "futures-channel" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" ++checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" + dependencies = [ + "futures-core", + "futures-sink", +@@ -987,15 +922,15 @@ dependencies = [ + + [[package]] + name = "futures-core" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" ++checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + + [[package]] + name = "futures-executor" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" ++checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" + dependencies = [ + "futures-core", + "futures-task", +@@ -1004,38 +939,38 @@ dependencies = [ + + [[package]] + name = "futures-io" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" ++checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + + [[package]] + name = "futures-macro" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" ++checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.52", ++ "syn 2.0.100", + ] + + [[package]] + name = "futures-sink" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" ++checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + + [[package]] + name = "futures-task" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" ++checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + + [[package]] + name = "futures-util" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" ++checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" + dependencies = [ + "futures 0.1.31", + "futures-channel", +@@ -1052,38 +987,44 @@ dependencies = [ + + [[package]] + name = "getrandom" +-version = "0.2.8" ++version = "0.2.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" ++checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" + dependencies = [ + "cfg-if", + "libc", +- "wasi", ++ "wasi 0.11.0+wasi-snapshot-preview1", + ] + + [[package]] +-name = "gimli" +-version = "0.28.1" ++name = "getrandom" ++version = "0.3.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" ++checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" ++dependencies = [ ++ "cfg-if", ++ "libc", ++ "r-efi", ++ "wasi 0.14.2+wasi-0.2.4", ++] + + [[package]] +-name = "half" +-version = "1.8.2" ++name = "gimli" ++version = "0.31.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" ++checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + + [[package]] +-name = "hashbrown" +-version = "0.14.0" ++name = "half" ++version = "1.8.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" ++checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + + [[package]] +-name = "heck" +-version = "0.4.0" ++name = "hashbrown" ++version = "0.15.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" ++checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + + [[package]] + name = "heck" +@@ -1093,18 +1034,15 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + + [[package]] + name = "hermit-abi" +-version = "0.1.19" ++version = "0.3.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +-dependencies = [ +- "libc", +-] ++checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + + [[package]] + name = "hermit-abi" +-version = "0.3.9" ++version = "0.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" ++checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" + + [[package]] + name = "hostname" +@@ -1119,32 +1057,31 @@ dependencies = [ + + [[package]] + name = "humantime" +-version = "2.1.0" ++version = "2.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" ++checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" + + [[package]] + name = "iana-time-zone" +-version = "0.1.53" ++version = "0.1.61" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" ++checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" + dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", +- "winapi", ++ "windows-core", + ] + + [[package]] + name = "iana-time-zone-haiku" +-version = "0.1.1" ++version = "0.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" ++checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" + dependencies = [ +- "cxx", +- "cxx-build", ++ "cc", + ] + + [[package]] +@@ -1155,9 +1092,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + + [[package]] + name = "indexmap" +-version = "2.0.0" ++version = "2.8.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" ++checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" + dependencies = [ + "equivalent", + "hashbrown", +@@ -1165,84 +1102,90 @@ dependencies = [ + + [[package]] + name = "indicatif" +-version = "0.17.6" ++version = "0.17.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" ++checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" + dependencies = [ + "console", +- "instant", ++ "futures-core", + "number_prefix", + "portable-atomic", + "rayon", + "tokio", + "unicode-segmentation", +- "unicode-width", ++ "unicode-width 0.2.0", ++ "web-time", + ] + + [[package]] +-name = "instant" +-version = "0.1.12" ++name = "is-terminal" ++version = "0.4.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" ++checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" + dependencies = [ +- "cfg-if", ++ "hermit-abi 0.5.0", ++ "libc", ++ "windows-sys 0.59.0", + ] + ++[[package]] ++name = "is_terminal_polyfill" ++version = "1.70.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" ++ + [[package]] + name = "itertools" +-version = "0.11.0" ++version = "0.14.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" ++checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" + dependencies = [ + "either", + ] + + [[package]] + name = "itoa" +-version = "1.0.4" ++version = "1.0.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" ++checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + + [[package]] + name = "jobserver" +-version = "0.1.25" ++version = "0.1.32" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" ++checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" + dependencies = [ + "libc", + ] + + [[package]] + name = "js-sys" +-version = "0.3.60" ++version = "0.3.77" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" ++checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" + dependencies = [ ++ "once_cell", + "wasm-bindgen", + ] + + [[package]] + name = "lazy_static" +-version = "1.4.0" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" ++checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + + [[package]] + name = "libbpf-cargo" +-version = "0.23.0" ++version = "0.25.0-beta.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d230f1634d0ef9f5708bcf644c3644c357ee324649c3001d50ef4250fb3af9df" ++checksum = "d78971d366f266fd02f310b68e8cbf08ebaa35d7dd458ba98360448d8bb25467" + dependencies = [ + "anyhow", + "cargo_metadata", + "clap", + "libbpf-rs", +- "libbpf-sys", + "memmap2", +- "num_enum", + "regex", +- "scroll", +- "scroll_derive", + "semver", + "serde", + "serde_json", +@@ -1251,63 +1194,67 @@ dependencies = [ + + [[package]] + name = "libbpf-rs" +-version = "0.23.0" ++version = "0.25.0-beta.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e289c054443e63d3f09d4ee53044c4311166f3df31b7835a29995a6c3b03c18d" ++checksum = "ad0b2c8f481a850c965da7642f3a844c6d32d7f8709b5afb74c5f6bff1e37582" + dependencies = [ +- "bitflags 2.4.0", ++ "bitflags 2.9.0", + "libbpf-sys", + "libc", +- "num_enum", +- "strum_macros", +- "thiserror", + "vsprintf", + ] + + [[package]] + name = "libbpf-sys" +-version = "1.4.0+v1.4.0" ++version = "1.5.0+v1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a4ee5f6d35341ad5d492fd92466c45ff11d6e8104ffa8208f62450875c93e258" ++checksum = "2d8306b516a70a129cb6afed17c1e51e162d35aadfcc6339364addcebe32de90" + dependencies = [ + "cc", +- "nix 0.27.1", +- "num_cpus", ++ "nix", + "pkg-config", + ] + + [[package]] + name = "libc" +-version = "0.2.153" ++version = "0.2.171" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" ++checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" + + [[package]] + name = "libm" +-version = "0.2.5" ++version = "0.2.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" ++checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + + [[package]] +-name = "link-cplusplus" +-version = "1.0.7" ++name = "libredox" ++version = "0.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" ++checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" + dependencies = [ +- "cc", ++ "bitflags 2.9.0", ++ "libc", ++ "redox_syscall", + ] + + [[package]] + name = "linux-raw-sys" +-version = "0.4.10" ++version = "0.4.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" ++checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" ++ ++[[package]] ++name = "linux-raw-sys" ++version = "0.9.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" + + [[package]] + name = "lock_api" +-version = "0.4.9" ++version = "0.4.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" ++checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" + dependencies = [ + "autocfg", + "scopeguard", +@@ -1315,9 +1262,9 @@ dependencies = [ + + [[package]] + name = "log" +-version = "0.4.21" ++version = "0.4.26" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" ++checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" + + [[package]] + name = "maplit" +@@ -1333,9 +1280,9 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + + [[package]] + name = "memchr" +-version = "2.6.3" ++version = "2.7.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" ++checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + + [[package]] + name = "memmap2" +@@ -1346,15 +1293,6 @@ dependencies = [ + "libc", + ] + +-[[package]] +-name = "memoffset" +-version = "0.6.5" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +-dependencies = [ +- "autocfg", +-] +- + [[package]] + name = "memoffset" + version = "0.9.1" +@@ -1366,11 +1304,11 @@ dependencies = [ + + [[package]] + name = "miniz_oxide" +-version = "0.7.2" ++version = "0.8.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" ++checksum = "8e3e04debbb59698c15bacbb6d93584a8c0ca9cc3213cb423d31f760d8843ce5" + dependencies = [ +- "adler", ++ "adler2", + ] + + [[package]] +@@ -1381,10 +1319,22 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" + dependencies = [ + "libc", + "log", +- "wasi", ++ "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", + ] + ++[[package]] ++name = "mio" ++version = "1.0.3" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" ++dependencies = [ ++ "libc", ++ "log", ++ "wasi 0.11.0+wasi-snapshot-preview1", ++ "windows-sys 0.52.0", ++] ++ + [[package]] + name = "netlink-packet-core" + version = "0.7.0" +@@ -1419,14 +1369,14 @@ dependencies = [ + "anyhow", + "byteorder", + "paste", +- "thiserror", ++ "thiserror 1.0.69", + ] + + [[package]] + name = "netlink-sys" +-version = "0.8.5" ++version = "0.8.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411" ++checksum = "16c903aa70590cb93691bf97a767c8d1d6122d2cc9070433deb3bbf36ce8bd23" + dependencies = [ + "bytes", + "libc", +@@ -1435,35 +1385,22 @@ dependencies = [ + + [[package]] + name = "nix" +-version = "0.25.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e322c04a9e3440c327fca7b6c8a63e6890a32fa2ad689db972425f07e0d22abb" +-dependencies = [ +- "autocfg", +- "bitflags 1.3.2", +- "cfg-if", +- "libc", +- "memoffset 0.6.5", +- "pin-utils", +-] +- +-[[package]] +-name = "nix" +-version = "0.27.1" ++version = "0.29.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" ++checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" + dependencies = [ +- "bitflags 2.4.0", ++ "bitflags 2.9.0", + "cfg-if", ++ "cfg_aliases", + "libc", +- "memoffset 0.9.1", ++ "memoffset", + ] + + [[package]] + name = "num" +-version = "0.4.0" ++version = "0.4.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" ++checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" + dependencies = [ + "num-complex", + "num-integer", +@@ -1474,28 +1411,33 @@ dependencies = [ + + [[package]] + name = "num-complex" +-version = "0.4.2" ++version = "0.4.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" ++checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" + dependencies = [ + "num-traits", + ] + ++[[package]] ++name = "num-conv" ++version = "0.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" ++ + [[package]] + name = "num-integer" +-version = "0.1.45" ++version = "0.1.46" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" ++checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" + dependencies = [ +- "autocfg", + "num-traits", + ] + + [[package]] + name = "num-iter" +-version = "0.1.43" ++version = "0.1.45" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" ++checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" + dependencies = [ + "autocfg", + "num-integer", +@@ -1504,20 +1446,19 @@ dependencies = [ + + [[package]] + name = "num-rational" +-version = "0.4.1" ++version = "0.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" ++checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" + dependencies = [ +- "autocfg", + "num-integer", + "num-traits", + ] + + [[package]] + name = "num-traits" +-version = "0.2.15" ++version = "0.2.19" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" ++checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" + dependencies = [ + "autocfg", + "libm", +@@ -1533,32 +1474,11 @@ dependencies = [ + "libc", + ] + +-[[package]] +-name = "num_enum" +-version = "0.5.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +-dependencies = [ +- "num_enum_derive", +-] +- +-[[package]] +-name = "num_enum_derive" +-version = "0.5.7" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +-dependencies = [ +- "proc-macro-crate", +- "proc-macro2", +- "quote", +- "syn 1.0.109", +-] +- + [[package]] + name = "num_threads" +-version = "0.1.6" ++version = "0.1.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" ++checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" + dependencies = [ + "libc", + ] +@@ -1571,18 +1491,18 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + + [[package]] + name = "object" +-version = "0.32.2" ++version = "0.36.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" ++checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" + dependencies = [ + "memchr", + ] + + [[package]] + name = "once_cell" +-version = "1.15.0" ++version = "1.21.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" ++checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" + + [[package]] + name = "openat" +@@ -1595,13 +1515,13 @@ dependencies = [ + + [[package]] + name = "os_info" +-version = "3.5.1" ++version = "3.10.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c4750134fb6a5d49afc80777394ad5d95b04bc12068c6abb92fae8f43817270f" ++checksum = "2a604e53c24761286860eba4e2c8b23a0161526476b1de520139d69cdb85a6b5" + dependencies = [ + "log", + "serde", +- "winapi", ++ "windows-sys 0.52.0", + ] + + [[package]] +@@ -1615,9 +1535,9 @@ dependencies = [ + + [[package]] + name = "parking_lot" +-version = "0.12.1" ++version = "0.12.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" ++checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" + dependencies = [ + "lock_api", + "parking_lot_core", +@@ -1625,28 +1545,28 @@ dependencies = [ + + [[package]] + name = "parking_lot_core" +-version = "0.9.4" ++version = "0.9.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" ++checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" + dependencies = [ + "cfg-if", + "libc", +- "redox_syscall 0.2.16", ++ "redox_syscall", + "smallvec", +- "windows-sys 0.42.0", ++ "windows-targets 0.52.6", + ] + + [[package]] + name = "paste" +-version = "1.0.14" ++version = "1.0.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" ++checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + + [[package]] + name = "pin-project-lite" +-version = "0.2.13" ++version = "0.2.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" ++checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + + [[package]] + name = "pin-utils" +@@ -1656,9 +1576,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + + [[package]] + name = "pkg-config" +-version = "0.3.30" ++version = "0.3.32" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" ++checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + + [[package]] + name = "plain" +@@ -1668,9 +1588,9 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + + [[package]] + name = "portable-atomic" +-version = "1.3.2" ++version = "1.11.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dc59d1bcc64fc5d021d67521f818db868368028108d37f0e98d74e33f68297b5" ++checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" + + [[package]] + name = "portpicker" +@@ -1682,40 +1602,44 @@ dependencies = [ + ] + + [[package]] +-name = "ppv-lite86" +-version = "0.2.16" ++name = "powerfmt" ++version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" ++checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + + [[package]] +-name = "proc-macro-crate" +-version = "1.2.1" ++name = "ppv-lite86" ++version = "0.2.21" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" ++checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" + dependencies = [ +- "once_cell", +- "thiserror", +- "toml 0.5.8", ++ "zerocopy 0.8.23", + ] + + [[package]] + name = "proc-macro2" +-version = "1.0.78" ++version = "1.0.94" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" ++checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "quote" +-version = "1.0.35" ++version = "1.0.40" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" ++checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" + dependencies = [ + "proc-macro2", + ] + ++[[package]] ++name = "r-efi" ++version = "5.2.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" ++ + [[package]] + name = "rand" + version = "0.8.5" +@@ -1743,7 +1667,7 @@ version = "0.6.4" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + dependencies = [ +- "getrandom", ++ "getrandom 0.2.15", + ] + + [[package]] +@@ -1758,62 +1682,49 @@ dependencies = [ + + [[package]] + name = "rayon" +-version = "1.5.3" ++version = "1.10.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" ++checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" + dependencies = [ +- "autocfg", +- "crossbeam-deque", + "either", + "rayon-core", + ] + + [[package]] + name = "rayon-core" +-version = "1.9.3" ++version = "1.12.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" ++checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" + dependencies = [ +- "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", +- "num_cpus", +-] +- +-[[package]] +-name = "redox_syscall" +-version = "0.2.16" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +-dependencies = [ +- "bitflags 1.3.2", + ] + + [[package]] + name = "redox_syscall" +-version = "0.4.1" ++version = "0.5.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" ++checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1" + dependencies = [ +- "bitflags 1.3.2", ++ "bitflags 2.9.0", + ] + + [[package]] + name = "redox_users" +-version = "0.4.3" ++version = "0.4.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" ++checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" + dependencies = [ +- "getrandom", +- "redox_syscall 0.2.16", +- "thiserror", ++ "getrandom 0.2.15", ++ "libredox", ++ "thiserror 1.0.69", + ] + + [[package]] + name = "regex" +-version = "1.9.5" ++version = "1.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" ++checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" + dependencies = [ + "aho-corasick", + "memchr", +@@ -1823,9 +1734,9 @@ dependencies = [ + + [[package]] + name = "regex-automata" +-version = "0.3.8" ++version = "0.4.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" ++checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" + dependencies = [ + "aho-corasick", + "memchr", +@@ -1834,53 +1745,66 @@ dependencies = [ + + [[package]] + name = "regex-syntax" +-version = "0.7.5" ++version = "0.8.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" ++checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + + [[package]] + name = "resctrlfs" +-version = "0.8.1" ++version = "0.9.0" + dependencies = [ + "maplit", +- "nix 0.25.0", ++ "nix", + "openat", + "paste", + "serde", + "tempfile", +- "thiserror", ++ "thiserror 2.0.12", + ] + + [[package]] + name = "rustc-demangle" +-version = "0.1.23" ++version = "0.1.24" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" ++checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + + [[package]] + name = "rustix" +-version = "0.38.21" ++version = "0.38.44" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" ++checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" + dependencies = [ +- "bitflags 2.4.0", ++ "bitflags 2.9.0", + "errno", + "libc", +- "linux-raw-sys", +- "windows-sys 0.48.0", ++ "linux-raw-sys 0.4.15", ++ "windows-sys 0.59.0", ++] ++ ++[[package]] ++name = "rustix" ++version = "1.0.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" ++dependencies = [ ++ "bitflags 2.9.0", ++ "errno", ++ "libc", ++ "linux-raw-sys 0.9.3", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "rustversion" +-version = "1.0.9" ++version = "1.0.20" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8" ++checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" + + [[package]] + name = "ryu" +-version = "1.0.11" ++version = "1.0.20" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" ++checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + + [[package]] + name = "same-file" +@@ -1893,47 +1817,24 @@ dependencies = [ + + [[package]] + name = "scopeguard" +-version = "1.1.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +- +-[[package]] +-name = "scratch" +-version = "1.0.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" +- +-[[package]] +-name = "scroll" +-version = "0.11.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da" +- +-[[package]] +-name = "scroll_derive" +-version = "0.11.0" ++version = "1.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bdbda6ac5cd1321e724fa9cee216f3a61885889b896f073b8f82322789c5250e" +-dependencies = [ +- "proc-macro2", +- "quote", +- "syn 1.0.109", +-] ++checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + + [[package]] + name = "semver" +-version = "1.0.14" ++version = "1.0.26" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" ++checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" + dependencies = [ + "serde", + ] + + [[package]] + name = "serde" +-version = "1.0.188" ++version = "1.0.219" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" ++checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" + dependencies = [ + "serde_derive", + ] +@@ -1950,35 +1851,42 @@ dependencies = [ + + [[package]] + name = "serde_derive" +-version = "1.0.188" ++version = "1.0.219" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" ++checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.52", ++ "syn 2.0.100", + ] + + [[package]] + name = "serde_json" +-version = "1.0.100" ++version = "1.0.140" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" ++checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" + dependencies = [ + "itoa", ++ "memchr", + "ryu", + "serde", + ] + + [[package]] + name = "serde_spanned" +-version = "0.6.4" ++version = "0.6.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" ++checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" + dependencies = [ + "serde", + ] + ++[[package]] ++name = "shlex" ++version = "1.3.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" ++ + [[package]] + name = "signal-hook" + version = "0.3.17" +@@ -1991,29 +1899,30 @@ dependencies = [ + + [[package]] + name = "signal-hook-mio" +-version = "0.2.3" ++version = "0.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" ++checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" + dependencies = [ + "libc", +- "mio", ++ "mio 0.8.11", ++ "mio 1.0.3", + "signal-hook", + ] + + [[package]] + name = "signal-hook-registry" +-version = "1.4.0" ++version = "1.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" ++checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" + dependencies = [ + "libc", + ] + + [[package]] + name = "slab" +-version = "0.4.7" ++version = "0.4.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" ++checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" + dependencies = [ + "autocfg", + ] +@@ -2029,11 +1938,11 @@ dependencies = [ + + [[package]] + name = "slog-term" +-version = "2.9.0" ++version = "2.9.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "87d29185c55b7b258b4f120eab00f48557d4d9bc814f41713f449d35b0f8977c" ++checksum = "b6e022d0b998abfe5c3782c1f03551a596269450ccd677ea51c56f8b214610e8" + dependencies = [ +- "atty", ++ "is-terminal", + "slog", + "term", + "thread_local", +@@ -2042,15 +1951,15 @@ dependencies = [ + + [[package]] + name = "smallvec" +-version = "1.10.0" ++version = "1.14.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" ++checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" + + [[package]] + name = "socket2" +-version = "0.5.6" ++version = "0.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" ++checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" + dependencies = [ + "libc", + "windows-sys 0.52.0", +@@ -2070,22 +1979,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + + [[package]] + name = "strsim" +-version = "0.11.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +- +-[[package]] +-name = "strum_macros" +-version = "0.24.3" ++version = "0.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +-dependencies = [ +- "heck 0.4.0", +- "proc-macro2", +- "quote", +- "rustversion", +- "syn 1.0.109", +-] ++checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + + [[package]] + name = "syn" +@@ -2100,9 +1996,9 @@ dependencies = [ + + [[package]] + name = "syn" +-version = "2.0.52" ++version = "2.0.100" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" ++checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" + dependencies = [ + "proc-macro2", + "quote", +@@ -2111,9 +2007,9 @@ dependencies = [ + + [[package]] + name = "tar" +-version = "0.4.40" ++version = "0.4.44" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" ++checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" + dependencies = [ + "filetime", + "libc", +@@ -2122,15 +2018,15 @@ dependencies = [ + + [[package]] + name = "tempfile" +-version = "3.8.1" ++version = "3.19.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" ++checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" + dependencies = [ +- "cfg-if", + "fastrand", +- "redox_syscall 0.4.1", +- "rustix", +- "windows-sys 0.48.0", ++ "getrandom 0.3.2", ++ "once_cell", ++ "rustix 1.0.2", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -2145,60 +2041,62 @@ dependencies = [ + ] + + [[package]] +-name = "termcolor" +-version = "1.1.3" ++name = "terminal_size" ++version = "0.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" ++checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" + dependencies = [ +- "winapi-util", ++ "rustix 1.0.2", ++ "windows-sys 0.59.0", + ] + + [[package]] +-name = "terminal_size" +-version = "0.1.17" ++name = "thiserror" ++version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" ++checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" + dependencies = [ +- "libc", +- "winapi", ++ "thiserror-impl 1.0.69", + ] + + [[package]] +-name = "terminal_size" +-version = "0.3.0" ++name = "thiserror" ++version = "2.0.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" ++checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" + dependencies = [ +- "rustix", +- "windows-sys 0.48.0", ++ "thiserror-impl 2.0.12", + ] + + [[package]] +-name = "thiserror" +-version = "1.0.57" ++name = "thiserror-impl" ++version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" ++checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + dependencies = [ +- "thiserror-impl", ++ "proc-macro2", ++ "quote", ++ "syn 2.0.100", + ] + + [[package]] + name = "thiserror-impl" +-version = "1.0.57" ++version = "2.0.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" ++checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.52", ++ "syn 2.0.100", + ] + + [[package]] + name = "thread_local" +-version = "1.1.4" ++version = "1.1.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" ++checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" + dependencies = [ ++ "cfg-if", + "once_cell", + ] + +@@ -2213,13 +2111,16 @@ dependencies = [ + + [[package]] + name = "time" +-version = "0.3.16" ++version = "0.3.40" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0fab5c8b9980850e06d92ddbe3ab839c062c801f3927c0fb8abd6fc8e918fbca" ++checksum = "9d9c75b47bdff86fa3334a3db91356b8d7d86a9b839dab7d0bdc5c3d3a077618" + dependencies = [ ++ "deranged", + "itoa", + "libc", ++ "num-conv", + "num_threads", ++ "powerfmt", + "serde", + "time-core", + "time-macros", +@@ -2227,64 +2128,55 @@ dependencies = [ + + [[package]] + name = "time-core" +-version = "0.1.0" ++version = "0.1.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" ++checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" + + [[package]] + name = "time-macros" +-version = "0.2.5" ++version = "0.2.21" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "65bb801831d812c562ae7d2bfb531f26e66e4e1f6b17307ba4149c5064710e5b" ++checksum = "29aa485584182073ed57fd5004aa09c371f021325014694e432313345865fd04" + dependencies = [ ++ "num-conv", + "time-core", + ] + + [[package]] + name = "tokio" +-version = "1.37.0" ++version = "1.44.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" ++checksum = "f382da615b842244d4b8738c82ed1275e6c5dd90c459a30941cd07080b06c91a" + dependencies = [ + "backtrace", + "bytes", + "libc", +- "mio", +- "num_cpus", ++ "mio 1.0.3", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "tracing", +- "windows-sys 0.48.0", ++ "windows-sys 0.52.0", + ] + + [[package]] + name = "tokio-macros" +-version = "2.2.0" ++version = "2.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" ++checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.52", +-] +- +-[[package]] +-name = "toml" +-version = "0.5.8" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +-dependencies = [ +- "serde", ++ "syn 2.0.100", + ] + + [[package]] + name = "toml" +-version = "0.8.6" ++version = "0.8.20" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc" ++checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" + dependencies = [ + "serde", + "serde_spanned", +@@ -2294,18 +2186,18 @@ dependencies = [ + + [[package]] + name = "toml_datetime" +-version = "0.6.5" ++version = "0.6.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" ++checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + dependencies = [ + "serde", + ] + + [[package]] + name = "toml_edit" +-version = "0.20.7" ++version = "0.22.24" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" ++checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" + dependencies = [ + "indexmap", + "serde", +@@ -2316,9 +2208,9 @@ dependencies = [ + + [[package]] + name = "tracing" +-version = "0.1.40" ++version = "0.1.41" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" ++checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" + dependencies = [ + "pin-project-lite", + "tracing-core", +@@ -2326,61 +2218,54 @@ dependencies = [ + + [[package]] + name = "tracing-core" +-version = "0.1.32" ++version = "0.1.33" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" ++checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" + dependencies = [ + "once_cell", + ] + + [[package]] + name = "unicase" +-version = "2.6.0" ++version = "2.8.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +-dependencies = [ +- "version_check", +-] ++checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + + [[package]] + name = "unicode-ident" +-version = "1.0.5" ++version = "1.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" ++checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" + + [[package]] + name = "unicode-segmentation" +-version = "1.10.0" ++version = "1.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" ++checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + + [[package]] + name = "unicode-width" +-version = "0.1.10" ++version = "0.1.14" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" ++checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + + [[package]] +-name = "utf8parse" +-version = "0.2.1" ++name = "unicode-width" ++version = "0.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" ++checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + + [[package]] +-name = "uzers" +-version = "0.11.3" ++name = "utf8parse" ++version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "76d283dc7e8c901e79e32d077866eaf599156cbf427fffa8289aecc52c5c3f63" +-dependencies = [ +- "libc", +- "log", +-] ++checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + + [[package]] + name = "version_check" +-version = "0.9.4" ++version = "0.9.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" ++checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + + [[package]] + name = "vsprintf" +@@ -2394,12 +2279,11 @@ dependencies = [ + + [[package]] + name = "walkdir" +-version = "2.3.2" ++version = "2.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" ++checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" + dependencies = [ + "same-file", +- "winapi", + "winapi-util", + ] + +@@ -2409,36 +2293,46 @@ version = "0.11.0+wasi-snapshot-preview1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + ++[[package]] ++name = "wasi" ++version = "0.14.2+wasi-0.2.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" ++dependencies = [ ++ "wit-bindgen-rt", ++] ++ + [[package]] + name = "wasm-bindgen" +-version = "0.2.83" ++version = "0.2.100" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" ++checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" + dependencies = [ + "cfg-if", ++ "once_cell", ++ "rustversion", + "wasm-bindgen-macro", + ] + + [[package]] + name = "wasm-bindgen-backend" +-version = "0.2.83" ++version = "0.2.100" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" ++checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" + dependencies = [ + "bumpalo", + "log", +- "once_cell", + "proc-macro2", + "quote", +- "syn 1.0.109", ++ "syn 2.0.100", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-macro" +-version = "0.2.83" ++version = "0.2.100" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" ++checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" + dependencies = [ + "quote", + "wasm-bindgen-macro-support", +@@ -2446,22 +2340,35 @@ dependencies = [ + + [[package]] + name = "wasm-bindgen-macro-support" +-version = "0.2.83" ++version = "0.2.100" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" ++checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" + dependencies = [ + "proc-macro2", + "quote", +- "syn 1.0.109", ++ "syn 2.0.100", + "wasm-bindgen-backend", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-shared" +-version = "0.2.83" ++version = "0.2.100" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" ++checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" ++dependencies = [ ++ "unicode-ident", ++] ++ ++[[package]] ++name = "web-time" ++version = "1.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" ++dependencies = [ ++ "js-sys", ++ "wasm-bindgen", ++] + + [[package]] + name = "winapi" +@@ -2481,11 +2388,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + + [[package]] + name = "winapi-util" +-version = "0.1.5" ++version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" ++checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" + dependencies = [ +- "winapi", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -2495,27 +2402,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + + [[package]] +-name = "windows-sys" +-version = "0.42.0" ++name = "windows-core" ++version = "0.52.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" ++checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" + dependencies = [ +- "windows_aarch64_gnullvm 0.42.2", +- "windows_aarch64_msvc 0.42.2", +- "windows_i686_gnu 0.42.2", +- "windows_i686_msvc 0.42.2", +- "windows_x86_64_gnu 0.42.2", +- "windows_x86_64_gnullvm 0.42.2", +- "windows_x86_64_msvc 0.42.2", ++ "windows-targets 0.52.6", + ] + ++[[package]] ++name = "windows-link" ++version = "0.1.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" ++ + [[package]] + name = "windows-sys" + version = "0.48.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" + dependencies = [ +- "windows-targets 0.48.0", ++ "windows-targets 0.48.5", + ] + + [[package]] +@@ -2524,181 +2431,165 @@ version = "0.52.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" + dependencies = [ +- "windows-targets 0.52.4", ++ "windows-targets 0.52.6", + ] + + [[package]] +-name = "windows-targets" +-version = "0.48.0" ++name = "windows-sys" ++version = "0.59.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" ++checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" + dependencies = [ +- "windows_aarch64_gnullvm 0.48.0", +- "windows_aarch64_msvc 0.48.0", +- "windows_i686_gnu 0.48.0", +- "windows_i686_msvc 0.48.0", +- "windows_x86_64_gnu 0.48.0", +- "windows_x86_64_gnullvm 0.48.0", +- "windows_x86_64_msvc 0.48.0", ++ "windows-targets 0.52.6", + ] + + [[package]] + name = "windows-targets" +-version = "0.52.4" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" ++checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" + dependencies = [ +- "windows_aarch64_gnullvm 0.52.4", +- "windows_aarch64_msvc 0.52.4", +- "windows_i686_gnu 0.52.4", +- "windows_i686_msvc 0.52.4", +- "windows_x86_64_gnu 0.52.4", +- "windows_x86_64_gnullvm 0.52.4", +- "windows_x86_64_msvc 0.52.4", ++ "windows_aarch64_gnullvm 0.48.5", ++ "windows_aarch64_msvc 0.48.5", ++ "windows_i686_gnu 0.48.5", ++ "windows_i686_msvc 0.48.5", ++ "windows_x86_64_gnu 0.48.5", ++ "windows_x86_64_gnullvm 0.48.5", ++ "windows_x86_64_msvc 0.48.5", + ] + + [[package]] +-name = "windows_aarch64_gnullvm" +-version = "0.42.2" ++name = "windows-targets" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" ++checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" ++dependencies = [ ++ "windows_aarch64_gnullvm 0.52.6", ++ "windows_aarch64_msvc 0.52.6", ++ "windows_i686_gnu 0.52.6", ++ "windows_i686_gnullvm", ++ "windows_i686_msvc 0.52.6", ++ "windows_x86_64_gnu 0.52.6", ++ "windows_x86_64_gnullvm 0.52.6", ++ "windows_x86_64_msvc 0.52.6", ++] + + [[package]] + name = "windows_aarch64_gnullvm" +-version = "0.48.0" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" ++checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + + [[package]] + name = "windows_aarch64_gnullvm" +-version = "0.52.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +- +-[[package]] +-name = "windows_aarch64_msvc" +-version = "0.42.2" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" ++checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + + [[package]] + name = "windows_aarch64_msvc" +-version = "0.48.0" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" ++checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + + [[package]] + name = "windows_aarch64_msvc" +-version = "0.52.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +- +-[[package]] +-name = "windows_i686_gnu" +-version = "0.42.2" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" ++checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + + [[package]] + name = "windows_i686_gnu" +-version = "0.48.0" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" ++checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + + [[package]] + name = "windows_i686_gnu" +-version = "0.52.4" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" ++checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + + [[package]] +-name = "windows_i686_msvc" +-version = "0.42.2" ++name = "windows_i686_gnullvm" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" ++checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + + [[package]] + name = "windows_i686_msvc" +-version = "0.48.0" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" ++checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + + [[package]] + name = "windows_i686_msvc" +-version = "0.52.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +- +-[[package]] +-name = "windows_x86_64_gnu" +-version = "0.42.2" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" ++checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + + [[package]] + name = "windows_x86_64_gnu" +-version = "0.48.0" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" ++checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + + [[package]] + name = "windows_x86_64_gnu" +-version = "0.52.4" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" ++checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + + [[package]] + name = "windows_x86_64_gnullvm" +-version = "0.42.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +- +-[[package]] +-name = "windows_x86_64_gnullvm" +-version = "0.48.0" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" ++checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + + [[package]] + name = "windows_x86_64_gnullvm" +-version = "0.52.4" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" ++checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + + [[package]] + name = "windows_x86_64_msvc" +-version = "0.42.2" ++version = "0.48.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" ++checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + + [[package]] + name = "windows_x86_64_msvc" +-version = "0.48.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" ++checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + + [[package]] +-name = "windows_x86_64_msvc" +-version = "0.52.4" ++name = "winnow" ++version = "0.7.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" ++checksum = "0e97b544156e9bebe1a0ffbc03484fc1ffe3100cbce3ffb17eac35f7cdd7ab36" ++dependencies = [ ++ "memchr", ++] + + [[package]] +-name = "winnow" +-version = "0.5.18" ++name = "wit-bindgen-rt" ++version = "0.39.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "176b6138793677221d420fd2f0aeeced263f197688b36484660da767bca2fa32" ++checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" + dependencies = [ +- "memchr", ++ "bitflags 2.9.0", + ] + + [[package]] + name = "xattr" +-version = "1.0.1" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" ++checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" + dependencies = [ + "libc", ++ "rustix 1.0.2", + ] + + [[package]] +@@ -2707,29 +2598,69 @@ version = "0.3.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" + ++[[package]] ++name = "zerocopy" ++version = "0.7.35" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" ++dependencies = [ ++ "zerocopy-derive 0.7.35", ++] ++ ++[[package]] ++name = "zerocopy" ++version = "0.8.23" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" ++dependencies = [ ++ "zerocopy-derive 0.8.23", ++] ++ ++[[package]] ++name = "zerocopy-derive" ++version = "0.7.35" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.100", ++] ++ ++[[package]] ++name = "zerocopy-derive" ++version = "0.8.23" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" ++dependencies = [ ++ "proc-macro2", ++ "quote", ++ "syn 2.0.100", ++] ++ + [[package]] + name = "zstd" +-version = "0.13.0" ++version = "0.13.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" ++checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" + dependencies = [ + "zstd-safe", + ] + + [[package]] + name = "zstd-safe" +-version = "7.0.0" ++version = "7.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" ++checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722" + dependencies = [ + "zstd-sys", + ] + + [[package]] + name = "zstd-sys" +-version = "2.0.9+zstd.1.5.5" ++version = "2.0.14+zstd.1.5.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" ++checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" + dependencies = [ + "cc", + "pkg-config", diff --git a/pkgs/by-name/bi/bitbox-bridge/package.nix b/pkgs/by-name/bi/bitbox-bridge/package.nix new file mode 100644 index 000000000000..b472c356ee8e --- /dev/null +++ b/pkgs/by-name/bi/bitbox-bridge/package.nix @@ -0,0 +1,50 @@ +{ + lib, + stdenv, + fetchFromGitHub, + rustPlatform, + pkg-config, + libudev-zero, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "bitbox-bridge"; + version = "1.6.1"; + + src = fetchFromGitHub { + owner = "BitBoxSwiss"; + repo = "bitbox-bridge"; + tag = "v${finalAttrs.version}"; + fetchSubmodules = true; + hash = "sha256-+pMXWXGHyyBx3N0kiro9NS0mPmSQzzBmp+pkoBLH7z0="; + }; + + useFetchCargoVendor = true; + cargoHash = "sha256-6vD0XjGH1PXjiRjgnHWSZSixXOc2Yecui8U5FAGefBU="; + + postPatch = '' + rm .cargo/config.toml + ''; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ + libudev-zero + ]; + + meta = { + description = "A bridge service that connects web wallets like Rabby to BitBox02"; + homepage = "https://github.com/BitBoxSwiss/bitbox-bridge"; + downloadPage = "https://bitbox.swiss/download/"; + changelog = "https://github.com/BitBoxSwiss/bitbox-bridge/blob/v${finalAttrs.version}/CHANGELOG.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ + izelnakri + tensor5 + ]; + mainProgram = "bitbox-bridge"; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/by-name/bi/bitwarden-cli/package.nix b/pkgs/by-name/bi/bitwarden-cli/package.nix index 9053b614d712..9f7da212c2c1 100644 --- a/pkgs/by-name/bi/bitwarden-cli/package.nix +++ b/pkgs/by-name/bi/bitwarden-cli/package.nix @@ -51,7 +51,7 @@ buildNpmPackage rec { npmFlags = [ "--legacy-peer-deps" ]; npmRebuildFlags = [ - # FIXME one of the esbuild versions fails to download @esbuild/linux-x64 + # we'll run npm rebuild manually later "--ignore-scripts" ]; @@ -60,6 +60,11 @@ buildNpmPackage rec { shopt -s globstar rm -r node_modules/**/prebuilds shopt -u globstar + + # FIXME one of the esbuild versions fails to download @esbuild/linux-x64 + rm -r node_modules/esbuild node_modules/vite/node_modules/esbuild + + npm rebuild --verbose ''; postBuild = '' diff --git a/pkgs/by-name/bl/bloop/package.nix b/pkgs/by-name/bl/bloop/package.nix index cfc172cf4832..b794a28a68c0 100644 --- a/pkgs/by-name/bl/bloop/package.nix +++ b/pkgs/by-name/bl/bloop/package.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { pname = "bloop"; - version = "2.0.8"; + version = "2.0.9"; platform = if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64 then @@ -42,11 +42,11 @@ stdenv.mkDerivation rec { url = "https://github.com/scalacenter/bloop/releases/download/v${version}/bloop-${platform}"; sha256 = if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64 then - "sha256-ItPt5qjfRgtPNg6a/Zlc0ASfdvGXMMKV7SqNEOQ9u28=" + "sha256-mslCzvJ+z5VNQkVa9HXjw2bUBprMgs3bAy3RmEt8OlI=" else if stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64 then - "sha256-zUSDUwZY1id/WFuC87Wa4eB48X4rmXvVC1/b2v5bhw4=" + "sha256-XdMPo9O7ADhInmGFIOHihl1z4yPKAyDjCH7m3tCtKNo=" else if stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64 then - "sha256-1wsGL1G8/+xMvYNwe7EOyqEuEKDKiwA7yyyjfbGgxJQ=" + "sha256-sJM00f2KBI6fnVj3U/h/pYAFT7QjZkfJ7ubDfFlRJ0Q=" else throw "unsupported platform"; }; diff --git a/pkgs/by-name/bo/bolt-launcher/package.nix b/pkgs/by-name/bo/bolt-launcher/package.nix index 6b3a1d35b2b7..fa8533ecc983 100644 --- a/pkgs/by-name/bo/bolt-launcher/package.nix +++ b/pkgs/by-name/bo/bolt-launcher/package.nix @@ -87,14 +87,14 @@ in let bolt = stdenv.mkDerivation (finalAttrs: { pname = "bolt-launcher"; - version = "0.9.0"; + version = "0.14.0"; src = fetchFromGitHub { owner = "AdamCake"; repo = "bolt"; - rev = finalAttrs.version; + tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-LIlRDcUWbQwIhFjtqYF+oVpTOPZ7IT0vMgysEVyJ1k8="; + hash = "sha256-fNCi2Wu+oOL6p8IBm6bHZ/rcaFmqoKs2DnXQ+ZA9McE="; }; nativeBuildInputs = [ @@ -154,8 +154,8 @@ let desktopName = "Bolt Launcher"; genericName = finalAttrs.pname; comment = "An alternative launcher for RuneScape"; - exec = "${finalAttrs.pname}-${finalAttrs.version}"; - icon = finalAttrs.pname; + exec = "bolt-launcher"; + icon = "bolt-launcher"; categories = [ "Game" ]; }) ]; diff --git a/pkgs/by-name/br/broot/package.nix b/pkgs/by-name/br/broot/package.nix index 04e735ba0feb..225a17ac89bf 100644 --- a/pkgs/by-name/br/broot/package.nix +++ b/pkgs/by-name/br/broot/package.nix @@ -15,17 +15,17 @@ rustPlatform.buildRustPackage rec { pname = "broot"; - version = "1.44.7"; + version = "1.45.0"; src = fetchFromGitHub { owner = "Canop"; repo = "broot"; rev = "v${version}"; - hash = "sha256-GaOPC1lIu48qFo99AQ99f49e8qH/TEQubpluptLc0jY="; + hash = "sha256-Hif+ynwOxiZBAiNdbaU5SpI9s0yNxtH0qXXMfGO21H0="; }; useFetchCargoVendor = true; - cargoHash = "sha256-J7zc1aTH62nL96cSb9CiIk8uJdR7nk9EnERiAfMvqNM="; + cargoHash = "sha256-Cw0Bh8S04oUlbbn3O3+uBoHEgh82XIcGQSGqkZFOc78="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/by-name/ca/carapace-bridge/package.nix b/pkgs/by-name/ca/carapace-bridge/package.nix index d31854978aa9..a26dd2a00038 100644 --- a/pkgs/by-name/ca/carapace-bridge/package.nix +++ b/pkgs/by-name/ca/carapace-bridge/package.nix @@ -8,19 +8,19 @@ buildGoModule rec { pname = "carapace-bridge"; - version = "1.2.3"; + version = "1.2.4"; src = fetchFromGitHub { owner = "carapace-sh"; repo = "carapace-bridge"; tag = "v${version}"; - hash = "sha256-RMItv9HAPsxnb0NGlDjqY8Of4cxf8xU1c8ZE8Ajz0ao="; + hash = "sha256-/HjoE6yaawo1hCemnvtfK3wj4SBSW91D4oyuZ5qxV4M="; }; # buildGoModule try to run `go mod vendor` instead of `go work vendor` on the # workspace if proxyVendor is off proxyVendor = true; - vendorHash = "sha256-R2sk5yqhF+5pVWxCnEx+EKTvNPzg32/JguLMu6R3ETM="; + vendorHash = "sha256-zfV5IcpwtK3n76jWs4ldMlpEqbyNmmXZWDj+fh66luw="; postPatch = '' substituteInPlace cmd/carapace-bridge/main.go \ diff --git a/pkgs/by-name/ci/civo/package.nix b/pkgs/by-name/ci/civo/package.nix index 66b9dc84160d..ed9da0b7ac82 100644 --- a/pkgs/by-name/ci/civo/package.nix +++ b/pkgs/by-name/ci/civo/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "civo"; - version = "1.1.97"; + version = "1.1.98"; src = fetchFromGitHub { owner = "civo"; repo = "cli"; rev = "v${version}"; - hash = "sha256-0BIvKzG+ePN4VyXPj4VfCoZiq/pDZb9/7k/kTIa4Fqs="; + hash = "sha256-gxqVWnhlLYizoij6L9/ThM9T7K7++nGZwgFP3OzBqOY="; }; - vendorHash = "sha256-V1R5MQ3y8mcm8ffc2INKk6BTYUROEvr8lHBs6MvbpkQ="; + vendorHash = "sha256-LN6rzZXw7YoHMyPCujPiyjs8tG+nN2fxwQnEenohw1c="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/cl/cloud-nuke/package.nix b/pkgs/by-name/cl/cloud-nuke/package.nix index d3f1fa80f571..c8f616d565a6 100644 --- a/pkgs/by-name/cl/cloud-nuke/package.nix +++ b/pkgs/by-name/cl/cloud-nuke/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "cloud-nuke"; - version = "0.38.2"; + version = "0.39.0"; src = fetchFromGitHub { owner = "gruntwork-io"; repo = pname; tag = "v${version}"; - hash = "sha256-hQFuHEIxsvyCmP4DR9MsrWmPbo3BFU3k5nYNsQVNy/U="; + hash = "sha256-r9/5A1f6GSDgF5/GM4UKxoCYUsc5xsZpTwDGDUySDfQ="; }; - vendorHash = "sha256-ExZZHCGmU9r1DrJ3alN6Y39P6rfFymQSpK8b+ZD7h0s="; + vendorHash = "sha256-AiPy/lmqrNeDWM7/pXmzHCbSWZdqdXnZNATlyi6oAGc="; nativeBuildInputs = [ makeBinaryWrapper diff --git a/pkgs/by-name/cl/cloudflare-cli/package.nix b/pkgs/by-name/cl/cloudflare-cli/package.nix new file mode 100644 index 000000000000..6e1ad3be90b0 --- /dev/null +++ b/pkgs/by-name/cl/cloudflare-cli/package.nix @@ -0,0 +1,53 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchYarnDeps, + yarnConfigHook, + yarnInstallHook, + nodejs, + nix-update-script, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "cloudflare-cli"; + version = "4.2.0"; + + src = fetchFromGitHub { + owner = "danielpigott"; + repo = "cloudflare-cli"; + tag = "v${finalAttrs.version}"; + hash = "sha256-cT+cMekXhHKfFi+dH1dCA/YNBSyYePJIZBSkDMPZZ14="; + }; + + yarnOfflineCache = fetchYarnDeps { + yarnLock = finalAttrs.src + "/yarn.lock"; + hash = "sha256-0SFXgaLQE/MkqC9id7DAiP422tEyTt2gpgpIdXViFBI="; + }; + + nativeBuildInputs = [ + yarnConfigHook + yarnInstallHook + nodejs + ]; + + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck + + $out/bin/cfcli --help >/dev/null + + runHook postInstallCheck + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "CLI for interacting with Cloudflare"; + homepage = "https://github.com/danielpigott/cloudflare-cli"; + changelog = "https://github.com/danielpigott/cloudflare-cli/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ defelo ]; + mainProgram = "cfcli"; + }; +}) diff --git a/pkgs/by-name/cl/clusterctl/package.nix b/pkgs/by-name/cl/clusterctl/package.nix index dd1b1d0010bd..ac81adcf2569 100644 --- a/pkgs/by-name/cl/clusterctl/package.nix +++ b/pkgs/by-name/cl/clusterctl/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "clusterctl"; - version = "1.9.5"; + version = "1.9.6"; src = fetchFromGitHub { owner = "kubernetes-sigs"; repo = "cluster-api"; rev = "v${version}"; - hash = "sha256-4n+7/4ZMD0VzlD4PzEWVDut+rt8/4Vz3gAgCDAj+SVs="; + hash = "sha256-XXtVGIpoR2JfkR7urfHuh6xKoIvsF42NV+4yjxb8nls="; }; vendorHash = "sha256-SdLeME6EFraGUXE1zUdEfxTETUKLDmecYpWEg5DE4PQ="; diff --git a/pkgs/by-name/co/codechecker/package.nix b/pkgs/by-name/co/codechecker/package.nix index 26a7f6279945..f09011e8e68b 100644 --- a/pkgs/by-name/co/codechecker/package.nix +++ b/pkgs/by-name/co/codechecker/package.nix @@ -113,7 +113,10 @@ python3Packages.buildPythonApplication rec { homepage = "https://github.com/Ericsson/codechecker"; changelog = "https://github.com/Ericsson/codechecker/releases/tag/v${version}"; description = "Analyzer tooling, defect database and viewer extension for the Clang Static Analyzer and Clang Tidy"; - license = licenses.asl20-llvm; + license = with licenses; [ + asl20 + llvm-exception + ]; maintainers = with maintainers; [ zebreus felixsinger diff --git a/pkgs/by-name/co/conda/package.nix b/pkgs/by-name/co/conda/package.nix index 77dd1020902a..e99832d91214 100644 --- a/pkgs/by-name/co/conda/package.nix +++ b/pkgs/by-name/co/conda/package.nix @@ -43,7 +43,7 @@ # $ conda-shell # $ conda install spyder let - version = "25.1.1"; + version = "25.1.1-2"; src = let @@ -57,10 +57,10 @@ let }; in fetchurl { - url = "https://repo.anaconda.com/miniconda/Miniconda3-py312_${version}-0-Linux-${arch}.sh"; + url = "https://repo.anaconda.com/miniconda/Miniconda3-py312_${version}-Linux-${arch}.sh"; hash = selectSystem { - x86_64-linux = "sha256-gy3ielo1t5Y/DYNGarraPrE45RmFJV8ZDg3DUEJ6ndE="; - aarch64-linux = "sha256-rp0+qD35fnj9UcRS0Lx1AFoo1QTCLbbxAAgiKT+Ra1Q="; + x86_64-linux = "sha256-R2bYW199I1ziUOmY67WoqCEMvU8rD+pNIXez7Z6oeIQ="; + aarch64-linux = "sha256-bQW5+bfzJ7kHl6TPVtaMgVeLqy9jJXo+eotyyw8OS10="; }; }; diff --git a/pkgs/by-name/co/conduit/package.nix b/pkgs/by-name/co/conduit/package.nix index 22c208d18637..62100ccf20b4 100644 --- a/pkgs/by-name/co/conduit/package.nix +++ b/pkgs/by-name/co/conduit/package.nix @@ -7,6 +7,7 @@ # passthru conduit, + python3Packages, nix-update-script, mpiSupport ? false, @@ -50,6 +51,8 @@ stdenv.mkDerivation (finalAttrs: { passthru = { tests = { withMpi = conduit.override { mpiSupport = true; }; + pythonModule = python3Packages.conduit; + pythonModuleWithMpi = python3Packages.conduit-mpi; }; updateScript = nix-update-script { }; }; diff --git a/pkgs/by-name/co/cook-cli/package.nix b/pkgs/by-name/co/cook-cli/package.nix index 6d83b52f11fa..a45cbf962503 100644 --- a/pkgs/by-name/co/cook-cli/package.nix +++ b/pkgs/by-name/co/cook-cli/package.nix @@ -10,17 +10,17 @@ }: rustPlatform.buildRustPackage rec { pname = "cook-cli"; - version = "0.7.1"; + version = "0.10.0"; src = fetchFromGitHub { owner = "cooklang"; repo = "cookcli"; rev = "v${version}"; - hash = "sha256-3gLVsk6GCxOG24Md7E9fk28Vnc4kVDdwyZUD/GtSwFE="; + hash = "sha256-1m2+etJG+33fPTxBF8qT/U9WiZGcSn9r0WlK5PDL6/Q="; }; useFetchCargoVendor = true; - cargoHash = "sha256-EoTCKpH8G3SsXkhQVsr9aX4Cupm+fzPtXHpoM1knqss="; + cargoHash = "sha256-3tWVCP80a6odmi9C0klLbfO5UmdFczyUY8KQSaMIyw4="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/co/copycat/package.nix b/pkgs/by-name/co/copycat/package.nix index 7a008e67f448..7569bdb81082 100644 --- a/pkgs/by-name/co/copycat/package.nix +++ b/pkgs/by-name/co/copycat/package.nix @@ -8,17 +8,17 @@ rustPlatform.buildRustPackage rec { pname = "ccat"; - version = "003"; + version = "004"; src = fetchFromGitHub { owner = "DeeKahy"; repo = "CopyCat"; tag = version; - hash = "sha256-BNXWubJ6eRnuK7+0kE9yHQzjJci5miTSG3dwWE2XDwc="; + hash = "sha256-HLT88ghyT9AwvBTf7NrFkSPqMAh90GrBqZVXN5aaG3w="; }; useFetchCargoVendor = true; - cargoHash = "sha256-2SI4h5RqzWKWnRmQ2t/eDAOK1ql7jlZKIgPlSiiB6Dg="; + cargoHash = "sha256-gjFVvP2h+HJdDdNVtqTT1E1s4ZYXfWuhtMBRJkWRcDw="; buildInputs = lib.optionals (stdenv.hostPlatform.isDarwin) [ darwin.apple_sdk_11_0.frameworks.AppKit diff --git a/pkgs/by-name/co/copywrite/package.nix b/pkgs/by-name/co/copywrite/package.nix index 90eb96f4a8ff..c692d52735ac 100644 --- a/pkgs/by-name/co/copywrite/package.nix +++ b/pkgs/by-name/co/copywrite/package.nix @@ -9,18 +9,18 @@ }: let - commitHash = "9d021bf61a094a5eac6ae3084ceed2dda4700a73"; # matches tag release + commitHash = "d5bc935e4801a02fdbd953f8f0ae7989eaef50cf"; # matches tag release shortCommitHash = builtins.substring 0 7 commitHash; in buildGoModule rec { pname = "copywrite"; - version = "0.21.0"; + version = "0.22.0"; src = fetchFromGitHub { owner = "hashicorp"; repo = "copywrite"; tag = "v${version}"; - hash = "sha256-TGis7rreRen+vk3tUDehRkyas4xrBBxKlA70+VqoGWY="; + hash = "sha256-gPVlHgFlLxoAj4pkg3OxD4CGQaLdAL312/Zn/pJ+7fg="; }; vendorHash = "sha256-Qxp6BwN/Y6Xb1BwFGT/T8WYsXGPgN27mzoTE0i6cS1Q="; diff --git a/pkgs/by-name/co/countryfetch/package.nix b/pkgs/by-name/co/countryfetch/package.nix new file mode 100644 index 000000000000..f3ebd1d9e532 --- /dev/null +++ b/pkgs/by-name/co/countryfetch/package.nix @@ -0,0 +1,55 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + yq, + pkg-config, + openssl, + versionCheckHook, + nix-update-script, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "countryfetch"; + version = "0.1.9"; + + src = fetchFromGitHub { + owner = "nik-rev"; + repo = "countryfetch"; + tag = "v${finalAttrs.version}"; + hash = "sha256-KdFgY54vXLmq6IZfJzZ1IeZ2eQuNJoCRZUV3rVuPpcY="; + }; + + postPatch = '' + tomlq -ti '.dependencies.openssl.features[] |= select(.!="vendored")' countryfetch/Cargo.toml + ''; + + useFetchCargoVendor = true; + cargoHash = "sha256-XJI9k/5hdak8p0/J/x9u6lqJu/DIbX93Wwm3LALkAAw="; + + env.RUSTC_BOOTSTRAP = 1; + + nativeBuildInputs = [ + pkg-config + yq # for `tomlq` + ]; + + buildInputs = [ openssl ]; + + cargoBuildFlags = [ "--package=countryfetch" ]; + + nativeInstallCheckInputs = [ versionCheckHook ]; + versionCheckProgramArg = "--version"; + doInstallCheck = true; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Command-line tool similar to Neofetch for obtaining information about your country"; + homepage = "https://github.com/nik-rev/countryfetch"; + changelog = "https://github.com/nik-rev/countryfetch/blob/v${finalAttrs.version}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ defelo ]; + mainProgram = "countryfetch"; + }; +}) diff --git a/pkgs/by-name/cr/crocoddyl/package.nix b/pkgs/by-name/cr/crocoddyl/package.nix index 773898277627..f4cab7ae2ba3 100644 --- a/pkgs/by-name/cr/crocoddyl/package.nix +++ b/pkgs/by-name/cr/crocoddyl/package.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "crocoddyl"; - version = "2.2.0"; + version = "3.0.0"; src = fetchFromGitHub { owner = "loco-3d"; repo = "crocoddyl"; rev = "v${finalAttrs.version}"; - hash = "sha256-j3TL5TpIdTkTO32Fuu+LyiieiXoOMvShi/LbBL5YYzA="; + hash = "sha256-oWcclzzuswiR1SaQJd6GnMltJ2vgt7AgJPT0FJzD1Gs="; }; outputs = [ diff --git a/pkgs/by-name/cz/czkawka/package.nix b/pkgs/by-name/cz/czkawka/package.nix index c11906017ffe..a0fb267941f0 100644 --- a/pkgs/by-name/cz/czkawka/package.nix +++ b/pkgs/by-name/cz/czkawka/package.nix @@ -27,17 +27,17 @@ let self = buildRustPackage' { pname = "czkawka"; - version = "8.0.0"; + version = "9.0.0"; src = fetchFromGitHub { owner = "qarmin"; repo = "czkawka"; tag = self.version; - hash = "sha256-Uxko2TRIjqQvd7n9C+P7oMUrm3YY5j7TVzvijEjDwOM="; + hash = "sha256-ePiHDfQ1QC3nff8uWE0ggiTuulBomuoZ3ta0redUYXY="; }; useFetchCargoVendor = true; - cargoHash = "sha256-lYS/G3mHNqKcI6XRAtESzgBiUHnNfV0ct0W6E75a7J4="; + cargoHash = "sha256-Djvb5Hen6XPm6aJuwa6cGPojz9+kXXidysr3URDwDFM="; nativeBuildInputs = [ gobject-introspection diff --git a/pkgs/by-name/db/dbvisualizer/package.nix b/pkgs/by-name/db/dbvisualizer/package.nix index 3722b2454239..a5101267901f 100644 --- a/pkgs/by-name/db/dbvisualizer/package.nix +++ b/pkgs/by-name/db/dbvisualizer/package.nix @@ -13,7 +13,7 @@ let in stdenv.mkDerivation (finalAttrs: { inherit pname; - version = "24.3.3"; + version = "25.1"; src = let @@ -21,7 +21,7 @@ stdenv.mkDerivation (finalAttrs: { in fetchurl { url = "https://www.dbvis.com/product_download/dbvis-${finalAttrs.version}/media/dbvis_linux_${underscoreVersion}.tar.gz"; - hash = "sha256-RDmakZJ7mjTzx4QaKwT6H25dDvQANbLhd2+f8EYbmDA="; + hash = "sha256-Se2d5S8nXKmNJ1UoYNGJyvHC20THShjzGh2T98NhFv4="; }; strictDeps = true; diff --git a/pkgs/by-name/dd/ddns-go/package.nix b/pkgs/by-name/dd/ddns-go/package.nix index 229d80ceb3c0..378c3ddfe77a 100644 --- a/pkgs/by-name/dd/ddns-go/package.nix +++ b/pkgs/by-name/dd/ddns-go/package.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "ddns-go"; - version = "6.9.0"; + version = "6.9.1"; src = fetchFromGitHub { owner = "jeessy2"; repo = pname; rev = "v${version}"; - hash = "sha256-eHJVd7PHUrswF1j4MrsUmle0vB8/CtH43p5ILZGljrs="; + hash = "sha256-QGvXUYeT01+P843gBX+IJWTyPg0cPI9jZWh3tAcmEqE="; }; vendorHash = "sha256-5XrwVIaQ2dMizx3Pj0dmLkpYwypUVnfxLNxmNsVhVzY="; diff --git a/pkgs/by-name/di/diffoci/package.nix b/pkgs/by-name/di/diffoci/package.nix index 26ef0709ec25..7f3a5aa322e6 100644 --- a/pkgs/by-name/di/diffoci/package.nix +++ b/pkgs/by-name/di/diffoci/package.nix @@ -9,16 +9,16 @@ buildGoModule rec { pname = "diffoci"; - version = "0.1.5"; + version = "0.1.6"; src = fetchFromGitHub { owner = "reproducible-containers"; repo = "diffoci"; rev = "v${version}"; - hash = "sha256-ZVWnfg5uWYuqsNd4X6t1gWBGMfdcirSp7QZZDhqAfaI="; + hash = "sha256-rCSLHlHUWS0wEnN8R2v1h+kQ7K62VQPfZmySHGSFZlQ="; }; - vendorHash = "sha256-qb4HvK4UbJbtP/ypeptV/MMbhOu5UZDaGartq/RGpDM="; + vendorHash = "sha256-udVigglpCgdYzJe9vdGZiQepZeOplQjqKB4Za8a+u6k="; ldflags = [ "-s" diff --git a/pkgs/by-name/dr/druid/package.nix b/pkgs/by-name/dr/druid/package.nix index 76101c55a26b..4265d4fe4637 100644 --- a/pkgs/by-name/dr/druid/package.nix +++ b/pkgs/by-name/dr/druid/package.nix @@ -20,11 +20,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "apache-druid"; - version = "31.0.0"; + version = "32.0.0"; src = fetchurl { url = "mirror://apache/druid/${finalAttrs.version}/apache-druid-${finalAttrs.version}-bin.tar.gz"; - hash = "sha256-xppAoKNS/qB8WVMwBPxxHbOy5uDGl3IxrCWV1T+YQkE="; + hash = "sha256-JeHmraWOQNjaVYyhYQesBrwLHAqnqsEG6it6quj3K3I="; }; dontBuild = true; @@ -57,7 +57,7 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall mkdir $out mv * $out - ${optionalString mysqlSupport "ln -s ${mysql_jdbc}/share/java/mysql-connector-java.jar $out/extensions/mysql-metadata-storage"} + ${optionalString mysqlSupport "ln -s ${mysql_jdbc}/share/java/mysql-connector-j.jar $out/extensions/mysql-metadata-storage"} ${finalAttrs.loadExtensions} ${finalAttrs.loadJars} runHook postInstall diff --git a/pkgs/by-name/du/dumbpipe/package.nix b/pkgs/by-name/du/dumbpipe/package.nix index 7951dc3842de..a1176888b5a0 100644 --- a/pkgs/by-name/du/dumbpipe/package.nix +++ b/pkgs/by-name/du/dumbpipe/package.nix @@ -8,17 +8,17 @@ rustPlatform.buildRustPackage rec { pname = "dumbpipe"; - version = "0.25.0"; + version = "0.26.0"; src = fetchFromGitHub { owner = "n0-computer"; repo = "dumbpipe"; rev = "v${version}"; - hash = "sha256-nYM/QAG57491NqTAkqF1p3DeuVKDPvh6MUqYP/gAWyc="; + hash = "sha256-xQHVEJ+EgsrboXbPg7pGXXMjyedSLooqkTt/yYZACSo="; }; useFetchCargoVendor = true; - cargoHash = "sha256-lg/FmeCYL9WVvvEMnkQj1WaxFH+7rBBxgL9zfwSdaVE="; + cargoHash = "sha256-uuY0nh4VHzyM7+cbgyycr5I3IjE0OeQ0eg12qVXe4BQ="; buildInputs = lib.optionals stdenv.hostPlatform.isDarwin ( with darwin.apple_sdk.frameworks; diff --git a/pkgs/by-name/dw/dwarfs/package.nix b/pkgs/by-name/dw/dwarfs/package.nix index a28e1823d129..0d5af34a54b6 100644 --- a/pkgs/by-name/dw/dwarfs/package.nix +++ b/pkgs/by-name/dw/dwarfs/package.nix @@ -33,14 +33,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "dwarfs"; - version = "0.10.2"; + version = "0.11.0"; src = fetchFromGitHub { owner = "mhx"; repo = "dwarfs"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-wQ+6jSf/RWAI7cSRMb1zG09kOiyMM5xiy8yS6tl1ybI="; + hash = "sha256-UOIHtyOGKG0WPwKS1z0agMTvI0RF5sapJ5GoJ7a8+Vs="; }; cmakeFlags = [ diff --git a/pkgs/by-name/dy/dynamodb-local/package.nix b/pkgs/by-name/dy/dynamodb-local/package.nix index 6abdc22cae50..177950548dc2 100644 --- a/pkgs/by-name/dy/dynamodb-local/package.nix +++ b/pkgs/by-name/dy/dynamodb-local/package.nix @@ -27,11 +27,11 @@ let in stdenvNoCC.mkDerivation (finalAttrs: { pname = "dynamodb-local"; - version = "2.5.4"; + version = "2.6.0"; src = fetchurl { - url = "https://d1ni2b6xgvw0s0.cloudfront.net/v2.x/dynamodb_local_2024-12-23.tar.gz"; - hash = "sha256-YLFWH6YUFkLb062at1pjFclId/b0LmBVESWxHqimLJc="; + url = "https://d1ni2b6xgvw0s0.cloudfront.net/v2.x/dynamodb_local_2025-03-13.tar.gz"; + hash = "sha256-mAXZX+L17+z9f3/sMq+O+zLcg7YKGKL72BhhTtS2xuw="; }; sourceRoot = "."; diff --git a/pkgs/by-name/en/enzyme/package.nix b/pkgs/by-name/en/enzyme/package.nix index c9401596663a..9872a0f77d2a 100644 --- a/pkgs/by-name/en/enzyme/package.nix +++ b/pkgs/by-name/en/enzyme/package.nix @@ -44,6 +44,9 @@ llvmPackages.stdenv.mkDerivation rec { description = "High-performance automatic differentiation of LLVM and MLIR"; maintainers = with lib.maintainers; [ kiranshila ]; platforms = lib.platforms.all; - license = lib.licenses.asl20-llvm; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; }; } diff --git a/pkgs/by-name/et/etterna/fix-download-manager.patch b/pkgs/by-name/et/etterna/fix-download-manager.patch new file mode 100644 index 000000000000..432eaa73db1e --- /dev/null +++ b/pkgs/by-name/et/etterna/fix-download-manager.patch @@ -0,0 +1,16 @@ +diff --git a/src/Etterna/Singletons/DownloadManager.cpp b/src/Etterna/Singletons/DownloadManager.cpp +index b42ccd30..3606107d 100644 +--- a/src/Etterna/Singletons/DownloadManager.cpp ++++ b/src/Etterna/Singletons/DownloadManager.cpp +@@ -6265,7 +6265,10 @@ Download::Install() + { + Core::Platform::requestUserAttention(); + Message* msg; +- if (!SongManager::InstallSmzip(m_TempFileName)) ++ ++ auto path = FILEMAN->ResolvePath(m_TempFileName); ++ ++ if (!SongManager::InstallSmzip(path)) + msg = new Message("DownloadFailed"); + else + msg = new Message("PackDownloaded"); diff --git a/pkgs/by-name/et/etterna/package.nix b/pkgs/by-name/et/etterna/package.nix new file mode 100644 index 000000000000..7221ced0f88d --- /dev/null +++ b/pkgs/by-name/et/etterna/package.nix @@ -0,0 +1,109 @@ +{ + lib, + stdenv, + fetchFromGitHub, + makeDesktopItem, + copyDesktopItems, + # deps + cmake, + pkg-config, + openssl, + libGLU, + xorg, + alsa-lib, + libjack2, + libpulseaudio, + libogg, + sse2neon, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "etterna"; + version = "0.74.3"; + + src = fetchFromGitHub { + owner = "etternagame"; + repo = "etterna"; + tag = "v${finalAttrs.version}"; + hash = "sha256-zzCk6axISswfTAk7rRha5HFzIHQ0AjpAZyAWzH+Cn1s="; + }; + + patches = [ ./fix-download-manager.patch ]; + + nativeBuildInputs = [ + cmake + pkg-config + + copyDesktopItems + ]; + + buildInputs = [ + openssl + alsa-lib + libjack2 + libpulseaudio + libGLU + libogg + sse2neon + xorg.libXinerama + xorg.libXrandr + xorg.libX11 + xorg.libXext # Needed for DPMS + xorg.libXvMC + ]; + + desktopItems = [ + (makeDesktopItem { + name = "etterna"; + desktopName = "Etterna"; + genericName = "Rhythm and dance game"; + icon = "etterna"; + tryExec = "etterna"; + exec = "etterna"; + categories = [ + "Application" + "Game" + "ArcadeGame" + ]; + comment = "A cross-platform rhythm video game."; + terminal = false; + }) + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/{bin,share/etterna} + mkdir -p $out/share/applications + # copy select necessary game files into virtual fs + cp -r /build/source/{Announcers,Assets,BGAnimations,BackgroundEffects,BackgroundTransitions,Data,GameTools,NoteSkins,Scripts,Themes} "$out/share/etterna" + + # copy binary + cp /build/source/Etterna $out/bin/.etterna-unwrapped + + # Install the Icon + install -Dm644 /build/source/Docs/images/etterna-logo-light.svg "$out/share/icons/hicolor/scalable/apps/etterna.svg" + + # wacky insertion of wrapper directly into phase, so that $out is set + cat > $out/bin/etterna << EOF + #!${stdenv.shell} + export ETTERNA_ROOT_DIR="\$HOME/.local/share/etterna" + export ETTERNA_ADDITIONAL_ROOT_DIRS="$out/share/etterna" + echo "HOME: \$HOME" + echo "PWD: \$(pwd)" + echo "ETTERNA_ADDITIONAL_ROOT_DIRS: \$ETTERNA_ADDITIONAL_ROOT_DIRS" + exec $out/bin/.etterna-unwrapped "\$@" + EOF + chmod +x $out/bin/etterna + runHook postInstall + ''; + + cmakeFlags = [ "-D WITH_CRASHPAD=OFF" ]; + + meta = { + description = "Advanced cross-platform rhythm game focused on keyboard play"; + homepage = "https://etternaonline.com"; + changelog = "https://github.com/etternagame/etterna/release/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ alikindsys ]; + mainProgram = "etterna"; + }; +}) diff --git a/pkgs/by-name/ex/exabgp/package.nix b/pkgs/by-name/ex/exabgp/package.nix index 28128bc5b102..a604c08427c2 100644 --- a/pkgs/by-name/ex/exabgp/package.nix +++ b/pkgs/by-name/ex/exabgp/package.nix @@ -8,14 +8,14 @@ python3.pkgs.buildPythonApplication rec { pname = "exabgp"; - version = "4.2.22"; + version = "4.2.25"; format = "pyproject"; src = fetchFromGitHub { owner = "Exa-Networks"; repo = "exabgp"; tag = version; - hash = "sha256-PrdCAmefKCBmbBFp04KiQGSsZZ4KNFk/ZtMedh9oow4="; + hash = "sha256-YBxRDcm4Qt44W3lBHDwdvZq2pXEujbqJDh24JbXthMg="; }; nativeBuildInputs = with python3.pkgs; [ @@ -39,7 +39,7 @@ python3.pkgs.buildPythonApplication rec { meta = with lib; { description = "BGP swiss army knife of networking"; homepage = "https://github.com/Exa-Networks/exabgp"; - changelog = "https://github.com/Exa-Networks/exabgp/blob/${src.rev}/CHANGELOG.rst"; + changelog = "https://github.com/Exa-Networks/exabgp/blob/${src.tag}/CHANGELOG.rst"; license = licenses.bsd3; maintainers = with maintainers; [ hexa diff --git a/pkgs/by-name/ex/example-robot-data/package.nix b/pkgs/by-name/ex/example-robot-data/package.nix index 4b649a847156..35483310bff3 100644 --- a/pkgs/by-name/ex/example-robot-data/package.nix +++ b/pkgs/by-name/ex/example-robot-data/package.nix @@ -11,14 +11,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "example-robot-data"; - version = "4.2.0"; + version = "4.3.0"; src = fetchFromGitHub { owner = "Gepetto"; repo = "example-robot-data"; rev = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-IRmqeaN0EaIjYaibTEAR8KhixoNQsl6YydbGQRinP6w="; + hash = "sha256-702+hR8YzxfHBZYF2Q//4gRF/cx4kdQ1oNHtnYL5xp0="; }; outputs = [ diff --git a/pkgs/by-name/ex/expr/package.nix b/pkgs/by-name/ex/expr/package.nix index 03033aab3788..9997e115f631 100644 --- a/pkgs/by-name/ex/expr/package.nix +++ b/pkgs/by-name/ex/expr/package.nix @@ -6,18 +6,18 @@ buildGoModule rec { pname = "expr"; - version = "1.16.9"; + version = "1.17.0"; src = fetchFromGitHub { owner = "expr-lang"; repo = "expr"; rev = "v${version}"; - hash = "sha256-AyFL+XHxitueAadx1M/xWqeittDCQ/hzsE/fUzt75yI="; + hash = "sha256-D5hMnihKcSXQUII9L0UmC/fMuFuyqBrgR4yXbYvakn0="; }; sourceRoot = "${src.name}/repl"; - vendorHash = "sha256-FiXxplt4w7M0cZz46kdjYuKHailW2cnLOj0jkA9w1RM="; + vendorHash = "sha256-YtYeAJI7J1nalVt4Phl06Xe/8YdU6egbMjYfbo91b/0="; ldflags = [ "-s" diff --git a/pkgs/by-name/fa/fake-gcs-server/package.nix b/pkgs/by-name/fa/fake-gcs-server/package.nix index 62f9401562a7..b0fdb2b1547f 100644 --- a/pkgs/by-name/fa/fake-gcs-server/package.nix +++ b/pkgs/by-name/fa/fake-gcs-server/package.nix @@ -18,6 +18,11 @@ buildGoModule rec { vendorHash = "sha256-oTJ4DCsDazo58ozsAKI0BG7rxfF8oeiIl6vQpRng+LM="; + # Unit tests fail to start the emulator server in some environments (e.g. Hydra) for some reason. + # + # Disabling to avoid flakiness. + doCheck = false; + passthru = { updateScript = nix-update-script { }; }; diff --git a/pkgs/by-name/fc/fcft/package.nix b/pkgs/by-name/fc/fcft/package.nix index 7c60607f2f0c..be0327dcc688 100644 --- a/pkgs/by-name/fc/fcft/package.nix +++ b/pkgs/by-name/fc/fcft/package.nix @@ -33,14 +33,14 @@ in stdenv.mkDerivation rec { pname = "fcft"; - version = "3.2.0"; + version = "3.3.1"; src = fetchFromGitea { domain = "codeberg.org"; owner = "dnkl"; repo = "fcft"; rev = version; - hash = "sha256-VMNjTOil50/GslSzZnBPkSoy0Vg0729ndaEAeXk00GI="; + hash = "sha256:08fr6zcqk4qp1k3r0di6v60qfyd3q5k9jnxzlsx2p1lh0nils0xa"; }; depsBuildBuild = [ pkg-config ]; diff --git a/pkgs/by-name/fi/firezone-gateway/package.nix b/pkgs/by-name/fi/firezone-gateway/package.nix new file mode 100644 index 000000000000..0e6010b3b92d --- /dev/null +++ b/pkgs/by-name/fi/firezone-gateway/package.nix @@ -0,0 +1,45 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, +}: +rustPlatform.buildRustPackage rec { + pname = "firezone-gateway"; + version = "1.4.5"; + src = fetchFromGitHub { + owner = "firezone"; + repo = "firezone"; + tag = "gateway-${version}"; + hash = "sha256-2MDQyMCQIqV1Kbem53jnE8DGUZ6SrZqp2LpGJXvLBgA="; + }; + + useFetchCargoVendor = true; + cargoHash = "sha256-Yz9xuH8Eph1pzv0siTpvdSXZLj/AjS5PR06CitK9NdE="; + sourceRoot = "${src.name}/rust"; + buildAndTestSubdir = "gateway"; + RUSTFLAGS = "--cfg system_certs"; + + # Required to remove profiling arguments which conflict with this builder + postPatch = '' + rm .cargo/config.toml + ''; + + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "gateway-(.*)" + ]; + }; + + meta = { + description = "WireGuard tunnel server for the Firezone zero-trust access platform"; + homepage = "https://github.com/firezone/firezone"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; + mainProgram = "firezone-gateway"; + }; +} diff --git a/pkgs/by-name/fi/firezone-gui-client/package.nix b/pkgs/by-name/fi/firezone-gui-client/package.nix new file mode 100644 index 000000000000..c708a417321b --- /dev/null +++ b/pkgs/by-name/fi/firezone-gui-client/package.nix @@ -0,0 +1,166 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, + stdenvNoCC, + pkg-config, + openssl, + dbus, + zenity, + cargo-tauri, + gdk-pixbuf, + glib, + gobject-introspection, + gtk3, + kdePackages, + libsoup_3, + libayatana-appindicator, + webkitgtk_4_1, + wrapGAppsHook3, + pnpm_9, + nodejs, + makeDesktopItem, + copyDesktopItems, +}: +let + version = "1.4.8"; + src = fetchFromGitHub { + owner = "firezone"; + repo = "firezone"; + tag = "gui-client-${version}"; + hash = "sha256-YaT/AdnBLDmoda8CGHG/Nc6RFAW8zqr4fOnTdeARlUA="; + }; + + frontend = stdenvNoCC.mkDerivation rec { + pname = "firezone-gui-client-frontend"; + inherit version src; + + pnpmDeps = pnpm_9.fetchDeps { + inherit pname version; + src = "${src}/rust/gui-client"; + hash = "sha256-9ywC920EF6UxkXHs+0WWaU8fr5J35/C+0nNGbSVHESE="; + }; + pnpmRoot = "rust/gui-client"; + + nativeBuildInputs = [ + pnpm_9.configHook + nodejs + ]; + + buildPhase = '' + runHook preBuild + + cd $pnpmRoot + cp node_modules/flowbite/dist/flowbite.min.js src/ + pnpm tailwindcss -i src/input.css -o src/output.css + node --max_old_space_size=1024000 ./node_modules/vite/bin/vite.js build + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + cp -r dist $out + + runHook postInstall + ''; + }; +in +rustPlatform.buildRustPackage rec { + pname = "firezone-gui-client"; + inherit version src; + + useFetchCargoVendor = true; + cargoHash = "sha256-Yz9xuH8Eph1pzv0siTpvdSXZLj/AjS5PR06CitK9NdE="; + sourceRoot = "${src.name}/rust"; + buildAndTestSubdir = "gui-client"; + RUSTFLAGS = "--cfg system_certs"; + + nativeBuildInputs = [ + cargo-tauri.hook + pkg-config + wrapGAppsHook3 + copyDesktopItems + ]; + + buildInputs = [ + openssl + dbus + gdk-pixbuf + glib + gobject-introspection + gtk3 + libsoup_3 + + libayatana-appindicator + webkitgtk_4_1 + ]; + + # Required to remove profiling arguments which conflict with this builder + postPatch = '' + rm .cargo/config.toml + ln -s ${frontend} gui-client/dist + ''; + + # Tries to compile apple specific crates due to workspace dependencies, + # not sure if this can be worked around + doCheck = false; + + desktopItems = [ + # Additional desktop item to associate deep-links + (makeDesktopItem { + name = "firezone-client-gui-deep-link"; + exec = "firezone-client-gui open-deep-link %U"; + icon = "firezone-client-gui"; + comment = meta.description; + desktopName = "Firezone GUI Client"; + categories = [ "Network" ]; + noDisplay = true; + mimeTypes = [ + "x-scheme-handler/firezone-fd0020211111" + ]; + }) + ]; + + preFixup = '' + gappsWrapperArgs+=( + # Otherwise blank screen, see https://github.com/tauri-apps/tauri/issues/9304 + --set WEBKIT_DISABLE_DMABUF_RENDERER 1 + --prefix PATH ":" ${ + lib.makeBinPath [ + zenity + kdePackages.kdialog + ] + } + --prefix LD_LIBRARY_PATH ":" ${ + lib.makeLibraryPath [ + libayatana-appindicator + ] + } + ) + ''; + + passthru = { + inherit frontend; + + updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "gui-client-(.*)" + ]; + }; + }; + + meta = { + description = "GUI client for the Firezone zero-trust access platform"; + homepage = "https://github.com/firezone/firezone"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; + mainProgram = "firezone-gui-client"; + }; +} diff --git a/pkgs/by-name/fi/firezone-headless-client/package.nix b/pkgs/by-name/fi/firezone-headless-client/package.nix new file mode 100644 index 000000000000..fa8ad4e8718d --- /dev/null +++ b/pkgs/by-name/fi/firezone-headless-client/package.nix @@ -0,0 +1,50 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, +}: +rustPlatform.buildRustPackage rec { + pname = "firezone-headless-client"; + version = "1.4.4"; + src = fetchFromGitHub { + owner = "firezone"; + repo = "firezone"; + tag = "headless-client-${version}"; + hash = "sha256-2MDQyMCQIqV1Kbem53jnE8DGUZ6SrZqp2LpGJXvLBgA="; + }; + + useFetchCargoVendor = true; + cargoHash = "sha256-Yz9xuH8Eph1pzv0siTpvdSXZLj/AjS5PR06CitK9NdE="; + sourceRoot = "${src.name}/rust"; + buildAndTestSubdir = "headless-client"; + RUSTFLAGS = "--cfg system_certs"; + + # Required to remove profiling arguments which conflict with this builder + postPatch = '' + rm .cargo/config.toml + ''; + + # Required to run tests + preCheck = '' + export XDG_RUNTIME_DIR=$(mktemp -d) + ''; + + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "headless-client-(.*)" + ]; + }; + + meta = { + description = "CLI client for the Firezone zero-trust access platform"; + homepage = "https://github.com/firezone/firezone"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; + mainProgram = "firezone-headless-client"; + }; +} diff --git a/pkgs/by-name/fi/firezone-relay/package.nix b/pkgs/by-name/fi/firezone-relay/package.nix new file mode 100644 index 000000000000..45dac6e2415a --- /dev/null +++ b/pkgs/by-name/fi/firezone-relay/package.nix @@ -0,0 +1,37 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, +}: +rustPlatform.buildRustPackage rec { + pname = "firezone-relay"; + version = "0-unstable-2025-03-15"; + src = fetchFromGitHub { + owner = "firezone"; + repo = "firezone"; + rev = "09fb5f927410503b0d6e7fc6cf6a2ba06cb5a281"; + hash = "sha256-qDeXAzOeTenL6OIsun/rEfPMo62mQT7RhJEmqemzMsM="; + }; + + useFetchCargoVendor = true; + cargoHash = "sha256-uqy4GgYaSX2kM4a37093lHmhvOtNUhkEs6/ZS1bjuYo="; + sourceRoot = "${src.name}/rust"; + buildAndTestSubdir = "relay"; + RUSTFLAGS = "--cfg system_certs"; + + # Required to remove profiling arguments which conflict with this builder + postPatch = '' + rm .cargo/config.toml + ''; + + meta = { + description = "STUN/TURN server for the Firezone zero-trust access platform"; + homepage = "https://github.com/firezone/firezone"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ + oddlama + patrickdag + ]; + mainProgram = "firezone-relay"; + }; +} diff --git a/pkgs/by-name/fi/firezone-server-api/package.nix b/pkgs/by-name/fi/firezone-server-api/package.nix new file mode 100644 index 000000000000..010269382da8 --- /dev/null +++ b/pkgs/by-name/fi/firezone-server-api/package.nix @@ -0,0 +1,4 @@ +{ firezone-server }: +firezone-server.override { + mixReleaseName = "api"; +} diff --git a/pkgs/by-name/fi/firezone-server-domain/package.nix b/pkgs/by-name/fi/firezone-server-domain/package.nix new file mode 100644 index 000000000000..bba7de68004e --- /dev/null +++ b/pkgs/by-name/fi/firezone-server-domain/package.nix @@ -0,0 +1,4 @@ +{ firezone-server }: +firezone-server.override { + mixReleaseName = "domain"; +} diff --git a/pkgs/by-name/fi/firezone-server-web/package.nix b/pkgs/by-name/fi/firezone-server-web/package.nix new file mode 100644 index 000000000000..79d430b356b1 --- /dev/null +++ b/pkgs/by-name/fi/firezone-server-web/package.nix @@ -0,0 +1,4 @@ +{ firezone-server }: +firezone-server.override { + mixReleaseName = "web"; +} diff --git a/pkgs/by-name/fi/firezone-server/0000-add-mua.patch b/pkgs/by-name/fi/firezone-server/0000-add-mua.patch new file mode 100644 index 000000000000..68d8a9ba47ab --- /dev/null +++ b/pkgs/by-name/fi/firezone-server/0000-add-mua.patch @@ -0,0 +1,67 @@ +diff --git a/elixir/apps/domain/lib/domain/config/definitions.ex b/elixir/apps/domain/lib/domain/config/definitions.ex +index 8cd2e8d0f..92e18b10b 100644 +--- a/elixir/apps/domain/lib/domain/config/definitions.ex ++++ b/elixir/apps/domain/lib/domain/config/definitions.ex +@@ -584,6 +590,7 @@ defmodule Domain.Config.Definitions do + Swoosh.Adapters.Mailgun, + Swoosh.Adapters.Mailjet, + Swoosh.Adapters.Mandrill, ++ Swoosh.Adapters.Mua, + Swoosh.Adapters.Postmark, + Swoosh.Adapters.ProtonBridge, + Swoosh.Adapters.SMTP, +diff --git a/elixir/config/runtime.exs b/elixir/config/runtime.exs +index 15037e0a3..475c4ddfb 100644 +--- a/elixir/config/runtime.exs ++++ b/elixir/config/runtime.exs +@@ -226,8 +228,15 @@ if config_env() == :prod do + config :domain, + Domain.Mailer, + [ +- adapter: compile_config!(:outbound_email_adapter), +- from_email: compile_config!(:outbound_email_from) ++ adapter: compile_config!(:outbound_email_adapter), ++ from_email: compile_config!(:outbound_email_from), ++ protocol: String.to_atom(System.get_env("OUTBOUND_EMAIL_SMTP_PROTOCOL")), ++ relay: System.get_env("OUTBOUND_EMAIL_SMTP_HOST"), ++ port: String.to_integer(System.get_env("OUTBOUND_EMAIL_SMTP_PORT")), ++ auth: [ ++ username: System.get_env("OUTBOUND_EMAIL_SMTP_USERNAME"), ++ password: System.get_env("OUTBOUND_EMAIL_SMTP_PASSWORD") ++ ] + ] ++ compile_config!(:outbound_email_adapter_opts) + + config :workos, WorkOS.Client, +diff --git a/elixir/mix.exs b/elixir/mix.exs +index 12782d631..dee1245d2 100644 +--- a/elixir/mix.exs ++++ b/elixir/mix.exs +@@ -47,7 +47,9 @@ defmodule Firezone.MixProject do + # Formatter doesn't track dependencies of children applications + {:phoenix, "~> 1.7.0"}, + {:phoenix_live_view, "~> 1.0.0-rc.0"}, +- {:floki, "~> 0.37.0"} ++ {:floki, "~> 0.37.0"}, ++ {:mua, "~> 0.2.0"}, ++ {:mail, "~> 0.3.0"} + ] + end + +diff --git a/elixir/mix.lock b/elixir/mix.lock +index 8c4b65959..3d2f9faca 100644 +--- a/elixir/mix.lock ++++ b/elixir/mix.lock +@@ -50,11 +50,13 @@ + "junit_formatter": {:hex, :junit_formatter, "3.4.0", "d0e8db6c34dab6d3c4154c3b46b21540db1109ae709d6cf99ba7e7a2ce4b1ac2", [:mix], [], "hexpm", "bb36e2ae83f1ced6ab931c4ce51dd3dbef1ef61bb4932412e173b0cfa259dacd"}, + "libcluster": {:hex, :libcluster, "3.3.3", "a4f17721a19004cfc4467268e17cff8b1f951befe428975dd4f6f7b84d927fe0", [:mix], [{:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "7c0a2275a0bb83c07acd17dab3c3bfb4897b145106750eeccc62d302e3bdfee5"}, + "logger_json": {:hex, :logger_json, "6.2.0", "13e2e9f5f7b195865c5c3ef3d296c3ad50e7ecb038d899433702a79e979b91d7", [:mix], [{:ecto, "~> 3.11", [hex: :ecto, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: true]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "98366d02bedbb56e41b25a6d248d566d4f4bc224bae2b1e982df00ed04ba9219"}, ++ "mail": {:hex, :mail, "0.3.1", "cb0a14e4ed8904e4e5a08214e686ccf6f9099346885db17d8c309381f865cc5c", [:mix], [], "hexpm", "1db701e89865c1d5fa296b2b57b1cd587587cca8d8a1a22892b35ef5a8e352a6"}, + "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, + "mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"}, + "mimerl": {:hex, :mimerl, "1.3.0", "d0cd9fc04b9061f82490f6581e0128379830e78535e017f7780f37fea7545726", [:rebar3], [], "hexpm", "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"}, + "mint": {:hex, :mint, "1.6.2", "af6d97a4051eee4f05b5500671d47c3a67dac7386045d87a904126fd4bbcea2e", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "5ee441dffc1892f1ae59127f74afe8fd82fda6587794278d924e4d90ea3d63f9"}, + "mix_audit": {:hex, :mix_audit, "2.1.4", "0a23d5b07350cdd69001c13882a4f5fb9f90fbd4cbf2ebc190a2ee0d187ea3e9", [:make, :mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:yaml_elixir, "~> 2.11", [hex: :yaml_elixir, repo: "hexpm", optional: false]}], "hexpm", "fd807653cc8c1cada2911129c7eb9e985e3cc76ebf26f4dd628bb25bbcaa7099"}, ++ "mua": {:hex, :mua, "0.2.4", "a9172ab0a1ac8732cf2699d739ceac3febcb9b4ffc540260ad2e32c0b6632af9", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}], "hexpm", "e7e4dacd5ad65f13e3542772e74a159c00bd2d5579e729e9bb72d2c73a266fb7"}, + "multipart": {:hex, :multipart, "0.4.0", "634880a2148d4555d050963373d0e3bbb44a55b2badd87fa8623166172e9cda0", [:mix], [{:mime, "~> 1.2 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}], "hexpm", "3c5604bc2fb17b3137e5d2abdf5dacc2647e60c5cc6634b102cf1aef75a06f0a"}, + "nimble_csv": {:hex, :nimble_csv, "1.2.0", "4e26385d260c61eba9d4412c71cea34421f296d5353f914afe3f2e71cce97722", [:mix], [], "hexpm", "d0628117fcc2148178b034044c55359b26966c6eaa8e2ce15777be3bbc91b12a"}, + "nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"}, diff --git a/pkgs/by-name/fi/firezone-server/package.nix b/pkgs/by-name/fi/firezone-server/package.nix new file mode 100644 index 000000000000..3e09361bf1bb --- /dev/null +++ b/pkgs/by-name/fi/firezone-server/package.nix @@ -0,0 +1,90 @@ +{ + lib, + nixosTests, + fetchFromGitHub, + beamPackages, + gitMinimal, + pnpm_9, + nodejs, + tailwindcss_3, + esbuild, + + mixReleaseName ? "domain", # "domain" "web" or "api" +}: + +beamPackages.mixRelease rec { + pname = "firezone-server-${mixReleaseName}"; + version = "0-unstable-2025-03-15"; + + src = "${ + fetchFromGitHub { + owner = "firezone"; + repo = "firezone"; + rev = "09fb5f927410503b0d6e7fc6cf6a2ba06cb5a281"; + hash = "sha256-1CZBFhOwX0DfXykPQ9tzn4tHg2tSnByXEPtlZleHK5k="; + + # This is necessary to allow sending mails via SMTP, as the default + # SMTP adapter is current broken: https://github.com/swoosh/swoosh/issues/785 + postFetch = '' + ${lib.getExe gitMinimal} -C $out apply ${./0000-add-mua.patch} + ''; + } + }/elixir"; + + pnpmDeps = pnpm_9.fetchDeps { + inherit pname version; + src = "${src}/apps/web/assets"; + hash = "sha256-ejyBppFtKeyVhAWmssglbpLleOnbw9d4B+iM5Vtx47A="; + }; + pnpmRoot = "apps/web/assets"; + + preBuild = '' + cat >> config/config.exs <> config/runtime.exs < +Date: Wed, 19 Mar 2025 09:39:04 +0100 +Subject: [PATCH] Fix concurrent setlocale() in string escape tests + +In our C++ implementation, these tests were run serially. As pointed out in +https://github.com/fish-shell/fish-shell/issues/11254#issuecomment-2735623229 +we run them in parallel now, which means that one test could be changing +the global locale used by another. + +In theory this could be fine because all tests are setting setting the +global locale to the same thing but the existence of a lock suggests that +setlocale() is not guaranteed to be atomic, so it's possible that another +thread uses a temporarily-invalid locale. + +Fixes #11254 +--- + src/tests/string_escape.rs | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +diff --git a/src/tests/string_escape.rs b/src/tests/string_escape.rs +index ba8ee7534ebf..4428d679cd35 100644 +--- a/src/tests/string_escape.rs ++++ b/src/tests/string_escape.rs +@@ -1,3 +1,5 @@ ++use std::sync::MutexGuard; ++ + use crate::common::{ + escape_string, str2wcstring, unescape_string, wcs2string, EscapeFlags, EscapeStringStyle, + UnescapeStringStyle, ENCODE_DIRECT_BASE, ENCODE_DIRECT_END, +@@ -10,21 +12,21 @@ use rand::{Rng, RngCore}; + + /// wcs2string is locale-dependent, so ensure we have a multibyte locale + /// before using it in a test. +-fn setlocale() { +- let _guard = LOCALE_LOCK.lock().unwrap(); ++fn setlocale() -> MutexGuard<'static, ()> { ++ let guard = LOCALE_LOCK.lock().unwrap(); + + #[rustfmt::skip] + const UTF8_LOCALES: &[&str] = &[ + "C.UTF-8", "en_US.UTF-8", "en_GB.UTF-8", "de_DE.UTF-8", "C.utf8", "UTF-8", + ]; + if crate::libc::MB_CUR_MAX() > 1 { +- return; ++ return guard; + } + for locale in UTF8_LOCALES { + let locale = std::ffi::CString::new(locale.to_owned()).unwrap(); + unsafe { libc::setlocale(libc::LC_CTYPE, locale.as_ptr()) }; + if crate::libc::MB_CUR_MAX() > 1 { +- return; ++ return guard; + } + } + panic!("No UTF-8 locale found"); +@@ -100,7 +102,7 @@ fn test_escape_var() { + } + + fn escape_test(escape_style: EscapeStringStyle, unescape_style: UnescapeStringStyle) { +- setlocale(); ++ let _locale_guard = setlocale(); + let seed: u128 = 92348567983274852905629743984572; + let mut rng = get_seeded_rng(seed); + +@@ -174,7 +176,7 @@ fn str2hex(input: &[u8]) -> String { + /// string comes back through double conversion. + #[test] + fn test_convert() { +- setlocale(); ++ let _locale_guard = setlocale(); + let seed = get_rng_seed(); + let mut rng = get_seeded_rng(seed); + let mut origin = Vec::new(); diff --git a/pkgs/by-name/fi/fish/package.nix b/pkgs/by-name/fi/fish/package.nix index c26c23de32ff..d0255f5dd6f1 100644 --- a/pkgs/by-name/fi/fish/package.nix +++ b/pkgs/by-name/fi/fish/package.nix @@ -188,6 +188,10 @@ stdenv.mkDerivation (finalAttrs: { # * # * ./nix-darwin-path.patch + + # remove 4.0.2 + # https://github.com/fish-shell/fish-shell/issues/11254 + ./1d78c8bd4295262a3118f478e6b3a7c7536fa282.patch ]; # Fix FHS paths in tests @@ -317,16 +321,12 @@ stdenv.mkDerivation (finalAttrs: { darwin.system_cmds ]; + # we target the top-level make target which runs all the cmake/ctest + # tests, including test_cargo-test checkTarget = "fish_run_tests"; preCheck = '' export TERMINFO="${ncurses}/share/terminfo" ''; - checkFlags = lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ - # thread 'tests::string_escape::test_escape_random_url' panicked at src/tests/string_escape.rs:122:9: - # assertion `left == right` failed: Escaped and then unescaped string ... but got back a different string ... - # https://github.com/fish-shell/fish-shell/issues/11254 - "--skip=tests::string_escape::test_escape_random_url" - ]; nativeInstallCheckInputs = [ versionCheckHook diff --git a/pkgs/by-name/fl/flashmq/package.nix b/pkgs/by-name/fl/flashmq/package.nix index be41bb6d0c21..affa56aaedea 100644 --- a/pkgs/by-name/fl/flashmq/package.nix +++ b/pkgs/by-name/fl/flashmq/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "flashmq"; - version = "1.20.0"; + version = "1.21.0"; src = fetchFromGitHub { owner = "halfgaar"; repo = "FlashMQ"; tag = "v${finalAttrs.version}"; - hash = "sha256-JvR03keUJkqVdjPC8q3DCFoDWzqHNozj4rZq9rnuexM="; + hash = "sha256-/nSNWmSR16V1+nXOMIx+TtxtNS9Xk3BJSY4ps+6TwG8="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/fl/flyctl/package.nix b/pkgs/by-name/fl/flyctl/package.nix index 8b84708ad24e..34c198aaef88 100644 --- a/pkgs/by-name/fl/flyctl/package.nix +++ b/pkgs/by-name/fl/flyctl/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "flyctl"; - version = "0.3.87"; + version = "0.3.89"; src = fetchFromGitHub { owner = "superfly"; repo = "flyctl"; rev = "v${version}"; - hash = "sha256-zFRNOXk2Yw+AjUt6yNdJ5YYG5xwBYhgpI7M9GZAZOpc="; + hash = "sha256-sAgN45f+RS2uLLP6biym2oT7pW+nyA0lIIpm/pFAPuU="; }; vendorHash = "sha256-HWSNZQxIR9GnBHpJVkCj+5iIrwqAI3GKYLEmq0GP9lU="; diff --git a/pkgs/by-name/fo/foot/package.nix b/pkgs/by-name/fo/foot/package.nix index 6c61b9d94392..b667d212b46b 100644 --- a/pkgs/by-name/fo/foot/package.nix +++ b/pkgs/by-name/fo/foot/package.nix @@ -27,7 +27,7 @@ }: let - version = "1.20.2"; + version = "1.21.0"; # build stimuli file for PGO build and the script to generate it # independently of the foot's build, so we can cache the result @@ -104,7 +104,7 @@ stdenv.mkDerivation { owner = "dnkl"; repo = "foot"; rev = version; - hash = "sha256-tnBoRRKHcuvBSnqvJ/772UWuepvpUiSg6t+gx4MZ0VQ="; + hash = "sha256:19hkw4g2l00wasmk5dn34rf3bhqh6zbwwhvz98bdcv90p761jws4"; }; separateDebugInfo = true; diff --git a/pkgs/by-name/fo/forgejo/lts.nix b/pkgs/by-name/fo/forgejo/lts.nix index f3fcd44fbb28..5b42631ffce4 100644 --- a/pkgs/by-name/fo/forgejo/lts.nix +++ b/pkgs/by-name/fo/forgejo/lts.nix @@ -1,8 +1,8 @@ import ./generic.nix { - version = "7.0.13"; - hash = "sha256-mqpqxr5HE0CoDZkTIdZQEcWFywVw4HVwvPfrdXKp8tk="; + version = "7.0.14"; + hash = "sha256-DtGJStiXuJl0m4K6+DNxsBBaj9dB4bEmMqpGS3WGPD4="; npmDepsHash = "sha256-R78/L6HS8pUNccrctBJ2E8ndS/RBHd+mTvl0JPoxr8Q="; - vendorHash = "sha256-FyFmuJQqe+MUjhXEoB5VlSmTLSsCVbigz4H3jaQhKrE="; + vendorHash = "sha256-18tJJ3dBVR9d7PFBRFtOVVtZAcdKucmbOTXHdk7U89s="; lts = true; nixUpdateExtraArgs = [ "--override-filename" diff --git a/pkgs/by-name/ga/gancio/package.nix b/pkgs/by-name/ga/gancio/package.nix index d855111a6805..a668e248d34c 100644 --- a/pkgs/by-name/ga/gancio/package.nix +++ b/pkgs/by-name/ga/gancio/package.nix @@ -19,14 +19,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "gancio"; - version = "1.24.0"; + version = "1.24.4"; src = fetchFromGitLab { domain = "framagit.org"; owner = "les"; repo = "gancio"; rev = "v${finalAttrs.version}"; - hash = "sha256-PczJFh4tODwtocDSY0UHok8tgBmVvSVHDRjLG6Cor5s="; + hash = "sha256-LbXTzptkAYQ/86DtHHJvZP45YMVcqyrK4RD7AYvwGoM="; }; offlineCache = fetchYarnDeps { diff --git a/pkgs/by-name/gb/gbsplay/package.nix b/pkgs/by-name/gb/gbsplay/package.nix index 6a115a37aa42..cf77782b3646 100644 --- a/pkgs/by-name/gb/gbsplay/package.nix +++ b/pkgs/by-name/gb/gbsplay/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "gbsplay"; - version = "0.0.98"; + version = "0.0.99"; src = fetchFromGitHub { owner = "mmitch"; repo = "gbsplay"; rev = finalAttrs.version; - hash = "sha256-IgTDkN8EUh1gM5FehAPzlqb1tF9+LSM/Q1ccdyGUUgM="; + hash = "sha256-I2T77HGuzp6IYQOd8RSaWYCXy8fwz7PtMxtO5IoAzdw="; }; configureFlags = [ diff --git a/pkgs/by-name/gh/gh/package.nix b/pkgs/by-name/gh/gh/package.nix index 0604441b1a11..4d27294ce455 100644 --- a/pkgs/by-name/gh/gh/package.nix +++ b/pkgs/by-name/gh/gh/package.nix @@ -10,16 +10,16 @@ buildGoModule rec { pname = "gh"; - version = "2.68.1"; + version = "2.69.0"; src = fetchFromGitHub { owner = "cli"; repo = "cli"; tag = "v${version}"; - hash = "sha256-yJwRC25QQKWeRrp0ItovuBCrTla3dezArzFvnkZchFg="; + hash = "sha256-T5H84RH5uBXXNCiyd27ZjDu4g5UBK4yUjZWQAFp3cH0="; }; - vendorHash = "sha256-QmZBdnxcVywCGpaBAZZRO0LDr6WidaFXGpaAkWfn+gs="; + vendorHash = "sha256-BJK8XzCdbbyzj1rEJtnE6hKOy7Q9xSrkicBPzxz9gkw="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/gh/ghostfolio/package.nix b/pkgs/by-name/gh/ghostfolio/package.nix index ed65c1e152cc..ac576ccbc115 100644 --- a/pkgs/by-name/gh/ghostfolio/package.nix +++ b/pkgs/by-name/gh/ghostfolio/package.nix @@ -11,13 +11,13 @@ buildNpmPackage rec { pname = "ghostfolio"; - version = "2.143.0"; + version = "2.146.0"; src = fetchFromGitHub { owner = "ghostfolio"; repo = "ghostfolio"; tag = version; - hash = "sha256-jOIt8JJghXaKsfwgR6aMfaXEHgIalc/gtwkGJ831bWI="; + hash = "sha256-8YZjstzpun+Vbc1ETBf5AwNAOFGyJFftSdyyGsyh6pY="; # 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; @@ -27,7 +27,7 @@ buildNpmPackage rec { ''; }; - npmDepsHash = "sha256-K+SOl7wuxLhEOoM1A7QG3tB1Xiuz+hstiePIDjmzWVA="; + npmDepsHash = "sha256-6aOmDntqp3RPDkgwNwlRgVxoQygIBxMU3VIfYjvG3ho="; nativeBuildInputs = [ prisma diff --git a/pkgs/by-name/gl/globalarrays/package.nix b/pkgs/by-name/gl/globalarrays/package.nix index f7dd20e07688..c0fafce47561 100644 --- a/pkgs/by-name/gl/globalarrays/package.nix +++ b/pkgs/by-name/gl/globalarrays/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { pname = "globalarrays"; - version = "5.9"; + version = "5.9.1"; src = fetchFromGitHub { owner = "GlobalArrays"; repo = "ga"; rev = "v${version}"; - sha256 = "sha256-p4BNwj269FdNXY2rHfJiv5AbB3YB4v+YHXQRXTNnFnE="; + sha256 = "sha256-bMX538yen9cINPCtgf7SUGGsNRJugMrveqXtChHzPkk="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/go/gomi/package.nix b/pkgs/by-name/go/gomi/package.nix index 51a3f85ddd1e..82f16f3de703 100644 --- a/pkgs/by-name/go/gomi/package.nix +++ b/pkgs/by-name/go/gomi/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "gomi"; - version = "1.5.1"; + version = "1.6.0"; src = fetchFromGitHub { owner = "b4b4r07"; repo = "gomi"; tag = "v${version}"; - hash = "sha256-JTmbToVzxFEQLwGVvDKdgKA4dBn6O+L6hDQJvAvvdwA="; + hash = "sha256-FZCvUG6lQH8CFivV/hbIgGQx4FCk1UtreiWXTQVi4+4="; }; - vendorHash = "sha256-znyk+ffDUo1nOWeM5k/WE2EE9FVvLxXyM/dV8KUSioU="; + vendorHash = "sha256-8aw81DKBmgNsQzgtHCsUkok5e5+LeAC8BUijwKVT/0s="; subPackages = [ "." ]; diff --git a/pkgs/by-name/gr/grocy/0001-Define-configs-with-env-vars.patch b/pkgs/by-name/gr/grocy/0001-Define-configs-with-env-vars.patch index 75aa54f9c9c2..13efe8613693 100644 --- a/pkgs/by-name/gr/grocy/0001-Define-configs-with-env-vars.patch +++ b/pkgs/by-name/gr/grocy/0001-Define-configs-with-env-vars.patch @@ -1,17 +1,18 @@ -From 231ee836e357b83cc2fc0a3a977f74839308ec68 Mon Sep 17 00:00:00 2001 -From: Ember Keske -Date: Wed, 2 Aug 2023 06:36:02 +0200 +From b1df18da8735ed8c043e5e63753a6524cce620e1 Mon Sep 17 00:00:00 2001 +From: Chris Moultrie +Date: Tue, 4 Mar 2025 08:20:58 -0500 Subject: [PATCH 1/2] Define configs with env vars --- - app.php | 6 +++--- - services/DatabaseService.php | 2 +- - services/FilesService.php | 2 +- - services/StockService.php | 2 +- - 4 files changed, 6 insertions(+), 6 deletions(-) + app.php | 8 ++++---- + controllers/BaseApiController.php | 2 +- + services/DatabaseService.php | 2 +- + services/FilesService.php | 2 +- + services/StockService.php | 2 +- + 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app.php b/app.php -index bc5b1b3..26f7687 100644 +index 9cdd14e5..c0b30b6e 100644 --- a/app.php +++ b/app.php @@ -12,7 +12,7 @@ use Slim\Views\Blade; @@ -23,7 +24,16 @@ index bc5b1b3..26f7687 100644 require_once __DIR__ . '/config-dist.php'; // For not in own config defined values we use the default ones require_once __DIR__ . '/helpers/ConfigurationValidator.php'; -@@ -64,7 +64,7 @@ $app = AppFactory::create(); +@@ -52,7 +52,7 @@ catch (EInvalidConfig $ex) + } + + // Create data/viewcache folder if it doesn't exist +-$viewcachePath = GROCY_DATAPATH . '/viewcache'; ++$viewcachePath = getenv('GROCY_CACHE_DIR'); + if (!file_exists($viewcachePath)) + { + mkdir($viewcachePath); +@@ -85,7 +85,7 @@ $app = AppFactory::create(); $container = $app->getContainer(); $container->set('view', function (Container $container) { @@ -32,7 +42,7 @@ index bc5b1b3..26f7687 100644 }); $container->set('UrlManager', function (Container $container) -@@ -106,7 +106,7 @@ $errorMiddleware->setDefaultErrorHandler( +@@ -127,7 +127,7 @@ $errorMiddleware->setDefaultErrorHandler( $app->add(new CorsMiddleware($app->getResponseFactory())); @@ -42,7 +52,7 @@ index bc5b1b3..26f7687 100644 ob_clean(); // No response output before here $app->run(); diff --git a/controllers/BaseApiController.php b/controllers/BaseApiController.php -index 5941e348..e5b02af4 100644 +index 5941e348..9283ba93 100644 --- a/controllers/BaseApiController.php +++ b/controllers/BaseApiController.php @@ -162,7 +162,7 @@ class BaseApiController extends BaseController @@ -55,10 +65,10 @@ index 5941e348..e5b02af4 100644 $htmlPurifierConfig->set('Attr.EnableID', true); $htmlPurifierConfig->set('HTML.SafeIframe', true); diff --git a/services/DatabaseService.php b/services/DatabaseService.php -index ba79a73..12a851a 100644 +index c5914e49..c249a3bf 100644 --- a/services/DatabaseService.php +++ b/services/DatabaseService.php -@@ -137,6 +137,6 @@ class DatabaseService +@@ -145,6 +145,6 @@ class DatabaseService return GROCY_DATAPATH . '/grocy_' . $dbSuffix . '.db'; } @@ -67,7 +77,7 @@ index ba79a73..12a851a 100644 } } diff --git a/services/FilesService.php b/services/FilesService.php -index 7d07035..a6dd4b0 100644 +index 113a6478..61568bc6 100644 --- a/services/FilesService.php +++ b/services/FilesService.php @@ -10,7 +10,7 @@ class FilesService extends BaseService @@ -80,18 +90,18 @@ index 7d07035..a6dd4b0 100644 { mkdir($this->StoragePath); diff --git a/services/StockService.php b/services/StockService.php -index 9f034a5..fd3c0b7 100644 +index 2261db4e..cd438942 100644 --- a/services/StockService.php +++ b/services/StockService.php -@@ -1707,7 +1707,7 @@ class StockService extends BaseService - throw new \Exception('No barcode lookup plugin defined'); - } +@@ -1752,7 +1752,7 @@ class StockService extends BaseService -- $path = GROCY_DATAPATH . "/plugins/$pluginName.php"; -+ $path = getenv('GROCY_PLUGIN_DIR') . "/$pluginName.php"; - if (file_exists($path)) + // User plugins take precedence + $standardPluginPath = __DIR__ . "/../plugins/$pluginName.php"; +- $userPluginPath = GROCY_DATAPATH . "/plugins/$pluginName.php"; ++ $userPluginPath = getenv('GROCY_PLUGIN_DIR') . "/$pluginName.php"; + if (file_exists($userPluginPath)) { - require_once $path; + require_once $userPluginPath; -- -2.42.0 +2.47.2 diff --git a/pkgs/by-name/gr/grocy/0002-Remove-check-for-config-file-as-it-s-stored-in-etc-g.patch b/pkgs/by-name/gr/grocy/0002-Remove-check-for-config-file-as-it-s-stored-in-etc-g.patch index 24050f782c48..fd3139ae936e 100644 --- a/pkgs/by-name/gr/grocy/0002-Remove-check-for-config-file-as-it-s-stored-in-etc-g.patch +++ b/pkgs/by-name/gr/grocy/0002-Remove-check-for-config-file-as-it-s-stored-in-etc-g.patch @@ -1,6 +1,6 @@ -From b532add2d1287489d4541e79c976bb77795696cd Mon Sep 17 00:00:00 2001 -From: Ember Keske -Date: Wed, 2 Aug 2023 06:36:46 +0200 +From f397d6e82d73761358d815a5ba880a05e7e281c3 Mon Sep 17 00:00:00 2001 +From: Chris Moultrie +Date: Tue, 4 Mar 2025 08:21:28 -0500 Subject: [PATCH 2/2] Remove check for config-file as it's stored in /etc/grocy --- @@ -8,7 +8,7 @@ Subject: [PATCH 2/2] Remove check for config-file as it's stored in /etc/grocy 1 file changed, 1 deletion(-) diff --git a/helpers/PrerequisiteChecker.php b/helpers/PrerequisiteChecker.php -index 8e12a5c..37b433d 100644 +index 8e12a5c5..37b433db 100644 --- a/helpers/PrerequisiteChecker.php +++ b/helpers/PrerequisiteChecker.php @@ -18,7 +18,6 @@ class PrerequisiteChecker @@ -20,4 +20,5 @@ index 8e12a5c..37b433d 100644 self::checkForComposer(); self::checkForPhpExtensions(); -- -2.42.0 \ No newline at end of file +2.47.2 + diff --git a/pkgs/by-name/gr/grocy/package.nix b/pkgs/by-name/gr/grocy/package.nix index 18374dbac41a..a1b62e792432 100644 --- a/pkgs/by-name/gr/grocy/package.nix +++ b/pkgs/by-name/gr/grocy/package.nix @@ -10,20 +10,20 @@ php.buildComposerProject2 (finalAttrs: { pname = "grocy"; - version = "4.3.0"; + version = "4.4.2"; src = fetchFromGitHub { owner = "grocy"; repo = "grocy"; tag = "v${finalAttrs.version}"; - hash = "sha256-9Lc3NUZ7Huiyt887kCHL6lshow3+Pqrq8h1NV+CFHGs="; + hash = "sha256-jIlFQFXtxZ/rrPs9iSCn32scXPgi1ed4o8qXKm/WrrQ="; }; - vendorHash = "sha256-0Hn9dp5ASF0R2L0HTeQ9nSSN7dZgk1a4mv+ZkNMm+k8="; + vendorHash = "sha256-cKKJFsDoQqiW7qicZi2sZ6Fmymg/4oU45PWJ0NsjjtY="; offlineCache = fetchYarnDeps { yarnLock = finalAttrs.src + "/yarn.lock"; - hash = "sha256-l8uYMBMufbSHhxNxqqA0BqCLqUYubjIpgevaenzy5Ic="; + hash = "sha256-iym+kdnjkcQtIIe800Q4BYR7/vLl63XT62FtDJnjqkw="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/gr/grpc-client-cli/package.nix b/pkgs/by-name/gr/grpc-client-cli/package.nix index 035186b63075..c1a9082d3262 100644 --- a/pkgs/by-name/gr/grpc-client-cli/package.nix +++ b/pkgs/by-name/gr/grpc-client-cli/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "grpc-client-cli"; - version = "1.21.3"; + version = "1.22.1"; src = fetchFromGitHub { owner = "vadimi"; repo = "grpc-client-cli"; rev = "v${version}"; - sha256 = "sha256-c+mwQJczF8BG3NnpZpBZNGzGQxs8/ptApvESQhiUpfA="; + sha256 = "sha256-+Njo3cqqWhQMYsO7VLScPemmBMCf55khzLqBmODqEng="; }; - vendorHash = "sha256-1SRp5NmE+NbRtUZ3s4yL6CJUMs+dlm6oN00gKV9QY0U="; + vendorHash = "sha256-iZh/Ax9Gf3YNUgk2vNvTewuq97nUE3POaOb9/poVrCY="; meta = with lib; { description = "generic gRPC command line client"; diff --git a/pkgs/by-name/gv/gvproxy/package.nix b/pkgs/by-name/gv/gvproxy/package.nix index 6db7531253c9..154d385cbba3 100644 --- a/pkgs/by-name/gv/gvproxy/package.nix +++ b/pkgs/by-name/gv/gvproxy/package.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "gvproxy"; - version = "0.8.4"; + version = "0.8.5"; src = fetchFromGitHub { owner = "containers"; repo = "gvisor-tap-vsock"; rev = "v${version}"; - hash = "sha256-2Anh/jWnDCqGxsIz8/DMzQ5Jj9FpvxHgEk9MeqBPFms="; + hash = "sha256-rWZYwQ/wWYAbM0RRNcNboWzKUuNNPDigIFFbFdXDNuo="; }; vendorHash = null; diff --git a/pkgs/by-name/hc/hcl2json/package.nix b/pkgs/by-name/hc/hcl2json/package.nix index 6b4b79bdc465..ac35066d23e1 100644 --- a/pkgs/by-name/hc/hcl2json/package.nix +++ b/pkgs/by-name/hc/hcl2json/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "hcl2json"; - version = "0.6.5"; + version = "0.6.6"; src = fetchFromGitHub { owner = "tmccombs"; repo = pname; rev = "v${version}"; - sha256 = "sha256-LU74vm36NuA1ApJWtEf/ub3los6yVR8yiQTfM0Wnvyo="; + sha256 = "sha256-zd8+ZDuC+qBienADiTVhW8o+BH8spBTCDHIK2PwK3YY="; }; - vendorHash = "sha256-nm+KvpcOUTR9Nm0eQtqCWxMiFTvL5xKLhsPaJlsVpkQ="; + vendorHash = "sha256-GMy6jGXAjykg+61RbPbQ9ZI0odhPls6uLhtw2sKLUmY="; subPackages = [ "." ]; diff --git a/pkgs/by-name/he/heptabase/package.nix b/pkgs/by-name/he/heptabase/package.nix index 89dae6c414f9..2df1e5aee578 100644 --- a/pkgs/by-name/he/heptabase/package.nix +++ b/pkgs/by-name/he/heptabase/package.nix @@ -5,10 +5,10 @@ }: let pname = "heptabase"; - version = "1.53.4"; + version = "1.53.7"; src = fetchurl { url = "https://github.com/heptameta/project-meta/releases/download/v${version}/Heptabase-${version}.AppImage"; - hash = "sha256-dDwz9bn5UZJ3aQYy2SJYKSSaZJzj/B+zRmfwxgsUjBc="; + hash = "sha256-wy69dT/Iyt1jZKMh8/yCGk7+Z/NQt8R2d8jHXOZSvgQ="; }; appimageContents = appimageTools.extractType2 { inherit pname version src; }; diff --git a/pkgs/by-name/hu/hurl/package.nix b/pkgs/by-name/hu/hurl/package.nix index 5b29f0d554ad..0a89da534aec 100644 --- a/pkgs/by-name/hu/hurl/package.nix +++ b/pkgs/by-name/hu/hurl/package.nix @@ -12,17 +12,17 @@ rustPlatform.buildRustPackage rec { pname = "hurl"; - version = "6.0.0"; + version = "6.1.0"; src = fetchFromGitHub { owner = "Orange-OpenSource"; repo = "hurl"; tag = version; - hash = "sha256-zrZWYnXUuzf2cS3n56/hWDvyXVM4Y/34SOlMPrtAhJo="; + hash = "sha256-fj9OKS8IFKbxwzjhnta44hAXPy90fBOAV35K13YtaOs="; }; useFetchCargoVendor = true; - cargoHash = "sha256-sq0m6wkryfmthkPHMY0ZOXNhdNKnnsPLa/6tTsuWCS0="; + cargoHash = "sha256-aGj/vQCf1nBLmQYYxdR8437irLP+3W3z0F8tyVTrKZk="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/im/imgpkg/package.nix b/pkgs/by-name/im/imgpkg/package.nix index d366fca15d81..b6286b1fbc51 100644 --- a/pkgs/by-name/im/imgpkg/package.nix +++ b/pkgs/by-name/im/imgpkg/package.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "imgpkg"; - version = "0.44.2"; + version = "0.45.0"; src = fetchFromGitHub { owner = "carvel-dev"; repo = "imgpkg"; rev = "v${version}"; - hash = "sha256-UZhmuSUqm8EPCSc0CONgpISINgMJh3uNUx0v52eQNIc="; + hash = "sha256-DuLxNH0fcVPvZYG4AYtaT8kJysTLRNX2tB6UBhQoP9Q="; }; vendorHash = null; diff --git a/pkgs/by-name/in/infnoise/makefile.patch b/pkgs/by-name/in/infnoise/makefile.patch deleted file mode 100644 index 871a6c508ce6..000000000000 --- a/pkgs/by-name/in/infnoise/makefile.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/software/Makefile.linux b/software/Makefile.linux -index db48aa5..df8b3d2 100644 ---- a/software/Makefile.linux -+++ b/software/Makefile.linux -@@ -1,6 +1,6 @@ --GIT_VERSION := $(shell git --no-pager describe --tags --always) --GIT_COMMIT := $(shell git rev-parse --verify HEAD) --GIT_DATE := $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only)) -+GIT_VERSION ?= $(shell git --no-pager describe --tags --always) -+GIT_COMMIT ?= $(shell git rev-parse --verify HEAD) -+GIT_DATE ?= $(firstword $(shell git --no-pager show --date=iso-strict --format="%ad" --name-only)) - - PREFIX = $(DESTDIR)/usr/local - diff --git a/pkgs/by-name/in/infnoise/package.nix b/pkgs/by-name/in/infnoise/package.nix index c596f9e76c79..08ee53e739f1 100644 --- a/pkgs/by-name/in/infnoise/package.nix +++ b/pkgs/by-name/in/infnoise/package.nix @@ -9,29 +9,26 @@ stdenv.mkDerivation (finalAttrs: { pname = "infnoise"; - version = "0.3.2"; + version = "0.3.3"; src = fetchFromGitHub { owner = "leetronics"; repo = "infnoise"; - rev = "e80ddd78085abf3d06df2e0d8c08fd33dade78eb"; - sha256 = "sha256-9MKG1InkV+yrQPBTgi2gZJ3y9Fokb6WbxuAnM7n7FyA="; + rev = "19bb69894724d87b32b7b9b86022bb4b26c919f8"; + sha256 = "sha256-O2P4uOwO7wKLYLufdW3KQeyuFBoQPdSepnTUeq0CSJY="; }; patches = [ - # Patch makefile so we can set defines from the command line instead of it depending on .git - ./makefile.patch - - # Fix getc return type + # Patch providing version info at compile time (fetchpatch { - url = "https://github.com/leetronics/infnoise/commit/7ed7014e14253311c07e530c8f89f1c8f4705c2b.patch"; - sha256 = "sha256-seB/fJaxQ/rXJp5iPtnobXXOccQ2KUAk6HFx31dhOhs="; + url = "https://github.com/leetronics/infnoise/commit/04d52a975bf78d2aff2bb4c176c286715e1948ba.patch"; + sha256 = "sha256-vtPAR6gCyny9UP+U6/7X8CPEUuMDl7RIyICIwiaWyfc="; }) ]; GIT_COMMIT = finalAttrs.src.rev; GIT_VERSION = finalAttrs.version; - GIT_DATE = "2019-08-12"; + GIT_DATE = "2023-02-14"; buildInputs = [ libftdi ]; @@ -44,6 +41,8 @@ stdenv.mkDerivation (finalAttrs: { postInstall = '' make -C tools + # 2e6cfbe made findlongest executable, but it's a C file + chmod -x tools/*.c find ./tools/ -executable -type f -exec \ sh -c "install -Dm755 {} $out/bin/infnoise-\$(basename {})" \; ''; diff --git a/pkgs/by-name/in/intentrace/package.nix b/pkgs/by-name/in/intentrace/package.nix index 06098f6caefd..86c0607965b8 100644 --- a/pkgs/by-name/in/intentrace/package.nix +++ b/pkgs/by-name/in/intentrace/package.nix @@ -5,7 +5,7 @@ }: let - version = "0.4.2"; + version = "0.6.2"; in rustPlatform.buildRustPackage { inherit version; @@ -15,11 +15,11 @@ rustPlatform.buildRustPackage { owner = "sectordistrict"; repo = "intentrace"; tag = "v${version}"; - hash = "sha256-ZcGZK4GX78ls3nHb7SBKszmZXMAbCxS4osW3MLqgnHQ="; + hash = "sha256-hmQLedKyrk07RPloe39HKtZPJJjDUqLb/D4dvJfuWrM="; }; useFetchCargoVendor = true; - cargoHash = "sha256-Z3T4mupwUqOSP+iAmy7Ps1EZlyV9cDvnfXBZwH1NFaA="; + cargoHash = "sha256-XSo9XqO3DiW3PXUW8RxTWqIxN1jx8WJKw16soP7kM1s="; meta = { description = "Prettified Linux syscall tracing tool (like strace)"; diff --git a/pkgs/by-name/ju/julec/package.nix b/pkgs/by-name/ju/julec/package.nix new file mode 100644 index 000000000000..abc2c8aa05c2 --- /dev/null +++ b/pkgs/by-name/ju/julec/package.nix @@ -0,0 +1,110 @@ +{ + lib, + stdenv, + fetchFromGitHub, +}: + +let + irFile = + if stdenv.hostPlatform.system == "x86_64-linux" then + "linux-amd64.cpp" + else if stdenv.hostPlatform.system == "aarch64-linux" then + "linux-arm64.cpp" + else if stdenv.hostPlatform.system == "i686-linux" then + "linux-i386.cpp" + else if stdenv.hostPlatform.system == "x86_64-darwin" then + "darwin-amd64.cpp" + else if stdenv.hostPlatform.system == "aarch64-darwin" then + "darwin-arm64.cpp" + else + throw "Unsupported platform: ${stdenv.hostPlatform.system}"; +in +stdenv.mkDerivation (finalAttrs: { + pname = "julec"; + version = "0.1.3"; + + src = fetchFromGitHub { + owner = "julelang"; + repo = "jule"; + tag = "jule${finalAttrs.version}"; + name = "jule-${finalAttrs.version}"; + hash = "sha256-hFWoGeTmfXIPcICWXa5W36QDOk3yB7faORxFaM9shcQ="; + }; + + irSrc = fetchFromGitHub { + owner = "julelang"; + repo = "julec-ir"; + # revision determined by the upstream commit hash in julec-ir/README.md + rev = "a274782922e4275c4a036d63acffd3369dbc382f"; + name = "jule-ir-${finalAttrs.version}"; + hash = "sha256-TXMSXTGTzZntPUhT6QTmn3nD2k855ZoAW9aQWyhrE8s="; + }; + + dontConfigure = true; + + unpackPhase = '' + runHook preUnpack + + cp -R ${finalAttrs.src}/* . + cp "${finalAttrs.irSrc}/src/${irFile}" ./ir.cpp + + chmod +w -R . + + find ./*/* -type f -name '*.md' -exec rm -f {} + + + runHook postUnpack + ''; + + buildPhase = '' + runHook preBuild + + echo "Building ${finalAttrs.meta.mainProgram} v${finalAttrs.version} for ${stdenv.hostPlatform.system}..." + mkdir -p bin + ${stdenv.cc.targetPrefix}c++ ir.cpp \ + --std=c++17 \ + -Wno-everything \ + -O3 \ + -flto \ + -DNDEBUG \ + -fomit-frame-pointer \ + -o "bin/${finalAttrs.meta.mainProgram}" + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/jule + mkdir -p $out/bin + cp -R api $out/lib/jule/api + cp -R std $out/lib/jule/std + cp -R bin $out/lib/jule/bin + ln -s $out/lib/jule/bin/${finalAttrs.meta.mainProgram} $out/bin/${finalAttrs.meta.mainProgram} + + runHook postInstall + ''; + + meta = { + description = "Jule Programming Language Compiler"; + longDescription = '' + Jule is an effective programming language designed to build efficient, fast, reliable and safe software while maintaining simplicity. + It is a statically typed, compiled language with a syntax influenced by Go, Rust, and C++. + ''; + homepage = "https://jule.dev"; + changelog = "https://github.com/julelang/manual/releases/tag/jule${finalAttrs.version}"; + license = lib.licenses.bsd3; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "i686-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + mainProgram = "julec"; + maintainers = with lib.maintainers; [ + adamperkowski + sebaguardian + ]; + }; +}) diff --git a/pkgs/by-name/ju/jumppad/package.nix b/pkgs/by-name/ju/jumppad/package.nix index 72326c2c36e3..7fb20e5a272a 100644 --- a/pkgs/by-name/ju/jumppad/package.nix +++ b/pkgs/by-name/ju/jumppad/package.nix @@ -6,15 +6,15 @@ buildGoModule rec { pname = "jumppad"; - version = "0.17.1"; + version = "0.18.0"; src = fetchFromGitHub { owner = "jumppad-labs"; repo = "jumppad"; rev = version; - hash = "sha256-SoiF5y0Vc2T8qT75cII3HqNSEZhWAzKEk3xw4BGICpo="; + hash = "sha256-V+FDPNNNP7HMg0Somoj3EhGuhhq/Du8JcCBE/Ut2V1s="; }; - vendorHash = "sha256-mJKawveIoDu2v+GxIoljmFbCwle9d1SQiHzsoerP66I="; + vendorHash = "sha256-BuXbizA/OJiP11kSIO476tWPYPzGTKmzPHeyIqs8pWc="; subPackages = [ "." ]; diff --git a/pkgs/by-name/jx/jx/package.nix b/pkgs/by-name/jx/jx/package.nix index b88506805c47..590268b3dba6 100644 --- a/pkgs/by-name/jx/jx/package.nix +++ b/pkgs/by-name/jx/jx/package.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "jx"; - version = "3.11.56"; + version = "3.11.66"; src = fetchFromGitHub { owner = "jenkins-x"; repo = "jx"; rev = "v${version}"; - sha256 = "sha256-zBv6j27UYRcMqDLINe8zEqANmlSks3OqwGzTSFisnP4="; + sha256 = "sha256-Ejm5Y1xyh9/d79PYYMeKQVtAhT9knFCVcwNAWoBk840="; }; vendorHash = "sha256-8I4yTzLAL7E0ozHcBZDNsJLHkTh+SjT0SjDSECGRYIc="; diff --git a/pkgs/by-name/ka/karmor/package.nix b/pkgs/by-name/ka/karmor/package.nix index 432568dc32f2..20737002e2af 100644 --- a/pkgs/by-name/ka/karmor/package.nix +++ b/pkgs/by-name/ka/karmor/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "karmor"; - version = "1.3.3"; + version = "1.3.4"; src = fetchFromGitHub { owner = "kubearmor"; repo = "kubearmor-client"; rev = "v${version}"; - hash = "sha256-sn2Zpr/Z63MAf0d9FnT3GJW48DI/aynC1naAHsMYGR4="; + hash = "sha256-3WPelRhvK/9LY+TFDExcltszE1wVRr1MMY9Xjijj0so="; }; vendorHash = "sha256-HH3U1reZXG9w7uwnXbY33hsKlPCxbVb2yvw4KmBfOa0="; diff --git a/pkgs/by-name/ki/kind-lang/derivation.nix b/pkgs/by-name/ki/kind-lang/derivation.nix new file mode 100644 index 000000000000..a2c55b89a043 --- /dev/null +++ b/pkgs/by-name/ki/kind-lang/derivation.nix @@ -0,0 +1,46 @@ +# CABAL2NIX AUTOGENERATED THIS FILE. +{ + mkDerivation, + ansi-terminal, + base, + containers, + directory, + fetchgit, + filepath, + hs-highlight, + lib, + mtl, + parsec, +}: +mkDerivation { + pname = "kind-lang"; + version = "0.1.0.0"; + src = fetchgit { + url = "https://github.com/higherorderco/kind.git"; + sha256 = "1g4pikxh42p3hikzyfzf11cs7zd1miaxapyf8pijdcxhpdx7wwl0"; + rev = "5cfff210b3aeed01ebd73b2364cf9e5d2df658af"; + fetchSubmodules = false; + }; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + ansi-terminal + base + containers + directory + filepath + hs-highlight + mtl + parsec + ]; + executableHaskellDepends = [ + ansi-terminal + base + directory + filepath + hs-highlight + mtl + ]; + license = lib.licenses.mit; + mainProgram = "kind"; +} diff --git a/pkgs/by-name/ki/kind-lang/package.nix b/pkgs/by-name/ki/kind-lang/package.nix new file mode 100644 index 000000000000..613d310a5dfe --- /dev/null +++ b/pkgs/by-name/ki/kind-lang/package.nix @@ -0,0 +1,34 @@ +{ + haskell, + lib, +}: + +let + inherit (haskell.lib.compose) overrideCabal justStaticExecutables; + + # See kind-lang.cabal. GHC2024 >= ghc910. + ghcVersion = "ghc910"; + haskellPackages = haskell.packages.${ghcVersion}; + + overrides = rec { + version = "${raw-pkg.version}-unstable-2024-12-09"; + + postPatch = '' + sed -i -E \ + 's/([ ,]+[^ =]+)[ =^><]+[0-9.]+/\1/' \ + kind-lang.cabal + ''; + + # Test suite does nothing. + doCheck = false; + + maintainers = with lib.maintainers; [ joaomoreira ]; + }; + + # cabal2nix auto-generated derivation.nix. + raw-pkg = haskellPackages.callPackage ./derivation.nix { }; +in +lib.pipe raw-pkg [ + (overrideCabal overrides) + justStaticExecutables +] diff --git a/pkgs/by-name/ko/kokkos/package.nix b/pkgs/by-name/ko/kokkos/package.nix index 6560faa0e64c..e682cbe13da8 100644 --- a/pkgs/by-name/ko/kokkos/package.nix +++ b/pkgs/by-name/ko/kokkos/package.nix @@ -38,7 +38,10 @@ stdenv.mkDerivation (finalAttrs: { description = "C++ Performance Portability Programming EcoSystem"; homepage = "https://github.com/kokkos/kokkos"; changelog = "https://github.com/kokkos/kokkos/blob/${finalAttrs.src.rev}/CHANGELOG.md"; - license = with licenses; [ asl20-llvm ]; + license = with licenses; [ + asl20 + llvm-exception + ]; maintainers = with maintainers; [ Madouura ]; platforms = platforms.unix; broken = stdenv.hostPlatform.isDarwin; diff --git a/pkgs/by-name/kr/krew/package.nix b/pkgs/by-name/kr/krew/package.nix index 7ad84ac536f2..2fc475b41e9b 100644 --- a/pkgs/by-name/kr/krew/package.nix +++ b/pkgs/by-name/kr/krew/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "krew"; - version = "0.4.4"; + version = "0.4.5"; src = fetchFromGitHub { owner = "kubernetes-sigs"; repo = "krew"; rev = "v${version}"; - sha256 = "sha256-SN6F7EmkgjtU4UHYPXWBiuXSSagjQYD6SBYBXRrSVGA="; + sha256 = "sha256-3GoC2HEp9XJe853/JYvX9kAAcFf7XxglVEeU9oQ/5Ms="; }; - vendorHash = "sha256-3tEesDezIyB6005PZmOcrnEeAIvc5za3FxTmBBbKf7s="; + vendorHash = "sha256-r4Dywm0+YxWWD59oaKodkldE2uq8hlt9MwOMYDaj6Gc="; subPackages = [ "cmd/krew" ]; diff --git a/pkgs/by-name/ku/kubernetes-validate/package.nix b/pkgs/by-name/ku/kubernetes-validate/package.nix new file mode 100644 index 000000000000..39a609259a14 --- /dev/null +++ b/pkgs/by-name/ku/kubernetes-validate/package.nix @@ -0,0 +1,4 @@ +{ + python3Packages, +}: +python3Packages.toPythonApplication python3Packages.kubernetes-validate diff --git a/pkgs/by-name/ku/kubernetes-validate/unwrapped.nix b/pkgs/by-name/ku/kubernetes-validate/unwrapped.nix new file mode 100644 index 000000000000..6f3cd6d0fa44 --- /dev/null +++ b/pkgs/by-name/ku/kubernetes-validate/unwrapped.nix @@ -0,0 +1,56 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + importlib-resources, + jsonschema, + packaging, + pyyaml, + referencing, + typing-extensions, + pytestCheckHook, + versionCheckHook, +}: +buildPythonPackage rec { + pname = "kubernetes-validate"; + version = "1.31.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "willthames"; + repo = "kubernetes-validate"; + tag = "v${version}"; + hash = "sha256-vxsftuipw0rHQIngxKlPHwBIW+rYAjfnEEaJDKmPyfQ="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + importlib-resources + jsonschema + packaging + pyyaml + referencing + typing-extensions + ]; + + nativeCheckInputs = [ + pytestCheckHook + versionCheckHook + ]; + versionCheckProgramArg = [ "--version" ]; + + pythonImportsCheck = [ "kubernetes_validate" ]; + + meta = { + description = "Module to validate Kubernetes resource definitions against the declared Kubernetes schemas"; + homepage = "https://github.com/willthames/kubernetes-validate"; + changelog = "https://github.com/willthames/kubernetes-validate/releases/tag/v${version}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ lykos153 ]; + mainProgram = "kubernetes-validate"; + }; +} diff --git a/pkgs/by-name/ku/kubevpn/package.nix b/pkgs/by-name/ku/kubevpn/package.nix index 8d6325c45723..84ebe5b2e068 100644 --- a/pkgs/by-name/ku/kubevpn/package.nix +++ b/pkgs/by-name/ku/kubevpn/package.nix @@ -7,13 +7,13 @@ buildGoModule rec { pname = "kubevpn"; - version = "2.3.13"; + version = "2.4.1"; src = fetchFromGitHub { owner = "KubeNetworks"; repo = "kubevpn"; rev = "v${version}"; - hash = "sha256-/b4JOWU4WZgkUUiOSox/ly3t8Ehp1dAY6kVyDabjMFE="; + hash = "sha256-IZna+DOavIkhGuNfVq31Hvuq5J0rylCAmNActjbA/io="; }; vendorHash = null; diff --git a/pkgs/by-name/la/labwc-menu-generator/package.nix b/pkgs/by-name/la/labwc-menu-generator/package.nix index 7d6b30f66adc..a9599d1eeb24 100644 --- a/pkgs/by-name/la/labwc-menu-generator/package.nix +++ b/pkgs/by-name/la/labwc-menu-generator/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "labwc-menu-generator"; - version = "0.1.0-unstable-2025-02-12"; + version = "0.1.0-unstable-2025-03-08"; src = fetchFromGitHub { owner = "labwc"; repo = "labwc-menu-generator"; - rev = "a6e96b496aff6b54bcdaacfcd24720d46d6a683a"; - hash = "sha256-Ju/lH7mZuIsulkQ5lpgfBl9BUs0mAOobS9aBuVlMIqI="; + rev = "f1aa43d776b702f29b7d1e32440f233927a1dfa9"; + hash = "sha256-tjfFE2RJVOhJFw29+CZkLApVS4BTjGpT3cI2WStYAOo="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/la/lammps/package.nix b/pkgs/by-name/la/lammps/package.nix index b6e7b89b9134..860f812c5272 100644 --- a/pkgs/by-name/la/lammps/package.nix +++ b/pkgs/by-name/la/lammps/package.nix @@ -49,14 +49,14 @@ stdenv.mkDerivation (finalAttrs: { # LAMMPS has weird versioning convention. Updates should go smoothly with: # nix-update --commit lammps --version-regex 'stable_(.*)' - version = "29Aug2024_update1"; + version = "29Aug2024_update2"; pname = "lammps"; src = fetchFromGitHub { owner = "lammps"; repo = "lammps"; rev = "stable_${finalAttrs.version}"; - hash = "sha256-B2oMs9bVYO+G3yL1DGJVK/INIfANMDREV7AtC4kH3H8="; + hash = "sha256-xhFLsK3CQFIfajdwkpz593KTUGwcIWX1bLIPClDe/V8="; }; preConfigure = '' cd cmake diff --git a/pkgs/by-name/li/libabigail/package.nix b/pkgs/by-name/li/libabigail/package.nix index f8f257808950..89bd65ccae6f 100644 --- a/pkgs/by-name/li/libabigail/package.nix +++ b/pkgs/by-name/li/libabigail/package.nix @@ -58,7 +58,10 @@ stdenv.mkDerivation rec { meta = with lib; { description = "ABI Generic Analysis and Instrumentation Library"; homepage = "https://sourceware.org/libabigail/"; - license = licenses.asl20-llvm; + license = with licenses; [ + asl20 + llvm-exception + ]; maintainers = [ ]; platforms = platforms.linux; }; diff --git a/pkgs/by-name/li/libblake3/package.nix b/pkgs/by-name/li/libblake3/package.nix index b7965ddea4fa..68fa286d164a 100644 --- a/pkgs/by-name/li/libblake3/package.nix +++ b/pkgs/by-name/li/libblake3/package.nix @@ -3,26 +3,29 @@ stdenv, cmake, fetchFromGitHub, + tbb_2022_0, + useTBB ? true, }: stdenv.mkDerivation (finalAttrs: { pname = "libblake3"; - version = "1.6.1"; + version = "1.7.0"; src = fetchFromGitHub { owner = "BLAKE3-team"; repo = "BLAKE3"; tag = finalAttrs.version; - hash = "sha256-YJ3rRzpmF6oS8p377CEoRteARCD1lr/L7/fbN5poUXw="; + hash = "sha256-08D5hnU3I0VJ+RM/TNk2LxsEAvOLuO52+08zlKssXbc="; }; sourceRoot = finalAttrs.src.name + "/c"; - nativeBuildInputs = [ - cmake - ]; + nativeBuildInputs = [ cmake ]; + + buildInputs = lib.optionals useTBB [ tbb_2022_0 ]; cmakeFlags = [ + (lib.cmakeBool "BLAKE3_USE_TBB" useTBB) (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) ]; @@ -33,7 +36,10 @@ stdenv.mkDerivation (finalAttrs: { asl20 cc0 ]; - maintainers = with lib.maintainers; [ fgaz ]; + maintainers = with lib.maintainers; [ + fgaz + silvanshade + ]; platforms = lib.platforms.all; }; }) diff --git a/pkgs/by-name/li/licensure/package.nix b/pkgs/by-name/li/licensure/package.nix index 8f929f27f57a..a5a4ac228048 100644 --- a/pkgs/by-name/li/licensure/package.nix +++ b/pkgs/by-name/li/licensure/package.nix @@ -11,17 +11,17 @@ }: rustPlatform.buildRustPackage rec { pname = "licensure"; - version = "0.7.2"; + version = "0.8.0"; src = fetchFromGitHub { owner = "chasinglogic"; repo = "licensure"; rev = version; - hash = "sha256-ZizTcXmxAQsDXthNaXxrlsZr/tdAa8U3i70mwpvBmHw="; + hash = "sha256-3kZzYDKMLRdYzxa9+wVeTFJk186MJZfGfzRXgY9tI4Y="; }; useFetchCargoVendor = true; - cargoHash = "sha256-tQZ9/Ki7uaWM/zCKfiM9nL4X65K2JRmQmEWY/bnQPPA="; + cargoHash = "sha256-b3Vb8beULbLQuBORcE5nWuHkqDmalexJick9Ct5+iUM="; nativeBuildInputs = [ pkg-config ]; buildInputs = [ diff --git a/pkgs/by-name/li/litemdview/package.nix b/pkgs/by-name/li/litemdview/package.nix index a425d597c3e5..63f08fb7fd8f 100644 --- a/pkgs/by-name/li/litemdview/package.nix +++ b/pkgs/by-name/li/litemdview/package.nix @@ -5,18 +5,18 @@ gtkmm3, autoreconfHook, pkg-config, + versionCheckHook, }: -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "litemdview"; - # litemdview -v version = "0.0.32"; src = fetchFromGitea { - domain = "notabug.org"; + domain = "codeberg.org"; owner = "g0tsu"; repo = "litemdview"; - rev = "litemdview-0.0.32"; + rev = "litemdview-${finalAttrs.version}"; hash = "sha256-XGjP+7i3mYCEzPYwVY+75DARdXJFY4vUWHFpPeoNqAE="; }; @@ -29,8 +29,18 @@ stdenv.mkDerivation { pkg-config ]; - meta = with lib; { - homepage = "https://notabug.org/g0tsu/litemdview"; + # Required for build with gcc-14 + env.NIX_CFLAGS_COMPILE = "-Wno-error=implicit-int"; + + enableParallelBuilding = true; + + nativeInstallCheckInputs = [ + versionCheckHook + ]; + doInstallCheck = true; + + meta = { + homepage = "https://codeberg.org/g0tsu/litemdview"; description = "Suckless markdown viewer"; longDescription = '' LiteMDview is a lightweight, extremely fast markdown viewer with lots of useful features. One of them is ability to use your prefered text editor to edit markdown files, every time you save the file, litemdview reloads those changes (I call it live-reload). It has a convinient navigation through local directories, has support for a basic "git-like" folders hierarchy as well as vimwiki projects. @@ -53,9 +63,9 @@ stdenv.mkDerivation { - Basic html support (very simple offline documents in html) - Syntax highlighting ''; - license = licenses.gpl2Only; - maintainers = with maintainers; [ WhiteBlackGoose ]; - platforms = platforms.linux; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ WhiteBlackGoose ]; + platforms = lib.platforms.linux; mainProgram = "litemdview"; }; -} +}) diff --git a/pkgs/by-name/lu/lua-language-server/package.nix b/pkgs/by-name/lu/lua-language-server/package.nix index 38509eed727d..923b0a1fc417 100644 --- a/pkgs/by-name/lu/lua-language-server/package.nix +++ b/pkgs/by-name/lu/lua-language-server/package.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "lua-language-server"; - version = "3.13.6"; + version = "3.13.9"; src = fetchFromGitHub { owner = "luals"; repo = "lua-language-server"; tag = finalAttrs.version; - hash = "sha256-LaetDI9kNPRY4+m3gSsh6vbysRjUKHl+zunuyedjZGY="; + hash = "sha256-zttTtMAeBsHBqgDm3CAvp54Tp2bfQUhk5/lKgKWUeJY="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/ma/mandown/package.nix b/pkgs/by-name/ma/mandown/package.nix index f310b34adbb3..8d0d50a64691 100644 --- a/pkgs/by-name/ma/mandown/package.nix +++ b/pkgs/by-name/ma/mandown/package.nix @@ -6,15 +6,15 @@ rustPlatform.buildRustPackage rec { pname = "mandown"; - version = "1.0.0"; + version = "1.1.0"; src = fetchCrate { inherit pname version; - hash = "sha256-30AM/t1Qq4xydG12Nh+J1MBKNvxxD/LVTkmTchsZHLw="; + hash = "sha256-a+1tm9YlBuroTtgCL0nTjASaPiJHif89pRH0CWw7RjM="; }; useFetchCargoVendor = true; - cargoHash = "sha256-T3cUHyKQIYTL9jMoLsq6jEiIeFZcSZuyCna7TNEjGyU="; + cargoHash = "sha256-ZyjoAvsqUyHgfEsG3+CvJatmBt0AJ2ga6HRJ8Y7her0="; meta = with lib; { description = "Markdown to groff (man page) converter"; diff --git a/pkgs/by-name/ma/mani/package.nix b/pkgs/by-name/ma/mani/package.nix index 395328e94834..b3f663dff5c7 100644 --- a/pkgs/by-name/ma/mani/package.nix +++ b/pkgs/by-name/ma/mani/package.nix @@ -1,20 +1,20 @@ { + lib, + gitMinimal, buildGoModule, fetchFromGitHub, - lib, installShellFiles, - git, makeWrapper, }: -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "mani"; version = "0.30.0"; src = fetchFromGitHub { owner = "alajmo"; repo = "mani"; - rev = "v${version}"; + tag = "v${finalAttrs.version}"; sha256 = "sha256-LxW9LPK4cXIXhBWPhOYWLeV5PIf+o710SWX8JVpZhPI="; }; @@ -27,8 +27,7 @@ buildGoModule rec { ldflags = [ "-s" - "-w" - "-X github.com/alajmo/mani/cmd.version=${version}" + "-X github.com/alajmo/mani/cmd.version=${finalAttrs.version}" ]; postInstall = '' @@ -38,7 +37,7 @@ buildGoModule rec { --zsh <($out/bin/mani completion zsh) wrapProgram $out/bin/mani \ - --prefix PATH : ${lib.makeBinPath [ git ]} + --prefix PATH : ${lib.makeBinPath [ gitMinimal ]} ''; # Skip tests @@ -46,17 +45,12 @@ buildGoModule rec { # know how to wrap the dependencies for these integration tests so skip for now. doCheck = false; - meta = with lib; { + meta = { + changelog = "https://github.com/alajmo/mani/releases/tag/v${finalAttrs.version}"; description = "CLI tool to help you manage multiple repositories"; + homepage = "https://manicli.com"; + license = lib.licenses.mit; mainProgram = "mani"; - longDescription = '' - mani is a CLI tool that helps you manage multiple repositories. It's useful - when you are working with microservices, multi-project systems, many - libraries or just a bunch of repositories and want a central place for - pulling all repositories and running commands over them. - ''; - homepage = "https://manicli.com/"; - changelog = "https://github.com/alajmo/mani/releases/tag/v${version}"; - license = licenses.mit; + maintainers = with lib.maintainers; [ phanirithvij ]; }; -} +}) diff --git a/pkgs/by-name/md/mdbook-pdf-outline/package.nix b/pkgs/by-name/md/mdbook-pdf-outline/package.nix index 1a5478582b38..137dfe791adf 100644 --- a/pkgs/by-name/md/mdbook-pdf-outline/package.nix +++ b/pkgs/by-name/md/mdbook-pdf-outline/package.nix @@ -6,12 +6,13 @@ python3Packages.buildPythonApplication rec { pname = "mdbook-pdf-outline"; - version = "0.1.4"; + version = "0.1.6"; pyproject = true; src = fetchPypi { - inherit pname version; - hash = "sha256-STi+54iT+5+Xi0IzGXv2dxVS91+T6fjg3xmbJjekpPE="; + inherit version; + pname = "mdbook_pdf_outline"; + hash = "sha256-GPTDlgYpfPtcq+rJCjxgexfViYiqHoVZ8iQkyWXNogw="; }; nativeBuildInputs = [ @@ -26,7 +27,7 @@ python3Packages.buildPythonApplication rec { meta = with lib; { homepage = "https://github.com/HollowMan6/mdbook-pdf"; license = licenses.gpl3Plus; - maintainers = with maintainers; [ nix-julia ]; + maintainers = with maintainers; [ hollowman6 ]; }; } diff --git a/pkgs/by-name/mi/mill/package.nix b/pkgs/by-name/mi/mill/package.nix index 3b19b4f8ccd2..10dfb82e2190 100644 --- a/pkgs/by-name/mi/mill/package.nix +++ b/pkgs/by-name/mi/mill/package.nix @@ -8,11 +8,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "mill"; - version = "0.12.8"; + version = "0.12.9"; src = fetchurl { url = "https://repo1.maven.org/maven2/com/lihaoyi/mill-dist/${finalAttrs.version}/mill-dist-${finalAttrs.version}-assembly.jar"; - hash = "sha256-l+DaOvk7Tajla9IirLfEIij6thZcKI4Zk7wYLnnsiU8="; + hash = "sha256-Ntqzivy8dfsRlBclPNsWOZ4h1Xk7D3UJV7GLVGIEcAU="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/mi/mise/package.nix b/pkgs/by-name/mi/mise/package.nix index aec8d8c07e77..f68e39526313 100644 --- a/pkgs/by-name/mi/mise/package.nix +++ b/pkgs/by-name/mi/mise/package.nix @@ -23,17 +23,17 @@ rustPlatform.buildRustPackage rec { pname = "mise"; - version = "2025.2.7"; + version = "2025.3.6"; src = fetchFromGitHub { owner = "jdx"; repo = "mise"; rev = "v${version}"; - hash = "sha256-PvZCKi6fvEc0J5SzDazMkf2SS3+r0DTXM6NWCPi95J0="; + hash = "sha256-wp/C7RrMcpk/BFath9zZbEMzhQWFYagnT2zimnPRpPI="; }; useFetchCargoVendor = true; - cargoHash = "sha256-qVs1PogSDfMCVgfvgqLltqiGl7yvO+d4Ly0oeQpSftw="; + cargoHash = "sha256-49C4MzvGUiO16kNEKoHtlvkOxG16jsD2iW5upaVuYGI="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/by-name/mo/mod/package.nix b/pkgs/by-name/mo/mod/package.nix index 2a866dbd54d5..3e631c81e2b9 100644 --- a/pkgs/by-name/mo/mod/package.nix +++ b/pkgs/by-name/mo/mod/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "mod"; - version = "0.7.1"; + version = "0.8.0"; src = fetchFromGitHub { owner = "marwan-at-work"; repo = "mod"; rev = "v${version}"; - sha256 = "sha256-QkLARUN/NiN0D6VEhosdFJSce6DP+sWRWFwAEocZaOQ="; + sha256 = "sha256-P0FE0Sl4IXH6DAETnlBwQ2CR0X0AP9Z0noW99By7mxU="; }; - vendorHash = "sha256-5A4W99wcuXMWH0s+uykBWuKCxo8wr3GbTpUKj+Ql0os="; + vendorHash = "sha256-GiE2RNAxbKpIekn54bfYlNvIcQo8D3ysmPSvxQhujYI="; doCheck = false; diff --git a/pkgs/by-name/ne/netavark/package.nix b/pkgs/by-name/ne/netavark/package.nix index 52bba0b2c1fe..cefb43112bba 100644 --- a/pkgs/by-name/ne/netavark/package.nix +++ b/pkgs/by-name/ne/netavark/package.nix @@ -10,17 +10,17 @@ rustPlatform.buildRustPackage rec { pname = "netavark"; - version = "1.14.0"; + version = "1.14.1"; src = fetchFromGitHub { owner = "containers"; repo = "netavark"; rev = "v${version}"; - hash = "sha256-/95tYUqjIPoyO2+YGza9RJ88YAbsIOzEB//d2FXfNZY="; + hash = "sha256-kAJOfZ4Q1EQ+JV1izXoLe/Z/qgxbzz3WbczM4fVhxfU="; }; useFetchCargoVendor = true; - cargoHash = "sha256-6XSKuohY7gpnGmRK/Y+c3+0es/KRbkXjt5XQU/HksQ0="; + cargoHash = "sha256-MdKTGLNf+7SzdkQNLOWgfmSE9TNLYzPFU0oXh6MnW5w="; nativeBuildInputs = [ installShellFiles mandown protobuf go-md2man ]; diff --git a/pkgs/by-name/ne/netbird-ui/package.nix b/pkgs/by-name/ne/netbird-ui/package.nix new file mode 100644 index 000000000000..8a5ad19846b0 --- /dev/null +++ b/pkgs/by-name/ne/netbird-ui/package.nix @@ -0,0 +1,5 @@ +{ netbird }: + +netbird.override { + ui = true; +} diff --git a/pkgs/tools/networking/netbird/default.nix b/pkgs/by-name/ne/netbird/package.nix similarity index 66% rename from pkgs/tools/networking/netbird/default.nix rename to pkgs/by-name/ne/netbird/package.nix index 4325ad1a5210..121728929232 100644 --- a/pkgs/tools/networking/netbird/default.nix +++ b/pkgs/by-name/ne/netbird/package.nix @@ -12,13 +12,9 @@ libX11, libXcursor, libXxf86vm, - Cocoa, - IOKit, - Kernel, - UserNotifications, - WebKit, ui ? false, netbird-ui, + versionCheckHook, }: let modules = @@ -33,43 +29,35 @@ let signal = "netbird-signal"; }; in -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "netbird"; - version = "0.37.1"; + version = "0.38.2"; src = fetchFromGitHub { owner = "netbirdio"; repo = "netbird"; - tag = "v${version}"; - hash = "sha256-5+R0Y/xPgnVH53p1vtY65tOqePWQVOMR4oY1yOOFHK4="; + tag = "v${finalAttrs.version}"; + hash = "sha256-8uxRR8XkomUB9dMN9h1M4/K09wxy5E+XhXVbNc0g6xQ="; }; - vendorHash = "sha256-DGvDkkdM8WaaR5FQwZgKn2n1JEDeqUegZxeAIxniJ5A="; + vendorHash = "sha256-m5ou5p2/ubDDMLr0M2F+9qgkqKjhXRJ6HpizwxJhmtU="; nativeBuildInputs = [ installShellFiles ] ++ lib.optional ui pkg-config; - buildInputs = - lib.optionals (stdenv.hostPlatform.isLinux && ui) [ - gtk3 - libayatana-appindicator - libX11 - libXcursor - libXxf86vm - ] - ++ lib.optionals (stdenv.hostPlatform.isDarwin && ui) [ - Cocoa - IOKit - Kernel - UserNotifications - WebKit - ]; + buildInputs = lib.optionals (stdenv.hostPlatform.isLinux && ui) [ + gtk3 + libayatana-appindicator + libX11 + libXcursor + libXxf86vm + ]; subPackages = lib.attrNames modules; ldflags = [ "-s" "-w" - "-X github.com/netbirdio/netbird/version.version=${version}" + "-X github.com/netbirdio/netbird/version.version=${finalAttrs.version}" "-X main.builtBy=nix" ]; @@ -100,31 +88,38 @@ buildGoModule rec { ) modules ) + lib.optionalString (stdenv.hostPlatform.isLinux && ui) '' - mkdir -p $out/share/pixmaps - cp $src/client/ui/netbird-systemtray-connected.png $out/share/pixmaps/netbird.png - - mkdir -p $out/share/applications - cp $src/client/ui/netbird.desktop $out/share/applications/netbird.desktop + install -Dm644 "$src/client/ui/assets/netbird-systemtray-connected.png" "$out/share/pixmaps/netbird.png" + install -Dm644 "$src/client/ui/build/netbird.desktop" "$out/share/applications/netbird.desktop" substituteInPlace $out/share/applications/netbird.desktop \ --replace-fail "Exec=/usr/bin/netbird-ui" "Exec=$out/bin/netbird-ui" ''; + nativeInstallCheckInputs = [ + versionCheckHook + ]; + versionCheckProgram = "${placeholder "out"}/bin/${finalAttrs.meta.mainProgram}"; + versionCheckProgramArg = "version"; + # Disabled for the `netbird-ui` version because it does a network request. + doInstallCheck = !ui; + passthru = { - tests.netbird = nixosTests.netbird; - tests.netbird-ui = netbird-ui; + tests = { + nixos = nixosTests.netbird; + withUI = netbird-ui; + }; updateScript = nix-update-script { }; }; - meta = with lib; { + meta = { homepage = "https://netbird.io"; - changelog = "https://github.com/netbirdio/netbird/releases/tag/v${version}"; + changelog = "https://github.com/netbirdio/netbird/releases/tag/v${finalAttrs.version}"; description = "Connect your devices into a single secure private WireGuard®-based mesh network with SSO/MFA and simple access controls"; - license = licenses.bsd3; - maintainers = with maintainers; [ + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ vrifox saturn745 ]; mainProgram = if ui then "netbird-ui" else "netbird"; }; -} +}) diff --git a/pkgs/by-name/ni/nim_builder/nim_builder.nim b/pkgs/by-name/ni/nim_builder/nim_builder.nim index ec1d3ccb45b9..6339645bb4ad 100644 --- a/pkgs/by-name/ni/nim_builder/nim_builder.nim +++ b/pkgs/by-name/ni/nim_builder/nim_builder.nim @@ -89,7 +89,7 @@ proc configurePhase*() = else: fmWrite var cfg = newFileStream(configFilePath, mode) proc switch(key, val: string) = - cfg.writeLine("switch(", key.escape, ",", val.escape, ")") + cfg.writeLine("\nswitch(", key.escape, ",", val.escape, ")") switch("backend", nf.getNimbleValue("backend", "c")) switch("nimcache", getEnv("NIX_BUILD_TOP", ".") / "nimcache") if getEnvBool("nimRelease", true): diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/asciidoc.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/asciidoc.py index 0c2531209876..dadcaa96b467 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/asciidoc.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/asciidoc.py @@ -182,6 +182,7 @@ class AsciiDocRenderer(Renderer): self._leave_block() return "\n" def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str: + # NixOS-specific roles are documented at /doc/README.md (with reverse reference) self._parstack[-1].continuing = True content = asciidoc_escape(token.content) if token.meta['name'] == 'manpage' and (url := self._manpage_urls.get(token.content)): diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/commonmark.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/commonmark.py index 6287b60f0a51..7f31d0be44ae 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/commonmark.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/commonmark.py @@ -159,6 +159,7 @@ class CommonMarkRenderer(Renderer): self._leave_block() return "" def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str: + # NixOS-specific roles are documented at /doc/README.md (with reverse reference) self._parstack[-1].continuing = True content = md_make_code(token.content) if token.meta['name'] == 'manpage' and (url := self._manpage_urls.get(token.content)): diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/html.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/html.py index 1de511c7ce31..3e4ff1aedb7a 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/html.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/html.py @@ -136,6 +136,7 @@ class HTMLRenderer(Renderer): def dd_close(self, token: Token, tokens: Sequence[Token], i: int) -> str: return "" def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str: + # NixOS-specific roles are documented at /doc/README.md (with reverse reference) if token.meta['name'] == 'command': return f'{escape(token.content)}' if token.meta['name'] == 'file': diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manpage.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manpage.py index 024ec8d134dd..a3d6e791cabd 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manpage.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manpage.py @@ -253,6 +253,7 @@ class ManpageRenderer(Renderer): self._leave_block() return ".RE" def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str: + # NixOS-specific roles are documented at /doc/README.md (with reverse reference) if token.meta['name'] in [ 'command', 'env', 'option' ]: return f'\\fB{man_escape(token.content)}\\fP' elif token.meta['name'] in [ 'file', 'var' ]: diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/md.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/md.py index 894daf9ca9c7..93f07818b454 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/md.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/md.py @@ -228,6 +228,7 @@ class Renderer: def dd_close(self, token: Token, tokens: Sequence[Token], i: int) -> str: raise RuntimeError("md token not supported", token) def myst_role(self, token: Token, tokens: Sequence[Token], i: int) -> str: + # NixOS-specific roles are documented at /doc/README.md (with reverse reference) raise RuntimeError("md token not supported", token) def attr_span_begin(self, token: Token, tokens: Sequence[Token], i: int) -> str: raise RuntimeError("md token not supported", token) diff --git a/pkgs/by-name/op/open-web-calendar/package.nix b/pkgs/by-name/op/open-web-calendar/package.nix index 5e77b50f470b..0d8c0cc7cac9 100644 --- a/pkgs/by-name/op/open-web-calendar/package.nix +++ b/pkgs/by-name/op/open-web-calendar/package.nix @@ -12,7 +12,7 @@ let in python.pkgs.buildPythonApplication rec { pname = "open-web-calendar"; - version = "1.42"; + version = "1.48"; pyproject = true; disabled = python.pythonOlder "3.9"; @@ -20,7 +20,7 @@ python.pkgs.buildPythonApplication rec { src = fetchPypi { inherit version; pname = "open_web_calendar"; - hash = "sha256-w4XaT1+qIM80K6B+LIAeYdZzYIw4FYSd/nvWphOx460="; + hash = "sha256-SSe5vkrfTpUFdSLglBxo5//VZfuXYnWs5sUKJL2zWOw="; }; # The Pypi tarball doesn't contain open_web_calendars/features @@ -35,6 +35,7 @@ python.pkgs.buildPythonApplication rec { build-system = with python.pkgs; [ hatchling hatch-vcs + hatch-requirements-txt ]; dependencies = @@ -44,6 +45,10 @@ python.pkgs.buildPythonApplication rec { flask-allowed-hosts flask icalendar + icalendar-compatibility + cryptography + bcrypt + caldav requests pyyaml recurring-ical-events @@ -52,6 +57,7 @@ python.pkgs.buildPythonApplication rec { beautifulsoup4 lxml-html-clean pytz + mergecal ] ++ requests.optional-dependencies.socks; diff --git a/pkgs/by-name/op/openvmm/package.nix b/pkgs/by-name/op/openvmm/package.nix index 2f63584b0f1c..3cc2e402a036 100644 --- a/pkgs/by-name/op/openvmm/package.nix +++ b/pkgs/by-name/op/openvmm/package.nix @@ -9,13 +9,13 @@ rustPlatform.buildRustPackage { pname = "openvmm"; - version = "0-unstable-2024-10-19"; + version = "0-unstable-2025-03-13"; src = fetchFromGitHub { owner = "microsoft"; repo = "openvmm"; - rev = "2e5acb8ab89b75d6ff59d537e9f21445d830386d"; - hash = "sha256-Fi5hDFV2SfpqJjXSc7YwlNDnoL5TTgiqmFMt+ls2Uu4="; + rev = "047fde8a2b3eec17a46203fbc54ce7f3aa9b4dfd"; + hash = "sha256-w6MxJVm5/ABU04MZUCSjzHVZLXQIsOVCIJZkHOfxQC0="; }; separateDebugInfo = true; @@ -33,7 +33,7 @@ rustPlatform.buildRustPackage { openssl ]; - cargoHash = "sha256-6ciIbLc/L54Rhhf/IOnv63vUlqoXPi087taw6MY80HA="; + cargoHash = "sha256-u0E09yFssd71wUS1BD766ztDImauu90T/jIWOb2v0mE="; useFetchCargoVendor = true; meta = with lib; { diff --git a/pkgs/by-name/os/osmium-tool/package.nix b/pkgs/by-name/os/osmium-tool/package.nix index c7f2f06ad373..7d8bee0466c5 100644 --- a/pkgs/by-name/os/osmium-tool/package.nix +++ b/pkgs/by-name/os/osmium-tool/package.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "osmium-tool"; - version = "1.17.0"; + version = "1.18.0"; src = fetchFromGitHub { owner = "osmcode"; repo = "osmium-tool"; tag = "v${finalAttrs.version}"; - sha256 = "sha256-l6C2DGGKcbMUkKDruM8QzpriqFMvDnsi4OE99a2EzhA="; + hash = "sha256-6CT5vhzZtGZDr3mCgtpI8AGXn+Iiasf9SxUV6qN9+I8="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ow/owntracks-recorder/package.nix b/pkgs/by-name/ow/owntracks-recorder/package.nix index 7f11113a5a2c..ae5133cb46df 100644 --- a/pkgs/by-name/ow/owntracks-recorder/package.nix +++ b/pkgs/by-name/ow/owntracks-recorder/package.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "owntracks-recorder"; - version = "0.9.9"; + version = "1.0.0"; src = fetchFromGitHub { owner = "owntracks"; repo = "recorder"; rev = finalAttrs.version; - hash = "sha256-6oCWzTiQgpp75xojd2ZFsrg+Kd5/gex1BPQVOWHfMuk="; + hash = "sha256-E4hdsUAg8NHjmUrlr8cskezib4qMv+wF32cThe2/kBc="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/pa/paretosecurity/package.nix b/pkgs/by-name/pa/paretosecurity/package.nix index 95aa97478311..34d5ad430a38 100644 --- a/pkgs/by-name/pa/paretosecurity/package.nix +++ b/pkgs/by-name/pa/paretosecurity/package.nix @@ -9,19 +9,19 @@ buildGoModule rec { pname = "paretosecurity"; - version = "0.0.86"; + version = "0.0.87"; src = fetchFromGitHub { owner = "ParetoSecurity"; repo = "agent"; rev = version; - hash = "sha256-ASWECYUfG+lmkvAwQf05mCUwwFlUrx3vI0pYbGHdbuI="; + hash = "sha256-SgMALLuGq4HGj5eo7JdvtcWOEGuUoLyC3pgamB1WBzI="; }; # tests do network access, fix pending doCheck = false; - vendorHash = "sha256-eqwrCbDKmXOCo0+X8w6Me2aaCQ3WQljgOtzqI01FzbU="; + vendorHash = "sha256-HReQu23sHLaxc5N8h2vYv64ruJPmY4HM9whAEKV+3Eo="; proxyVendor = true; subPackages = [ diff --git a/pkgs/by-name/pa/patch2pr/package.nix b/pkgs/by-name/pa/patch2pr/package.nix index 12e0059452c1..714c3140070a 100644 --- a/pkgs/by-name/pa/patch2pr/package.nix +++ b/pkgs/by-name/pa/patch2pr/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "patch2pr"; - version = "0.32.0"; + version = "0.33.0"; src = fetchFromGitHub { owner = "bluekeyes"; repo = "patch2pr"; rev = "v${version}"; - hash = "sha256-WYNvHwikY6ULEar2ZBvsALEgHuZarrwBjk3ZaGhvlk8="; + hash = "sha256-RQg7Fo8Z0P+z6Fv6YTv/IpEErP6ncxylvBaeargTrIQ="; }; - vendorHash = "sha256-Y7WpJ6h76+5BJonmDldXYzUxLH6YYl9zlitoqX3H/mk="; + vendorHash = "sha256-VzskPOd1nlrkiwGsS5OoXP0v8LQbqS+NumV2WoahFvY="; ldflags = [ "-X main.version=${version}" diff --git a/pkgs/by-name/pe/penpot-desktop/electron-package-lock.diff b/pkgs/by-name/pe/penpot-desktop/electron-package-lock.diff deleted file mode 100644 index 9e2fee2657fb..000000000000 --- a/pkgs/by-name/pe/penpot-desktop/electron-package-lock.diff +++ /dev/null @@ -1,39 +0,0 @@ -diff --git i/package-lock.json w/package-lock.json -index 039e3c0..135e0a0 100644 ---- i/package-lock.json -+++ w/package-lock.json -@@ -18,7 +18,7 @@ - "@commitlint/cli": "^19.6.1", - "@commitlint/config-conventional": "^19.6.0", - "@eslint/js": "^9.19.0", -- "electron": "^34.0.1", -+ "electron": "^33.3.1", - "electron-builder": "^25.1.8", - "eslint": "^9.19.0", - "globals": "^15.14.0", -@@ -3495,9 +3495,9 @@ - } - }, - "node_modules/electron": { -- "version": "34.0.1", -- "resolved": "https://registry.npmjs.org/electron/-/electron-34.0.1.tgz", -- "integrity": "sha512-aArw5tAM80i3CKwEREnyZSM1SkARf5Jd1yBMTIdOL4pB1M+p/oDeyWSFI9Dl+vujyfJKiK4SS5+j19wna1onMw==", -+ "version": "33.3.1", -+ "resolved": "https://registry.npmjs.org/electron/-/electron-33.3.1.tgz", -+ "integrity": "sha512-Z7l2bVgpdKxHQMI4i0CirBX2n+iCYKOx5mbzNM3BpOyFELwlobEXKmzCmEnwP+3EcNeIhUQyIEBFQxN06QgdIw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", -diff --git i/package.json w/package.json -index 9525e62..deb065e 100644 ---- i/package.json -+++ w/package.json -@@ -43,7 +43,7 @@ - "@commitlint/cli": "^19.6.1", - "@commitlint/config-conventional": "^19.6.0", - "@eslint/js": "^9.19.0", -- "electron": "^34.0.1", -+ "electron": "^33.1.1", - "electron-builder": "^25.1.8", - "eslint": "^9.19.0", - "globals": "^15.14.0", diff --git a/pkgs/by-name/pe/penpot-desktop/package.nix b/pkgs/by-name/pe/penpot-desktop/package.nix index 302e63e0a1da..91efa18e6afb 100644 --- a/pkgs/by-name/pe/penpot-desktop/package.nix +++ b/pkgs/by-name/pe/penpot-desktop/package.nix @@ -2,7 +2,7 @@ lib, buildNpmPackage, copyDesktopItems, - electron_33, + electron, fetchFromGitHub, jq, makeDesktopItem, @@ -15,29 +15,24 @@ let description = "Unofficial desktop application for the open-source design tool, Penpot"; icon = "penpot"; nodejs = nodejs_22; - electron = electron_33; in buildNpmPackage rec { pname = "penpot-desktop"; - version = "0.10.0"; + version = "0.11.0"; src = fetchFromGitHub { owner = "author-more"; repo = "penpot-desktop"; tag = "v${version}"; - hash = "sha256-KlTE61k5rl13GPpOznpugSn1hmn55Cd/Z9vhwDjWhPo="; + hash = "sha256-33LAhR0L7pAnS27dz5DuqgfUllyAFA9JVZRmrHoajE4="; }; - patches = [ - ./electron-package-lock.diff # this downgrades electron version from 34 to 33 to match the latest available version in nixpkgs - ]; - makeCacheWritable = true; npmFlags = [ "--engine-strict" "--legacy-peer-deps" ]; - npmDepsHash = "sha256-DWZ1ih4i0vyYlShBWkJTCq0IKgT4CgEmvURnGoQiSy0="; + npmDepsHash = "sha256-BR51Oi9Ffxy7d0fBkSQ6Iz/PVi+ghIaLqzm3Loq6aDo="; # Do not run the default build script as it leads to errors caused by the electron-builder configuration dontNpmBuild = true; @@ -81,11 +76,9 @@ buildNpmPackage rec { --inherit-argv0 pushd build - for icon in icon.*; do - dir=$out/share/icons/hicolor/"''${icon%.*}"/apps - mkdir -p "$dir" - cp "$icon" "$dir"/${icon}.png - done + dir=$out/share/icons/hicolor/512x512/apps + mkdir -p "$dir" + cp icon.png "$dir"/${icon}.png popd runHook postInstall @@ -105,10 +98,11 @@ buildNpmPackage rec { meta = { changelog = "https://github.com/author-more/penpot-desktop/releases/tag/v${version}"; inherit description; - homepage = "https://github.com/author-more/penpot.desktop"; + homepage = "https://github.com/author-more/penpot-desktop"; license = lib.licenses.agpl3Only; maintainers = with lib.maintainers; [ ntbbloodbath ]; platforms = electron.meta.platforms; + badPlatforms = lib.platforms.darwin; mainProgram = "penpot-desktop"; }; } diff --git a/pkgs/by-name/pi/pixelflasher/package.nix b/pkgs/by-name/pi/pixelflasher/package.nix index c946c22dbd0b..44793c11c3c3 100644 --- a/pkgs/by-name/pi/pixelflasher/package.nix +++ b/pkgs/by-name/pi/pixelflasher/package.nix @@ -10,14 +10,14 @@ }: python3Packages.buildPythonApplication rec { pname = "pixelflasher"; - version = "7.11.1.0"; + version = "7.11.2.0"; format = "other"; src = fetchFromGitHub { owner = "badabing2005"; repo = "PixelFlasher"; tag = "v${version}"; - hash = "sha256-1h0rHiYi3buLZjWFjJoTDWckeEBtZwFVRNscS3wsD3o="; + hash = "sha256-SwenOw1st8Pk2515wylNsfego5dH6WUC5ocnb6a4+e4="; }; desktopItems = [ diff --git a/pkgs/by-name/pl/plasma-panel-colorizer/package.nix b/pkgs/by-name/pl/plasma-panel-colorizer/package.nix index 98278cbe8e60..8e5de5a58e6d 100644 --- a/pkgs/by-name/pl/plasma-panel-colorizer/package.nix +++ b/pkgs/by-name/pl/plasma-panel-colorizer/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "plasma-panel-colorizer"; - version = "2.3.0"; + version = "2.4.1"; src = fetchFromGitHub { owner = "luisbocanegra"; repo = "plasma-panel-colorizer"; tag = "v${finalAttrs.version}"; - hash = "sha256-Q7qSky/wY5l72EVhTGnwQ8lI3Uu3TnZpgqXaClCxWZQ="; + hash = "sha256-YDYVjAbizmo1+E1DVeyISKM4Jb/HkKY/On9RanJBuvI="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/pm/pmtiles/package.nix b/pkgs/by-name/pm/pmtiles/package.nix index 4c17080a1d0b..3dd33ffb972b 100644 --- a/pkgs/by-name/pm/pmtiles/package.nix +++ b/pkgs/by-name/pm/pmtiles/package.nix @@ -5,16 +5,16 @@ }: buildGoModule rec { pname = "pmtiles"; - version = "1.25.3"; + version = "1.26.0"; src = fetchFromGitHub { owner = "protomaps"; repo = "go-pmtiles"; tag = "v${version}"; - hash = "sha256-usntKGxErwywMy0tVzl0neycrgFQhgLTTdv2u5QwHUQ="; + hash = "sha256-J2gR1KJh8mMp9VA3GwXyvg1yM5doMw+X/5zOik0tDm8="; }; - vendorHash = "sha256-NQ74rLYhzacOrw6Tl6WoERfqbx2aF9X18rh0oOjCotE="; + vendorHash = "sha256-4E7qtP0w/c1LLJ/pNBJFosl1K3ycq4HLfjO0CmHaT3k="; ldflags = [ "-s" diff --git a/pkgs/by-name/po/postfix/package.nix b/pkgs/by-name/po/postfix/package.nix index 0932e7adee6f..bdac9ee5e202 100644 --- a/pkgs/by-name/po/postfix/package.nix +++ b/pkgs/by-name/po/postfix/package.nix @@ -98,6 +98,7 @@ stdenv.mkDerivation rec { patches = [ ./postfix-script-shell.patch ./post-install-script.patch + ./postfix-3.0-no-warnings.patch ./relative-symlinks.patch # glibc 2.34 compat diff --git a/pkgs/by-name/po/postfix/postfix-3.0-no-warnings.patch b/pkgs/by-name/po/postfix/postfix-3.0-no-warnings.patch new file mode 100644 index 000000000000..acfc6b9e14a9 --- /dev/null +++ b/pkgs/by-name/po/postfix/postfix-3.0-no-warnings.patch @@ -0,0 +1,86 @@ +diff -ru3 postfix-3.0.3/conf/postfix-script postfix-3.0.3-new/conf/postfix-script +--- postfix-3.0.3/conf/postfix-script 2014-06-27 18:05:15.000000000 +0400 ++++ postfix-3.0.3-new/conf/postfix-script 2016-01-09 17:51:38.545733631 +0300 +@@ -84,24 +84,6 @@ + exit 1 + } + +-# If this is a secondary instance, don't touch shared files. +- +-instances=`test ! -f $def_config_directory/main.cf || +- $command_directory/postconf -qc $def_config_directory \ +- -h multi_instance_directories | sed 'y/,/ /'` || { +- $FATAL cannot execute $command_directory/postconf! +- exit 1 +-} +- +-check_shared_files=1 +-for name in $instances +-do +- case "$name" in +- "$def_config_directory") ;; +- "$config_directory") check_shared_files=; break;; +- esac +-done +- + # + # Parse JCL + # +@@ -262,22 +244,6 @@ + -prune \( -perm -020 -o -perm -002 \) \ + -exec $WARN group or other writable: {} \; + +- # Check Postfix root-owned directory tree owner/permissions. +- +- todo="$config_directory/." +- test -n "$check_shared_files" && { +- todo="$daemon_directory/. $meta_directory/. $todo" +- test "$shlib_directory" = "no" || +- todo="$shlib_directory/. $todo" +- } +- todo=`echo "$todo" | tr ' ' '\12' | sort -u` +- +- find $todo ! -user root \ +- -exec $WARN not owned by root: {} \; +- +- find $todo \( -perm -020 -o -perm -002 \) \ +- -exec $WARN group or other writable: {} \; +- + # Check Postfix mail_owner-owned directory tree owner/permissions. + + find $data_directory/. ! -user $mail_owner \ +@@ -302,18 +268,11 @@ + # Check Postfix setgid_group-owned directory and file group/permissions. + + todo="$queue_directory/public $queue_directory/maildrop" +- test -n "$check_shared_files" && +- todo="$command_directory/postqueue $command_directory/postdrop $todo" + + find $todo \ + -prune ! -group $setgid_group \ + -exec $WARN not owned by group $setgid_group: {} \; + +- test -n "$check_shared_files" && +- find $command_directory/postqueue $command_directory/postdrop \ +- -prune ! -perm -02111 \ +- -exec $WARN not set-gid or not owner+group+world executable: {} \; +- + # Check non-Postfix root-owned directory tree owner/content. + + for dir in bin etc lib sbin usr +@@ -334,15 +293,6 @@ + + find corrupt -type f -exec $WARN damaged message: {} \; + +- # Check for non-Postfix MTA remnants. +- +- test -n "$check_shared_files" -a -f /usr/sbin/sendmail -a \ +- -f /usr/lib/sendmail && { +- cmp -s /usr/sbin/sendmail /usr/lib/sendmail || { +- $WARN /usr/lib/sendmail and /usr/sbin/sendmail differ +- $WARN Replace one by a symbolic link to the other +- } +- } + exit 0 + ;; + diff --git a/pkgs/by-name/po/powershell-editor-services/package.nix b/pkgs/by-name/po/powershell-editor-services/package.nix index b303d617e2b6..3fbf787d671d 100644 --- a/pkgs/by-name/po/powershell-editor-services/package.nix +++ b/pkgs/by-name/po/powershell-editor-services/package.nix @@ -7,11 +7,11 @@ }: stdenvNoCC.mkDerivation rec { pname = "powershell-editor-services"; - version = "4.2.0"; + version = "4.3.0"; src = fetchzip { url = "https://github.com/PowerShell/PowerShellEditorServices/releases/download/v${version}/PowerShellEditorServices.zip"; - hash = "sha256-HSLpgnCx871BuKcerX8NZIN+NbpEz+KQtm1HfUXr7kY="; + hash = "sha256-YiXxztfsYujJK6+56Lwi4QdRIZb7NH+dAUJTOYk8pGI="; stripRoot = false; }; diff --git a/pkgs/by-name/pr/prefect/make_ui_files_writeable_on_startup.patch b/pkgs/by-name/pr/prefect/make_ui_files_writeable_on_startup.patch new file mode 100644 index 000000000000..279c2fa88118 --- /dev/null +++ b/pkgs/by-name/pr/prefect/make_ui_files_writeable_on_startup.patch @@ -0,0 +1,42 @@ +From a97d5f501ff3125d96e6c64dfa498ca1a598a4bd Mon Sep 17 00:00:00 2001 +From: happysalada +Date: Sun, 2 Mar 2025 08:30:36 -0500 +Subject: [PATCH] feat: ensure ui files are writeable On startup prefect copies + over files from the ui into the ui directory. If for any reason the ui files + were not writeable, the whole setup will fail. This PR ensures that the + copied files are writeable. To give a bit more context, I am currently + packaging Prefect for nixos. Nix having a little bit of a strict build + system, makes sure that the built package has only read-only files. this is + to ensure the build is deterministic. I understand that this might appear as + a detail related to nix build system only. I can patch the source when + building the nix package, but I thought I would try to contribute the patch. + No hard feelings if you are not interested in this patch. Thank you for + developping prefect! + +fix formatting +--- + src/prefect/server/api/server.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/prefect/server/api/server.py b/src/prefect/server/api/server.py +index e5b64d527..ac64616ef 100644 +--- a/src/prefect/server/api/server.py ++++ b/src/prefect/server/api/server.py +@@ -250,8 +250,14 @@ def copy_directory(directory: str, path: str) -> None: + if os.path.exists(destination): + shutil.rmtree(destination) + shutil.copytree(source, destination, symlinks=True) ++ # ensure copied files are writeable ++ for root, dirs, files in os.walk(destination): ++ for f in files: ++ os.chmod(os.path.join(root, f), 0o600) + else: + shutil.copy2(source, destination) ++ # Ensure copied file is writeable ++ os.chmod(destination, 0o600) + + + async def custom_internal_exception_handler( +-- +2.48.1 + diff --git a/pkgs/by-name/pr/prefect/package.nix b/pkgs/by-name/pr/prefect/package.nix index 52c734533609..78627cc832c3 100644 --- a/pkgs/by-name/pr/prefect/package.nix +++ b/pkgs/by-name/pr/prefect/package.nix @@ -2,6 +2,7 @@ lib, python3Packages, fetchPypi, + nixosTests, }: python3Packages.buildPythonApplication rec { @@ -18,6 +19,10 @@ python3Packages.buildPythonApplication rec { hash = "sha256-4kwGrKvDihBi6Gcvcf6ophNI6GGd+M4qR0nnu/AUK1Q="; }; + patches = [ + ./make_ui_files_writeable_on_startup.patch + ]; + pythonRelaxDeps = [ "websockets" ]; @@ -147,6 +152,16 @@ python3Packages.buildPythonApplication rec { ]; }; + makeWrapperArgs = [ + # Add the installed directories to the python path so the worker can find them + "--prefix PYTHONPATH : ${python3Packages.makePythonPath dependencies}" + "--prefix PYTHONPATH : $out/${python3Packages.python.sitePackages}" + ]; + + passthru.tests = { + inherit (nixosTests) prefect; + }; + # Tests are not included in the pypi source doCheck = false; # nativeCheckInputs = ( diff --git a/pkgs/by-name/pr/protonmail-desktop/package.nix b/pkgs/by-name/pr/protonmail-desktop/package.nix index d05c31a45e54..35a76591e9eb 100644 --- a/pkgs/by-name/pr/protonmail-desktop/package.nix +++ b/pkgs/by-name/pr/protonmail-desktop/package.nix @@ -9,7 +9,7 @@ }: let mainProgram = "proton-mail"; - version = "1.7.1"; + version = "1.8.0"; in stdenv.mkDerivation { @@ -18,7 +18,7 @@ stdenv.mkDerivation { src = fetchurl { url = "https://proton.me/download/mail/linux/${version}/ProtonMail-desktop-beta.deb"; - sha256 = "sha256-h5OQBZrG8whhsilS7qQU8txFKzjpl+Q27fcUOBYUzbQ="; + sha256 = "sha256-ti00RSMnSwrGNUys7mO0AmK+OSq4SZmCsfPKm7RRm2g="; }; dontConfigure = true; diff --git a/pkgs/by-name/pv/pv-migrate/package.nix b/pkgs/by-name/pv/pv-migrate/package.nix index 0488e41ae9e6..4878c27a2b7d 100644 --- a/pkgs/by-name/pv/pv-migrate/package.nix +++ b/pkgs/by-name/pv/pv-migrate/package.nix @@ -7,18 +7,18 @@ buildGoModule rec { pname = "pv-migrate"; - version = "2.2.0"; + version = "2.2.1"; src = fetchFromGitHub { owner = "utkuozdemir"; repo = pname; tag = "v${version}"; - sha256 = "sha256-yYY3UgqHdFXoGj6n4kY45J/2QujPboWucnmbbXjjhRM="; + sha256 = "sha256-ZCNOg2HZjcEEM+hsAOtRR6hYmoKLyThpIw3warnravc="; }; subPackages = [ "cmd/pv-migrate" ]; - vendorHash = "sha256-wMlwfWMrjvo+9VUt8ZUcYHrsa9NOZhCj6LArdqXVCI4="; + vendorHash = "sha256-V1IR9teiJeCqekKgTShOEZhtlBbtsnp6eZe6A7q6EAQ="; ldflags = [ "-s" diff --git a/pkgs/by-name/py/pywal16/package.nix b/pkgs/by-name/py/pywal16/package.nix index b2e94eb7bf4c..3b5cbc11e155 100644 --- a/pkgs/by-name/py/pywal16/package.nix +++ b/pkgs/by-name/py/pywal16/package.nix @@ -9,14 +9,14 @@ python3.pkgs.buildPythonApplication rec { pname = "pywal16"; - version = "3.8.2"; + version = "3.8.3"; pyproject = true; src = fetchFromGitHub { owner = "eylles"; repo = "pywal16"; tag = version; - hash = "sha256-3GowgiLZpQmAaR903sg+4MmzBkj5mS+D3556F6lxxfw="; + hash = "sha256-yF90HkRg44pPRO/7Gj5BEgj44Qgs4OIM+GR7inJVKMI="; }; build-system = [ python3.pkgs.setuptools ]; diff --git a/pkgs/by-name/qg/qgroundcontrol/package.nix b/pkgs/by-name/qg/qgroundcontrol/package.nix index 758642bb9130..cdc03f547e39 100644 --- a/pkgs/by-name/qg/qgroundcontrol/package.nix +++ b/pkgs/by-name/qg/qgroundcontrol/package.nix @@ -11,7 +11,7 @@ stdenv.mkDerivation rec { pname = "qgroundcontrol"; - version = "4.4.3"; + version = "4.4.4"; propagatedBuildInputs = with libsForQt5; [ qtbase @@ -87,7 +87,7 @@ stdenv.mkDerivation rec { owner = "mavlink"; repo = "qgroundcontrol"; rev = "v${version}"; - hash = "sha256-pHs9pRL5fAeRtDcNPCdqy4oPYyJ0mbJjLDlotFfjOl4="; + hash = "sha256-+BsI79p0XJ1nCjEtaCVgHbD+jseVGLQZOll79xZ5THo="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/r2/r2modman/package.nix b/pkgs/by-name/r2/r2modman/package.nix index 76c14bd473a1..ce5073e41d83 100644 --- a/pkgs/by-name/r2/r2modman/package.nix +++ b/pkgs/by-name/r2/r2modman/package.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "r2modman"; - version = "3.1.56"; + version = "3.1.57"; src = fetchFromGitHub { owner = "ebkr"; repo = "r2modmanPlus"; rev = "v${finalAttrs.version}"; - hash = "sha256-38PHTI/sAKLf70b/uBPYlJvbkogijiyuUvn7veGGZTY="; + hash = "sha256-1b24tclqXGx85BGFYL9cbthLScVWau2OmRh9YElfCLs="; }; offlineCache = fetchYarnDeps { diff --git a/pkgs/by-name/ra/railway/package.nix b/pkgs/by-name/ra/railway/package.nix index cd14943a88cf..ebc208a9d4fa 100644 --- a/pkgs/by-name/ra/railway/package.nix +++ b/pkgs/by-name/ra/railway/package.nix @@ -12,17 +12,17 @@ let in rustPlatform.buildRustPackage rec { pname = "railway"; - version = "3.22.0"; + version = "3.23.0"; src = fetchFromGitHub { owner = "railwayapp"; repo = "cli"; rev = "v${version}"; - hash = "sha256-WzdLMKL0Bg8z1qlhg4sbzRuGreqgyydqLEkwl8lbngY="; + hash = "sha256-WxL5mETs7PVGhJcg1wVobYo/ETYFg3/1Fs/wJCJgKXg="; }; useFetchCargoVendor = true; - cargoHash = "sha256-TVuA8Xo7v+NSGMnttLu1iCwFpi7ue7s/z3i1H4ofaXs="; + cargoHash = "sha256-cMi3raSQgCSu6ZbiTgU2ABCy+NWJjY5IcWPJMMcmqyI="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/ra/rattler-build/package.nix b/pkgs/by-name/ra/rattler-build/package.nix index 30b319e6683e..d546f0cae5ea 100644 --- a/pkgs/by-name/ra/rattler-build/package.nix +++ b/pkgs/by-name/ra/rattler-build/package.nix @@ -14,17 +14,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "rattler-build"; - version = "0.38.0"; + version = "0.39.0"; src = fetchFromGitHub { owner = "prefix-dev"; repo = "rattler-build"; tag = "v${finalAttrs.version}"; - hash = "sha256-l8pMUgSU0L1GhB3FiwDVcSEJCpnfE46bCsyNsZSG0mQ="; + hash = "sha256-8U48Jow/6mOBTxRgMUtW6CaTkhwaAu8Hkad3WjRdkEM="; }; useFetchCargoVendor = true; - cargoHash = "sha256-TgUPeoOua9oqPPDb+SAlYztd1ZBEFvsSrCYCQGXKhgU="; + cargoHash = "sha256-U9ebUV9Hkfu5clAffncMXBo/ujnVf80Qt6dOkzphWx4="; doCheck = false; # test requires network access diff --git a/pkgs/by-name/re/reaper-reapack-extension/darwin.nix b/pkgs/by-name/re/reaper-reapack-extension/darwin.nix new file mode 100644 index 000000000000..d44bf2c324bb --- /dev/null +++ b/pkgs/by-name/re/reaper-reapack-extension/darwin.nix @@ -0,0 +1,36 @@ +{ + stdenvNoCC, + fetchurl, + pname, + version, + meta, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + inherit + pname + version + meta + ; + src = fetchurl { + url = + let + arch = if stdenvNoCC.hostPlatform.system == "x86_64-darwin" then "x86_64" else "arm64"; + in + "https://github.com/cfillion/reapack/releases/download/v${finalAttrs.version}/reaper_reapack-${arch}.dylib"; + hash = + { + x86_64-darwin = "sha256-slLzjIWpEzOn4GAcRwb6WdJSVExuQK0cVgHgd7qM4oE="; + aarch64-darwin = "sha256-eFKEUuTUWE4Wp/vWVrvTbK78U6TicvRXSWggVAH2Og4="; + } + .${stdenvNoCC.hostPlatform.system}; + }; + + dontUnpack = true; + + installPhase = '' + runHook preInstall + install -D * -t $out/UserPlugins + runHook postInstall + ''; +}) diff --git a/pkgs/by-name/re/reaper-reapack-extension/linux.nix b/pkgs/by-name/re/reaper-reapack-extension/linux.nix new file mode 100644 index 000000000000..04fd22b25267 --- /dev/null +++ b/pkgs/by-name/re/reaper-reapack-extension/linux.nix @@ -0,0 +1,57 @@ +{ + boost, + catch2_3, + cmake, + curl, + fetchFromGitHub, + git, + libxml2, + openssl, + php, + ruby, + sqlite, + stdenv, + zlib, + + pname, + version, + meta, +}: + +stdenv.mkDerivation (finalAttrs: { + inherit + pname + version + meta + ; + + src = fetchFromGitHub { + owner = "cfillion"; + repo = "reapack"; + tag = "v${finalAttrs.version}"; + hash = "sha256-RhXAjTNAJegeCJaYkvwJedZrXRA92dQ0EeHJr9ngeCg="; + fetchSubmodules = true; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + git + php + ruby + ]; + + buildInputs = [ + boost + catch2_3 + curl + libxml2 + openssl + sqlite + zlib + ]; + + cmakeFlags = [ "-Wno-dev" ]; + +}) diff --git a/pkgs/by-name/re/reaper-reapack-extension/package.nix b/pkgs/by-name/re/reaper-reapack-extension/package.nix new file mode 100644 index 000000000000..1f5bafa0574c --- /dev/null +++ b/pkgs/by-name/re/reaper-reapack-extension/package.nix @@ -0,0 +1,27 @@ +{ + lib, + stdenvNoCC, + callPackage, +}: +let + p = if stdenvNoCC.hostPlatform.isDarwin then ./darwin.nix else ./linux.nix; +in +callPackage p { + pname = "reaper-reapack-extension"; + version = "1.2.5"; + meta = { + description = "Package manager for REAPER"; + homepage = "https://reapack.com/"; + license = with lib.licenses; [ + lgpl3Plus + gpl3Plus + ]; + maintainers = with lib.maintainers; [ pancaek ]; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + }; +} diff --git a/pkgs/by-name/re/reaper-sws-extension/darwin.nix b/pkgs/by-name/re/reaper-sws-extension/darwin.nix new file mode 100644 index 000000000000..1ad6b3688032 --- /dev/null +++ b/pkgs/by-name/re/reaper-sws-extension/darwin.nix @@ -0,0 +1,52 @@ +{ + stdenvNoCC, + fetchurl, + pname, + version, + meta, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + inherit + pname + version + meta + ; + srcs = + + let + plugin = fetchurl { + url = + let + arch = if stdenvNoCC.hostPlatform.system == "x86_64-darwin" then "x86_64" else "arm64"; + in + "https://github.com/reaper-oss/sws/releases/download/v${finalAttrs.version}/reaper_sws-${arch}.dylib"; + hash = + { + x86_64-darwin = "sha256-B185QWS9FaC/0XDhxUBbgr9zu2Ot8OIsfaPQ3sUHh4s="; + aarch64-darwin = "sha256-8gbyPlnIXdWtSD+Aj70xzacJhO34edTTG2IOryB67os="; + } + .${stdenvNoCC.hostPlatform.system}; + }; + in + [ + plugin + (fetchurl { + url = "https://github.com/reaper-oss/sws/releases/download/v${finalAttrs.version}/sws_python64.py"; + hash = "sha256-Yujj60+jOEfdSZ74cRU1Wxoh7RL2fo/IhJIpa+BDYV0="; + }) + (fetchurl { + url = "https://github.com/reaper-oss/sws/releases/download/v${finalAttrs.version}/sws_python32.py"; + hash = "sha256-QktzdIDpTvNs9IrH7TOI6LTIBkfuQ3cqw06iqLxSSTI="; + }) + ]; + + dontUnpack = true; + + installPhase = '' + runHook preInstall + install -D *.py -t $out/Scripts + install -D *.dylib -t $out/UserPlugins + runHook postInstall + ''; +}) diff --git a/pkgs/by-name/re/reaper-sws-extension/linux.nix b/pkgs/by-name/re/reaper-sws-extension/linux.nix new file mode 100644 index 000000000000..c45de74689b8 --- /dev/null +++ b/pkgs/by-name/re/reaper-sws-extension/linux.nix @@ -0,0 +1,39 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + php, + perl, + git, + pkg-config, + gtk3, + + pname, + version, + meta, +}: +stdenv.mkDerivation (finalAttrs: { + inherit pname version meta; + + src = fetchFromGitHub { + owner = "reaper-oss"; + repo = "sws"; + tag = "v${finalAttrs.version}"; + hash = "sha256-37pBbNACQuuEk1HJTiUHdb0mDiR2+ZsEQUOhz7mrPPg="; + fetchSubmodules = true; + }; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + git + perl + php + pkg-config + ]; + + buildInputs = [ gtk3 ]; + +}) diff --git a/pkgs/by-name/re/reaper-sws-extension/package.nix b/pkgs/by-name/re/reaper-sws-extension/package.nix new file mode 100644 index 000000000000..4f8a4892cc17 --- /dev/null +++ b/pkgs/by-name/re/reaper-sws-extension/package.nix @@ -0,0 +1,29 @@ +{ + lib, + stdenvNoCC, + callPackage, +}: +let + p = if stdenvNoCC.hostPlatform.isDarwin then ./darwin.nix else ./linux.nix; +in +callPackage p { + + pname = "reaper-sws-extension"; + version = "2.14.0.3"; + meta = { + description = "Reaper Plugin Extension"; + longDescription = '' + The SWS / S&M extension is a collection of features that seamlessly integrate into REAPER, the Digital Audio Workstation (DAW) software by Cockos, Inc. + It is a collaborative and open source project. + ''; + homepage = "https://www.sws-extension.org/"; + maintainers = with lib.maintainers; [ pancaek ]; + license = lib.licenses.mit; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + }; +} diff --git a/pkgs/by-name/re/renode-dts2repl/package.nix b/pkgs/by-name/re/renode-dts2repl/package.nix index ee778ec7c21e..448c21e62e27 100644 --- a/pkgs/by-name/re/renode-dts2repl/package.nix +++ b/pkgs/by-name/re/renode-dts2repl/package.nix @@ -7,14 +7,14 @@ python3.pkgs.buildPythonApplication { pname = "renode-dts2repl"; - version = "0-unstable-2025-03-05"; + version = "0-unstable-2025-03-17"; pyproject = true; src = fetchFromGitHub { owner = "antmicro"; repo = "dts2repl"; - rev = "3aa8ca84d3cba6043ebf9158b9fa1ce77beb7ea8"; - hash = "sha256-k2gaDI5eymAqhqW9XErR2QlU7VNoquAYi+8L1U6Lcg0="; + rev = "1039408cd06b7630bef0ef2d04d64d14e9a00641"; + hash = "sha256-Ho7H4gb48PfkuF0q4My9E4MHIny1cfqWeLwZpVb0L1E="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/rp/rp/package.nix b/pkgs/by-name/rp/rp/package.nix new file mode 100644 index 000000000000..7bf1a58aaf73 --- /dev/null +++ b/pkgs/by-name/rp/rp/package.nix @@ -0,0 +1,39 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + ninja, +}: +stdenv.mkDerivation rec { + pname = "rp"; + version = "2.1.4"; + + nativeBuildInputs = [ + cmake + ninja + ]; + buildInputs = lib.optionals (stdenv.isLinux) [ stdenv.cc.libc.static ]; + + src = fetchFromGitHub { + owner = "0vercl0k"; + repo = "rp"; + rev = "a60f8117443e421bb572df890341b5a0f982c267"; + hash = "sha256-lkyuV+yC3NTsdipyJkoxgh1N8/+15N15nQpjItUgyb0="; + }; + sourceRoot = "${src.name}/src"; + + installPhase = '' + mkdir -p $out/bin + cp rp-${if stdenv.isDarwin then "osx" else "lin"} $out/bin/rp + ''; + + meta = with lib; { + description = "Fast C++ ROP gadget finder for PE/ELF/Mach-O x86/x64/ARM/ARM64 binaries"; + homepage = "https://github.com/0vercl0k/rp"; + license = licenses.mit; + maintainers = with maintainers; [ sportshead ]; + platforms = platforms.all; + mainProgram = "rp"; + }; +} diff --git a/pkgs/by-name/ru/rucola/package.nix b/pkgs/by-name/ru/rucola/package.nix index 502eebfdc485..974be5e86620 100644 --- a/pkgs/by-name/ru/rucola/package.nix +++ b/pkgs/by-name/ru/rucola/package.nix @@ -9,17 +9,17 @@ rustPlatform.buildRustPackage rec { pname = "rucola"; - version = "0.4.1"; + version = "0.5.0"; src = fetchFromGitHub { owner = "Linus-Mussmaecher"; repo = "rucola"; rev = "v${version}"; - hash = "sha256-FeQPf9sCEqypvB8VrGa1nnXmxlqo6K4fpLkJakbysvI="; + hash = "sha256-vBY6tkzLgZuSU5AqH3uzDwjPl/ayWY0S8uRvlgE/Wmw="; }; useFetchCargoVendor = true; - cargoHash = "sha256-Cciop3vwRbK3JCUx+SBdIv5Ix/15p6/SmHR8ZVb6LSM="; + cargoHash = "sha256-a1f+WSXMNaZCKc7bScknW9WW+Qi1CZIuNLdJseem11I="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ru/rustlings/package.nix b/pkgs/by-name/ru/rustlings/package.nix index 48a56690b2d1..5c3f1549df0c 100644 --- a/pkgs/by-name/ru/rustlings/package.nix +++ b/pkgs/by-name/ru/rustlings/package.nix @@ -8,6 +8,7 @@ cargo, rustc, clippy, + gcc, makeWrapper, }: let @@ -47,6 +48,7 @@ rustPlatform.buildRustPackage { cargo rustc clippy + gcc ] } ''; diff --git a/pkgs/by-name/sa/samrewritten/package.nix b/pkgs/by-name/sa/samrewritten/package.nix index 978f6a973137..ebec8ce6973c 100644 --- a/pkgs/by-name/sa/samrewritten/package.nix +++ b/pkgs/by-name/sa/samrewritten/package.nix @@ -12,14 +12,14 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "samrewritten"; - version = "202008-unstable-2025-01-09"; + version = "202008-unstable-2025-03-11"; src = fetchFromGitHub { owner = "PaulCombal"; repo = "SamRewritten"; # The latest release is too old, use latest commit instead - rev = "b18a009c20eb90e2edffb6ee6d5290c86c860e03"; - hash = "sha256-qwasSxNc4hJDadGTUOxzumJ4lZcHQ4Aa8W8jIJAvTt4="; + rev = "cac0291f3e4465135f5cf7d5b99fdb005fb23ade"; + hash = "sha256-+f/j2q1lJ3yp3/BBgnK9kS4P3ULQ5onQPAcUV12LYnI="; }; makeFlags = [ "PREFIX=$(out)" ]; diff --git a/pkgs/by-name/sb/sbt-extras/package.nix b/pkgs/by-name/sb/sbt-extras/package.nix index a3e052c16e93..454582b04789 100644 --- a/pkgs/by-name/sb/sbt-extras/package.nix +++ b/pkgs/by-name/sb/sbt-extras/package.nix @@ -18,14 +18,14 @@ stdenv.mkDerivation rec { pname = "sbt-extras"; - rev = "e16dab993203b611b9592ddae7b8822a68ae16ec"; - version = "2024-11-06"; + rev = "0282f6f856be680c91184d8a4b2b8698da84fae3"; + version = "2025-03-08"; src = fetchFromGitHub { owner = "paulp"; repo = "sbt-extras"; inherit rev; - sha256 = "Z9bN+gmWiomWnp94pMXf5+Bksl6OejIPbYUGfVrDxJQ="; + sha256 = "nZnrs+oODq+8KZ73JrWDptC0KLLHAGY1SdtRi4zEQ58="; }; dontBuild = true; diff --git a/pkgs/by-name/sc/schemaspy/package.nix b/pkgs/by-name/sc/schemaspy/package.nix index bb5cfddfd261..2a8922758043 100644 --- a/pkgs/by-name/sc/schemaspy/package.nix +++ b/pkgs/by-name/sc/schemaspy/package.nix @@ -10,17 +10,17 @@ maven.buildMavenPackage rec { pname = "schemaspy"; - version = "6.2.4"; + version = "7.0.2"; src = fetchFromGitHub { owner = "schemaspy"; repo = "schemaspy"; tag = "v${version}"; - hash = "sha256-yEqhLpGrJ4hki8o+u+bigVXv+3YvEb8TvHDTYsEl8z4="; + hash = "sha256-X85Yv6yx1Hpl3vNDHtv6u38Err668dkAx1lqpoGnALg="; }; mvnParameters = "-Dmaven.test.skip=true -Dmaven.buildNumber.skip=true"; - mvnHash = "sha256-LCPRiY/DDSUnLGnaFUS9PPKnh3TmSyAOqKfEKRLRjpg="; + mvnHash = "sha256-sCVWNzh8m3KvJyYzE2Mn+gbJTSt1/yX44dE4s7HkygU="; nativeBuildInputs = [ makeWrapper diff --git a/pkgs/by-name/sh/shader-slang/package.nix b/pkgs/by-name/sh/shader-slang/package.nix index 2036350ae206..9a272e4418e8 100644 --- a/pkgs/by-name/sh/shader-slang/package.nix +++ b/pkgs/by-name/sh/shader-slang/package.nix @@ -144,7 +144,10 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "A shading language that makes it easier to build and maintain large shader codebases in a modular and extensible fashion"; homepage = "https://github.com/shader-slang/slang"; - license = lib.licenses.asl20-llvm; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; maintainers = with lib.maintainers; [ niklaskorz ]; mainProgram = "slangc"; platforms = lib.platforms.all; diff --git a/pkgs/by-name/sh/shim-unsigned/package.nix b/pkgs/by-name/sh/shim-unsigned/package.nix index a6e7e8b34345..21811d3a422a 100644 --- a/pkgs/by-name/sh/shim-unsigned/package.nix +++ b/pkgs/by-name/sh/shim-unsigned/package.nix @@ -21,13 +21,13 @@ let in stdenv.mkDerivation rec { pname = "shim"; - version = "15.8"; + version = "16.0"; src = fetchFromGitHub { owner = "rhboot"; repo = "shim"; rev = version; - hash = "sha256-xnr9HBfYP035C7p2YTRZasx5SF4a2ZkOl9IpsVduNm4="; + hash = "sha256-KFpt//A4/T0FRBSPuTKQH/mEIqLVEiE+Lpvuq7ec6eo="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/si/signaturepdf/package.nix b/pkgs/by-name/si/signaturepdf/package.nix index 47fa20b475aa..cd6af5de63de 100644 --- a/pkgs/by-name/si/signaturepdf/package.nix +++ b/pkgs/by-name/si/signaturepdf/package.nix @@ -13,13 +13,13 @@ stdenv.mkDerivation rec { pname = "signaturepdf"; - version = "1.7.2"; + version = "1.7.4"; src = fetchFromGitHub { owner = "24eme"; repo = "signaturepdf"; rev = "v${version}"; - hash = "sha256-Mo8r80XgrHdtr7k67MQpWBgTrsUpnyygufwmvUIe2n4="; + hash = "sha256-8R1eowMpdb4oj3j+gMJ2RsWVzHvNiXPwFaLHR0jqFJo="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/sn/snowflake/package.nix b/pkgs/by-name/sn/snowflake/package.nix index 9179ba4b499c..c59e0377f6ca 100644 --- a/pkgs/by-name/sn/snowflake/package.nix +++ b/pkgs/by-name/sn/snowflake/package.nix @@ -6,7 +6,7 @@ buildGoModule rec { pname = "snowflake"; - version = "2.10.1"; + version = "2.11.0"; src = fetchFromGitLab { domain = "gitlab.torproject.org"; @@ -14,10 +14,10 @@ buildGoModule rec { owner = "anti-censorship/pluggable-transports"; repo = "snowflake"; rev = "v${version}"; - sha256 = "sha256-cpvLBC4mGz4iSP+d3qyKBtCkXNvC8YJ04nIbZuR/15M="; + sha256 = "sha256-VfKiY5XCUnhsWoSfMeYQ5rxxXmAtWzD94o4EvhDCwDM="; }; - vendorHash = "sha256-wCgG6CzxBAvhMICcmDm9a+JdtWs+rf3VU1XAICsc170="; + vendorHash = "sha256-vopRE4B4WhncUdBfmBTzRbZzCU20vsHoNCYcPG4BGc0="; meta = with lib; { description = "System to defeat internet censorship"; diff --git a/pkgs/by-name/sp/spider/package.nix b/pkgs/by-name/sp/spider/package.nix index f75896e4493d..ff94172eeae9 100644 --- a/pkgs/by-name/sp/spider/package.nix +++ b/pkgs/by-name/sp/spider/package.nix @@ -14,17 +14,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "spider"; - version = "2.33.11"; + version = "2.34.2"; src = fetchFromGitHub { owner = "spider-rs"; repo = "spider"; tag = "v${finalAttrs.version}"; - hash = "sha256-wrtkBqq1wJWg+0K4+PILPdMQe1AFOhJ1dJHvwq2irQo="; + hash = "sha256-3KEOzrIFizVBZRI1pD1PeNVj1IiV3ImucW77qHJhDM8="; }; useFetchCargoVendor = true; - cargoHash = "sha256-QxfnpiGHYYk8v0rR/eE6KHW1KdZQGuJPz1jGwtl27rs="; + cargoHash = "sha256-Hn9rQ9yv7vekmtGWorETK1b5rdfW0M/88Q6IvH51oE0="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/sq/squeezelite/package.nix b/pkgs/by-name/sq/squeezelite/package.nix index cc7ab1a65fe9..b2b403461222 100644 --- a/pkgs/by-name/sq/squeezelite/package.nix +++ b/pkgs/by-name/sq/squeezelite/package.nix @@ -40,13 +40,13 @@ stdenv.mkDerivation { pname = binName; # versions are specified in `squeezelite.h` # see https://github.com/ralph-irving/squeezelite/issues/29 - version = "2.0.0.1518"; + version = "2.0.0.1524"; src = fetchFromGitHub { owner = "ralph-irving"; repo = "squeezelite"; - rev = "ed3c82052db4846e8e0da01c5bf8db130db00dee"; - hash = "sha256-nxEsraKV5OPaeRuN2NRvxGtUb189ArP3blxSOMPD2II="; + rev = "db51a7b16934f41b72437394bf8114c3a85e0a91"; + hash = "sha256-nPlIvyxhka4ANk74209RFW0Ok5eSZwKFDQw7AJO3qPs="; }; buildInputs = diff --git a/pkgs/by-name/ss/sshuttle/package.nix b/pkgs/by-name/ss/sshuttle/package.nix index ca1d12bacce6..2c878db45299 100644 --- a/pkgs/by-name/ss/sshuttle/package.nix +++ b/pkgs/by-name/ss/sshuttle/package.nix @@ -15,14 +15,14 @@ python3Packages.buildPythonApplication rec { pname = "sshuttle"; - version = "1.2.0"; + version = "1.3.0"; pyproject = true; src = fetchFromGitHub { owner = "sshuttle"; repo = "sshuttle"; tag = "v${version}"; - hash = "sha256-xJxFtyLTqPozTaPZxAYZySKIo9c23dwEzn6GHpxW1OY="; + hash = "sha256-6RNH2S4GXlAWBQSSmgHFcpYECYJoQtZVScrhLMM0gEk="; }; build-system = [ python3Packages.poetry-core ]; @@ -70,7 +70,7 @@ python3Packages.buildPythonApplication rec { Works with Linux and Mac OS and supports DNS tunneling. ''; homepage = "https://github.com/sshuttle/sshuttle"; - changelog = "https://github.com/sshuttle/sshuttle/blob/v${version}/CHANGES.rst"; + changelog = "https://github.com/sshuttle/sshuttle/blob/${src.tag}/CHANGES.rst"; license = lib.licenses.lgpl21Plus; maintainers = with lib.maintainers; [ domenkozar diff --git a/pkgs/by-name/st/step-ca/package.nix b/pkgs/by-name/st/step-ca/package.nix index db780b77b561..92763dd75952 100644 --- a/pkgs/by-name/st/step-ca/package.nix +++ b/pkgs/by-name/st/step-ca/package.nix @@ -13,16 +13,16 @@ buildGoModule rec { pname = "step-ca"; - version = "0.28.2"; + version = "0.28.3"; src = fetchFromGitHub { owner = "smallstep"; repo = "certificates"; tag = "v${version}"; - hash = "sha256-iyv/cMRoJ5fYBVdQZ52zDTLdeESzNMJWXbgsDbU+p5Q="; + hash = "sha256-5W39Nc6WuxhrXbEfPWMaWWAUX6UnjYqlEAPlDCeYgrY="; }; - vendorHash = "sha256-N3MZXs/eJ+vvgsoq6s3vz22j3/CUyUhcwTc/nNU5Axo="; + vendorHash = "sha256-AuMYdZa1QpmMQZxlv+lmoWtszQkVdwXOTXxY8CWaUbI="; ldflags = [ "-w" diff --git a/pkgs/by-name/st/step-cli/package.nix b/pkgs/by-name/st/step-cli/package.nix index 04d666fd2831..0d6be886a07a 100644 --- a/pkgs/by-name/st/step-cli/package.nix +++ b/pkgs/by-name/st/step-cli/package.nix @@ -6,7 +6,7 @@ installShellFiles, }: let - version = "0.28.5"; + version = "0.28.6"; in buildGoModule { pname = "step-cli"; @@ -16,7 +16,7 @@ buildGoModule { owner = "smallstep"; repo = "cli"; tag = "v${version}"; - hash = "sha256-cuD66Llk0789mYL0x17jKjSmAxCcCvwPEz3/BHXJ5NQ="; + hash = "sha256-9tw/d6n6tzhBhBqizDG1dGhj8se9GF2DtrfYwwhvsLs="; # this file change depending on git branch status (via .gitattributes) # https://github.com/NixOS/nixpkgs/issues/84312 postFetch = '' @@ -35,7 +35,7 @@ buildGoModule { rm command/certificate/remote_test.go ''; - vendorHash = "sha256-iOtW5uioDDHR7ZJFX3pBdrQlWV6LnfjjHinQppmX5Fo="; + vendorHash = "sha256-+pHc2uBgQwMkJ7BTgHGHDPgfBpLlN0Yxf+6Enhb7cys="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/st/step-kms-plugin/package.nix b/pkgs/by-name/st/step-kms-plugin/package.nix index 253ef36abd0a..99a253961d19 100644 --- a/pkgs/by-name/st/step-kms-plugin/package.nix +++ b/pkgs/by-name/st/step-kms-plugin/package.nix @@ -12,16 +12,16 @@ buildGoModule rec { pname = "step-kms-plugin"; - version = "0.12.1"; + version = "0.12.2"; src = fetchFromGitHub { owner = "smallstep"; repo = pname; rev = "v${version}"; - hash = "sha256-AFHqkHPa4+/VbeSq9TZA0mUXyXLAfXFAFVkKqnEfg7k="; + hash = "sha256-6+5xZGzLsXu+283aOCeRmzxvjsk5PXTpbszVYuSSuGA="; }; - vendorHash = "sha256-u2CXNOaDn4dYWarOW3f11rsqo52hMpRntBhmNf1+axc="; + vendorHash = "sha256-S8T2GMFOVYqG2+8jdDRNJfAN057HagUA3HR0/UBpBR0="; proxyVendor = true; diff --git a/pkgs/by-name/su/sunxi-tools/package.nix b/pkgs/by-name/su/sunxi-tools/package.nix index eb92e3f342ce..075b94148822 100644 --- a/pkgs/by-name/su/sunxi-tools/package.nix +++ b/pkgs/by-name/su/sunxi-tools/package.nix @@ -6,17 +6,18 @@ dtc, libusb1, zlib, + unstableGitUpdater, }: stdenv.mkDerivation { pname = "sunxi-tools"; - version = "unstable-2021-08-29"; + version = "0-unstable-2024-10-13"; src = fetchFromGitHub { owner = "linux-sunxi"; repo = "sunxi-tools"; - rev = "74273b671a3fc34048383c40c85c684423009fb9"; - sha256 = "1gwamb64vr45iy2ry7jp1k3zc03q5sydmdflrbwr892f0ijh2wjl"; + rev = "29d48c3c39d74200fb35b5750f99d06a4886bf2e"; + sha256 = "sha256-IUgAM/wVHGbidJ2bfLcTIdXg7wxEjxCg1IA8FtDFpR4="; }; nativeBuildInputs = [ pkg-config ]; @@ -38,11 +39,13 @@ stdenv.mkDerivation { "install-misc" ]; - meta = with lib; { + passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; }; + + meta = { description = "Tools for Allwinner SoC devices"; homepage = "http://linux-sunxi.org/"; - license = licenses.gpl2Plus; - platforms = platforms.linux; - maintainers = with maintainers; [ elitak ]; + license = lib.licenses.gpl2Plus; + platforms = lib.platforms.linux; + maintainers = [ lib.maintainers.elitak ]; }; } diff --git a/pkgs/by-name/t3/t3/package.nix b/pkgs/by-name/t3/t3/package.nix index c1b05db9d3ce..2017c0d57287 100644 --- a/pkgs/by-name/t3/t3/package.nix +++ b/pkgs/by-name/t3/t3/package.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "t3"; - version = "1.0.8"; + version = "1.0.9"; src = fetchFromGitHub { owner = "flox"; repo = "t3"; tag = "v${finalAttrs.version}"; - hash = "sha256-SaSBFqMh6zOty0mnYL4RJxAxbB1LJusKLdMn7Atv+As="; + hash = "sha256-42T0qQ3zK1jTRU+gcBzEet5rHZ6QuknCbPdbGPNlETI="; }; makeFlags = [ diff --git a/pkgs/by-name/te/tealdeer/package.nix b/pkgs/by-name/te/tealdeer/package.nix index acdb7c0095d1..27eb4d3fd6a7 100644 --- a/pkgs/by-name/te/tealdeer/package.nix +++ b/pkgs/by-name/te/tealdeer/package.nix @@ -7,17 +7,17 @@ rustPlatform.buildRustPackage rec { pname = "tealdeer"; - version = "1.7.1"; + version = "1.7.2"; src = fetchFromGitHub { owner = "dbrgn"; repo = "tealdeer"; rev = "v${version}"; - hash = "sha256-UYOAj6ft6FHQz06A+K2K+bK3WXQnF5U7TuN95WIXj+M="; + hash = "sha256-GZN7WE12f3MEoBfswag0O04UOCmZeYwt5CbYwddmwHs="; }; useFetchCargoVendor = true; - cargoHash = "sha256-gIJWHqJk0epsPJm1QNOpbvDC1a0d/6AfcNlaT824vWA="; + cargoHash = "sha256-Zk2L4cq7j9CkSc+cnZRWwhtfWP6y5faiMVGFFNkBwwA="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/ti/ticker/package.nix b/pkgs/by-name/ti/ticker/package.nix index df6bfe064f3a..0b81f7e8e443 100644 --- a/pkgs/by-name/ti/ticker/package.nix +++ b/pkgs/by-name/ti/ticker/package.nix @@ -6,13 +6,13 @@ buildGoModule rec { pname = "ticker"; - version = "4.8.0"; + version = "4.8.1"; src = fetchFromGitHub { owner = "achannarasappa"; repo = pname; tag = "v${version}"; - hash = "sha256-L7vqZVfj7Ns8xCFU0ruhosReM4RMhIbIHXrMbQ8YI6I="; + hash = "sha256-2qg7/gzogvK8eIj9NzFELoeXrtJGC5pS4LvR2msOuHY="; }; vendorHash = "sha256-o3hVRHyrJpmYgephoZ2JlVLGSqZtRQAp48OzoIMY3do="; diff --git a/pkgs/by-name/to/toxiproxy/package.nix b/pkgs/by-name/to/toxiproxy/package.nix index 104399ce64f1..b4ea12ad2178 100644 --- a/pkgs/by-name/to/toxiproxy/package.nix +++ b/pkgs/by-name/to/toxiproxy/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "toxiproxy"; - version = "2.11.0"; + version = "2.12.0"; src = fetchFromGitHub { owner = "Shopify"; repo = "toxiproxy"; rev = "v${version}"; - sha256 = "sha256-1z4a69KnBurTrudqXiOPgrlICICu1ts86WrnFUlRWXE="; + sha256 = "sha256-CqJr3h2n+fzN6Ves38H7fYXd5vlpDVfF3kg4Tr8ThPc="; }; - vendorHash = "sha256-LQV+TFFcrq4Px580yOWU+8EuGt/7bFJYi35He2es6Q8="; + vendorHash = "sha256-4nKWTjB9aV5ILgHVceV76Ip0byBxlEY5TTAQwNLvL2s="; excludedPackages = [ "test/e2e" ]; diff --git a/pkgs/by-name/tr/translatelocally/package.nix b/pkgs/by-name/tr/translatelocally/package.nix index 4249331b2b08..3ade4781eca9 100644 --- a/pkgs/by-name/tr/translatelocally/package.nix +++ b/pkgs/by-name/tr/translatelocally/package.nix @@ -12,6 +12,7 @@ runCommand, translatelocally, translatelocally-models, + buildArch ? "x86-64", }: let @@ -65,6 +66,10 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ "-DBLAS_LIBRARIES=-lblas" "-DCBLAS_LIBRARIES=-lcblas" + + # See the following for context: + # https://github.com/NixOS/nixpkgs/pull/385549 + (lib.optionalString stdenv.hostPlatform.isx86_64 "-DBUILD_ARCH=${buildArch}") ]; passthru.tests = { diff --git a/pkgs/by-name/ud/udftools/package.nix b/pkgs/by-name/ud/udftools/package.nix index 4d908eccb03c..c1f46bea9955 100644 --- a/pkgs/by-name/ud/udftools/package.nix +++ b/pkgs/by-name/ud/udftools/package.nix @@ -5,48 +5,49 @@ ncurses, readline, autoreconfHook, + pkg-config, }: stdenv.mkDerivation rec { pname = "udftools"; - version = "2.0"; + version = "2.3"; + src = fetchFromGitHub { owner = "pali"; repo = "udftools"; - rev = version; - sha256 = "0mz04h3rki6ljwfs15z83gf4vv816w7xgz923waiqgmfj9xpvx87"; + tag = version; + hash = "sha256-SUdwJpJfbs6LhcyNMPJUhhpp/3htwT/EVep7+4PRgto="; }; + nativeBuildInputs = [ + autoreconfHook + pkg-config + ]; + buildInputs = [ ncurses readline ]; - nativeBuildInputs = [ autoreconfHook ]; hardeningDisable = [ "fortify" ]; - env.NIX_CFLAGS_COMPILE = "-std=gnu90"; + env.NIX_CFLAGS_COMPILE = "-std=gnu99"; preConfigure = '' sed -e '1i#include ' -i cdrwtool/cdrwtool.c -i pktsetup/pktsetup.c sed -e 's@[(]char[*][)]spm [+]=@spm = ((char*) spm) + @' -i wrudf/wrudf.c - sed -e '27i#include ' -i include/udf_endian.h sed -e '38i#include ' -i wrudf/wrudf-cdrw.c sed -e '12i#include ' -i wrudf/wrudf-cdr.c sed -e '37i#include ' -i wrudf/ide-pc.c sed -e '46i#include ' -i mkudffs/main.c - sed -e "s@\$(DESTDIR)/lib/udev/rules.d@$out/lib/udev/rules.d@" -i pktsetup/Makefile.am ''; - postFixup = '' - sed -i -e "s@/usr/sbin/pktsetup@$out/sbin/pktsetup@" $out/lib/udev/rules.d/80-pktsetup.rules - ''; - - meta = with lib; { + meta = { description = "UDF tools"; - maintainers = with maintainers; [ raskin ]; - platforms = platforms.linux; - license = licenses.gpl2Plus; + homepage = "https://github.com/pali/udftools"; + maintainers = with lib.maintainers; [ raskin ]; + platforms = lib.platforms.linux; + license = lib.licenses.gpl2Plus; }; } diff --git a/pkgs/by-name/up/updatecli/package.nix b/pkgs/by-name/up/updatecli/package.nix index 7ac532b693c9..ac5ae13f39f9 100644 --- a/pkgs/by-name/up/updatecli/package.nix +++ b/pkgs/by-name/up/updatecli/package.nix @@ -11,16 +11,16 @@ buildGoModule rec { pname = "updatecli"; - version = "0.94.1"; + version = "0.95.1"; src = fetchFromGitHub { owner = "updatecli"; repo = "updatecli"; rev = "v${version}"; - hash = "sha256-zS9QxU9tciHT2t/Kn1g+1SOlC109kHB1lgzyK6+cDxI="; + hash = "sha256-ShiknNLbBAyNcXK3k+yhnqilkAovuwFaY3iWa5Plsbo="; }; - vendorHash = "sha256-RnuA5bUZg5BgSCebxupRW+J1TyIoi4CGz247M1bdj4k="; + vendorHash = "sha256-iuE8rphRnedYg0G2kG1WGXL1rJ/k54Oc4fp2ExP2Rro="; # tests require network access doCheck = false; diff --git a/pkgs/by-name/uv/uv/package.nix b/pkgs/by-name/uv/uv/package.nix index 8545a293db7b..847617e5f9c4 100644 --- a/pkgs/by-name/uv/uv/package.nix +++ b/pkgs/by-name/uv/uv/package.nix @@ -20,17 +20,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "uv"; - version = "0.6.6"; + version = "0.6.8"; src = fetchFromGitHub { owner = "astral-sh"; repo = "uv"; tag = finalAttrs.version; - hash = "sha256-KsPfAOEpD47/kqcN9M7lOtS8hSr0dXP3Y3b4x9yh1as="; + hash = "sha256-PURQ/iDg9dvogwh/A2utmg8ufiPXafI+6jsT6UL9JsY="; }; useFetchCargoVendor = true; - cargoHash = "sha256-vcddP6EaNhJNK6UZUPxrABieJf2BPTAIs8r2uppP7N0="; + cargoHash = "sha256-eZqyHzkLPjNtDe8X++2GaWYynJ3AYYCk3SlBtEJS6yM="; buildInputs = [ rust-jemalloc-sys diff --git a/pkgs/by-name/vl/vlc/package.nix b/pkgs/by-name/vl/vlc/package.nix index f286972bf63d..38bb14b8b89c 100644 --- a/pkgs/by-name/vl/vlc/package.nix +++ b/pkgs/by-name/vl/vlc/package.nix @@ -1,7 +1,5 @@ { lib, - SDL, - SDL_image, a52dec, alsa-lib, autoreconfHook, @@ -12,11 +10,7 @@ fetchpatch, fetchurl, # Please unpin FFmpeg on the next upstream release. - # Currently FFmpeg is pinned to 4.x because VAAPI acceleration is broken when - # building with newer versions: - # https://code.videolan.org/videolan/vlc/-/issues/26772 - # This is intentional by upstream but VLC 4.0 will support newer FFmpeg. - ffmpeg_4, + ffmpeg_6, flac, fluidsynth, freefont_ttf, @@ -136,14 +130,12 @@ stdenv.mkDerivation (finalAttrs: { # needing them buildInputs = [ - SDL - SDL_image a52dec alsa-lib avahi dbus faad2 - ffmpeg_4 + ffmpeg_6 flac fluidsynth fribidi @@ -247,6 +239,12 @@ stdenv.mkDerivation (finalAttrs: { url = "https://code.videolan.org/videolan/vlc/uploads/eb1c313d2d499b8a777314f789794f9d/0001-Add-lssl-and-lcrypto-to-liblive555_plugin_la_LIBADD.patch"; hash = "sha256-qs3gY1ksCZlf931TSZyMuT2JD0sqrmcRCZwL+wVG0U8="; }) + # support VAAPI hardware video decoding with newer ffmpeg + # upstream merge request: https://code.videolan.org/videolan/vlc/-/merge_requests/6606 (will be included in the next release) + (fetchpatch { + url = "https://code.videolan.org/videolan/vlc/-/commit/ba5dc03aecc1d96f81b76838f845ebde7348cf62.diff"; + hash = "sha256-s6AI9O0V3AKOyw9LbQ9CgjaCi5m5+nLacKNLl5ZLC6Q="; + }) ]; postPatch = diff --git a/pkgs/by-name/wa/warp-terminal/versions.json b/pkgs/by-name/wa/warp-terminal/versions.json index 997ce79f0399..ded654d8a88c 100644 --- a/pkgs/by-name/wa/warp-terminal/versions.json +++ b/pkgs/by-name/wa/warp-terminal/versions.json @@ -1,14 +1,14 @@ { "darwin": { - "hash": "sha256-Reni9yNh4Z2aXrl3Z1jJrkLk6BkEfiFIayr58/K5H0k=", - "version": "0.2025.03.05.08.02.stable_02" + "hash": "sha256-2pvls8XZq870YFnNwgRTOzDiLZLJZHuEjENF4BKoSq0=", + "version": "0.2025.03.12.08.02.stable_03" }, "linux_x86_64": { - "hash": "sha256-8z2FZVi4xLTDMSTgNE/Yxy/wZRRxRdjRrI/5dXcUdRA=", - "version": "0.2025.03.05.08.02.stable_02" + "hash": "sha256-ZeRrzl6ZLgi+ybiof7mPuIhqPKT9uVRWBXEYCGwfhxE=", + "version": "0.2025.03.12.08.02.stable_03" }, "linux_aarch64": { - "hash": "sha256-7rwfxhrE4cROHfU3Z/VIoMbqn3EZJcEeTTPzmCbXdbw=", - "version": "0.2025.03.05.08.02.stable_02" + "hash": "sha256-vDoQOec1lKhG2cd9L6ekWubnn9Ion7GeyyccDCm4HuU=", + "version": "0.2025.03.12.08.02.stable_03" } } diff --git a/pkgs/by-name/wa/wasmi/package.nix b/pkgs/by-name/wa/wasmi/package.nix index 0aa836683950..bb35f4dfb282 100644 --- a/pkgs/by-name/wa/wasmi/package.nix +++ b/pkgs/by-name/wa/wasmi/package.nix @@ -7,18 +7,18 @@ rustPlatform.buildRustPackage rec { pname = "wasmi"; - version = "0.40.0"; + version = "0.42.0"; src = fetchFromGitHub { owner = "paritytech"; repo = "wasmi"; tag = "v${version}"; - hash = "sha256-O+8qBYxmiDQtmL2ThkQYenIXSf2wCoYFqLMJOtLP3Ic="; + hash = "sha256-i8i0kd3Zmx7hIaJy8zSAgu0++1kRfLB/MkKpy0ImUrM="; fetchSubmodules = true; }; useFetchCargoVendor = true; - cargoHash = "sha256-b3mjGjOfIBHcQTIpA2obdCsjC1p0gjfatKmYI01vYME="; + cargoHash = "sha256-dlMYChYUB2141+sOSHsZuM8QaaRM/rs9FNagCJeopao="; passthru.updateScript = nix-update-script { }; meta = with lib; { diff --git a/pkgs/by-name/we/weblate/package.nix b/pkgs/by-name/we/weblate/package.nix index f9f80bada2ed..6eceade528b3 100644 --- a/pkgs/by-name/we/weblate/package.nix +++ b/pkgs/by-name/we/weblate/package.nix @@ -27,7 +27,7 @@ let in python.pkgs.buildPythonApplication rec { pname = "weblate"; - version = "5.10.3"; + version = "5.10.4"; pyproject = true; @@ -40,7 +40,7 @@ python.pkgs.buildPythonApplication rec { owner = "WeblateOrg"; repo = "weblate"; tag = "weblate-${version}"; - hash = "sha256-x+DSt0uhElbNeDvO9CqdAJO8r7+Kkt/Hbh6dMPlAdfk="; + hash = "sha256-ReODTMaKMkvbaR8JETSeOrXxQIsL1Vy1pjKYWo5mw+A="; }; patches = [ diff --git a/pkgs/by-name/wi/windsurf/package.nix b/pkgs/by-name/wi/windsurf/package.nix index 3e4d6f4f1dc5..c2138ae24d31 100644 --- a/pkgs/by-name/wi/windsurf/package.nix +++ b/pkgs/by-name/wi/windsurf/package.nix @@ -47,6 +47,7 @@ callPackage vscode-generic { homepage = "https://codeium.com/windsurf"; license = lib.licenses.unfree; maintainers = with lib.maintainers; [ + sarahec xiaoxiangmoe ]; platforms = [ diff --git a/pkgs/by-name/wi/wit-bindgen/package.nix b/pkgs/by-name/wi/wit-bindgen/package.nix index 1c797c7c16d0..43f88744ce42 100644 --- a/pkgs/by-name/wi/wit-bindgen/package.nix +++ b/pkgs/by-name/wi/wit-bindgen/package.nix @@ -6,17 +6,17 @@ rustPlatform.buildRustPackage rec { pname = "wit-bindgen"; - version = "0.40.0"; + version = "0.41.0"; src = fetchFromGitHub { owner = "bytecodealliance"; repo = "wit-bindgen"; rev = "v${version}"; - hash = "sha256-TWs4fpUAsrDmIIM7ZaCEyGRd9siILn3d92loWwheZfI="; + hash = "sha256-ePrtWOCta9UtoEtSJ1NZb6iJricfsc2YtRF8hi///3c="; }; useFetchCargoVendor = true; - cargoHash = "sha256-RD60tyiMxWoKhEYVJ7HiwVfkf2oKerUP38PVmIr2tIk="; + cargoHash = "sha256-vhhonclq6UGkygHoNIRkB4BIjMAdkSbu2qPXNb2y8pI="; # Some tests fail because they need network access to install the `wasm32-unknown-unknown` target. # However, GitHub Actions ensures a proper build. diff --git a/pkgs/by-name/xa/xarchiver/package.nix b/pkgs/by-name/xa/xarchiver/package.nix index e8814895aa32..4ad98e7fb6c7 100644 --- a/pkgs/by-name/xa/xarchiver/package.nix +++ b/pkgs/by-name/xa/xarchiver/package.nix @@ -20,14 +20,14 @@ }: stdenv.mkDerivation rec { - version = "0.5.4.23"; + version = "0.5.4.24"; pname = "xarchiver"; src = fetchFromGitHub { owner = "ib"; repo = "xarchiver"; rev = version; - hash = "sha256-aNUpuePU6nmrralp+j8GgVPuxv9ayRVoKicPZkC4nTE="; + hash = "sha256-OTm53kUZa/65JHRAiN3VWEGWhKwzstNZ1dxwTSPZ04g="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ye/yetris/package.nix b/pkgs/by-name/ye/yetris/package.nix index f0e6f5f16e5c..c22401849db8 100644 --- a/pkgs/by-name/ye/yetris/package.nix +++ b/pkgs/by-name/ye/yetris/package.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "yetris"; - version = "2.1.0"; + version = "2.3.0"; src = fetchFromGitHub { owner = "alexdantas"; repo = "yetris"; tag = "v${finalAttrs.version}"; - hash = "sha256-jhVircWMn+ZXoaX925O41ylpxmZxV9XAmIaANMWD6H4="; + hash = "sha256-k9CXXIaDk1eAtRBEj0VCfE+D1FtmIDX3niubAdrfjqw="; }; buildInputs = [ diff --git a/pkgs/by-name/yo/youtrack/package.nix b/pkgs/by-name/yo/youtrack/package.nix index 14bc8906b607..9f07c1468050 100644 --- a/pkgs/by-name/yo/youtrack/package.nix +++ b/pkgs/by-name/yo/youtrack/package.nix @@ -10,11 +10,11 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "youtrack"; - version = "2025.1.62967"; + version = "2025.1.66652"; src = fetchzip { url = "https://download.jetbrains.com/charisma/youtrack-${finalAttrs.version}.zip"; - hash = "sha256-6uKlbyVtYF4UZVi2bgX2iZSfqJJEEZ86FJ55TXnbQ1o="; + hash = "sha256-2w/7NR2GPqP6tLvzU9xIO3OXzwqa06BzHWBnmMDFvbQ="; }; nativeBuildInputs = [ makeBinaryWrapper ]; diff --git a/pkgs/by-name/ze/zed-editor/package.nix b/pkgs/by-name/ze/zed-editor/package.nix index 51218cf5c6e1..00d08aae391c 100644 --- a/pkgs/by-name/ze/zed-editor/package.nix +++ b/pkgs/by-name/ze/zed-editor/package.nix @@ -98,7 +98,7 @@ let in rustPlatform.buildRustPackage (finalAttrs: { pname = "zed-editor"; - version = "0.177.9"; + version = "0.177.11"; outputs = [ "out" ] @@ -110,7 +110,7 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "zed-industries"; repo = "zed"; tag = "v${finalAttrs.version}"; - hash = "sha256-E8gIM8Jsxq7GvNZI4fDYzBMi1uqsxl0mYv2kxjwUFHc="; + hash = "sha256-cnzaW0paORio8AONtVVGUZWG+HsWte12aWK2qvfj8oI="; }; patches = [ @@ -136,7 +136,7 @@ rustPlatform.buildRustPackage (finalAttrs: { ''; useFetchCargoVendor = true; - cargoHash = "sha256-7qSymOFLR/hEJx0dxkp7YsDyPLP6KVCf8yE0rkx5+w4="; + cargoHash = "sha256-Hl5QWU9yKXedQFVd60Fz5O7B2e/YUqj3BLNmqC44UP0="; nativeBuildInputs = [ diff --git a/pkgs/by-name/zk/zk/package.nix b/pkgs/by-name/zk/zk/package.nix index 78cfb7ae281a..fe1116ccf1ef 100644 --- a/pkgs/by-name/zk/zk/package.nix +++ b/pkgs/by-name/zk/zk/package.nix @@ -7,13 +7,13 @@ buildGoModule rec { pname = "zk"; - version = "0.14.2"; + version = "0.15.0"; src = fetchFromGitHub { owner = "zk-org"; repo = "zk"; rev = "v${version}"; - sha256 = "sha256-h6qQcaAgxWeBzMjxGk7b8vrVu5NO/V6b/ZvZMWtZTpg="; + sha256 = "sha256-aFpn3luIp5tMp9jpBxVCmU+IU9eJg3/5UZFIklauFjI="; }; vendorHash = "sha256-2PlaIw7NaW4pAVIituSVWhssSBKjowLOLuBV/wz829I="; diff --git a/pkgs/by-name/zs/zsh-autocomplete/package.nix b/pkgs/by-name/zs/zsh-autocomplete/package.nix index 286b7174b715..4d14345098b8 100644 --- a/pkgs/by-name/zs/zsh-autocomplete/package.nix +++ b/pkgs/by-name/zs/zsh-autocomplete/package.nix @@ -6,13 +6,13 @@ stdenvNoCC.mkDerivation rec { pname = "zsh-autocomplete"; - version = "24.09.04"; + version = "25.03.19"; src = fetchFromGitHub { owner = "marlonrichert"; repo = "zsh-autocomplete"; rev = version; - sha256 = "sha256-o8IQszQ4/PLX1FlUvJpowR2Tev59N8lI20VymZ+Hp4w="; + sha256 = "sha256-eb5a5WMQi8arZRZDt4aX1IV+ik6Iee3OxNMCiMnjIx4="; }; strictDeps = true; diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix index 390745fe5290..14d2f699e3d7 100644 --- a/pkgs/development/compilers/julia/default.nix +++ b/pkgs/development/compilers/julia/default.nix @@ -29,23 +29,23 @@ in { }); julia_110-bin = wrapJulia (callPackage (import ./generic-bin.nix { - version = "1.10.8"; + version = "1.10.9"; sha256 = { - x86_64-linux = "0410175aeec3df63173c15187f2083f179d40596d36fd3a57819cc5f522ae735"; - aarch64-linux = "8d63dd12595a08edc736be8d6c4fea1840f137b81c62079d970dbd1be448b8cd"; - x86_64-darwin = "8dae60def14db9e9b0f70891f15483d05785ae27a2c14f8f4b1ce27010e4015f"; - aarch64-darwin = "cdd5891a7b143bde835a79155471b82c5482d4dc5576f719351810548242e64b"; + x86_64-linux = "5a2d2c5224594b683c97e7304cb72407fbcf0be4a0187789cba1a2f73f0cbf09"; + aarch64-linux = "be222882e3674f960f43b6842f7bbb52a369977e40d5dcd26498793e1cd2dfb6"; + x86_64-darwin = "f80c93c30a18d8a5dc7f37d0cc94757fd3857651268e4a9e2d42d3b1ea3372f1"; + aarch64-darwin = "e62e00b22408159cba3d669f2d9e8b60c1d23b5c2d1c22ec25f4957d15ca98ef"; }; }) { }); julia_111-bin = wrapJulia (callPackage (import ./generic-bin.nix { - version = "1.11.3"; + version = "1.11.4"; sha256 = { - x86_64-linux = "7d48da416c8cb45582a1285d60127ee31ef7092ded3ec594a9f2cf58431c07fd"; - aarch64-linux = "0c1f2f60c3ecc37ae0c559db325dc64858fb11d6729b25d63f23e5285f7906ef"; - x86_64-darwin = "5220aade1b43db722fb4e287f1c5d25aa492267b86a846db1546504836cca1be"; - aarch64-darwin = "554fb0ddb4d94d623c83ca5e9d309fe1a7a0924445cb18ec3b863fb3367b0ba8"; + x86_64-linux = "fb3d3c5fccef82158a70677c0044ac5ae40410eceb0604cdc8e643eeff21df8d"; + aarch64-linux = "859f1a8cc4bce6911bc912f0e226a6ba2b1c144110b9d559d88f5077513d0e37"; + x86_64-darwin = "7e693914399f2ebe1fafe5c670af0373474145cfe2bfda661f370559a680720a"; + aarch64-darwin = "5adfb4482bba9610405c0f9b5a3c1aa09cabf70c8751d75970f2dab0fa819488"; }; }) { }); @@ -60,8 +60,8 @@ in { }); julia_110 = wrapJulia (callPackage (import ./generic.nix { - version = "1.10.8"; - hash = "sha256-NPojubjOgy32CWlD/TDzI764Ca7cMsFj9r7vUdUW9Oc="; + version = "1.10.9"; + hash = "sha256-u9by+X76fcXs+w159KTSvw43JeYwJ9Wvn0VyoEfniTM="; patches = [ ./patches/1.10/0002-skip-failing-and-flaky-tests.patch # Revert https://github.com/JuliaLang/julia/pull/55354 @@ -77,8 +77,8 @@ in { }); julia_111 = wrapJulia (callPackage (import ./generic.nix { - version = "1.11.3"; - hash = "sha256-Ansli0e04agdHs3TVa3v/bbAGBya2YjnF/XkdaEqHeg="; + version = "1.11.4"; + hash = "sha256-xJNlYtBRKIQtf+K+MHNDM1GeqUpUhhtdC/440QPpa1s="; patches = [ ./patches/1.11/0002-skip-failing-and-flaky-tests.patch ]; diff --git a/pkgs/development/compilers/llvm/common/common-let.nix b/pkgs/development/compilers/llvm/common/common-let.nix index a33d8db3ad48..c32fced3fc8e 100644 --- a/pkgs/development/compilers/llvm/common/common-let.nix +++ b/pkgs/development/compilers/llvm/common/common-let.nix @@ -10,9 +10,9 @@ rec { llvm_meta = { license = with lib.licenses; [ ncsa ] ++ - # Contributions after June 1st, 2024 are only licensed under asl20-llvm: - # https://github.com/llvm/llvm-project/pull/92394 - lib.optional (lib.versionAtLeast release_version "19") asl20-llvm; + # Contributions after June 1st, 2024 are only licensed under asl20 and + # llvm-exception: https://github.com/llvm/llvm-project/pull/92394 + lib.optionals (lib.versionAtLeast release_version "19") [ asl20 llvm-exception ]; maintainers = lib.teams.llvm.members; # See llvm/cmake/config-ix.cmake. diff --git a/pkgs/development/compilers/llvm/default.nix b/pkgs/development/compilers/llvm/default.nix index c3d31450830e..27eda9772f5d 100644 --- a/pkgs/development/compilers/llvm/default.nix +++ b/pkgs/development/compilers/llvm/default.nix @@ -33,9 +33,9 @@ let "19.1.7".officialRelease.sha256 = "sha256-cZAB5vZjeTsXt9QHbP5xluWNQnAHByHtHnAhVDV0E6I="; "20.1.0-rc3".officialRelease.sha256 = "sha256-mLSBoyq24FD+khynC6sC5IkDFqizgAn07lR9+ZRXlV0="; "21.0.0-git".gitRelease = { - rev = "58fc4b13cb5ff7e877c52c11f71328ed12e6a89c"; - rev-version = "21.0.0-unstable-2025-03-09"; - sha256 = "sha256-ioZubgLW+GpnA3DPe01YDxELnIJhXDGskCUAKZlDvUo="; + rev = "4fde8c341f9166e6ec6dff6e7704be175e382f5b"; + rev-version = "21.0.0-unstable-2025-03-16"; + sha256 = "sha256-LOQdDYbWvPfUxaR7G3UFQlGzmwaUxHuLDOXgixKB18g="; }; } // llvmVersions; diff --git a/pkgs/development/cuda-modules/tensorrt/releases.nix b/pkgs/development/cuda-modules/tensorrt/releases.nix index 13c7c1a10c32..ea807a8a92ca 100644 --- a/pkgs/development/cuda-modules/tensorrt/releases.nix +++ b/pkgs/development/cuda-modules/tensorrt/releases.nix @@ -127,6 +127,22 @@ filename = "TensorRT-10.8.0.43.Linux.x86_64-gnu.cuda-12.8.tar.gz"; hash = "sha256-V31tivU4FTQUuYZ8ZmtPZYUvwusefA6jogbl+vvH1J4="; } + { + version = "10.9.0.34"; + minCudaVersion = "11.0"; + maxCudaVersion = "11.8"; + cudnnVersion = "8.9"; + filename = "TensorRT-10.9.0.34.Linux.x86_64-gnu.cuda-11.8.tar.gz"; + hash = "sha256-nQtdgeOIxRA8RsL3ZvQHeBxA4dbJvyWEoFvmSxPaBLA="; + } + { + version = "10.9.0.34"; + minCudaVersion = "12.0"; + maxCudaVersion = "12.8"; + cudnnVersion = "9.7"; + filename = "TensorRT-10.9.0.34.Linux.x86_64-gnu.cuda-12.8.tar.gz"; + hash = "sha256-M74OYeO/F3u7yrtIkr8BPwyKxx0r5z8oA4SKOCyxQnI="; + } ]; }; } diff --git a/pkgs/development/libraries/astal/buildAstalModule.nix b/pkgs/development/libraries/astal/buildAstalModule.nix index 1074dc4d484e..4a3e148212d2 100644 --- a/pkgs/development/libraries/astal/buildAstalModule.nix +++ b/pkgs/development/libraries/astal/buildAstalModule.nix @@ -39,7 +39,7 @@ let cleanArgs args // { pname = "astal-${name}"; - version = "0-unstable-2025-03-07"; + version = "0-unstable-2025-03-17"; __structuredAttrs = true; strictDeps = true; @@ -47,8 +47,8 @@ let src = fetchFromGitHub { owner = "Aylur"; repo = "astal"; - rev = "e14e19c220575446c4a0e815705c88b28e3850e0"; - hash = "sha256-SJ/m4Go4tSj8BnKLGwnLT6yN2pdlewepuXPmaDrzuK4="; + rev = "e5a8e3b60e41d06450284baf7008abe4ac27a53d"; + hash = "sha256-8gWNDDVS7TqLiS+eR1XhfMHBeknmTzLQ3ItB40OK3p0="; }; sourceRoot = "${finalAttrs.src.name}/${sourceRoot}"; diff --git a/pkgs/development/libraries/wasilibc/default.nix b/pkgs/development/libraries/wasilibc/default.nix index b2cafcea35b7..3d605f04b1f4 100644 --- a/pkgs/development/libraries/wasilibc/default.nix +++ b/pkgs/development/libraries/wasilibc/default.nix @@ -72,7 +72,8 @@ stdenv.mkDerivation { rvolosatovs ]; license = with licenses; [ - asl20-llvm + asl20 + llvm-exception mit ]; }; diff --git a/pkgs/development/python-modules/awkward-cpp/default.nix b/pkgs/development/python-modules/awkward-cpp/default.nix index ce96b50ca49b..7bea254a60b9 100644 --- a/pkgs/development/python-modules/awkward-cpp/default.nix +++ b/pkgs/development/python-modules/awkward-cpp/default.nix @@ -11,13 +11,13 @@ buildPythonPackage rec { pname = "awkward-cpp"; - version = "44"; + version = "45"; pyproject = true; src = fetchPypi { pname = "awkward_cpp"; inherit version; - hash = "sha256-jcSZKI1tFrLqILUaJ9UEflGiR7aqz8vLOzAsrW08h9g="; + hash = "sha256-hgFM9bGqu63qKBnG5gVe5JilA+yiNO3Bn/UCkos08WI="; }; build-system = [ diff --git a/pkgs/development/python-modules/awkward/default.nix b/pkgs/development/python-modules/awkward/default.nix index 5b683164681e..f9e5498ebc2a 100644 --- a/pkgs/development/python-modules/awkward/default.nix +++ b/pkgs/development/python-modules/awkward/default.nix @@ -1,6 +1,5 @@ { lib, - stdenv, buildPythonPackage, fetchFromGitHub, @@ -26,14 +25,14 @@ buildPythonPackage rec { pname = "awkward"; - version = "2.7.4"; + version = "2.8.0"; pyproject = true; src = fetchFromGitHub { owner = "scikit-hep"; repo = "awkward"; tag = "v${version}"; - hash = "sha256-OXSl+8sfrx+JlLu40wHf+98WVNNwm9uxvsnGXRDztDg="; + hash = "sha256-dr8DUY6T6fvtMASdM9U+XQN0dVP8AKvwa1gwHfOz3Dw="; }; build-system = [ @@ -62,31 +61,15 @@ buildPythonPackage rec { pytestCheckHook ]; - disabledTests = - [ - # pyarrow.lib.ArrowInvalid - "test_recordarray" - ] - ++ lib.optionals (pythonAtLeast "3.13") [ - # AttributeError: 'FrameLocalsProxy' object has no attribute 'clear' - "test_numexpr" - ]; + disabledTests = [ + # pyarrow.lib.ArrowInvalid + "test_recordarray" + ]; - disabledTestPaths = - [ - # Need to be run on a GPU platform. - "tests-cuda" - ] - ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ - # Fatal Python error: Segmentation fault at: - # numba/typed/typedlist.py", line 344 in append - "tests/test_0118_numba_cpointers.py" - "tests/test_0397_arrays_as_constants_in_numba.py" - "tests/test_1677_array_builder_in_numba.py" - "tests/test_2055_array_builder_check.py" - "tests/test_2349_growablebuffer_in_numba.py" - "tests/test_2408_layoutbuilder_in_numba.py" - ]; + disabledTestPaths = [ + # Need to be run on a GPU platform. + "tests-cuda" + ]; meta = { description = "Manipulate JSON-like data with NumPy-like idioms"; diff --git a/pkgs/development/python-modules/coiled/default.nix b/pkgs/development/python-modules/coiled/default.nix index ed68d489dd2e..fe11ef7dd8e5 100644 --- a/pkgs/development/python-modules/coiled/default.nix +++ b/pkgs/development/python-modules/coiled/default.nix @@ -39,12 +39,12 @@ buildPythonPackage rec { pname = "coiled"; - version = "1.82.0"; + version = "1.86.0"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-GNWiSv+1V++Jj8w5vLr2Ph3sSg7sHtX0kFsxEcEG9hE="; + hash = "sha256-umwAG7+ykCWLqgyQzWdrYUuslyWWP1/uKlsSci50qR4="; }; build-system = [ diff --git a/pkgs/development/python-modules/conduit/default.nix b/pkgs/development/python-modules/conduit/default.nix new file mode 100644 index 000000000000..9fd15ff2eea0 --- /dev/null +++ b/pkgs/development/python-modules/conduit/default.nix @@ -0,0 +1,65 @@ +{ + lib, + stdenv, + pkgs, + buildPythonPackage, + setuptools, + numpy, + pip, + + mpiSupport ? false, +}: +let + conduit = pkgs.conduit.override { inherit mpiSupport; }; +in +buildPythonPackage { + inherit (conduit) + pname + version + src + nativeBuildInputs + buildInputs + ; + pyproject = true; + + # Needed for cmake to find openmpi + strictDeps = false; + + postPatch = '' + substituteInPlace setup.py \ + --replace-fail \ + "'-j2'" \ + "f'-j{os.environ.get(\"NIX_BUILD_CORES\")}'" + ''; + + dontUseCmakeConfigure = true; + + env.ENABLE_MPI = mpiSupport; + + build-system = [ + setuptools + ]; + + dependencies = [ + numpy + pip + ]; + + pythonImportsCheck = [ "conduit" ]; + + # No python tests + doCheck = false; + + meta = { + description = "Python bindings for the conduit library"; + inherit (conduit.meta) + homepage + changelog + license + platforms + ; + maintainers = with lib.maintainers; [ GaetanLepage ]; + # Cross-compilation is broken + broken = stdenv.hostPlatform != stdenv.buildPlatform; + }; +} diff --git a/pkgs/development/python-modules/configparser/default.nix b/pkgs/development/python-modules/configparser/default.nix index 2c9981db34a6..61c71a2f157b 100644 --- a/pkgs/development/python-modules/configparser/default.nix +++ b/pkgs/development/python-modules/configparser/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "configparser"; - version = "7.1.0"; + version = "7.2.0"; pyproject = true; src = fetchFromGitHub { owner = "jaraco"; repo = "configparser"; tag = "v${version}"; - hash = "sha256-6B1I/kS60opMDpCzy2tnlnV65Qo500G0zPHP1I5TDWA="; + hash = "sha256-ZPoHnmD0YjY3+dUW1NKDJjNOVrUFNOjQyMqamOsS2RQ="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/duckduckgo-search/default.nix b/pkgs/development/python-modules/duckduckgo-search/default.nix index 480998365f72..29fa27406139 100644 --- a/pkgs/development/python-modules/duckduckgo-search/default.nix +++ b/pkgs/development/python-modules/duckduckgo-search/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "duckduckgo-search"; - version = "7.2.1"; + version = "7.5.2"; pyproject = true; disabled = pythonOlder "3.8"; @@ -22,7 +22,7 @@ buildPythonPackage rec { owner = "deedy5"; repo = "duckduckgo_search"; tag = "v${version}"; - hash = "sha256-6hYSABD66yfvkL8bmy84ElIWp49SMQ1R1/B2mDwWIS0="; + hash = "sha256-X2sLUXkxk3zEmA6urmlZ3tU5J0LpwT9dQDVy773U9kM="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/icalendar-compatibility/default.nix b/pkgs/development/python-modules/icalendar-compatibility/default.nix new file mode 100644 index 000000000000..b5969bcca32b --- /dev/null +++ b/pkgs/development/python-modules/icalendar-compatibility/default.nix @@ -0,0 +1,53 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + hatchling, + hatch-vcs, + icalendar, + pytestCheckHook, + git, +}: + +buildPythonPackage rec { + pname = "icalendar-compatibility"; + version = "0.1.4"; + pyproject = true; + + src = fetchFromGitHub { + owner = "niccokunzmann"; + repo = "icalendar_compatibility"; + tag = "v${version}"; + hash = "sha256-h9rpbltNEPMteicPJ6oC32NsZS8QXQphLbC0Qiu7j5Q="; + }; + + # hatch-vcs tries to read the current git commit hash + postPatch = '' + substituteInPlace pyproject.toml \ + --replace 'dynamic = ["urls", "version"]' 'version = "${version}"' + ''; + + build-system = [ + hatchling + hatch-vcs + ]; + + dependencies = [ icalendar ]; + + nativeCheckInputs = [ + pytestCheckHook + git + ]; + + pythonImportsCheck = [ "icalendar_compatibility" ]; + + # env.SETUPTOOLS_SCM_PRETEND_VERSION = version; + + meta = { + homepage = "https://icalendar-compatibility.readthedocs.io/en/latest/"; + changelog = "https://icalendar-compatibility.readthedocs.io/en/latest/changes.html"; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ erictapen ]; + }; + +} diff --git a/pkgs/development/python-modules/jaxtyping/default.nix b/pkgs/development/python-modules/jaxtyping/default.nix index 35e9c56adc2d..351acbd4e318 100644 --- a/pkgs/development/python-modules/jaxtyping/default.nix +++ b/pkgs/development/python-modules/jaxtyping/default.nix @@ -23,14 +23,14 @@ let self = buildPythonPackage rec { pname = "jaxtyping"; - version = "0.2.38"; + version = "0.3.0"; pyproject = true; src = fetchFromGitHub { owner = "google"; repo = "jaxtyping"; tag = "v${version}"; - hash = "sha256-AK0c4HCM8ExDBdnQ0y6qSNTHTF5rD6kC+OjiJtW5Mkg="; + hash = "sha256-sMJvkqlg7lNtyo7j+eD7aWrds71XwqO2VWDVsO4r4Mk="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/krb5/default.nix b/pkgs/development/python-modules/krb5/default.nix index 5b4de628d7ca..093e45b5ce81 100644 --- a/pkgs/development/python-modules/krb5/default.nix +++ b/pkgs/development/python-modules/krb5/default.nix @@ -13,14 +13,14 @@ buildPythonPackage rec { pname = "krb5"; - version = "0.7.0"; + version = "0.7.1"; pyproject = true; - disabled = pythonOlder "3.7"; + disabled = pythonOlder "3.8"; src = fetchPypi { inherit pname version; - hash = "sha256-ajCPLhfRUcOVsk5q7Hvf9qVv42J6MgQvyG1BI5ipLd0="; + hash = "sha256-7V8T1QMUibENhlXAraKKgcI5Gz7LigjG1znh5YNbxFA="; }; build-system = [ diff --git a/pkgs/development/python-modules/langchain-aws/default.nix b/pkgs/development/python-modules/langchain-aws/default.nix index 3fcf0d9deaa2..28668989a89d 100644 --- a/pkgs/development/python-modules/langchain-aws/default.nix +++ b/pkgs/development/python-modules/langchain-aws/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system poetry-core, @@ -52,6 +53,9 @@ buildPythonPackage rec { pythonRelaxDeps = [ # Boto @ 1.35 has outstripped the version requirement "boto3" + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" ]; nativeCheckInputs = [ @@ -64,10 +68,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "langchain_aws" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-aws==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix b/pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix index d38b2c604000..507a1077a492 100644 --- a/pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix +++ b/pkgs/development/python-modules/langchain-azure-dynamic-sessions/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system poetry-core, @@ -41,6 +42,12 @@ buildPythonPackage rec { build-system = [ poetry-core ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + ]; + dependencies = [ azure-identity langchain-core @@ -65,10 +72,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "langchain_azure_dynamic_sessions" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-azure-dynamic-sessions==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain-chroma/default.nix b/pkgs/development/python-modules/langchain-chroma/default.nix index f074d7f3f53a..bbb07eb7e686 100644 --- a/pkgs/development/python-modules/langchain-chroma/default.nix +++ b/pkgs/development/python-modules/langchain-chroma/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, chromadb, langchain-core, langchain-tests, @@ -29,7 +30,12 @@ buildPythonPackage rec { build-system = [ pdm-backend ]; - pythonRelaxDeps = [ "numpy" ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + "numpy" + ]; dependencies = [ chromadb @@ -50,10 +56,11 @@ buildPythonPackage rec { "test_chroma_update_document" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-chroma==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain-community/default.nix b/pkgs/development/python-modules/langchain-community/default.nix index 97bb3c06e8d4..1652b899434b 100644 --- a/pkgs/development/python-modules/langchain-community/default.nix +++ b/pkgs/development/python-modules/langchain-community/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system pdm-backend, @@ -56,7 +57,10 @@ buildPythonPackage rec { ]; pythonRelaxDeps = [ - "langchain" # Can fail during updates where building sees the old langchain + # Each component release requests the exact latest langchain and -core. + # That prevents us from updating individul components. + "langchain" + "langchain-core" "numpy" "pydantic-settings" "tenacity" @@ -98,12 +102,6 @@ buildPythonPackage rec { pytestFlagsArray = [ "tests/unit_tests" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; - }; - __darwinAllowLocalNetworking = true; disabledTests = [ @@ -124,6 +122,13 @@ buildPythonPackage rec { "test_group_dependencies" ]; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-community==(.*)" + ]; + }; + meta = { changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-community==${version}"; description = "Community contributed LangChain integrations"; diff --git a/pkgs/development/python-modules/langchain-core/default.nix b/pkgs/development/python-modules/langchain-core/default.nix index d6d4ccd1deac..db838f33d27e 100644 --- a/pkgs/development/python-modules/langchain-core/default.nix +++ b/pkgs/development/python-modules/langchain-core/default.nix @@ -30,7 +30,7 @@ syrupy, # passthru - writeScript, + nix-update-script, }: buildPythonPackage rec { @@ -94,28 +94,13 @@ buildPythonPackage rec { tests.pytest = langchain-core.overridePythonAttrs (_: { doCheck = true; }); - # Updates to core tend to drive updates in everything else - updateScript = writeScript "update.sh" '' - #!/usr/bin/env nix-shell - #!nix-shell -i bash -p nix-update - set -u -o pipefail +e - # Common core - nix-update --commit --version-regex 'langchain-core==(.*)' python3Packages.langchain-core - nix-update --commit --version-regex 'langchain-text-splitters==(.*)' python3Packages.langchain-text-splitters - nix-update --commit --version-regex 'langchain==(.*)' python3Packages.langchain - nix-update --commit --version-regex 'langchain-community==(.*)' python3Packages.langchain-community - - # Extensions - nix-update --commit --version-regex 'langchain-aws==(.*)' python3Packages.langchain-aws - nix-update --commit --version-regex 'langchain-azure-dynamic-sessions==(.*)' python3Packages.langchain-azure-dynamic-sessions - nix-update --commit --version-regex 'langchain-chroma==(.*)' python3Packages.langchain-chroma - nix-update --commit --version-regex 'langchain-huggingface==(.*)' python3Packages.langchain-huggingface - nix-update --commit --version-regex 'langchain-mongodb==(.*)' python3Packages.langchain-mongodb - nix-update --commit --version-regex 'langchain-openai==(.*)' python3Packages.langchain-openai - ''; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-core==([0-9.]+)$" + ]; + }; }; disabledTests = diff --git a/pkgs/development/python-modules/langchain-groq/default.nix b/pkgs/development/python-modules/langchain-groq/default.nix index fbcb402b174a..838956215d24 100644 --- a/pkgs/development/python-modules/langchain-groq/default.nix +++ b/pkgs/development/python-modules/langchain-groq/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system pdm-backend, @@ -31,7 +32,11 @@ buildPythonPackage rec { build-system = [ pdm-backend ]; - pythonRelaxDeps = [ "langchain-core" ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + ]; dependencies = [ langchain-core @@ -47,9 +52,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "langchain_groq" ]; - passthru = { - inherit (langchain-core) updateScript; - skipBulkUpdate = true; # Broken, see https://github.com/NixOS/nixpkgs/issues/379898 + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-groq==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain-huggingface/default.nix b/pkgs/development/python-modules/langchain-huggingface/default.nix index 1ed4271ad784..2cf86baccf0f 100644 --- a/pkgs/development/python-modules/langchain-huggingface/default.nix +++ b/pkgs/development/python-modules/langchain-huggingface/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system poetry-core, @@ -44,6 +45,12 @@ buildPythonPackage rec { build-system = [ poetry-core ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + ]; + dependencies = [ huggingface-hub langchain-core @@ -71,10 +78,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "langchain_huggingface" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-huggingface==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain-mongodb/default.nix b/pkgs/development/python-modules/langchain-mongodb/default.nix index dbe90af0c79d..5203d812d336 100644 --- a/pkgs/development/python-modules/langchain-mongodb/default.nix +++ b/pkgs/development/python-modules/langchain-mongodb/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system poetry-core, @@ -37,6 +38,9 @@ buildPythonPackage rec { build-system = [ poetry-core ]; pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" "numpy" ]; @@ -60,10 +64,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "langchain_mongodb" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-mongodb==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain-ollama/default.nix b/pkgs/development/python-modules/langchain-ollama/default.nix index dca1132a9851..b3f6baf00161 100644 --- a/pkgs/development/python-modules/langchain-ollama/default.nix +++ b/pkgs/development/python-modules/langchain-ollama/default.nix @@ -35,6 +35,12 @@ buildPythonPackage rec { build-system = [ poetry-core ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + ]; + dependencies = [ langchain-core ollama @@ -57,8 +63,6 @@ buildPythonPackage rec { "langchain-ollama==(.*)" ]; }; - # updates the wrong fetcher rev attribute - passthru.skipBulkUpdate = true; meta = { changelog = "https://github.com/langchain-ai/langchain/releases/tag/langchain-ollama==${version}"; diff --git a/pkgs/development/python-modules/langchain-openai/default.nix b/pkgs/development/python-modules/langchain-openai/default.nix index 486894b6d142..8a44d9cb0c44 100644 --- a/pkgs/development/python-modules/langchain-openai/default.nix +++ b/pkgs/development/python-modules/langchain-openai/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system pdm-backend, @@ -47,6 +48,12 @@ buildPythonPackage rec { build-system = [ pdm-backend ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + ]; + dependencies = [ langchain-core openai @@ -89,10 +96,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "langchain_openai" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-openai==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain-tests/default.nix b/pkgs/development/python-modules/langchain-tests/default.nix index 8f1b87e3f494..b4f9ee35cca7 100644 --- a/pkgs/development/python-modules/langchain-tests/default.nix +++ b/pkgs/development/python-modules/langchain-tests/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system pdm-backend, @@ -37,6 +38,13 @@ buildPythonPackage rec { build-system = [ pdm-backend ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + "numpy" + ]; + dependencies = [ httpx langchain-core @@ -54,6 +62,13 @@ buildPythonPackage rec { pytestCheckHook ]; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-tests==([0-9.]+)$" + ]; + }; + meta = { description = "Build context-aware reasoning applications"; homepage = "https://github.com/langchain-ai/langchain"; diff --git a/pkgs/development/python-modules/langchain-text-splitters/default.nix b/pkgs/development/python-modules/langchain-text-splitters/default.nix index 746c953d873b..4bcfcf159414 100644 --- a/pkgs/development/python-modules/langchain-text-splitters/default.nix +++ b/pkgs/development/python-modules/langchain-text-splitters/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system pdm-backend, @@ -31,6 +32,12 @@ buildPythonPackage rec { build-system = [ pdm-backend ]; + pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" + ]; + dependencies = [ langchain-core ]; pythonImportsCheck = [ "langchain_text_splitters" ]; @@ -43,10 +50,11 @@ buildPythonPackage rec { pytestFlagsArray = [ "tests/unit_tests" ]; - passthru = { - inherit (langchain-core) updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain-test-splitters==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/langchain/default.nix b/pkgs/development/python-modules/langchain/default.nix index 779b84440936..d9a8c52f5e07 100644 --- a/pkgs/development/python-modules/langchain/default.nix +++ b/pkgs/development/python-modules/langchain/default.nix @@ -3,6 +3,7 @@ buildPythonPackage, fetchFromGitHub, pythonOlder, + nix-update-script, # build-system pdm-backend, @@ -62,6 +63,9 @@ buildPythonPackage rec { buildInputs = [ bash ]; pythonRelaxDeps = [ + # Each component release requests the exact latest core. + # That prevents us from updating individul components. + "langchain-core" "numpy" "tenacity" ]; @@ -144,10 +148,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "langchain" ]; - passthru = { - updateScript = langchain-core.updateScript; - # updates the wrong fetcher rev attribute - skipBulkUpdate = true; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "^langchain==([0-9.]+)$" + ]; }; meta = { diff --git a/pkgs/development/python-modules/manim-slides/default.nix b/pkgs/development/python-modules/manim-slides/default.nix index fba53e41110f..d2c197a92e47 100644 --- a/pkgs/development/python-modules/manim-slides/default.nix +++ b/pkgs/development/python-modules/manim-slides/default.nix @@ -9,7 +9,6 @@ manim, ffmpeg, - av, beautifulsoup4, click, click-default-group, @@ -59,7 +58,6 @@ buildPythonPackage rec { dependencies = [ - av beautifulsoup4 click click-default-group diff --git a/pkgs/development/python-modules/manim/default.nix b/pkgs/development/python-modules/manim/default.nix index c5cf6b8408e0..fb0ec500aac6 100644 --- a/pkgs/development/python-modules/manim/default.nix +++ b/pkgs/development/python-modules/manim/default.nix @@ -183,6 +183,16 @@ let cbfonts-fd ] ); + # https://github.com/ManimCommunity/manim/pull/4037 + av_13_1 = av.overridePythonAttrs (rec { + version = "13.1.0"; + src = fetchFromGitHub { + owner = "PyAV-Org"; + repo = "PyAV"; + tag = "v${version}"; + hash = "sha256-x2a9SC4uRplC6p0cD7fZcepFpRidbr6JJEEOaGSWl60="; + }; + }); in buildPythonPackage rec { pname = "manim"; @@ -206,7 +216,7 @@ buildPythonPackage rec { buildInputs = [ cairo ]; dependencies = [ - av + av_13_1 beautifulsoup4 click cloup @@ -268,8 +278,6 @@ buildPythonPackage rec { pythonImportsCheck = [ "manim" ]; meta = { - # https://github.com/ManimCommunity/manim/pull/4037 - broken = lib.versionAtLeast av.version "14"; description = "Animation engine for explanatory math videos - Community version"; longDescription = '' Manim is an animation engine for explanatory math videos. It's used to @@ -277,9 +285,10 @@ buildPythonPackage rec { 3Blue1Brown on YouTube. This is the community maintained version of manim. ''; + mainProgram = "manim"; changelog = "https://docs.manim.community/en/latest/changelog/${version}-changelog.html"; homepage = "https://github.com/ManimCommunity/manim"; license = lib.licenses.mit; - maintainers = [ ]; + maintainers = with lib.maintainers; [ osbm ]; }; } diff --git a/pkgs/development/python-modules/mergecal/default.nix b/pkgs/development/python-modules/mergecal/default.nix new file mode 100644 index 000000000000..25d038f02b36 --- /dev/null +++ b/pkgs/development/python-modules/mergecal/default.nix @@ -0,0 +1,48 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + icalendar, + rich, + typer, + x-wr-timezone, + pytestCheckHook, + pytest-cov-stub, +}: + +buildPythonPackage rec { + pname = "mergecal"; + version = "0.5.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "mergecal"; + repo = "python-mergecal"; + tag = "v${version}"; + hash = "sha256-Je3gFREu97Ycofszhr6pKOCiK76oBuzb3ji4LAf5aE8="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + icalendar + rich + typer + x-wr-timezone + ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-cov-stub + ]; + + pythonImportChecks = [ "mergecal" ]; + + meta = { + homepage = "https://mergecal.readthedocs.io/en/latest/"; + changelog = "https://github.com/mergecal/python-mergecal/blob/${src.tag}/CHANGELOG.md"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ erictapen ]; + }; +} diff --git a/pkgs/development/python-modules/nbdime/default.nix b/pkgs/development/python-modules/nbdime/default.nix index 9ccb1a257b88..61f420899a2d 100644 --- a/pkgs/development/python-modules/nbdime/default.nix +++ b/pkgs/development/python-modules/nbdime/default.nix @@ -1,23 +1,30 @@ { lib, + stdenv, buildPythonPackage, - pythonOlder, fetchPypi, + + # build-system hatch-jupyter-builder, hatchling, jupyterlab, - nbformat, + + # dependencies colorama, - pygments, - tornado, - requests, gitpython, + jinja2, jupyter-server, jupyter-server-mathjax, - jinja2, + nbformat, + pygments, + requests, + tornado, + + # tests gitMinimal, pytest-tornado, pytestCheckHook, + writableTmpDirAsHomeHook, }: buildPythonPackage rec { @@ -25,8 +32,6 @@ buildPythonPackage rec { version = "4.0.2"; pyproject = true; - disabled = pythonOlder "3.6"; - src = fetchPypi { inherit pname version; hash = "sha256-2Cefj0sjbAslOyDWDEgxu2eEPtjb1uCfI06wEdNvG/I="; @@ -39,32 +44,44 @@ buildPythonPackage rec { ]; dependencies = [ - nbformat colorama - pygments - tornado - requests gitpython + jinja2 jupyter-server jupyter-server-mathjax - jinja2 + nbformat + pygments + requests + tornado ]; nativeCheckInputs = [ gitMinimal pytest-tornado pytestCheckHook + writableTmpDirAsHomeHook ]; - disabledTests = [ - "test_git_diffdriver" - "test_git_difftool" - "test_git_mergedriver" - "test_git_mergetool" - ]; + disabledTests = + [ + # subprocess.CalledProcessError: Command '['git', 'diff', 'base', 'diff.ipynb']' returned non-zero exit status 128. + # git-nbdiffdriver diff: line 1: git-nbdiffdriver: command not found + # fatal: external diff died, stopping at diff.ipynb + "test_git_diffdriver" + + # subprocess.CalledProcessError: Command '['git', 'merge', 'remote-no-conflict']' returned non-zero exit status 1. + "test_git_mergedriver" + + # Require network access + "test_git_difftool" + "test_git_mergetool" + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # OSError: Could not find system gitattributes location! + "test_locate_gitattributes_syste" + ]; preCheck = '' - export HOME="$TEMP" git config --global user.email "janedoe@example.com" git config --global user.name "Jane Doe" ''; @@ -73,11 +90,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "nbdime" ]; - meta = with lib; { + meta = { homepage = "https://github.com/jupyter/nbdime"; changelog = "https://github.com/jupyter/nbdime/blob/${version}/CHANGELOG.md"; description = "Tools for diffing and merging of Jupyter notebooks"; - license = licenses.bsd3; - maintainers = with maintainers; [ tbenst ]; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ tbenst ]; }; } diff --git a/pkgs/development/python-modules/nglview/default.nix b/pkgs/development/python-modules/nglview/default.nix new file mode 100644 index 000000000000..d68a906e304e --- /dev/null +++ b/pkgs/development/python-modules/nglview/default.nix @@ -0,0 +1,98 @@ +{ + lib, + buildPythonPackage, + pythonOlder, + fetchFromGitHub, + nodejs, + notebook, + ipywidgets, + ipykernel, + numpy, + runCommand, + jupyter-packaging, + jupyter-core, + notebook-shim, + setuptools-scm, + writableTmpDirAsHomeHook, + pytestCheckHook, + mock, + pillow, + ase, +}: +let + nodeModules = runCommand "nglview-node-modules" { } '' + mkdir -p $out/node_modules/@jupyter-widgets/base + cat > $out/node_modules/@jupyter-widgets/base/package.json < rustAvailable) + "force-enabling Rust for Linux without an available rustc" + lib.warnIfNot + (forceRust -> rustByDefault) + "force-enabling Rust for Linux on an unsupported kernel version, host platform or compiler" + (forceRust || (rustAvailable && rustByDefault)); options = { @@ -1054,7 +1063,7 @@ let HIDRAW = yes; # Enable loading HID fixups as eBPF from userspace - HID_BPF = whenAtLeast "6.3" yes; + HID_BPF = whenAtLeast "6.3" (whenPlatformHasEBPFJit yes); HID_ACRUX_FF = yes; DRAGONRISE_FF = yes; @@ -1281,7 +1290,7 @@ let LIRC = yes; SCHED_CORE = whenAtLeast "5.14" yes; - SCHED_CLASS_EXT = whenAtLeast "6.12" yes; + SCHED_CLASS_EXT = whenAtLeast "6.12" (whenPlatformHasEBPFJit yes); LRU_GEN = whenAtLeast "6.1" yes; LRU_GEN_ENABLED = whenAtLeast "6.1" yes; diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index fe6b1b8f0f98..334e76efb60a 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -109,11 +109,7 @@ let commonStructuredConfig = import ./common-config.nix { inherit lib stdenv version; - rustAvailable = - lib.any (lib.meta.platformMatch stdenv.hostPlatform) rustc.targetPlatforms - && lib.all (p: !lib.meta.platformMatch stdenv.hostPlatform p) rustc.badTargetPlatforms - # Known to be broken: https://lore.kernel.org/lkml/31885EDD-EF6D-4EF1-94CA-276BA7A340B7@kernel.org/T/ - && !(stdenv.hostPlatform.isRiscV && stdenv.cc.isGNU); + rustAvailable = lib.meta.availableOn stdenv.hostPlatform rustc; features = kernelFeatures; # Ensure we know of all extra patches, etc. }; diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix index baecce29f371..769a95549ec4 100644 --- a/pkgs/os-specific/linux/nvidia-x11/default.nix +++ b/pkgs/os-specific/linux/nvidia-x11/default.nix @@ -64,12 +64,12 @@ rec { stable = if stdenv.hostPlatform.system == "i686-linux" then legacy_390 else production; production = generic { - version = "570.124.04"; - sha256_64bit = "sha256-G3hqS3Ei18QhbFiuQAdoik93jBlsFI2RkWOBXuENU8Q="; - sha256_aarch64 = "sha256-HN58N00SNEwMQKSKuOMAXVW6J2VI/2YyDulQNJHuVeM="; - openSha256 = "sha256-KCGUyu/XtmgcBqJ8NLw/iXlaqB9/exg51KFx0Ta5ip0="; - settingsSha256 = "sha256-LNL0J/sYHD8vagkV1w8tb52gMtzj/F0QmJTV1cMaso8="; - persistencedSha256 = "sha256-SHSdnGyAiRH6e0gYMYKvlpRSH5KYlJSA1AJXPm7MDRk="; + version = "570.133.07"; + sha256_64bit = "sha256-LUPmTFgb5e9VTemIixqpADfvbUX1QoTT2dztwI3E3CY="; + sha256_aarch64 = "sha256-yTovUno/1TkakemRlNpNB91U+V04ACTMwPEhDok7jI0="; + openSha256 = "sha256-9l8N83Spj0MccA8+8R1uqiXBS0Ag4JrLPjrU3TaXHnM="; + settingsSha256 = "sha256-XMk+FvTlGpMquM8aE8kgYK2PIEszUZD2+Zmj2OpYrzU="; + persistencedSha256 = "sha256-G1V7JtHQbfnSRfVjz/LE2fYTlh9okpCbE4dfX9oYSg8="; }; latest = selectHighestVersion production (generic { diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index db21f9fb7d54..8abead4eeddc 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -892,6 +892,10 @@ stdenv.mkDerivation (finalAttrs: { kbd ; + # Many TPM2-related units are only installed if this trio of features are + # enabled. See https://github.com/systemd/systemd/blob/876ee10e0eb4bbb0920bdab7817a9f06cc34910f/units/meson.build#L521 + withTpm2Units = withTpm2Tss && withBootloader && withOpenSSL; + tests = let # Some entries in the `nixosTests.systemd-*` set of attributes are collections of tests, diff --git a/pkgs/pkgs-lib/formats.nix b/pkgs/pkgs-lib/formats.nix index b77903a7580b..ee0b62a52e2c 100644 --- a/pkgs/pkgs-lib/formats.nix +++ b/pkgs/pkgs-lib/formats.nix @@ -47,7 +47,7 @@ rec { inherit (lib) mkOptionType; inherit (lib.types) nullOr oneOf coercedTo listOf nonEmptyListOf attrsOf either; - inherit (lib.types) bool int float str path; + inherit (lib.types) bool int float str path luaInline; json = {}: { @@ -541,6 +541,66 @@ rec { ''; }; + lua = + { + asBindings ? false, + multiline ? true, + columnWidth ? 100, + indentWidth ? 2, + indentUsingTabs ? false, + }: + { + type = + let + valueType = + nullOr (oneOf [ + bool + float + int + path + str + luaInline + (attrsOf valueType) + (listOf valueType) + ]) + // { + description = "lua value"; + descriptionClass = "noun"; + }; + in + if asBindings then attrsOf valueType else valueType; + generate = + name: value: + pkgs.callPackage ( + { runCommand, stylua }: + runCommand name + { + nativeBuildInputs = [ stylua ]; + inherit columnWidth; + inherit indentWidth; + indentType = if indentUsingTabs then "Tabs" else "Spaces"; + value = lib.generators.toLua { inherit asBindings multiline; } value; + passAsFile = [ "value" ]; + preferLocalBuild = true; + } + '' + ${lib.optionalString (!asBindings) '' + echo -n 'return ' >> $out + ''} + cat $valuePath >> $out + stylua \ + --no-editorconfig \ + --line-endings Unix \ + --column-width $columnWidth \ + --indent-width $indentWidth \ + --indent-type $indentType \ + $out + '' + ) { }; + # Alias for mkLuaInline + lib.mkRaw = lib.mkLuaInline; + }; + # Outputs a succession of Python variable assignments # Useful for many Django-based services pythonVars = {}: { diff --git a/pkgs/pkgs-lib/tests/formats.nix b/pkgs/pkgs-lib/tests/formats.nix index 2a2138bdbd10..77c002886bde 100644 --- a/pkgs/pkgs-lib/tests/formats.nix +++ b/pkgs/pkgs-lib/tests/formats.nix @@ -601,6 +601,82 @@ in runBuildTests { ''; }; + luaTable = shouldPass { + format = formats.lua { }; + input = { + null = null; + false = false; + true = true; + int = 10; + float = 3.141; + str = "foo"; + attrs.foo = null; + list = [ + null + null + ]; + path = ./testfile; + inline = lib.mkLuaInline "hello('world')"; + }; + expected = '' + return { + ["attrs"] = { + ["foo"] = nil, + }, + ["false"] = false, + ["float"] = 3.141, + ["inline"] = (hello("world")), + ["int"] = 10, + ["list"] = { + nil, + nil, + }, + ["null"] = nil, + ["path"] = "${./testfile}", + ["str"] = "foo", + ["true"] = true, + } + ''; + }; + + luaBindings = shouldPass { + format = formats.lua { + asBindings = true; + }; + input = { + null = null; + _false = false; + _true = true; + int = 10; + float = 3.141; + str = "foo"; + attrs.foo = null; + list = [ + null + null + ]; + path = ./testfile; + inline = lib.mkLuaInline "hello('world')"; + }; + expected = '' + _false = false + _true = true + attrs = { + ["foo"] = nil, + } + float = 3.141 + inline = (hello("world")) + int = 10 + list = { + nil, + nil, + } + null = nil + path = "${./testfile}" + str = "foo" + ''; + }; + phpAtoms = shouldPass rec { format = formats.php { finalVariable = "config"; }; input = { diff --git a/pkgs/servers/home-assistant/custom-lovelace-modules/advanced-camera-card/package.nix b/pkgs/servers/home-assistant/custom-lovelace-modules/advanced-camera-card/package.nix index f12d302f12cd..2e2656ceb947 100644 --- a/pkgs/servers/home-assistant/custom-lovelace-modules/advanced-camera-card/package.nix +++ b/pkgs/servers/home-assistant/custom-lovelace-modules/advanced-camera-card/package.nix @@ -6,11 +6,11 @@ stdenv.mkDerivation rec { pname = "advanced-camera-card"; - version = "7.3.5"; + version = "7.3.6"; src = fetchzip { url = "https://github.com/dermotduffy/advanced-camera-card/releases/download/v${version}/advanced-camera-card.zip"; - hash = "sha256-DpQHSHZ+jmaUjepbUYiGJJ3d7xu2mj15Tts6DAXY4Ng="; + hash = "sha256-+sDIs1r3668FrpnJ3qcQlrfDvtapODj5LVOb6yStSA8="; }; # TODO: build from source once yarn berry support lands in nixpkgs diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/pkgs/servers/sql/postgresql/ext/timescaledb.nix index a9dcd5cbe07c..1c1117b2d831 100644 --- a/pkgs/servers/sql/postgresql/ext/timescaledb.nix +++ b/pkgs/servers/sql/postgresql/ext/timescaledb.nix @@ -14,13 +14,13 @@ postgresqlBuildExtension rec { pname = "timescaledb${lib.optionalString (!enableUnfree) "-apache"}"; - version = "2.18.2"; + version = "2.19.0"; src = fetchFromGitHub { owner = "timescale"; repo = "timescaledb"; tag = version; - hash = "sha256-/PKk8/cS6jqL+mhSqFU6gybqDx3ld77RLF/uB+1XJCQ="; + hash = "sha256-8E5oEEsyu247WtmR20xRO/SAI6KXYSVCrU0qta6iUB8="; }; nativeBuildInputs = [ cmake ]; @@ -29,14 +29,12 @@ postgresqlBuildExtension rec { libkrb5 ]; - cmakeFlags = - [ - "-DSEND_TELEMETRY_DEFAULT=OFF" - "-DREGRESS_CHECKS=OFF" - "-DTAP_CHECKS=OFF" - ] - ++ lib.optionals (!enableUnfree) [ "-DAPACHE_ONLY=ON" ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ "-DLINTER=OFF" ]; + cmakeFlags = [ + (lib.cmakeBool "SEND_TELEMETRY_DEFAULT" false) + (lib.cmakeBool "REGRESS_CHECKS" false) + (lib.cmakeBool "TAP_CHECKS" false) + (lib.cmakeBool "APACHE_ONLY" (!enableUnfree)) + ]; # Fix the install phase which tries to install into the pgsql extension dir, # and cannot be manually overridden. This is rather fragile but works OK. diff --git a/pkgs/shells/nushell/default.nix b/pkgs/shells/nushell/default.nix index f0f6a57d640b..b4a39b23c1ff 100644 --- a/pkgs/shells/nushell/default.nix +++ b/pkgs/shells/nushell/default.nix @@ -22,7 +22,7 @@ }: let - version = "0.102.0"; + version = "0.103.0"; in rustPlatform.buildRustPackage { @@ -33,11 +33,11 @@ rustPlatform.buildRustPackage { owner = "nushell"; repo = "nushell"; tag = version; - hash = "sha256-ISiixFQ2m++WKX66SnvF1VZpgYJjgchRWSlo/Cp/Ybs="; + hash = "sha256-PqhZFzFkvOtznJV3h25X02ZgLLvlheMm9R0tibcBrbQ="; }; useFetchCargoVendor = true; - cargoHash = "sha256-3cmNlCTawMUpr6kSyT/YZzC717FoXkF0uTeE/D8BSFM="; + cargoHash = "sha256-8q/z0SmhTKsTlixze8Deej4rFsO4QyDce2OvIvE4AcY="; nativeBuildInputs = [ pkg-config ] diff --git a/pkgs/shells/nushell/plugins/formats.nix b/pkgs/shells/nushell/plugins/formats.nix index f42180d27437..7581ed0cf2f0 100644 --- a/pkgs/shells/nushell/plugins/formats.nix +++ b/pkgs/shells/nushell/plugins/formats.nix @@ -13,7 +13,7 @@ rustPlatform.buildRustPackage rec { pname = "nushell_plugin_formats"; inherit (nushell) version src; useFetchCargoVendor = true; - cargoHash = "sha256-3cmNlCTawMUpr6kSyT/YZzC717FoXkF0uTeE/D8BSFM="; + cargoHash = "sha256-8q/z0SmhTKsTlixze8Deej4rFsO4QyDce2OvIvE4AcY="; nativeBuildInputs = [ pkg-config ] ++ lib.optionals stdenv.cc.isClang [ rustPlatform.bindgenHook ]; buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ diff --git a/pkgs/shells/nushell/plugins/gstat.nix b/pkgs/shells/nushell/plugins/gstat.nix index b7b08e512c9a..458f57e1beb8 100644 --- a/pkgs/shells/nushell/plugins/gstat.nix +++ b/pkgs/shells/nushell/plugins/gstat.nix @@ -13,7 +13,7 @@ rustPlatform.buildRustPackage rec { pname = "nushell_plugin_gstat"; inherit (nushell) version src; useFetchCargoVendor = true; - cargoHash = "sha256-3cmNlCTawMUpr6kSyT/YZzC717FoXkF0uTeE/D8BSFM="; + cargoHash = "sha256-8q/z0SmhTKsTlixze8Deej4rFsO4QyDce2OvIvE4AcY="; nativeBuildInputs = [ pkg-config ] ++ lib.optionals stdenv.cc.isClang [ rustPlatform.bindgenHook ]; buildInputs = [ openssl ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ Security ]; diff --git a/pkgs/shells/nushell/plugins/polars.nix b/pkgs/shells/nushell/plugins/polars.nix index cbe03c0e66ba..31e8ec22b9b1 100644 --- a/pkgs/shells/nushell/plugins/polars.nix +++ b/pkgs/shells/nushell/plugins/polars.nix @@ -15,7 +15,7 @@ rustPlatform.buildRustPackage rec { inherit (nushell) version src; useFetchCargoVendor = true; - cargoHash = "sha256-3cmNlCTawMUpr6kSyT/YZzC717FoXkF0uTeE/D8BSFM="; + cargoHash = "sha256-8q/z0SmhTKsTlixze8Deej4rFsO4QyDce2OvIvE4AcY="; nativeBuildInputs = [ pkg-config ] ++ lib.optionals stdenv.cc.isClang [ rustPlatform.bindgenHook ]; buildInputs = diff --git a/pkgs/shells/nushell/plugins/query.nix b/pkgs/shells/nushell/plugins/query.nix index 68e3ca819412..880bbca3a64b 100644 --- a/pkgs/shells/nushell/plugins/query.nix +++ b/pkgs/shells/nushell/plugins/query.nix @@ -15,7 +15,7 @@ rustPlatform.buildRustPackage rec { pname = "nushell_plugin_query"; inherit (nushell) version src; useFetchCargoVendor = true; - cargoHash = "sha256-3cmNlCTawMUpr6kSyT/YZzC717FoXkF0uTeE/D8BSFM="; + cargoHash = "sha256-8q/z0SmhTKsTlixze8Deej4rFsO4QyDce2OvIvE4AcY="; nativeBuildInputs = [ pkg-config ] ++ lib.optionals stdenv.cc.isClang [ rustPlatform.bindgenHook ]; buildInputs = diff --git a/pkgs/tools/X11/xpra/default.nix b/pkgs/tools/X11/xpra/default.nix index bd43082ba12b..fc0c33deaa32 100644 --- a/pkgs/tools/X11/xpra/default.nix +++ b/pkgs/tools/X11/xpra/default.nix @@ -35,6 +35,10 @@ which, x264, x265, + libavif, + libspng, + openh264, + libyuv, xauth, xdg-utils, xorg, @@ -82,7 +86,7 @@ let in buildPythonApplication rec { pname = "xpra"; - version = "6.2.3"; + version = "6.2.5"; stdenv = if withNvenc then cudaPackages.backendStdenv else args.stdenv; @@ -90,7 +94,7 @@ buildPythonApplication rec { owner = "Xpra-org"; repo = "xpra"; rev = "v${version}"; - hash = "sha256-5f6yHz3uc5qsU1F6D8r0KPo8tbrFP4pfxXTvIJYqKuI="; + hash = "sha256-XY8NZhWCRLjpgq0dOClzftvMR7g/X64b+OYyjOGC/lM="; }; patches = [ @@ -132,6 +136,8 @@ buildPythonApplication rec { ] ++ (with gst_all_1; [ gst-libav + gst-vaapi + gst-plugins-ugly gst-plugins-bad gst-plugins-base gst-plugins-good @@ -154,6 +160,10 @@ buildPythonApplication rec { pango x264 x265 + libavif + libspng + openh264 + libyuv xxHash ] ++ lib.optional withNvenc [ @@ -182,10 +192,14 @@ buildPythonApplication rec { pygobject3 pyinotify pyopengl + pyopengl-accelerate python-uinput pyxdg rencode invoke + aioquic + uvloop + pyopenssl ] ++ lib.optionals withNvenc [ pycuda diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cc3e3f7cfd87..e9e4b37711b7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -709,9 +709,9 @@ with pkgs; compressFirmwareZstd = callPackage ../build-support/kernel/compress-firmware.nix { type = "zstd"; }; - makeModulesClosure = { kernel, firmware, rootModules, allowMissing ? false }: + makeModulesClosure = { kernel, firmware, rootModules, allowMissing ? false, extraFirmwarePaths ? [ ] }: callPackage ../build-support/kernel/modules-closure.nix { - inherit kernel firmware rootModules allowMissing; + inherit kernel firmware rootModules allowMissing extraFirmwarePaths; }; mkBinaryCache = callPackage ../build-support/binary-cache { }; @@ -1000,6 +1000,8 @@ with pkgs; inherit (darwin.apple_sdk.frameworks) ApplicationServices Carbon Cocoa VideoToolbox; }; + inherit (callPackage ../development/tools/genealogos { }) genealogos-cli genealogos-api; + # This is to workaround gfal2-python broken against Python 3.12 or later. # TODO: Remove these lines after solving the breakage. gfal2-util = callPackage ../by-name/gf/gfal2-util/package.nix (lib.optionalAttrs python3Packages.gfal2-python.meta.broken { @@ -1189,9 +1191,7 @@ with pkgs; datalad-gooey = with python3Packages; toPythonApplication datalad-gooey; - forgejo-lts = callPackage ../by-name/fo/forgejo/lts.nix { - buildGoModule = buildGo123Module; - }; + forgejo-lts = callPackage ../by-name/fo/forgejo/lts.nix { }; gfold = callPackage ../applications/version-management/gfold { }; @@ -2815,15 +2815,6 @@ with pkgs; libotf = callPackage ../tools/inputmethods/m17n-lib/otf.nix { }; - netbird = callPackage ../tools/networking/netbird { - inherit (darwin.apple_sdk_11_0.frameworks) Cocoa IOKit Kernel UserNotifications WebKit; - buildGoModule = buildGo123Module; - }; - - netbird-ui = netbird.override { - ui = true; - }; - skkDictionaries = callPackages ../tools/inputmethods/skk/skk-dicts { }; ibus = callPackage ../tools/inputmethods/ibus { }; @@ -17057,6 +17048,7 @@ with pkgs; }; inherit (callPackages ../applications/science/logic/z3 { python = python3; }) + z3_4_14 z3_4_13 z3_4_12 z3_4_11 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2410fd2a0d2a..92efd5f4c3c2 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2646,6 +2646,10 @@ self: super: with self; { conda-package-streaming = callPackage ../development/python-modules/conda-package-streaming { }; + conduit = callPackage ../development/python-modules/conduit { }; + + conduit-mpi = callPackage ../development/python-modules/conduit { mpiSupport = true; }; + confection = callPackage ../development/python-modules/confection { }; configargparse = callPackage ../development/python-modules/configargparse { }; @@ -6322,6 +6326,8 @@ self: super: with self; { icalendar = callPackage ../development/python-modules/icalendar { }; + icalendar-compatibility = callPackage ../development/python-modules/icalendar-compatibility { }; + icalevents = callPackage ../development/python-modules/icalevents { }; icecream = callPackage ../development/python-modules/icecream { }; @@ -7234,6 +7240,8 @@ self: super: with self; { kubernetes-asyncio = callPackage ../development/python-modules/kubernetes-asyncio { }; + kubernetes-validate = callPackage ../by-name/ku/kubernetes-validate/unwrapped.nix { }; + kurbopy = callPackage ../development/python-modules/kurbopy { }; l18n = callPackage ../development/python-modules/l18n { }; @@ -8307,6 +8315,8 @@ self: super: with self; { merge3 = callPackage ../development/python-modules/merge3 { }; + mergecal = callPackage ../development/python-modules/mergecal { }; + mergedb = callPackage ../development/python-modules/mergedb { }; mergedeep = callPackage ../development/python-modules/mergedeep { }; @@ -9284,6 +9294,8 @@ self: super: with self; { ndcurves = toPythonModule (pkgs.ndcurves.override { python3Packages = self; pythonSupport = true; }); + nglview = callPackage ../development/python-modules/nglview { }; + nomadnet = callPackage ../development/python-modules/nomadnet { }; nonbloat-db = callPackage ../development/python-modules/nonbloat-db { };