diff --git a/.github/workflows/eval.yml b/.github/workflows/eval.yml index 28b5e8c99f61..390f19d96e2f 100644 --- a/.github/workflows/eval.yml +++ b/.github/workflows/eval.yml @@ -168,6 +168,7 @@ jobs: needs: [eval] if: ${{ !cancelled() && !failure() }} permissions: + pull-requests: write statuses: write timeout-minutes: 5 steps: @@ -254,6 +255,17 @@ jobs: description, target_url }) + - name: Request changes if PR is against an inappropriate branch + if: ${{ github.event_name == 'pull_request_target' }} + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 + with: + script: | + require('./nixpkgs/trusted/ci/github-script/check-target-branch.js')({ + github, + context, + core, + dry: context.eventName == 'pull_request', + }) # Creates a matrix of Eval performance for various versions and systems. report: diff --git a/.github/workflows/merge-group.yml b/.github/workflows/merge-group.yml index 299f56c09dfe..0720817c6da7 100644 --- a/.github/workflows/merge-group.yml +++ b/.github/workflows/merge-group.yml @@ -84,6 +84,7 @@ jobs: # even though they are unused when working with the merge queue. permissions: # compare + pull-requests: write statuses: write secrets: CACHIX_AUTH_TOKEN_GHA: ${{ secrets.CACHIX_AUTH_TOKEN_GHA }} diff --git a/.github/workflows/pull-request-target.yml b/.github/workflows/pull-request-target.yml index 9609a440ae89..c49e2ae60d37 100644 --- a/.github/workflows/pull-request-target.yml +++ b/.github/workflows/pull-request-target.yml @@ -81,6 +81,7 @@ jobs: uses: ./.github/workflows/eval.yml permissions: # compare + pull-requests: write statuses: write with: artifact-prefix: ${{ inputs.artifact-prefix }} diff --git a/ci/github-script/check-target-branch.js b/ci/github-script/check-target-branch.js new file mode 100644 index 000000000000..2b671715d37d --- /dev/null +++ b/ci/github-script/check-target-branch.js @@ -0,0 +1,135 @@ +/// @ts-check + +// TODO: should this be combined with the branch checks in prepare.js? +// They do seem quite similar, but this needs to run after eval, +// and prepare.js obviously doesn't. + +const { classify, split } = require('../supportedBranches.js') +const { readFile } = require('node:fs/promises') +const { postReview } = require('./reviews.js') + +/** + * @param {{ + * github: InstanceType, + * context: import('@actions/github/lib/context').Context + * core: import('@actions/core') + * dry: boolean + * }} CheckTargetBranchProps + */ +async function checkTargetBranch({ github, context, core, dry }) { + const changed = JSON.parse( + await readFile('comparison/changed-paths.json', 'utf-8'), + ) + const pull_number = context.payload.pull_request?.number + if (!pull_number) { + core.warning( + 'Skipping checkTargetBranch: no pull_request number (is this being run as part of a merge group?)', + ) + return + } + const prInfo = ( + await github.rest.pulls.get({ + ...context.repo, + pull_number, + }) + ).data + const base = prInfo.base.ref + const head = prInfo.head.ref + const baseClassification = classify(base) + const headClassification = classify(head) + + // Don't run on, e.g., staging-nixos to master merges. + if (headClassification.type.includes('development')) { + core.info( + `Skipping checkTargetBranch: PR is from a development branch (${head})`, + ) + return + } + // Don't run on PRs against staging branches, wip branches, haskell-updates, etc. + if (!baseClassification.type.includes('primary')) { + core.info( + `Skipping checkTargetBranch: PR is against a non-primary base branch (${base})`, + ) + return + } + + const maxRebuildCount = Math.max( + ...Object.values(changed.rebuildCountByKernel), + ) + const rebuildsAllTests = + changed.attrdiff.changed.includes('nixosTests.simple') ?? false + core.info( + `checkTargetBranch: PR causes ${maxRebuildCount} rebuilds and ${rebuildsAllTests ? 'does' : 'does not'} rebuild all NixOS tests.`, + ) + + if (maxRebuildCount >= 1000) { + const desiredBranch = + base === 'master' ? 'staging' : `staging-${split(base).version}` + const body = [ + `The PR's base branch is set to \`${base}\`, but this PR causes ${maxRebuildCount} rebuilds.`, + 'It is therefore considered a mass rebuild.', + `Please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) (probably \`${desiredBranch}\`).`, + ].join('\n') + + await postReview({ + github, + context, + core, + dry, + body, + event: 'REQUEST_CHANGES', + }) + + throw new Error('This PR is against the wrong branch.') + } else if (rebuildsAllTests) { + let branchText + if (base === 'master' && maxRebuildCount >= 500) { + branchText = '(probably either `staging-nixos` or `staging`)' + } else if (base === 'master') { + branchText = '(probably `staging-nixos`)' + } else { + branchText = `(probably \`staging-${split(base).version}\`)` + } + const body = [ + `The PR's base branch is set to \`${base}\`, but this PR rebuilds all NixOS tests.`, + base === 'master' && maxRebuildCount >= 500 + ? `Since this PR also causes ${maxRebuildCount} rebuilds, it may also be considered a mass rebuild.` + : '', + `Please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) ${branchText}.`, + ].join('\n') + + await postReview({ + github, + context, + core, + dry, + body, + event: 'REQUEST_CHANGES', + }) + + throw new Error('This PR is against the wrong branch.') + } else if (maxRebuildCount >= 500) { + const stagingBranch = + base === 'master' ? 'staging' : `staging-${split(base).version}` + const body = [ + `The PR's base branch is set to \`${base}\`, and this PR causes ${maxRebuildCount} rebuilds.`, + `Please consider whether this PR causes a mass rebuild according to [our conventions](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions).`, + `If it does cause a mass rebuild, please [change the base branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request) to [the right base branch for your changes](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#branch-conventions) (probably \`${stagingBranch}\`).`, + `If it does not cause a mass rebuild, this message can be ignored.`, + ].join('\n') + + await postReview({ + github, + context, + core, + dry, + body, + event: 'COMMENT', + }) + } else { + // Any existing reviews were dismissed by commits.js + core.info('checkTargetBranch: this PR is against an appropriate branch.') + } +} + +module.exports = checkTargetBranch diff --git a/ci/github-script/reviews.js b/ci/github-script/reviews.js index f10f141d84cb..e2880f3c5a01 100644 --- a/ci/github-script/reviews.js +++ b/ci/github-script/reviews.js @@ -1,3 +1,16 @@ +const eventToState = { + COMMENT: 'COMMENTED', + REQUEST_CHANGES: 'CHANGES_REQUESTED', +} + +/** + * @param {{ + * github: InstanceType, + * context: import('@actions/github/lib/context').Context + * core: import('@actions/core') + * dry: boolean + * }} CheckTargetBranchProps + */ async function dismissReviews({ github, context, dry }) { const pull_number = context.payload.pull_request.number @@ -19,13 +32,13 @@ async function dismissReviews({ github, context, dry }) { ...context.repo, pull_number, review_id: review.id, - message: 'All good now, thank you!', + message: 'Review dismissed automatically', }) } await github.graphql( `mutation($node_id:ID!) { minimizeComment(input: { - classifier: RESOLVED, + classifier: OUTDATED, subjectId: $node_id }) { clientMutationId } @@ -36,7 +49,14 @@ async function dismissReviews({ github, context, dry }) { ) } -async function postReview({ github, context, core, dry, body }) { +async function postReview({ + github, + context, + core, + dry, + body, + event = 'REQUEST_CHANGES', +}) { const pull_number = context.payload.pull_request.number const pendingReview = ( @@ -49,10 +69,7 @@ async function postReview({ github, context, core, dry, body }) { review.user?.login === 'github-actions[bot]' && // If a review is still pending, we can just update this instead // of posting a new one. - (review.state === 'CHANGES_REQUESTED' || - // No need to post a new review, if an older one with the exact - // same content had already been dismissed. - review.body === body), + review.state === eventToState[event], ) if (dry) { @@ -72,7 +89,7 @@ async function postReview({ github, context, core, dry, body }) { await github.rest.pulls.createReview({ ...context.repo, pull_number, - event: 'REQUEST_CHANGES', + event, body, }) } diff --git a/ci/github-script/run b/ci/github-script/run index 095768f317da..744e49f018a4 100755 --- a/ci/github-script/run +++ b/ci/github-script/run @@ -105,4 +105,15 @@ program await run(checkCommitMessages, owner, repo, pr, options) }) +program + .command('check-target-branch') + .description('Check that the PR is made against the correct branch') + .argument('', 'Owner of the GitHub repository to run on (Example: NixOS)') + .argument('', 'Name of the GitHub repository to run on (Example: nixpkgs)') + .argument('', 'Number of the Pull Request to run on') + .action(async (owner, repo, pr, options) => { + const checkCommitMessages = (await import('./check-target-branch.js')).default + await run(checkCommitMessages, owner, repo, pr, options) + }) + await program.parse() diff --git a/ci/supportedBranches.js b/ci/supportedBranches.js index 003b437613f7..2f4bf5abfb40 100755 --- a/ci/supportedBranches.js +++ b/ci/supportedBranches.js @@ -44,7 +44,7 @@ function classify(branch) { } } -module.exports = { classify } +module.exports = { classify, split } // If called directly via CLI, runs the following tests: if (!module.parent) { diff --git a/lib/options.nix b/lib/options.nix index 164bd6248534..195ba79765e9 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -672,11 +672,30 @@ rec { is necessary for complex values, e.g. functions, or values that depend on other values or packages. + # Examples + :::{.example} + ## `literalExpression` usage example + + ```nix + llvmPackages = mkOption { + type = types.str; + description = '' + Version of llvm packages to use for + this module + ''; + example = literalExpression '' + llvmPackages = pkgs.llvmPackages_20; + ''; + }; + ``` + + ::: + # Inputs `text` - : 1\. Function argument + : The text to render as a Nix expression */ literalExpression = text: @@ -688,6 +707,49 @@ rec { inherit text; }; + /** + For use in the `defaultText` and `example` option attributes. Causes the + given string to be rendered verbatim in the documentation as a code + block with the language bassed on the provided input tag. + + If you wish to render Nix code, please see `literalExpression`. + + # Examples + :::{.example} + ## `literalCode` usage example + + ```nix + myPythonScript = mkOption { + type = types.str; + description = '' + Example python script used by a module + ''; + example = literalCode "python" '' + print("Hello world!") + ''; + }; + ``` + + ::: + + # Inputs + + `languageTag` + + : The language tag to use when producing the code block (i.e. `js`, `rs`, etc). + + `text` + + : The text to render as a Nix expression + */ + literalCode = + languageTag: text: + lib.literalMD '' + ```${languageTag} + ${text} + ``` + ''; + /** For use in the `defaultText` and `example` option attributes. Causes the given MD text to be inserted verbatim in the documentation, for when diff --git a/lib/types.nix b/lib/types.nix index bc6e28ed9363..bd9ac93df472 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -18,6 +18,7 @@ let throwIf toDerivation toList + types ; inherit (lib.lists) concatLists @@ -87,7 +88,7 @@ let { inherit name payload; wrappedDeprecationMessage = makeWrappedDeprecationMessage payload; - type = outer_types.types.${name}; + type = types.${name}; binOp = a: b: let @@ -134,1568 +135,1568 @@ let baseType // { check = value: /* your check */; } ''; - outer_types = rec { - isType = type: x: (x._type or "") == type; +in +rec { + isType = type: x: (x._type or "") == type; - setType = - typeName: value: - value - // { - _type = typeName; - }; + setType = + typeName: value: + value + // { + _type = typeName; + }; - # Default type merging function - # takes two type functors and return the merged type - defaultTypeMerge = - f: f': - let - mergedWrapped = f.wrapped.typeMerge f'.wrapped.functor; - mergedPayload = f.binOp f.payload f'.payload; + # Default type merging function + # takes two type functors and return the merged type + defaultTypeMerge = + f: f': + let + mergedWrapped = f.wrapped.typeMerge f'.wrapped.functor; + mergedPayload = f.binOp f.payload f'.payload; - hasPayload = - assert (f'.payload != null) == (f.payload != null); - f.payload != null; - hasWrapped = - assert (f'.wrapped != null) == (f.wrapped != null); - f.wrapped != null; + hasPayload = + assert (f'.payload != null) == (f.payload != null); + f.payload != null; + hasWrapped = + assert (f'.wrapped != null) == (f.wrapped != null); + f.wrapped != null; - typeFromPayload = if mergedPayload == null then null else f.type mergedPayload; - typeFromWrapped = if mergedWrapped == null then null else f.type mergedWrapped; - in - # Abort early: cannot merge different types - if f.name != f'.name then - null - else + typeFromPayload = if mergedPayload == null then null else f.type mergedPayload; + typeFromWrapped = if mergedWrapped == null then null else f.type mergedWrapped; + in + # Abort early: cannot merge different types + if f.name != f'.name then + null + else - if hasPayload then - # Just return the payload if returning wrapped is deprecated - if f ? wrappedDeprecationMessage then - typeFromPayload - else if hasWrapped then - # Has both wrapped and payload - throw '' - Type ${f.name} defines both `functor.payload` and `functor.wrapped` at the same time, which is not supported. - - Use either `functor.payload` or `functor.wrapped` but not both. - - If your code worked before remove either `functor.wrapped` or `functor.payload` from the type definition. - '' - else - typeFromPayload + if hasPayload then + # Just return the payload if returning wrapped is deprecated + if f ? wrappedDeprecationMessage then + typeFromPayload else if hasWrapped then - typeFromWrapped + # Has both wrapped and payload + throw '' + Type ${f.name} defines both `functor.payload` and `functor.wrapped` at the same time, which is not supported. + + Use either `functor.payload` or `functor.wrapped` but not both. + + If your code worked before remove either `functor.wrapped` or `functor.payload` from the type definition. + '' else - f.type; - - # Default type functor - defaultFunctor = name: { - inherit name; - type = types.${name} or null; - wrapped = null; - payload = null; - binOp = a: b: null; - }; - - isOptionType = isType "option-type"; - mkOptionType = - { - # Human-readable representation of the type, should be equivalent to - # the type function name. - name, - # Description of the type, defined recursively by embedding the wrapped type if any. - description ? null, - # A hint for whether or not this description needs parentheses. Possible values: - # - "noun": a noun phrase - # Example description: "positive integer", - # - "conjunction": a phrase with a potentially ambiguous "or" connective - # Example description: "int or string" - # - "composite": a phrase with an "of" connective - # Example description: "list of string" - # - "nonRestrictiveClause": a noun followed by a comma and a clause - # Example description: "positive integer, meaning >0" - # See the `optionDescriptionPhrase` function. - descriptionClass ? null, - # DO NOT USE WITHOUT KNOWING WHAT YOU ARE DOING! - # Function applied to each definition that must return false when a definition - # does not match the type. It should not check more than the root of the value, - # because checking nested values reduces laziness, leading to unnecessary - # infinite recursions in the module system. - # Further checks of nested values should be performed by throwing in - # the merge function. - # Strict and deep type checking can be performed by calling lib.deepSeq on - # the merged value. - # - # See https://github.com/NixOS/nixpkgs/pull/6794 that introduced this change, - # https://github.com/NixOS/nixpkgs/pull/173568 and - # https://github.com/NixOS/nixpkgs/pull/168295 that attempted to revert this, - # https://github.com/NixOS/nixpkgs/issues/191124 and - # https://github.com/NixOS/nixos-search/issues/391 for what happens if you ignore - # this disclaimer. - check ? (x: true), - # Merge a list of definitions together into a single value. - # This function is called with two arguments: the location of - # the option in the configuration as a list of strings - # (e.g. ["boot" "loader "grub" "enable"]), and a list of - # definition values and locations (e.g. [ { file = "/foo.nix"; - # value = 1; } { file = "/bar.nix"; value = 2 } ]). - merge ? mergeDefaultOption, - # Whether this type has a value representing nothingness. If it does, - # this should be a value of the form { value = ; } - # If it doesn't, this should be {} - # This may be used when a value is required for `mkIf false`. This allows the extra laziness in e.g. `lazyAttrsOf`. - emptyValue ? { }, - # Return a flat attrset of sub-options. Used to generate - # documentation. - getSubOptions ? prefix: { }, - # List of modules if any, or null if none. - getSubModules ? null, - # Function for building the same option type with a different list of - # modules. - substSubModules ? m: null, - # Function that merge type declarations. - # internal, takes a functor as argument and returns the merged type. - # returning null means the type is not mergeable - typeMerge ? defaultTypeMerge functor, - # The type functor. - # internal, representation of the type as an attribute set. - # name: name of the type - # type: type function. - # wrapped: the type wrapped in case of compound types. - # payload: values of the type, two payloads of the same type must be - # combinable with the binOp binary operation. - # binOp: binary operation that merge two payloads of the same type. - functor ? defaultFunctor name, - # The deprecation message to display when this type is used by an option - # If null, the type isn't deprecated - deprecationMessage ? null, - # The types that occur in the definition of this type. This is used to - # issue deprecation warnings recursively. Can also be used to reuse - # nested types - nestedTypes ? { }, - }: - { - _type = "option-type"; - inherit - name - check - merge - emptyValue - getSubOptions - getSubModules - substSubModules - typeMerge - deprecationMessage - nestedTypes - descriptionClass - ; - functor = - if functor ? wrappedDeprecationMessage then - functor - // { - wrapped = functor.wrappedDeprecationMessage { - loc = null; - }; - } - else - functor; - description = if description == null then name else description; - }; - - # optionDescriptionPhrase :: (str -> bool) -> optionType -> str - # - # Helper function for producing unambiguous but readable natural language - # descriptions of types. - # - # Parameters - # - # optionDescriptionPhase unparenthesize optionType - # - # `unparenthesize`: A function from descriptionClass string to boolean. - # It must return true when the class of phrase will fit unambiguously into - # the description of the caller. - # - # `optionType`: The option type to parenthesize or not. - # The option whose description we're returning. - # - # Returns value - # - # The description of the `optionType`, with parentheses if there may be an - # ambiguity. - optionDescriptionPhrase = - unparenthesize: t: - if unparenthesize (t.descriptionClass or null) then t.description else "(${t.description})"; - - noCheckForDocsModule = { - # When generating documentation, our goal isn't to check anything. - # Quite the opposite in fact. Generating docs is somewhat of a - # challenge, evaluating modules in a *lacking* context. Anything - # that makes the docs avoid an error is a win. - config._module.check = lib.mkForce false; - _file = ""; - }; - - # When adding new types don't forget to document them in - # nixos/doc/manual/development/option-types.section.md! - types = rec { - - raw = mkOptionType { - name = "raw"; - description = "raw value"; - descriptionClass = "noun"; - check = value: true; - merge = mergeOneOption; - }; - - anything = mkOptionType { - name = "anything"; - description = "anything"; - descriptionClass = "noun"; - check = value: true; - merge = - loc: defs: - let - getType = - value: if isAttrs value && isStringLike value then "stringCoercibleSet" else builtins.typeOf value; - - # Returns the common type of all definitions, throws an error if they - # don't have the same type - commonType = foldl' ( - type: def: - if getType def.value == type then - type - else - throw "The option `${showOption loc}' has conflicting option types in ${showFiles (getFiles defs)}" - ) (getType (head defs).value) defs; - - mergeFunction = - { - # Recursively merge attribute sets - set = (attrsOf anything).merge; - # This is the type of packages, only accept a single definition - stringCoercibleSet = mergeOneOption; - lambda = - loc: defs: arg: - anything.merge (loc ++ [ "" ]) ( - map (def: { - file = def.file; - value = def.value arg; - }) defs - ); - # Otherwise fall back to only allowing all equal definitions - } - .${commonType} or mergeEqualOption; - in - mergeFunction loc defs; - }; - - unspecified = mkOptionType { - name = "unspecified"; - description = "unspecified value"; - descriptionClass = "noun"; - }; - - bool = mkOptionType { - name = "bool"; - description = "boolean"; - descriptionClass = "noun"; - check = isBool; - merge = mergeEqualOption; - }; - - boolByOr = mkOptionType { - name = "boolByOr"; - description = "boolean (merged using or)"; - descriptionClass = "noun"; - check = isBool; - merge = - loc: defs: - foldl' ( - result: def: - # Under the assumption that .check always runs before merge, we can assume that all defs.*.value - # have been forced, and therefore we assume we don't introduce order-dependent strictness here - result || def.value - ) false defs; - }; - - int = mkOptionType { - name = "int"; - description = "signed integer"; - descriptionClass = "noun"; - check = isInt; - merge = mergeEqualOption; - }; - - # Specialized subdomains of int - ints = - let - betweenDesc = lowest: highest: "${toString lowest} and ${toString highest} (both inclusive)"; - between = - lowest: highest: - assert lib.assertMsg (lowest <= highest) "ints.between: lowest must be smaller than highest"; - addCheck int (x: x >= lowest && x <= highest) - // { - name = "intBetween"; - description = "integer between ${betweenDesc lowest highest}"; - }; - ign = - lowest: highest: name: docStart: - between lowest highest - // { - inherit name; - description = docStart + "; between ${betweenDesc lowest highest}"; - }; - unsign = - bit: range: ign 0 (range - 1) "unsignedInt${toString bit}" "${toString bit} bit unsigned integer"; - sign = - bit: range: - ign (0 - (range / 2)) ( - range / 2 - 1 - ) "signedInt${toString bit}" "${toString bit} bit signed integer"; - - in - { - # TODO: Deduplicate with docs in nixos/doc/manual/development/option-types.section.md - /** - An int with a fixed range. - - # Example - :::{.example} - ## `lib.types.ints.between` usage example - - ```nix - (ints.between 0 100).check (-1) - => false - (ints.between 0 100).check (101) - => false - (ints.between 0 0).check 0 - => true - ``` - - ::: - */ - inherit between; - - unsigned = addCheck types.int (x: x >= 0) // { - name = "unsignedInt"; - description = "unsigned integer, meaning >=0"; - descriptionClass = "nonRestrictiveClause"; - }; - positive = addCheck types.int (x: x > 0) // { - name = "positiveInt"; - description = "positive integer, meaning >0"; - descriptionClass = "nonRestrictiveClause"; - }; - u8 = unsign 8 256; - u16 = unsign 16 65536; - # the biggest int Nix accepts is 2^63 - 1 (9223372036854775808) - # the smallest int Nix accepts is -2^63 (-9223372036854775807) - u32 = unsign 32 4294967296; - # u64 = unsign 64 18446744073709551616; - - s8 = sign 8 256; - s16 = sign 16 65536; - s32 = sign 32 4294967296; - }; - - # Alias of u16 for a port number - port = ints.u16; - - float = mkOptionType { - name = "float"; - description = "floating point number"; - descriptionClass = "noun"; - check = isFloat; - merge = mergeEqualOption; - }; - - number = either int float; - - numbers = - let - betweenDesc = - lowest: highest: "${builtins.toJSON lowest} and ${builtins.toJSON highest} (both inclusive)"; - in - { - between = - lowest: highest: - assert lib.assertMsg (lowest <= highest) "numbers.between: lowest must be smaller than highest"; - addCheck number (x: x >= lowest && x <= highest) - // { - name = "numberBetween"; - description = "integer or floating point number between ${betweenDesc lowest highest}"; - }; - - nonnegative = addCheck number (x: x >= 0) // { - name = "numberNonnegative"; - description = "nonnegative integer or floating point number, meaning >=0"; - descriptionClass = "nonRestrictiveClause"; - }; - positive = addCheck number (x: x > 0) // { - name = "numberPositive"; - description = "positive integer or floating point number, meaning >0"; - descriptionClass = "nonRestrictiveClause"; - }; - }; - - str = mkOptionType { - name = "str"; - description = "string"; - descriptionClass = "noun"; - check = isString; - merge = mergeEqualOption; - }; - - nonEmptyStr = mkOptionType { - name = "nonEmptyStr"; - description = "non-empty string"; - descriptionClass = "noun"; - check = x: str.check x && builtins.match "[ \t\n]*" x == null; - inherit (str) merge; - }; - - # Allow a newline character at the end and trim it in the merge function. - singleLineStr = - let - inherit (strMatching "[^\n\r]*\n?") check merge; - in - mkOptionType { - name = "singleLineStr"; - description = "(optionally newline-terminated) single-line string"; - descriptionClass = "noun"; - inherit check; - merge = loc: defs: lib.removeSuffix "\n" (merge loc defs); - }; - - strMatching = - pattern: - mkOptionType { - name = "strMatching ${escapeNixString pattern}"; - description = "string matching the pattern ${pattern}"; - descriptionClass = "noun"; - check = x: str.check x && builtins.match pattern x != null; - inherit (str) merge; - functor = defaultFunctor "strMatching" // { - type = payload: strMatching payload.pattern; - payload = { inherit pattern; }; - binOp = lhs: rhs: if lhs == rhs then lhs else null; - }; - }; - - # Merge multiple definitions by concatenating them (with the given - # separator between the values). - separatedString = - sep: - mkOptionType rec { - name = "separatedString"; - description = "strings concatenated with ${builtins.toJSON sep}"; - descriptionClass = "noun"; - check = isString; - merge = loc: defs: concatStringsSep sep (getValues defs); - functor = (defaultFunctor name) // { - payload = { inherit sep; }; - type = payload: types.separatedString payload.sep; - binOp = lhs: rhs: if lhs.sep == rhs.sep then { inherit (lhs) sep; } else null; - }; - }; - - lines = separatedString "\n"; - commas = separatedString ","; - envVar = separatedString ":"; - - passwdEntry = - entryType: - addCheck entryType (str: !(hasInfix ":" str || hasInfix "\n" str)) - // { - name = "passwdEntry ${entryType.name}"; - description = "${ - optionDescriptionPhrase (class: class == "noun") entryType - }, not containing newlines or colons"; - descriptionClass = "nonRestrictiveClause"; - }; - - attrs = mkOptionType { - name = "attrs"; - description = "attribute set"; - check = isAttrs; - merge = loc: foldl' (res: def: res // def.value) { }; - emptyValue = { - value = { }; - }; - }; - - fileset = mkOptionType { - name = "fileset"; - description = "fileset"; - descriptionClass = "noun"; - check = isFileset; - merge = loc: defs: unions (map (x: x.value) defs); - emptyValue.value = empty; - }; - - # A package is a top-level store path (/nix/store/hash-name). This includes: - # - derivations - # - more generally, attribute sets with an `outPath` or `__toString` attribute - # pointing to a store path, e.g. flake inputs - # - strings with context, e.g. "${pkgs.foo}" or (toString pkgs.foo) - # - hardcoded store path literals (/nix/store/hash-foo) or strings without context - # ("/nix/store/hash-foo"). These get a context added to them using builtins.storePath. - # If you don't need a *top-level* store path, consider using pathInStore instead. - package = mkOptionType { - name = "package"; - descriptionClass = "noun"; - check = x: isDerivation x || isStorePath x; - merge = - loc: defs: - let - res = mergeOneOption loc defs; - in - if builtins.isPath res || (builtins.isString res && !builtins.hasContext res) then - toDerivation res - else - res; - }; - - shellPackage = package // { - check = x: isDerivation x && hasAttr "shellPath" x; - }; - - pkgs = addCheck ( - unique { message = "A Nixpkgs pkgs set can not be merged with another pkgs set."; } attrs - // { - name = "pkgs"; - descriptionClass = "noun"; - description = "Nixpkgs package set"; - } - ) (x: (x._type or null) == "pkgs"); - - path = pathWith { - absolute = true; - }; - - pathInStore = pathWith { - inStore = true; - }; - - externalPath = pathWith { - absolute = true; - inStore = false; - }; - - pathWith = - { - inStore ? null, - absolute ? null, - }: - throwIf (inStore != null && absolute != null && inStore && !absolute) - "In pathWith, inStore means the path must be absolute" - mkOptionType - { - name = "path"; - description = ( - (if absolute == null then "" else (if absolute then "absolute " else "relative ")) - + "path" - + ( - if inStore == null then "" else (if inStore then " in the Nix store" else " not in the Nix store") - ) - ); - descriptionClass = "noun"; - - merge = mergeEqualOption; - functor = defaultFunctor "path" // { - type = pathWith; - payload = { inherit inStore absolute; }; - binOp = lhs: rhs: if lhs == rhs then lhs else null; - }; - - check = - x: - let - isInStore = lib.path.hasStorePathPrefix ( - if builtins.isPath x then - x - # Discarding string context is necessary to convert the value to - # a path and safe as the result is never used in any derivation. - else - /. + builtins.unsafeDiscardStringContext x - ); - isAbsolute = builtins.substring 0 1 (toString x) == "/"; - isExpectedType = ( - if inStore == null || inStore then isStringLike x else isString x # Do not allow a true path, which could be copied to the store later on. - ); - in - isExpectedType - && (inStore == null || inStore == isInStore) - && (absolute == null || absolute == isAbsolute); - }; - - listOf = - elemType: - mkOptionType rec { - name = "listOf"; - description = "list of ${ - optionDescriptionPhrase (class: class == "noun" || class == "composite") elemType - }"; - descriptionClass = "composite"; - check = { - __functor = _self: isList; - isV2MergeCoherent = true; - }; - merge = { - __functor = - self: loc: defs: - (self.v2 { inherit loc defs; }).value; - v2 = - { loc, defs }: - let - evals = filter (x: x.optionalValue ? value) ( - concatLists ( - imap1 ( - n: def: - imap1 ( - m: def': - (mergeDefinitions (loc ++ [ "[definition ${toString n}-entry ${toString m}]" ]) elemType [ - { - inherit (def) file; - value = def'; - } - ]) - ) def.value - ) defs - ) - ); - in - { - headError = checkDefsForError check loc defs; - value = map (x: x.optionalValue.value or x.mergedValue) evals; - valueMeta.list = map (v: v.checkedAndMerged.valueMeta) evals; - }; - }; - emptyValue = { - value = [ ]; - }; - getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "*" ]); - getSubModules = elemType.getSubModules; - substSubModules = m: listOf (elemType.substSubModules m); - functor = (elemTypeFunctor name { inherit elemType; }) // { - type = payload: types.listOf payload.elemType; - }; - nestedTypes.elemType = elemType; - }; - - nonEmptyListOf = - elemType: - let - list = addCheck (types.listOf elemType) (l: l != [ ]); - in - list - // { - description = "non-empty ${optionDescriptionPhrase (class: class == "noun") list}"; - emptyValue = { }; # no .value attr, meaning unset - substSubModules = m: nonEmptyListOf (elemType.substSubModules m); - }; - - attrsOf = elemType: attrsWith { inherit elemType; }; - - # A version of attrsOf that's lazy in its values at the expense of - # conditional definitions not working properly. E.g. defining a value with - # `foo.attr = mkIf false 10`, then `foo ? attr == true`, whereas with - # attrsOf it would correctly be `false`. Accessing `foo.attr` would throw an - # error that it's not defined. Use only if conditional definitions don't make sense. - lazyAttrsOf = - elemType: - attrsWith { - inherit elemType; - lazy = true; - }; - - # base type for lazyAttrsOf and attrsOf - attrsWith = - let - # Push down position info. - pushPositions = map ( - def: - mapAttrs (n: v: { - inherit (def) file; - value = v; - }) def.value - ); - binOp = - lhs: rhs: - let - elemType = lhs.elemType.typeMerge rhs.elemType.functor; - lazy = if lhs.lazy == rhs.lazy then lhs.lazy else null; - placeholder = - if lhs.placeholder == rhs.placeholder then - lhs.placeholder - else if lhs.placeholder == "name" then - rhs.placeholder - else if rhs.placeholder == "name" then - lhs.placeholder - else - null; - in - if elemType == null || lazy == null || placeholder == null then - null - else - { - inherit elemType lazy placeholder; - }; - in - { - elemType, - lazy ? false, - placeholder ? "name", - }: - mkOptionType rec { - name = if lazy then "lazyAttrsOf" else "attrsOf"; - description = - (if lazy then "lazy attribute set" else "attribute set") - + " of ${optionDescriptionPhrase (class: class == "noun" || class == "composite") elemType}"; - descriptionClass = "composite"; - check = { - __functor = _self: isAttrs; - isV2MergeCoherent = true; - }; - merge = { - __functor = - self: loc: defs: - (self.v2 { inherit loc defs; }).value; - v2 = - { loc, defs }: - let - evals = - if lazy then - zipAttrsWith (name: defs: mergeDefinitions (loc ++ [ name ]) elemType defs) (pushPositions defs) - else - # Filtering makes the merge function more strict - # Meaning it is less lazy - filterAttrs (n: v: v.optionalValue ? value) ( - zipAttrsWith (name: defs: mergeDefinitions (loc ++ [ name ]) elemType defs) (pushPositions defs) - ); - in - { - headError = checkDefsForError check loc defs; - value = mapAttrs ( - n: v: - if lazy then - v.optionalValue.value or elemType.emptyValue.value or v.mergedValue - else - v.optionalValue.value - ) evals; - valueMeta.attrs = mapAttrs (n: v: v.checkedAndMerged.valueMeta) evals; - }; - }; - - emptyValue = { - value = { }; - }; - getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "<${placeholder}>" ]); - getSubModules = elemType.getSubModules; - substSubModules = - m: - attrsWith { - elemType = elemType.substSubModules m; - inherit lazy placeholder; - }; - functor = - (elemTypeFunctor "attrsWith" { - inherit elemType lazy placeholder; - }) - // { - # Custom type merging required because of the "placeholder" attribute - inherit binOp; - }; - nestedTypes.elemType = elemType; - }; - - # TODO: deprecate this in the future: - loaOf = - elemType: - types.attrsOf elemType - // { - name = "loaOf"; - deprecationMessage = - "Mixing lists with attribute values is no longer" - + " possible; please use `types.attrsOf` instead. See" - + " https://github.com/NixOS/nixpkgs/issues/1800 for the motivation."; - nestedTypes.elemType = elemType; - }; - - attrTag = - tags: - let - tags_ = tags; - in - let - tags = mapAttrs ( - n: opt: - builtins.addErrorContext - "while checking that attrTag tag ${lib.strings.escapeNixIdentifier n} is an option with a type${inAttrPosSuffix tags_ n}" - ( - throwIf (opt._type or null != "option") - "In attrTag, each tag value must be an option, but tag ${lib.strings.escapeNixIdentifier n} ${ - if opt ? _type then - if opt._type == "option-type" then - "was a bare type, not wrapped in mkOption." - else - "was of type ${lib.strings.escapeNixString opt._type}." - else - "was not." - }" - opt - // { - declarations = - opt.declarations or ( - let - pos = builtins.unsafeGetAttrPos n tags_; - in - if pos == null then [ ] else [ pos.file ] - ); - declarationPositions = - opt.declarationPositions or ( - let - pos = builtins.unsafeGetAttrPos n tags_; - in - if pos == null then [ ] else [ pos ] - ); - } - ) - ) tags_; - choicesStr = concatMapStringsSep ", " lib.strings.escapeNixIdentifier (attrNames tags); - in - mkOptionType { - name = "attrTag"; - description = "attribute-tagged union with choices: ${choicesStr}"; - descriptionClass = "noun"; - getSubOptions = - prefix: mapAttrs (tagName: tagOption: tagOption // { loc = prefix ++ [ tagName ]; }) tags; - check = v: isAttrs v && length (attrNames v) == 1 && tags ? ${head (attrNames v)}; - merge = - loc: defs: - let - choice = head (attrNames (head defs).value); - checkedValueDefs = map ( - def: - assert (length (attrNames def.value)) == 1; - if (head (attrNames def.value)) != choice then - throw "The option `${showOption loc}` is defined both as `${choice}` and `${head (attrNames def.value)}`, in ${showFiles (getFiles defs)}." - else - { - inherit (def) file; - value = def.value.${choice}; - } - ) defs; - in - if tags ? ${choice} then - { - ${choice} = (lib.modules.evalOptionValue (loc ++ [ choice ]) tags.${choice} checkedValueDefs).value; - } - else - throw "The option `${showOption loc}` is defined as ${lib.strings.escapeNixIdentifier choice}, but ${lib.strings.escapeNixIdentifier choice} is not among the valid choices (${choicesStr}). Value ${choice} was defined in ${showFiles (getFiles defs)}."; - nestedTypes = tags; - functor = defaultFunctor "attrTag" // { - type = { tags, ... }: types.attrTag tags; - payload = { inherit tags; }; - binOp = - let - # Add metadata in the format that submodules work with - wrapOptionDecl = option: { - options = option; - _file = ""; - pos = null; - }; - in - a: b: { - tags = - a.tags - // b.tags - // mapAttrs ( - tagName: bOpt: - lib.mergeOptionDecls - # FIXME: loc is not accurate; should include prefix - # Fortunately, it's only used for error messages, where a "relative" location is kinda ok. - # It is also returned though, but use of the attribute seems rare? - [ tagName ] - [ - (wrapOptionDecl a.tags.${tagName}) - (wrapOptionDecl bOpt) - ] - // { - # mergeOptionDecls is not idempotent in these attrs: - declarations = a.tags.${tagName}.declarations ++ bOpt.declarations; - declarationPositions = a.tags.${tagName}.declarationPositions ++ bOpt.declarationPositions; - } - ) (builtins.intersectAttrs a.tags b.tags); - }; - }; - }; - - # 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 { - name = "unique"; - inherit (type) description descriptionClass check; - merge = mergeUniqueOption { - inherit message; - inherit (type) merge; - }; - emptyValue = type.emptyValue; - getSubOptions = type.getSubOptions; - getSubModules = type.getSubModules; - substSubModules = m: uniq (type.substSubModules m); - functor = elemTypeFunctor name { elemType = type; } // { - type = payload: types.unique { inherit message; } payload.elemType; - }; - nestedTypes.elemType = type; - }; - - # Null or value of ... - nullOr = - elemType: - mkOptionType rec { - name = "nullOr"; - description = "null or ${ - optionDescriptionPhrase (class: class == "noun" || class == "conjunction") elemType - }"; - descriptionClass = "conjunction"; - check = x: x == null || elemType.check x; - merge = - loc: defs: - let - nrNulls = count (def: def.value == null) defs; - in - if nrNulls == length defs then - null - else if nrNulls != 0 then - throw "The option `${showOption loc}` is defined both null and not null, in ${showFiles (getFiles defs)}." - else - elemType.merge loc defs; - emptyValue = { - value = null; - }; - getSubOptions = elemType.getSubOptions; - getSubModules = elemType.getSubModules; - substSubModules = m: nullOr (elemType.substSubModules m); - functor = (elemTypeFunctor name { inherit elemType; }) // { - type = payload: types.nullOr payload.elemType; - }; - nestedTypes.elemType = elemType; - }; - - functionTo = - elemType: - mkOptionType { - name = "functionTo"; - description = "function that evaluates to a(n) ${ - optionDescriptionPhrase (class: class == "noun" || class == "composite") elemType - }"; - descriptionClass = "composite"; - check = isFunction; - merge = loc: defs: { - # An argument attribute has a default when it has a default in all definitions - __functionArgs = lib.zipAttrsWith (_: lib.all (x: x)) ( - lib.map (fn: lib.functionArgs fn.value) defs - ); - __functor = - _: callerArgs: - (mergeDefinitions (loc ++ [ "" ]) elemType ( - map (fn: { - inherit (fn) file; - value = fn.value callerArgs; - }) defs - )).mergedValue; - }; - getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "" ]); - getSubModules = elemType.getSubModules; - substSubModules = m: functionTo (elemType.substSubModules m); - functor = (elemTypeFunctor "functionTo" { inherit elemType; }) // { - type = payload: types.functionTo payload.elemType; - }; - nestedTypes.elemType = elemType; - }; - - # A submodule (like typed attribute set). See NixOS manual. - submodule = - modules: - submoduleWith { - shorthandOnlyDefinesConfig = true; - modules = toList modules; - }; - - # A module to be imported in some other part of the configuration. - deferredModule = deferredModuleWith { }; - - # A module to be imported in some other part of the configuration. - # `staticModules`' options will be added to the documentation, unlike - # options declared via `config`. - deferredModuleWith = - attrs@{ - staticModules ? [ ], - }: - mkOptionType { - name = "deferredModule"; - description = "module"; - descriptionClass = "noun"; - check = x: isAttrs x || isFunction x || path.check x; - merge = loc: defs: { - imports = - staticModules - ++ map ( - def: lib.setDefaultModuleLocation "${def.file}, via option ${showOption loc}" def.value - ) defs; - }; - inherit (submoduleWith { modules = staticModules; }) - getSubOptions - getSubModules - ; - substSubModules = - m: - deferredModuleWith ( - attrs - // { - staticModules = m; - } - ); - functor = defaultFunctor "deferredModuleWith" // { - type = types.deferredModuleWith; - payload = { - inherit staticModules; - }; - binOp = lhs: rhs: { - staticModules = lhs.staticModules ++ rhs.staticModules; - }; - }; - }; - - # The type of a type! - optionType = mkOptionType { - name = "optionType"; - description = "optionType"; - descriptionClass = "noun"; - check = value: value._type or null == "option-type"; - merge = - loc: defs: - if length defs == 1 then - (head defs).value - else - let - # Prepares the type definitions for mergeOptionDecls, which - # annotates submodules types with file locations - optionModules = map ( - { value, file }: - { - _file = file; - # There's no way to merge types directly from the module system, - # but we can cheat a bit by just declaring an option with the type - options = lib.mkOption { - type = value; - }; - } - ) defs; - # Merges all the types into a single one, including submodule merging. - # This also propagates file information to all submodules - mergedOption = fixupOptionType loc (mergeOptionDecls loc optionModules); - in - mergedOption.type; - }; - - submoduleWith = - { - modules, - specialArgs ? { }, - shorthandOnlyDefinesConfig ? false, - description ? null, - class ? null, - }@attrs: - let - inherit (lib.modules) evalModules; - - allModules = - defs: - map ( - { value, file }: - if isAttrs value && shorthandOnlyDefinesConfig then - { - _file = file; - config = value; - } - else - { - _file = file; - imports = [ value ]; - } - ) defs; - - base = evalModules { - inherit class specialArgs; - modules = [ - { - # This is a work-around for the fact that some sub-modules, - # such as the one included in an attribute set, expects an "args" - # attribute to be given to the sub-module. As the option - # evaluation does not have any specific attribute name yet, we - # provide a default for the documentation and the freeform type. - # - # This is necessary as some option declaration might use the - # "name" attribute given as argument of the submodule and use it - # as the default of option declarations. - # - # We use lookalike unicode single angle quotation marks because - # of the docbook transformation the options receive. In all uses - # > and < wouldn't be encoded correctly so the encoded values - # would be used, and use of `<` and `>` would break the XML document. - # It shouldn't cause an issue since this is cosmetic for the manual. - _module.args.name = lib.mkOptionDefault "‹name›"; - } - ] - ++ modules; - }; - - freeformType = base._module.freeformType; - - name = "submodule"; - - check = { - __functor = _self: x: isAttrs x || isFunction x || path.check x; - isV2MergeCoherent = true; - }; - in - mkOptionType { - inherit name; - description = - if description != null then - description - else - let - docsEval = base.extendModules { modules = [ noCheckForDocsModule ]; }; - in - if docsEval._module.freeformType ? description then - "open ${name} of ${ - optionDescriptionPhrase ( - class: class == "noun" || class == "composite" - ) docsEval._module.freeformType - }" - else - name; - inherit check; - merge = { - __functor = - self: loc: defs: - (self.v2 { inherit loc defs; }).value; - v2 = - { loc, defs }: - let - configuration = base.extendModules { - modules = [ { _module.args.name = last loc; } ] ++ allModules defs; - prefix = loc; - }; - in - { - headError = checkDefsForError check loc defs; - value = configuration.config; - valueMeta = { inherit configuration; }; - }; - }; - emptyValue = { - value = { }; - }; - getSubOptions = - prefix: - let - docsEval = ( - base.extendModules { - inherit prefix; - modules = [ noCheckForDocsModule ]; - } - ); - # Intentionally shadow the freeformType from the possibly *checked* - # configuration. See `noCheckForDocsModule` comment. - inherit (docsEval._module) freeformType; - in - docsEval.options - // optionalAttrs (freeformType != null) { - # Expose the sub options of the freeform type. Note that the option - # discovery doesn't care about the attribute name used here, so this - # is just to avoid conflicts with potential options from the submodule - _freeformOptions = freeformType.getSubOptions prefix; - }; - getSubModules = modules; - substSubModules = - m: - submoduleWith ( - attrs - // { - modules = m; - } - ); - nestedTypes = lib.optionalAttrs (freeformType != null) { - freeformType = freeformType; - }; - functor = defaultFunctor name // { - type = types.submoduleWith; - payload = { - inherit - modules - class - specialArgs - shorthandOnlyDefinesConfig - description - ; - }; - binOp = lhs: rhs: { - class = - # `or null` was added for backwards compatibility only. `class` is - # always set in the current version of the module system. - if lhs.class or null == null then - rhs.class or null - else if rhs.class or null == null then - lhs.class or null - else if lhs.class or null == rhs.class then - lhs.class or null - else - throw "A submoduleWith option is declared multiple times with conflicting class values \"${toString lhs.class}\" and \"${toString rhs.class}\"."; - modules = lhs.modules ++ rhs.modules; - specialArgs = - let - intersecting = builtins.intersectAttrs lhs.specialArgs rhs.specialArgs; - in - if intersecting == { } then - lhs.specialArgs // rhs.specialArgs - else - throw "A submoduleWith option is declared multiple times with the same specialArgs \"${toString (attrNames intersecting)}\""; - shorthandOnlyDefinesConfig = - if lhs.shorthandOnlyDefinesConfig == null then - rhs.shorthandOnlyDefinesConfig - else if rhs.shorthandOnlyDefinesConfig == null then - lhs.shorthandOnlyDefinesConfig - else if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig then - lhs.shorthandOnlyDefinesConfig - else - throw "A submoduleWith option is declared multiple times with conflicting shorthandOnlyDefinesConfig values"; - description = - if lhs.description == null then - rhs.description - else if rhs.description == null then - lhs.description - else if lhs.description == rhs.description then - lhs.description - else - throw "A submoduleWith option is declared multiple times with conflicting descriptions"; - }; - }; - }; - - # A value from a set of allowed ones. - enum = - values: - let - inherit (lib.lists) unique; - show = - v: - if builtins.isString v then - ''"${v}"'' - else if builtins.isInt v then - toString v - else if builtins.isBool v then - boolToString v - else - ''<${builtins.typeOf v}>''; - in - mkOptionType rec { - name = "enum"; - description = - # Length 0 or 1 enums may occur in a design pattern with type merging - # where an "interface" module declares an empty enum and other modules - # provide implementations, each extending the enum with their own - # identifier. - if values == [ ] then - "impossible (empty enum)" - else if builtins.length values == 1 then - "value ${show (builtins.head values)} (singular enum)" - else - "one of ${concatMapStringsSep ", " show values}"; - descriptionClass = if builtins.length values < 2 then "noun" else "conjunction"; - check = flip elem values; - merge = mergeEqualOption; - functor = (defaultFunctor name) // { - payload = { inherit values; }; - type = payload: types.enum payload.values; - binOp = a: b: { values = unique (a.values ++ b.values); }; - }; - }; - - # Either value of type `t1` or `t2`. - either = - t1: t2: - mkOptionType rec { - name = "either"; - description = - if t1.descriptionClass or null == "nonRestrictiveClause" then - # Plain, but add comma - "${t1.description}, or ${ - optionDescriptionPhrase (class: class == "noun" || class == "conjunction") t2 - }" - else - "${optionDescriptionPhrase (class: class == "noun" || class == "conjunction") t1} or ${ - optionDescriptionPhrase ( - class: class == "noun" || class == "conjunction" || class == "composite" - ) t2 - }"; - descriptionClass = "conjunction"; - check = { - __functor = _self: x: t1.check x || t2.check x; - isV2MergeCoherent = true; - }; - merge = { - __functor = - self: loc: defs: - (self.v2 { inherit loc defs; }).value; - v2 = - { loc, defs }: - let - t1CheckedAndMerged = - if t1.merge ? v2 then - checkV2MergeCoherence loc t1 (t1.merge.v2 { inherit loc defs; }) - else - { - value = t1.merge loc defs; - headError = checkDefsForError t1.check loc defs; - valueMeta = { }; - }; - t2CheckedAndMerged = - if t2.merge ? v2 then - checkV2MergeCoherence loc t2 (t2.merge.v2 { inherit loc defs; }) - else - { - value = t2.merge loc defs; - headError = checkDefsForError t2.check loc defs; - valueMeta = { }; - }; - - checkedAndMerged = - if t1CheckedAndMerged.headError == null then - t1CheckedAndMerged - else if t2CheckedAndMerged.headError == null then - t2CheckedAndMerged - else - rec { - valueMeta = { - inherit headError; - }; - headError = { - message = "The option `${showOption loc}` is neither a value of type `${t1.description}` nor `${t2.description}`, Definition values: ${showDefs defs}"; - }; - value = lib.warn '' - One or more definitions did not pass the type-check of the 'either' type. - ${headError.message} - If `either`, `oneOf` or similar is used in freeformType, ensure that it is preceded by an 'attrsOf' such as: `freeformType = types.attrsOf (types.either t1 t2)`. - Otherwise consider using the correct type for the option `${showOption loc}`. This will be an error in Nixpkgs 26.05. - '' (mergeOneOption loc defs); - }; - in - checkedAndMerged; - }; - typeMerge = - f': - let - mt1 = t1.typeMerge (elemAt f'.payload.elemType 0).functor; - mt2 = t2.typeMerge (elemAt f'.payload.elemType 1).functor; - in - if (name == f'.name) && (mt1 != null) && (mt2 != null) then functor.type mt1 mt2 else null; - functor = elemTypeFunctor name { - elemType = [ - t1 - t2 - ]; - }; - nestedTypes.left = t1; - nestedTypes.right = t2; - }; - - # Any of the types in the given list - oneOf = - ts: - let - head' = - if ts == [ ] then throw "types.oneOf needs to get at least one type in its argument" else head ts; - tail' = tail ts; - in - foldl' either head' tail'; - - # Either value of type `coercedType` or `finalType`, the former is - # converted to `finalType` using `coerceFunc`. - coercedTo = - coercedType: coerceFunc: finalType: - assert lib.assertMsg ( - coercedType.getSubModules == null - ) "coercedTo: coercedType must not have submodules (it’s a ${coercedType.description})"; - mkOptionType rec { - name = "coercedTo"; - description = "${optionDescriptionPhrase (class: class == "noun") finalType} or ${ - optionDescriptionPhrase (class: class == "noun") coercedType - } convertible to it"; - check = { - __functor = _self: x: (coercedType.check x && finalType.check (coerceFunc x)) || finalType.check x; - isV2MergeCoherent = true; - }; - merge = { - __functor = - self: loc: defs: - (self.v2 { inherit loc defs; }).value; - v2 = - { loc, defs }: - let - finalDefs = ( - map ( - def: - def - // { - value = - let - merged = - if coercedType.merge ? v2 then - checkV2MergeCoherence loc coercedType ( - coercedType.merge.v2 { - inherit loc; - defs = [ def ]; - } - ) - else - null; - in - if coercedType.merge ? v2 then - if merged.headError == null then coerceFunc def.value else def.value - else if coercedType.check def.value then - coerceFunc def.value - else - def.value; - } - ) defs - ); - in - if finalType.merge ? v2 then - checkV2MergeCoherence loc finalType ( - finalType.merge.v2 { - inherit loc; - defs = finalDefs; - } - ) - else - { - value = finalType.merge loc finalDefs; - valueMeta = { }; - headError = checkDefsForError check loc defs; - }; - }; - emptyValue = finalType.emptyValue; - getSubOptions = finalType.getSubOptions; - getSubModules = finalType.getSubModules; - substSubModules = m: coercedTo coercedType coerceFunc (finalType.substSubModules m); - typeMerge = t: null; - functor = (defaultFunctor name) // { - wrappedDeprecationMessage = makeWrappedDeprecationMessage { elemType = finalType; }; - }; - nestedTypes.coercedType = coercedType; - nestedTypes.finalType = finalType; - }; - - /** - Augment the given type with an additional type check function. - - :::{.warning} - This function has some broken behavior see: [#396021](https://github.com/NixOS/nixpkgs/issues/396021) - Fixing is not trivial, we appreciate any help! - ::: - */ - addCheck = - elemType: check: - if elemType.merge ? v2 then - elemType + typeFromPayload + else if hasWrapped then + typeFromWrapped + else + f.type; + + # Default type functor + defaultFunctor = name: { + inherit name; + type = lib.types.${name} or null; + wrapped = null; + payload = null; + binOp = a: b: null; + }; + + isOptionType = isType "option-type"; + mkOptionType = + { + # Human-readable representation of the type, should be equivalent to + # the type function name. + name, + # Description of the type, defined recursively by embedding the wrapped type if any. + description ? null, + # A hint for whether or not this description needs parentheses. Possible values: + # - "noun": a noun phrase + # Example description: "positive integer", + # - "conjunction": a phrase with a potentially ambiguous "or" connective + # Example description: "int or string" + # - "composite": a phrase with an "of" connective + # Example description: "list of string" + # - "nonRestrictiveClause": a noun followed by a comma and a clause + # Example description: "positive integer, meaning >0" + # See the `optionDescriptionPhrase` function. + descriptionClass ? null, + # DO NOT USE WITHOUT KNOWING WHAT YOU ARE DOING! + # Function applied to each definition that must return false when a definition + # does not match the type. It should not check more than the root of the value, + # because checking nested values reduces laziness, leading to unnecessary + # infinite recursions in the module system. + # Further checks of nested values should be performed by throwing in + # the merge function. + # Strict and deep type checking can be performed by calling lib.deepSeq on + # the merged value. + # + # See https://github.com/NixOS/nixpkgs/pull/6794 that introduced this change, + # https://github.com/NixOS/nixpkgs/pull/173568 and + # https://github.com/NixOS/nixpkgs/pull/168295 that attempted to revert this, + # https://github.com/NixOS/nixpkgs/issues/191124 and + # https://github.com/NixOS/nixos-search/issues/391 for what happens if you ignore + # this disclaimer. + check ? (x: true), + # Merge a list of definitions together into a single value. + # This function is called with two arguments: the location of + # the option in the configuration as a list of strings + # (e.g. ["boot" "loader "grub" "enable"]), and a list of + # definition values and locations (e.g. [ { file = "/foo.nix"; + # value = 1; } { file = "/bar.nix"; value = 2 } ]). + merge ? mergeDefaultOption, + # Whether this type has a value representing nothingness. If it does, + # this should be a value of the form { value = ; } + # If it doesn't, this should be {} + # This may be used when a value is required for `mkIf false`. This allows the extra laziness in e.g. `lazyAttrsOf`. + emptyValue ? { }, + # Return a flat attrset of sub-options. Used to generate + # documentation. + getSubOptions ? prefix: { }, + # List of modules if any, or null if none. + getSubModules ? null, + # Function for building the same option type with a different list of + # modules. + substSubModules ? m: null, + # Function that merge type declarations. + # internal, takes a functor as argument and returns the merged type. + # returning null means the type is not mergeable + typeMerge ? defaultTypeMerge functor, + # The type functor. + # internal, representation of the type as an attribute set. + # name: name of the type + # type: type function. + # wrapped: the type wrapped in case of compound types. + # payload: values of the type, two payloads of the same type must be + # combinable with the binOp binary operation. + # binOp: binary operation that merge two payloads of the same type. + functor ? defaultFunctor name, + # The deprecation message to display when this type is used by an option + # If null, the type isn't deprecated + deprecationMessage ? null, + # The types that occur in the definition of this type. This is used to + # issue deprecation warnings recursively. Can also be used to reuse + # nested types + nestedTypes ? { }, + }: + { + _type = "option-type"; + inherit + name + check + merge + emptyValue + getSubOptions + getSubModules + substSubModules + typeMerge + deprecationMessage + nestedTypes + descriptionClass + ; + functor = + if functor ? wrappedDeprecationMessage then + functor // { - check = { - __functor = _self: x: elemType.check x && check x; - isV2MergeCoherent = true; - }; - merge = { - __functor = - self: loc: defs: - (self.v2 { inherit loc defs; }).value; - v2 = - { loc, defs }: - let - orig = checkV2MergeCoherence loc elemType (elemType.merge.v2 { inherit loc defs; }); - headError' = if orig.headError != null then orig.headError else checkDefsForError check loc defs; - in - orig - // { - headError = headError'; - }; + wrapped = functor.wrappedDeprecationMessage { + loc = null; }; } else - elemType - // { - check = x: elemType.check x && check x; - }; + functor; + description = if description == null then name else description; }; - /** - Merges two option types together. + # optionDescriptionPhrase :: (str -> bool) -> optionType -> str + # + # Helper function for producing unambiguous but readable natural language + # descriptions of types. + # + # Parameters + # + # optionDescriptionPhase unparenthesize optionType + # + # `unparenthesize`: A function from descriptionClass string to boolean. + # It must return true when the class of phrase will fit unambiguously into + # the description of the caller. + # + # `optionType`: The option type to parenthesize or not. + # The option whose description we're returning. + # + # Returns value + # + # The description of the `optionType`, with parentheses if there may be an + # ambiguity. + optionDescriptionPhrase = + unparenthesize: t: + if unparenthesize (t.descriptionClass or null) then t.description else "(${t.description})"; - :::{.note} - Uses the type merge function of the first type, to merge it with the second type. - - Usually types can only be merged if they are of the same type - ::: - - # Inputs - - : `a` (option type): The first option type. - : `b` (option type): The second option type. - - # Returns - - - The merged option type. - - `{ _type = "merge-error"; error = "Cannot merge types"; }` if the types can't be merged. - - # Examples - :::{.example} - ## `lib.types.mergeTypes` usage example - ```nix - let - enumAB = lib.types.enum ["A" "B"]; - enumXY = lib.types.enum ["X" "Y"]; - # This operation could be notated as: [ A ] | [ B ] -> [ A B ] - merged = lib.types.mergeTypes enumAB enumXY; # -> enum [ "A" "B" "X" "Y" ] - in - assert merged.check "A"; # true - assert merged.check "B"; # true - assert merged.check "X"; # true - assert merged.check "Y"; # true - merged.check "C" # false - ``` - ::: - */ - mergeTypes = - a: b: - assert isOptionType a && isOptionType b; - let - merged = a.typeMerge b.functor; - in - if merged == null then setType "merge-error" { error = "Cannot merge types"; } else merged; + noCheckForDocsModule = { + # When generating documentation, our goal isn't to check anything. + # Quite the opposite in fact. Generating docs is somewhat of a + # challenge, evaluating modules in a *lacking* context. Anything + # that makes the docs avoid an error is a win. + config._module.check = lib.mkForce false; + _file = ""; }; -in -outer_types // outer_types.types + # When adding new types don't forget to document them in + # nixos/doc/manual/development/option-types.section.md! + + raw = mkOptionType { + name = "raw"; + description = "raw value"; + descriptionClass = "noun"; + check = value: true; + merge = mergeOneOption; + }; + + anything = mkOptionType { + name = "anything"; + description = "anything"; + descriptionClass = "noun"; + check = value: true; + merge = + loc: defs: + let + getType = + value: if isAttrs value && isStringLike value then "stringCoercibleSet" else builtins.typeOf value; + + # Returns the common type of all definitions, throws an error if they + # don't have the same type + commonType = foldl' ( + type: def: + if getType def.value == type then + type + else + throw "The option `${showOption loc}' has conflicting option types in ${showFiles (getFiles defs)}" + ) (getType (head defs).value) defs; + + mergeFunction = + { + # Recursively merge attribute sets + set = (attrsOf anything).merge; + # This is the type of packages, only accept a single definition + stringCoercibleSet = mergeOneOption; + lambda = + loc: defs: arg: + anything.merge (loc ++ [ "" ]) ( + map (def: { + file = def.file; + value = def.value arg; + }) defs + ); + # Otherwise fall back to only allowing all equal definitions + } + .${commonType} or mergeEqualOption; + in + mergeFunction loc defs; + }; + + unspecified = mkOptionType { + name = "unspecified"; + description = "unspecified value"; + descriptionClass = "noun"; + }; + + bool = mkOptionType { + name = "bool"; + description = "boolean"; + descriptionClass = "noun"; + check = isBool; + merge = mergeEqualOption; + }; + + boolByOr = mkOptionType { + name = "boolByOr"; + description = "boolean (merged using or)"; + descriptionClass = "noun"; + check = isBool; + merge = + loc: defs: + foldl' ( + result: def: + # Under the assumption that .check always runs before merge, we can assume that all defs.*.value + # have been forced, and therefore we assume we don't introduce order-dependent strictness here + result || def.value + ) false defs; + }; + + int = mkOptionType { + name = "int"; + description = "signed integer"; + descriptionClass = "noun"; + check = isInt; + merge = mergeEqualOption; + }; + + # Specialized subdomains of int + ints = + let + betweenDesc = lowest: highest: "${toString lowest} and ${toString highest} (both inclusive)"; + between = + lowest: highest: + assert lib.assertMsg (lowest <= highest) "ints.between: lowest must be smaller than highest"; + addCheck int (x: x >= lowest && x <= highest) + // { + name = "intBetween"; + description = "integer between ${betweenDesc lowest highest}"; + }; + ign = + lowest: highest: name: docStart: + between lowest highest + // { + inherit name; + description = docStart + "; between ${betweenDesc lowest highest}"; + }; + unsign = + bit: range: ign 0 (range - 1) "unsignedInt${toString bit}" "${toString bit} bit unsigned integer"; + sign = + bit: range: + ign (0 - (range / 2)) ( + range / 2 - 1 + ) "signedInt${toString bit}" "${toString bit} bit signed integer"; + + in + { + # TODO: Deduplicate with docs in nixos/doc/manual/development/option-types.section.md + /** + An int with a fixed range. + + # Example + :::{.example} + ## `lib.types.ints.between` usage example + + ```nix + (ints.between 0 100).check (-1) + => false + (ints.between 0 100).check (101) + => false + (ints.between 0 0).check 0 + => true + ``` + + ::: + */ + inherit between; + + unsigned = addCheck lib.types.int (x: x >= 0) // { + name = "unsignedInt"; + description = "unsigned integer, meaning >=0"; + descriptionClass = "nonRestrictiveClause"; + }; + positive = addCheck lib.types.int (x: x > 0) // { + name = "positiveInt"; + description = "positive integer, meaning >0"; + descriptionClass = "nonRestrictiveClause"; + }; + u8 = unsign 8 256; + u16 = unsign 16 65536; + # the biggest int Nix accepts is 2^63 - 1 (9223372036854775808) + # the smallest int Nix accepts is -2^63 (-9223372036854775807) + u32 = unsign 32 4294967296; + # u64 = unsign 64 18446744073709551616; + + s8 = sign 8 256; + s16 = sign 16 65536; + s32 = sign 32 4294967296; + }; + + # Alias of u16 for a port number + port = ints.u16; + + float = mkOptionType { + name = "float"; + description = "floating point number"; + descriptionClass = "noun"; + check = isFloat; + merge = mergeEqualOption; + }; + + number = either int float; + + numbers = + let + betweenDesc = + lowest: highest: "${builtins.toJSON lowest} and ${builtins.toJSON highest} (both inclusive)"; + in + { + between = + lowest: highest: + assert lib.assertMsg (lowest <= highest) "numbers.between: lowest must be smaller than highest"; + addCheck number (x: x >= lowest && x <= highest) + // { + name = "numberBetween"; + description = "integer or floating point number between ${betweenDesc lowest highest}"; + }; + + nonnegative = addCheck number (x: x >= 0) // { + name = "numberNonnegative"; + description = "nonnegative integer or floating point number, meaning >=0"; + descriptionClass = "nonRestrictiveClause"; + }; + positive = addCheck number (x: x > 0) // { + name = "numberPositive"; + description = "positive integer or floating point number, meaning >0"; + descriptionClass = "nonRestrictiveClause"; + }; + }; + + str = mkOptionType { + name = "str"; + description = "string"; + descriptionClass = "noun"; + check = isString; + merge = mergeEqualOption; + }; + + nonEmptyStr = mkOptionType { + name = "nonEmptyStr"; + description = "non-empty string"; + descriptionClass = "noun"; + check = x: str.check x && builtins.match "[ \t\n]*" x == null; + inherit (str) merge; + }; + + # Allow a newline character at the end and trim it in the merge function. + singleLineStr = + let + inherit (strMatching "[^\n\r]*\n?") check merge; + in + mkOptionType { + name = "singleLineStr"; + description = "(optionally newline-terminated) single-line string"; + descriptionClass = "noun"; + inherit check; + merge = loc: defs: lib.removeSuffix "\n" (merge loc defs); + }; + + strMatching = + pattern: + mkOptionType { + name = "strMatching ${escapeNixString pattern}"; + description = "string matching the pattern ${pattern}"; + descriptionClass = "noun"; + check = x: str.check x && builtins.match pattern x != null; + inherit (str) merge; + functor = defaultFunctor "strMatching" // { + type = payload: strMatching payload.pattern; + payload = { inherit pattern; }; + binOp = lhs: rhs: if lhs == rhs then lhs else null; + }; + }; + + # Merge multiple definitions by concatenating them (with the given + # separator between the values). + separatedString = + sep: + mkOptionType rec { + name = "separatedString"; + description = "strings concatenated with ${builtins.toJSON sep}"; + descriptionClass = "noun"; + check = isString; + merge = loc: defs: concatStringsSep sep (getValues defs); + functor = (defaultFunctor name) // { + payload = { inherit sep; }; + type = payload: lib.types.separatedString payload.sep; + binOp = lhs: rhs: if lhs.sep == rhs.sep then { inherit (lhs) sep; } else null; + }; + }; + + lines = separatedString "\n"; + commas = separatedString ","; + envVar = separatedString ":"; + + passwdEntry = + entryType: + addCheck entryType (str: !(hasInfix ":" str || hasInfix "\n" str)) + // { + name = "passwdEntry ${entryType.name}"; + description = "${ + optionDescriptionPhrase (class: class == "noun") entryType + }, not containing newlines or colons"; + descriptionClass = "nonRestrictiveClause"; + }; + + attrs = mkOptionType { + name = "attrs"; + description = "attribute set"; + check = isAttrs; + merge = loc: foldl' (res: def: res // def.value) { }; + emptyValue = { + value = { }; + }; + }; + + fileset = mkOptionType { + name = "fileset"; + description = "fileset"; + descriptionClass = "noun"; + check = isFileset; + merge = loc: defs: unions (map (x: x.value) defs); + emptyValue.value = empty; + }; + + # A package is a top-level store path (/nix/store/hash-name). This includes: + # - derivations + # - more generally, attribute sets with an `outPath` or `__toString` attribute + # pointing to a store path, e.g. flake inputs + # - strings with context, e.g. "${pkgs.foo}" or (toString pkgs.foo) + # - hardcoded store path literals (/nix/store/hash-foo) or strings without context + # ("/nix/store/hash-foo"). These get a context added to them using builtins.storePath. + # If you don't need a *top-level* store path, consider using pathInStore instead. + package = mkOptionType { + name = "package"; + descriptionClass = "noun"; + check = x: isDerivation x || isStorePath x; + merge = + loc: defs: + let + res = mergeOneOption loc defs; + in + if builtins.isPath res || (builtins.isString res && !builtins.hasContext res) then + toDerivation res + else + res; + }; + + shellPackage = package // { + check = x: isDerivation x && hasAttr "shellPath" x; + }; + + pkgs = addCheck ( + unique { message = "A Nixpkgs pkgs set can not be merged with another pkgs set."; } attrs + // { + name = "pkgs"; + descriptionClass = "noun"; + description = "Nixpkgs package set"; + } + ) (x: (x._type or null) == "pkgs"); + + path = pathWith { + absolute = true; + }; + + pathInStore = pathWith { + inStore = true; + }; + + externalPath = pathWith { + absolute = true; + inStore = false; + }; + + pathWith = + { + inStore ? null, + absolute ? null, + }: + throwIf (inStore != null && absolute != null && inStore && !absolute) + "In pathWith, inStore means the path must be absolute" + mkOptionType + { + name = "path"; + description = ( + (if absolute == null then "" else (if absolute then "absolute " else "relative ")) + + "path" + + ( + if inStore == null then "" else (if inStore then " in the Nix store" else " not in the Nix store") + ) + ); + descriptionClass = "noun"; + + merge = mergeEqualOption; + functor = defaultFunctor "path" // { + type = pathWith; + payload = { inherit inStore absolute; }; + binOp = lhs: rhs: if lhs == rhs then lhs else null; + }; + + check = + x: + let + isInStore = lib.path.hasStorePathPrefix ( + if builtins.isPath x then + x + # Discarding string context is necessary to convert the value to + # a path and safe as the result is never used in any derivation. + else + /. + builtins.unsafeDiscardStringContext x + ); + isAbsolute = builtins.substring 0 1 (toString x) == "/"; + isExpectedType = ( + if inStore == null || inStore then isStringLike x else isString x # Do not allow a true path, which could be copied to the store later on. + ); + in + isExpectedType + && (inStore == null || inStore == isInStore) + && (absolute == null || absolute == isAbsolute); + }; + + listOf = + elemType: + mkOptionType rec { + name = "listOf"; + description = "list of ${ + optionDescriptionPhrase (class: class == "noun" || class == "composite") elemType + }"; + descriptionClass = "composite"; + check = { + __functor = _self: isList; + isV2MergeCoherent = true; + }; + merge = { + __functor = + self: loc: defs: + (self.v2 { inherit loc defs; }).value; + v2 = + { loc, defs }: + let + evals = filter (x: x.optionalValue ? value) ( + concatLists ( + imap1 ( + n: def: + imap1 ( + m: def': + (mergeDefinitions (loc ++ [ "[definition ${toString n}-entry ${toString m}]" ]) elemType [ + { + inherit (def) file; + value = def'; + } + ]) + ) def.value + ) defs + ) + ); + in + { + headError = checkDefsForError check loc defs; + value = map (x: x.optionalValue.value or x.mergedValue) evals; + valueMeta.list = map (v: v.checkedAndMerged.valueMeta) evals; + }; + }; + emptyValue = { + value = [ ]; + }; + getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "*" ]); + getSubModules = elemType.getSubModules; + substSubModules = m: listOf (elemType.substSubModules m); + functor = (elemTypeFunctor name { inherit elemType; }) // { + type = payload: lib.types.listOf payload.elemType; + }; + nestedTypes.elemType = elemType; + }; + + nonEmptyListOf = + elemType: + let + list = addCheck (lib.types.listOf elemType) (l: l != [ ]); + in + list + // { + description = "non-empty ${optionDescriptionPhrase (class: class == "noun") list}"; + emptyValue = { }; # no .value attr, meaning unset + substSubModules = m: nonEmptyListOf (elemType.substSubModules m); + }; + + attrsOf = elemType: attrsWith { inherit elemType; }; + + # A version of attrsOf that's lazy in its values at the expense of + # conditional definitions not working properly. E.g. defining a value with + # `foo.attr = mkIf false 10`, then `foo ? attr == true`, whereas with + # attrsOf it would correctly be `false`. Accessing `foo.attr` would throw an + # error that it's not defined. Use only if conditional definitions don't make sense. + lazyAttrsOf = + elemType: + attrsWith { + inherit elemType; + lazy = true; + }; + + # base type for lazyAttrsOf and attrsOf + attrsWith = + let + # Push down position info. + pushPositions = map ( + def: + mapAttrs (n: v: { + inherit (def) file; + value = v; + }) def.value + ); + binOp = + lhs: rhs: + let + elemType = lhs.elemType.typeMerge rhs.elemType.functor; + lazy = if lhs.lazy == rhs.lazy then lhs.lazy else null; + placeholder = + if lhs.placeholder == rhs.placeholder then + lhs.placeholder + else if lhs.placeholder == "name" then + rhs.placeholder + else if rhs.placeholder == "name" then + lhs.placeholder + else + null; + in + if elemType == null || lazy == null || placeholder == null then + null + else + { + inherit elemType lazy placeholder; + }; + in + { + elemType, + lazy ? false, + placeholder ? "name", + }: + mkOptionType rec { + name = if lazy then "lazyAttrsOf" else "attrsOf"; + description = + (if lazy then "lazy attribute set" else "attribute set") + + " of ${optionDescriptionPhrase (class: class == "noun" || class == "composite") elemType}"; + descriptionClass = "composite"; + check = { + __functor = _self: isAttrs; + isV2MergeCoherent = true; + }; + merge = { + __functor = + self: loc: defs: + (self.v2 { inherit loc defs; }).value; + v2 = + { loc, defs }: + let + evals = + if lazy then + zipAttrsWith (name: defs: mergeDefinitions (loc ++ [ name ]) elemType defs) (pushPositions defs) + else + # Filtering makes the merge function more strict + # Meaning it is less lazy + filterAttrs (n: v: v.optionalValue ? value) ( + zipAttrsWith (name: defs: mergeDefinitions (loc ++ [ name ]) elemType defs) (pushPositions defs) + ); + in + { + headError = checkDefsForError check loc defs; + value = mapAttrs ( + n: v: + if lazy then + v.optionalValue.value or elemType.emptyValue.value or v.mergedValue + else + v.optionalValue.value + ) evals; + valueMeta.attrs = mapAttrs (n: v: v.checkedAndMerged.valueMeta) evals; + }; + }; + + emptyValue = { + value = { }; + }; + getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "<${placeholder}>" ]); + getSubModules = elemType.getSubModules; + substSubModules = + m: + attrsWith { + elemType = elemType.substSubModules m; + inherit lazy placeholder; + }; + functor = + (elemTypeFunctor "attrsWith" { + inherit elemType lazy placeholder; + }) + // { + # Custom type merging required because of the "placeholder" attribute + inherit binOp; + }; + nestedTypes.elemType = elemType; + }; + + # TODO: deprecate this in the future: + loaOf = + elemType: + lib.types.attrsOf elemType + // { + name = "loaOf"; + deprecationMessage = + "Mixing lists with attribute values is no longer" + + " possible; please use `types.attrsOf` instead. See" + + " https://github.com/NixOS/nixpkgs/issues/1800 for the motivation."; + nestedTypes.elemType = elemType; + }; + + attrTag = + tags: + let + tags_ = tags; + in + let + tags = mapAttrs ( + n: opt: + builtins.addErrorContext + "while checking that attrTag tag ${lib.strings.escapeNixIdentifier n} is an option with a type${inAttrPosSuffix tags_ n}" + ( + throwIf (opt._type or null != "option") + "In attrTag, each tag value must be an option, but tag ${lib.strings.escapeNixIdentifier n} ${ + if opt ? _type then + if opt._type == "option-type" then + "was a bare type, not wrapped in mkOption." + else + "was of type ${lib.strings.escapeNixString opt._type}." + else + "was not." + }" + opt + // { + declarations = + opt.declarations or ( + let + pos = builtins.unsafeGetAttrPos n tags_; + in + if pos == null then [ ] else [ pos.file ] + ); + declarationPositions = + opt.declarationPositions or ( + let + pos = builtins.unsafeGetAttrPos n tags_; + in + if pos == null then [ ] else [ pos ] + ); + } + ) + ) tags_; + choicesStr = concatMapStringsSep ", " lib.strings.escapeNixIdentifier (attrNames tags); + in + mkOptionType { + name = "attrTag"; + description = "attribute-tagged union with choices: ${choicesStr}"; + descriptionClass = "noun"; + getSubOptions = + prefix: mapAttrs (tagName: tagOption: tagOption // { loc = prefix ++ [ tagName ]; }) tags; + check = v: isAttrs v && length (attrNames v) == 1 && tags ? ${head (attrNames v)}; + merge = + loc: defs: + let + choice = head (attrNames (head defs).value); + checkedValueDefs = map ( + def: + assert (length (attrNames def.value)) == 1; + if (head (attrNames def.value)) != choice then + throw "The option `${showOption loc}` is defined both as `${choice}` and `${head (attrNames def.value)}`, in ${showFiles (getFiles defs)}." + else + { + inherit (def) file; + value = def.value.${choice}; + } + ) defs; + in + if tags ? ${choice} then + { + ${choice} = (lib.modules.evalOptionValue (loc ++ [ choice ]) tags.${choice} checkedValueDefs).value; + } + else + throw "The option `${showOption loc}` is defined as ${lib.strings.escapeNixIdentifier choice}, but ${lib.strings.escapeNixIdentifier choice} is not among the valid choices (${choicesStr}). Value ${choice} was defined in ${showFiles (getFiles defs)}."; + nestedTypes = tags; + functor = defaultFunctor "attrTag" // { + type = { tags, ... }: lib.types.attrTag tags; + payload = { inherit tags; }; + binOp = + let + # Add metadata in the format that submodules work with + wrapOptionDecl = option: { + options = option; + _file = ""; + pos = null; + }; + in + a: b: { + tags = + a.tags + // b.tags + // mapAttrs ( + tagName: bOpt: + lib.mergeOptionDecls + # FIXME: loc is not accurate; should include prefix + # Fortunately, it's only used for error messages, where a "relative" location is kinda ok. + # It is also returned though, but use of the attribute seems rare? + [ tagName ] + [ + (wrapOptionDecl a.tags.${tagName}) + (wrapOptionDecl bOpt) + ] + // { + # mergeOptionDecls is not idempotent in these attrs: + declarations = a.tags.${tagName}.declarations ++ bOpt.declarations; + declarationPositions = a.tags.${tagName}.declarationPositions ++ bOpt.declarationPositions; + } + ) (builtins.intersectAttrs a.tags b.tags); + }; + }; + }; + + # 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 { + name = "unique"; + inherit (type) description descriptionClass check; + merge = mergeUniqueOption { + inherit message; + inherit (type) merge; + }; + emptyValue = type.emptyValue; + getSubOptions = type.getSubOptions; + getSubModules = type.getSubModules; + substSubModules = m: uniq (type.substSubModules m); + functor = elemTypeFunctor name { elemType = type; } // { + type = payload: lib.types.unique { inherit message; } payload.elemType; + }; + nestedTypes.elemType = type; + }; + + # Null or value of ... + nullOr = + elemType: + mkOptionType rec { + name = "nullOr"; + description = "null or ${ + optionDescriptionPhrase (class: class == "noun" || class == "conjunction") elemType + }"; + descriptionClass = "conjunction"; + check = x: x == null || elemType.check x; + merge = + loc: defs: + let + nrNulls = count (def: def.value == null) defs; + in + if nrNulls == length defs then + null + else if nrNulls != 0 then + throw "The option `${showOption loc}` is defined both null and not null, in ${showFiles (getFiles defs)}." + else + elemType.merge loc defs; + emptyValue = { + value = null; + }; + getSubOptions = elemType.getSubOptions; + getSubModules = elemType.getSubModules; + substSubModules = m: nullOr (elemType.substSubModules m); + functor = (elemTypeFunctor name { inherit elemType; }) // { + type = payload: lib.types.nullOr payload.elemType; + }; + nestedTypes.elemType = elemType; + }; + + functionTo = + elemType: + mkOptionType { + name = "functionTo"; + description = "function that evaluates to a(n) ${ + optionDescriptionPhrase (class: class == "noun" || class == "composite") elemType + }"; + descriptionClass = "composite"; + check = isFunction; + merge = loc: defs: { + # An argument attribute has a default when it has a default in all definitions + __functionArgs = lib.zipAttrsWith (_: lib.all (x: x)) ( + lib.map (fn: lib.functionArgs fn.value) defs + ); + __functor = + _: callerArgs: + (mergeDefinitions (loc ++ [ "" ]) elemType ( + map (fn: { + inherit (fn) file; + value = fn.value callerArgs; + }) defs + )).mergedValue; + }; + getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "" ]); + getSubModules = elemType.getSubModules; + substSubModules = m: functionTo (elemType.substSubModules m); + functor = (elemTypeFunctor "functionTo" { inherit elemType; }) // { + type = payload: lib.types.functionTo payload.elemType; + }; + nestedTypes.elemType = elemType; + }; + + # A submodule (like typed attribute set). See NixOS manual. + submodule = + modules: + submoduleWith { + shorthandOnlyDefinesConfig = true; + modules = toList modules; + }; + + # A module to be imported in some other part of the configuration. + deferredModule = deferredModuleWith { }; + + # A module to be imported in some other part of the configuration. + # `staticModules`' options will be added to the documentation, unlike + # options declared via `config`. + deferredModuleWith = + attrs@{ + staticModules ? [ ], + }: + mkOptionType { + name = "deferredModule"; + description = "module"; + descriptionClass = "noun"; + check = x: isAttrs x || isFunction x || path.check x; + merge = loc: defs: { + imports = + staticModules + ++ map ( + def: lib.setDefaultModuleLocation "${def.file}, via option ${showOption loc}" def.value + ) defs; + }; + inherit (submoduleWith { modules = staticModules; }) + getSubOptions + getSubModules + ; + substSubModules = + m: + deferredModuleWith ( + attrs + // { + staticModules = m; + } + ); + functor = defaultFunctor "deferredModuleWith" // { + type = lib.types.deferredModuleWith; + payload = { + inherit staticModules; + }; + binOp = lhs: rhs: { + staticModules = lhs.staticModules ++ rhs.staticModules; + }; + }; + }; + + # The type of a type! + optionType = mkOptionType { + name = "optionType"; + description = "optionType"; + descriptionClass = "noun"; + check = value: value._type or null == "option-type"; + merge = + loc: defs: + if length defs == 1 then + (head defs).value + else + let + # Prepares the type definitions for mergeOptionDecls, which + # annotates submodules types with file locations + optionModules = map ( + { value, file }: + { + _file = file; + # There's no way to merge types directly from the module system, + # but we can cheat a bit by just declaring an option with the type + options = lib.mkOption { + type = value; + }; + } + ) defs; + # Merges all the types into a single one, including submodule merging. + # This also propagates file information to all submodules + mergedOption = fixupOptionType loc (mergeOptionDecls loc optionModules); + in + mergedOption.type; + }; + + submoduleWith = + { + modules, + specialArgs ? { }, + shorthandOnlyDefinesConfig ? false, + description ? null, + class ? null, + }@attrs: + let + inherit (lib.modules) evalModules; + + allModules = + defs: + map ( + { value, file }: + if isAttrs value && shorthandOnlyDefinesConfig then + { + _file = file; + config = value; + } + else + { + _file = file; + imports = [ value ]; + } + ) defs; + + base = evalModules { + inherit class specialArgs; + modules = [ + { + # This is a work-around for the fact that some sub-modules, + # such as the one included in an attribute set, expects an "args" + # attribute to be given to the sub-module. As the option + # evaluation does not have any specific attribute name yet, we + # provide a default for the documentation and the freeform type. + # + # This is necessary as some option declaration might use the + # "name" attribute given as argument of the submodule and use it + # as the default of option declarations. + # + # We use lookalike unicode single angle quotation marks because + # of the docbook transformation the options receive. In all uses + # > and < wouldn't be encoded correctly so the encoded values + # would be used, and use of `<` and `>` would break the XML document. + # It shouldn't cause an issue since this is cosmetic for the manual. + _module.args.name = lib.mkOptionDefault "‹name›"; + } + ] + ++ modules; + }; + + freeformType = base._module.freeformType; + + name = "submodule"; + + check = { + __functor = _self: x: isAttrs x || isFunction x || path.check x; + isV2MergeCoherent = true; + }; + in + mkOptionType { + inherit name; + description = + if description != null then + description + else + let + docsEval = base.extendModules { modules = [ noCheckForDocsModule ]; }; + in + if docsEval._module.freeformType ? description then + "open ${name} of ${ + optionDescriptionPhrase ( + class: class == "noun" || class == "composite" + ) docsEval._module.freeformType + }" + else + name; + inherit check; + merge = { + __functor = + self: loc: defs: + (self.v2 { inherit loc defs; }).value; + v2 = + { loc, defs }: + let + configuration = base.extendModules { + modules = [ { _module.args.name = last loc; } ] ++ allModules defs; + prefix = loc; + }; + in + { + headError = checkDefsForError check loc defs; + value = configuration.config; + valueMeta = { inherit configuration; }; + }; + }; + emptyValue = { + value = { }; + }; + getSubOptions = + prefix: + let + docsEval = ( + base.extendModules { + inherit prefix; + modules = [ noCheckForDocsModule ]; + } + ); + # Intentionally shadow the freeformType from the possibly *checked* + # configuration. See `noCheckForDocsModule` comment. + inherit (docsEval._module) freeformType; + in + docsEval.options + // optionalAttrs (freeformType != null) { + # Expose the sub options of the freeform type. Note that the option + # discovery doesn't care about the attribute name used here, so this + # is just to avoid conflicts with potential options from the submodule + _freeformOptions = freeformType.getSubOptions prefix; + }; + getSubModules = modules; + substSubModules = + m: + submoduleWith ( + attrs + // { + modules = m; + } + ); + nestedTypes = lib.optionalAttrs (freeformType != null) { + freeformType = freeformType; + }; + functor = defaultFunctor name // { + type = lib.types.submoduleWith; + payload = { + inherit + modules + class + specialArgs + shorthandOnlyDefinesConfig + description + ; + }; + binOp = lhs: rhs: { + class = + # `or null` was added for backwards compatibility only. `class` is + # always set in the current version of the module system. + if lhs.class or null == null then + rhs.class or null + else if rhs.class or null == null then + lhs.class or null + else if lhs.class or null == rhs.class then + lhs.class or null + else + throw "A submoduleWith option is declared multiple times with conflicting class values \"${toString lhs.class}\" and \"${toString rhs.class}\"."; + modules = lhs.modules ++ rhs.modules; + specialArgs = + let + intersecting = builtins.intersectAttrs lhs.specialArgs rhs.specialArgs; + in + if intersecting == { } then + lhs.specialArgs // rhs.specialArgs + else + throw "A submoduleWith option is declared multiple times with the same specialArgs \"${toString (attrNames intersecting)}\""; + shorthandOnlyDefinesConfig = + if lhs.shorthandOnlyDefinesConfig == null then + rhs.shorthandOnlyDefinesConfig + else if rhs.shorthandOnlyDefinesConfig == null then + lhs.shorthandOnlyDefinesConfig + else if lhs.shorthandOnlyDefinesConfig == rhs.shorthandOnlyDefinesConfig then + lhs.shorthandOnlyDefinesConfig + else + throw "A submoduleWith option is declared multiple times with conflicting shorthandOnlyDefinesConfig values"; + description = + if lhs.description == null then + rhs.description + else if rhs.description == null then + lhs.description + else if lhs.description == rhs.description then + lhs.description + else + throw "A submoduleWith option is declared multiple times with conflicting descriptions"; + }; + }; + }; + + # A value from a set of allowed ones. + enum = + values: + let + inherit (lib.lists) unique; + show = + v: + if builtins.isString v then + ''"${v}"'' + else if builtins.isInt v then + toString v + else if builtins.isBool v then + boolToString v + else + ''<${builtins.typeOf v}>''; + in + mkOptionType rec { + name = "enum"; + description = + # Length 0 or 1 enums may occur in a design pattern with type merging + # where an "interface" module declares an empty enum and other modules + # provide implementations, each extending the enum with their own + # identifier. + if values == [ ] then + "impossible (empty enum)" + else if builtins.length values == 1 then + "value ${show (builtins.head values)} (singular enum)" + else + "one of ${concatMapStringsSep ", " show values}"; + descriptionClass = if builtins.length values < 2 then "noun" else "conjunction"; + check = flip elem values; + merge = mergeEqualOption; + functor = (defaultFunctor name) // { + payload = { inherit values; }; + type = payload: lib.types.enum payload.values; + binOp = a: b: { values = unique (a.values ++ b.values); }; + }; + }; + + # Either value of type `t1` or `t2`. + either = + t1: t2: + mkOptionType rec { + name = "either"; + description = + if t1.descriptionClass or null == "nonRestrictiveClause" then + # Plain, but add comma + "${t1.description}, or ${ + optionDescriptionPhrase (class: class == "noun" || class == "conjunction") t2 + }" + else + "${optionDescriptionPhrase (class: class == "noun" || class == "conjunction") t1} or ${ + optionDescriptionPhrase ( + class: class == "noun" || class == "conjunction" || class == "composite" + ) t2 + }"; + descriptionClass = "conjunction"; + check = { + __functor = _self: x: t1.check x || t2.check x; + isV2MergeCoherent = true; + }; + merge = { + __functor = + self: loc: defs: + (self.v2 { inherit loc defs; }).value; + v2 = + { loc, defs }: + let + t1CheckedAndMerged = + if t1.merge ? v2 then + checkV2MergeCoherence loc t1 (t1.merge.v2 { inherit loc defs; }) + else + { + value = t1.merge loc defs; + headError = checkDefsForError t1.check loc defs; + valueMeta = { }; + }; + t2CheckedAndMerged = + if t2.merge ? v2 then + checkV2MergeCoherence loc t2 (t2.merge.v2 { inherit loc defs; }) + else + { + value = t2.merge loc defs; + headError = checkDefsForError t2.check loc defs; + valueMeta = { }; + }; + + checkedAndMerged = + if t1CheckedAndMerged.headError == null then + t1CheckedAndMerged + else if t2CheckedAndMerged.headError == null then + t2CheckedAndMerged + else + rec { + valueMeta = { + inherit headError; + }; + headError = { + message = "The option `${showOption loc}` is neither a value of type `${t1.description}` nor `${t2.description}`, Definition values: ${showDefs defs}"; + }; + value = lib.warn '' + One or more definitions did not pass the type-check of the 'either' type. + ${headError.message} + If `either`, `oneOf` or similar is used in freeformType, ensure that it is preceded by an 'attrsOf' such as: `freeformType = types.attrsOf (types.either t1 t2)`. + Otherwise consider using the correct type for the option `${showOption loc}`. This will be an error in Nixpkgs 26.05. + '' (mergeOneOption loc defs); + }; + in + checkedAndMerged; + }; + typeMerge = + f': + let + mt1 = t1.typeMerge (elemAt f'.payload.elemType 0).functor; + mt2 = t2.typeMerge (elemAt f'.payload.elemType 1).functor; + in + if (name == f'.name) && (mt1 != null) && (mt2 != null) then functor.type mt1 mt2 else null; + functor = elemTypeFunctor name { + elemType = [ + t1 + t2 + ]; + }; + nestedTypes.left = t1; + nestedTypes.right = t2; + }; + + # Any of the types in the given list + oneOf = + ts: + let + head' = + if ts == [ ] then throw "types.oneOf needs to get at least one type in its argument" else head ts; + tail' = tail ts; + in + foldl' either head' tail'; + + # Either value of type `coercedType` or `finalType`, the former is + # converted to `finalType` using `coerceFunc`. + coercedTo = + coercedType: coerceFunc: finalType: + assert lib.assertMsg ( + coercedType.getSubModules == null + ) "coercedTo: coercedType must not have submodules (it’s a ${coercedType.description})"; + mkOptionType rec { + name = "coercedTo"; + description = "${optionDescriptionPhrase (class: class == "noun") finalType} or ${ + optionDescriptionPhrase (class: class == "noun") coercedType + } convertible to it"; + check = { + __functor = _self: x: (coercedType.check x && finalType.check (coerceFunc x)) || finalType.check x; + isV2MergeCoherent = true; + }; + merge = { + __functor = + self: loc: defs: + (self.v2 { inherit loc defs; }).value; + v2 = + { loc, defs }: + let + finalDefs = ( + map ( + def: + def + // { + value = + let + merged = + if coercedType.merge ? v2 then + checkV2MergeCoherence loc coercedType ( + coercedType.merge.v2 { + inherit loc; + defs = [ def ]; + } + ) + else + null; + in + if coercedType.merge ? v2 then + if merged.headError == null then coerceFunc def.value else def.value + else if coercedType.check def.value then + coerceFunc def.value + else + def.value; + } + ) defs + ); + in + if finalType.merge ? v2 then + checkV2MergeCoherence loc finalType ( + finalType.merge.v2 { + inherit loc; + defs = finalDefs; + } + ) + else + { + value = finalType.merge loc finalDefs; + valueMeta = { }; + headError = checkDefsForError check loc defs; + }; + }; + emptyValue = finalType.emptyValue; + getSubOptions = finalType.getSubOptions; + getSubModules = finalType.getSubModules; + substSubModules = m: coercedTo coercedType coerceFunc (finalType.substSubModules m); + typeMerge = t: null; + functor = (defaultFunctor name) // { + wrappedDeprecationMessage = makeWrappedDeprecationMessage { elemType = finalType; }; + }; + nestedTypes.coercedType = coercedType; + nestedTypes.finalType = finalType; + }; + + /** + Augment the given type with an additional type check function. + + :::{.warning} + This function has some broken behavior see: [#396021](https://github.com/NixOS/nixpkgs/issues/396021) + Fixing is not trivial, we appreciate any help! + ::: + */ + addCheck = + elemType: check: + if elemType.merge ? v2 then + elemType + // { + check = { + __functor = _self: x: elemType.check x && check x; + isV2MergeCoherent = true; + }; + merge = { + __functor = + self: loc: defs: + (self.v2 { inherit loc defs; }).value; + v2 = + { loc, defs }: + let + orig = checkV2MergeCoherence loc elemType (elemType.merge.v2 { inherit loc defs; }); + headError' = if orig.headError != null then orig.headError else checkDefsForError check loc defs; + in + orig + // { + headError = headError'; + }; + }; + } + else + elemType + // { + check = x: elemType.check x && check x; + }; + + /** + Merges two option types together. + + :::{.note} + Uses the type merge function of the first type, to merge it with the second type. + + Usually types can only be merged if they are of the same type + ::: + + # Inputs + + : `a` (option type): The first option type. + : `b` (option type): The second option type. + + # Returns + + - The merged option type. + - `{ _type = "merge-error"; error = "Cannot merge types"; }` if the types can't be merged. + + # Examples + :::{.example} + ## `lib.types.mergeTypes` usage example + ```nix + let + enumAB = lib.types.enum ["A" "B"]; + enumXY = lib.types.enum ["X" "Y"]; + # This operation could be notated as: [ A ] | [ B ] -> [ A B ] + merged = lib.types.mergeTypes enumAB enumXY; # -> enum [ "A" "B" "X" "Y" ] + in + assert merged.check "A"; # true + assert merged.check "B"; # true + assert merged.check "X"; # true + assert merged.check "Y"; # true + merged.check "C" # false + ``` + ::: + */ + mergeTypes = + a: b: + assert isOptionType a && isOptionType b; + let + merged = a.typeMerge b.functor; + in + if merged == null then setType "merge-error" { error = "Cannot merge types"; } else merged; + + # TODO: Migrate usage of lib.types.types in nixpkgs + # Then add a deprecation warning + types = lib.types; +} diff --git a/maintainers/github-teams.json b/maintainers/github-teams.json index 3541414c72ab..2b3adafe59c7 100644 --- a/maintainers/github-teams.json +++ b/maintainers/github-teams.json @@ -422,10 +422,10 @@ "maintainers": { "Mic92": 96200, "kalbasit": 87115, + "katexochen": 49727155, "zowoq": 59103226 }, "members": { - "katexochen": 49727155, "mfrw": 4929861, "qbit": 68368 }, @@ -730,7 +730,9 @@ "philiptaron": 43863, "zowoq": 59103226 }, - "members": {}, + "members": { + "mdaniels5757": 8762511 + }, "name": "Nixpkgs CI" }, "nixpkgs-core": { diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 2484f0dc7bce..413061ab2dfa 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -8623,6 +8623,13 @@ githubId = 52276064; name = "figboy9"; }; + figsoda = { + email = "figsoda@pm.me"; + matrix = "@figsoda:matrix.org"; + github = "figsoda"; + githubId = 40620903; + name = "figsoda"; + }; fionera = { email = "nix@fionera.de"; github = "fionera"; @@ -19099,12 +19106,6 @@ github = "0xnook"; githubId = 88323754; }; - noreferences = { - email = "norkus@norkus.net"; - github = "jozuas"; - githubId = 13085275; - name = "Juozas Norkus"; - }; norfair = { email = "syd@cs-syd.eu"; github = "NorfairKing"; diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index fa13d6c7c4f6..d29cb9aa49dc 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -34,6 +34,8 @@ - [Ente Auth](https://ente.io/auth/), an open source 2FA authenticator, with end-to-end encrypted backups. Available as [programs.ente-auth](#opt-programs.ente-auth.enable). +- [Dawarich](https://dawarich.app/), a self-hostable location history tracker. Available as [services.dawarich](#opt-services.dawarich.enable). + - [udp-over-tcp](https://github.com/mullvad/udp-over-tcp), a tunnel for proxying UDP traffic over a TCP stream. Available as `services.udp-over-tcp`. - [Komodo Periphery](https://github.com/moghtech/komodo), a multi-server Docker and Git deployment agent by Komodo. Available as [services.komodo-periphery](#opt-services.komodo-periphery.enable). diff --git a/nixos/modules/hardware/tuxedo-drivers.nix b/nixos/modules/hardware/tuxedo-drivers.nix index f53e1297f137..07b9f2b7e6d5 100644 --- a/nixos/modules/hardware/tuxedo-drivers.nix +++ b/nixos/modules/hardware/tuxedo-drivers.nix @@ -94,16 +94,16 @@ in boot.extraModulePackages = [ tuxedo-drivers ]; services.udev.packages = [ tuxedo-drivers - lib.mkIf - (lib.any (v: v != null) cfg.settings) - (pkgs.writeTextDir "etc/udev/rules.d/90-tuxedo.rules" ( + ] + ++ lib.optional (lib.any (v: v != null) (lib.attrValues cfg.settings)) ( + pkgs.writeTextDir "etc/udev/rules.d/90-tuxedo.rules" ( lib.concatLines ( [ "# Custom rules for TUXEDO laptops" ] ++ (optUdevRule "charging_profile/charging_profile" cfg.settings.charging-profile) ++ (optUdevRule "charging_priority/charging_prio" cfg.settings.charging-priority) ++ (optUdevRule "fn_lock" cfg.settings.fn-lock) ) - )) - ]; + ) + ); }; } diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index dc8c2560c94a..bec540d6f504 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1597,6 +1597,7 @@ ./services/web-apps/cryptpad.nix ./services/web-apps/dashy.nix ./services/web-apps/davis.nix + ./services/web-apps/dawarich.nix ./services/web-apps/dependency-track.nix ./services/web-apps/dex.nix ./services/web-apps/discourse.nix diff --git a/nixos/modules/security/soteria.nix b/nixos/modules/security/soteria.nix index 3b2f8349c4e5..1e2b59e5714d 100644 --- a/nixos/modules/security/soteria.nix +++ b/nixos/modules/security/soteria.nix @@ -36,8 +36,8 @@ in wants = [ "graphical-session.target" ]; after = [ "graphical-session.target" ]; - script = lib.getExe cfg.package; serviceConfig = { + ExecStart = lib.getExe cfg.package; Type = "simple"; Restart = "on-failure"; RestartSec = 1; diff --git a/nixos/modules/services/blockchain/ethereum/geth.nix b/nixos/modules/services/blockchain/ethereum/geth.nix index 570c556ef849..f58ca9d9819a 100644 --- a/nixos/modules/services/blockchain/ethereum/geth.nix +++ b/nixos/modules/services/blockchain/ethereum/geth.nix @@ -206,6 +206,43 @@ in after = [ "network.target" ]; serviceConfig = { + ExecStart = + let + args = lib.cli.toCommandLineShellGNU { } { + inherit (cfg) + syncmode + gcmode + port + maxpeers + ; + nousb = true; + ipcdisable = true; + datadir = dataDir; + ${cfg.network} = true; + + http = cfg.http.enable; + "http.addr" = if cfg.http.enable then cfg.http.address else null; + "http.port" = if cfg.http.enable then cfg.http.port else null; + "http.api" = if cfg.http.apis != null then lib.concatStringsSep "," cfg.http.apis else null; + + ws = cfg.websocket.enable; + "ws.addr" = if cfg.websocket.enable then cfg.websocket.address else null; + "ws.port" = if cfg.websocket.enable then cfg.websocket.port else null; + "ws.api" = if cfg.websocket.apis != null then lib.concatStringsSep "," cfg.websocket.apis else null; + + metrics = cfg.metrics.enable; + "metrics.addr" = if cfg.metrics.enable then cfg.metrics.address else null; + "metrics.port" = if cfg.metrics.enable then cfg.metrics.port else null; + + "authrpc.addr" = cfg.authrpc.address; + "authrpc.port" = cfg.authrpc.port; + "authrpc.vhosts" = lib.concatStringsSep "," cfg.authrpc.vhosts; + "authrpc.jwtsecret" = + if cfg.authrpc.jwtsecret != "" then cfg.authrpc.jwtsecret else "${dataDir}/geth/jwtsecret"; + }; + in + "${lib.getExe cfg.package} ${args} ${lib.escapeShellArgs cfg.extraArgs}"; + DynamicUser = true; Restart = "always"; StateDirectory = stateDir; @@ -217,37 +254,6 @@ in PrivateDevices = "true"; MemoryDenyWriteExecute = "true"; }; - - script = '' - ${cfg.package}/bin/geth \ - --nousb \ - --ipcdisable \ - ${lib.optionalString (cfg.network != null) ''--${cfg.network}''} \ - --syncmode ${cfg.syncmode} \ - --gcmode ${cfg.gcmode} \ - --port ${toString cfg.port} \ - --maxpeers ${toString cfg.maxpeers} \ - ${lib.optionalString cfg.http.enable ''--http --http.addr ${cfg.http.address} --http.port ${toString cfg.http.port}''} \ - ${ - lib.optionalString (cfg.http.apis != null) ''--http.api ${lib.concatStringsSep "," cfg.http.apis}'' - } \ - ${lib.optionalString cfg.websocket.enable ''--ws --ws.addr ${cfg.websocket.address} --ws.port ${toString cfg.websocket.port}''} \ - ${ - lib.optionalString ( - cfg.websocket.apis != null - ) ''--ws.api ${lib.concatStringsSep "," cfg.websocket.apis}'' - } \ - ${lib.optionalString cfg.metrics.enable ''--metrics --metrics.addr ${cfg.metrics.address} --metrics.port ${toString cfg.metrics.port}''} \ - --authrpc.addr ${cfg.authrpc.address} --authrpc.port ${toString cfg.authrpc.port} --authrpc.vhosts ${lib.concatStringsSep "," cfg.authrpc.vhosts} \ - ${ - if (cfg.authrpc.jwtsecret != "") then - ''--authrpc.jwtsecret ${cfg.authrpc.jwtsecret}'' - else - ''--authrpc.jwtsecret ${dataDir}/geth/jwtsecret'' - } \ - ${lib.escapeShellArgs cfg.extraArgs} \ - --datadir ${dataDir} - ''; } )) ) eachGeth; diff --git a/nixos/modules/services/cluster/kubernetes/apiserver.nix b/nixos/modules/services/cluster/kubernetes/apiserver.nix index 3ab4dbeafdf5..fc98a4867494 100644 --- a/nixos/modules/services/cluster/kubernetes/apiserver.nix +++ b/nixos/modules/services/cluster/kubernetes/apiserver.nix @@ -49,312 +49,327 @@ in ]; ###### interface - options.services.kubernetes.apiserver = with lib.types; { + options.services.kubernetes.apiserver = + let + inherit (lib.types) + nullOr + str + bool + listOf + enum + attrs + path + separatedString + attrsOf + int + ; + in + { - advertiseAddress = lib.mkOption { - description = '' - Kubernetes apiserver IP address on which to advertise the apiserver - to members of the cluster. This address must be reachable by the rest - of the cluster. - ''; - default = null; - type = nullOr str; - }; - - allowPrivileged = lib.mkOption { - description = "Whether to allow privileged containers on Kubernetes."; - default = false; - type = bool; - }; - - authorizationMode = lib.mkOption { - description = '' - Kubernetes apiserver authorization mode (AlwaysAllow/AlwaysDeny/ABAC/Webhook/RBAC/Node). See - - ''; - default = [ - "RBAC" - "Node" - ]; # Enabling RBAC by default, although kubernetes default is AllowAllow - type = listOf (enum [ - "AlwaysAllow" - "AlwaysDeny" - "ABAC" - "Webhook" - "RBAC" - "Node" - ]); - }; - - authorizationPolicy = lib.mkOption { - description = '' - Kubernetes apiserver authorization policy file. See - - ''; - default = [ ]; - type = listOf attrs; - }; - - basicAuthFile = lib.mkOption { - description = '' - Kubernetes apiserver basic authentication file. See - - ''; - default = null; - type = nullOr path; - }; - - bindAddress = lib.mkOption { - description = '' - The IP address on which to listen for the --secure-port port. - The associated interface(s) must be reachable by the rest - of the cluster, and by CLI/web clients. - ''; - default = "0.0.0.0"; - type = str; - }; - - clientCaFile = lib.mkOption { - description = "Kubernetes apiserver CA file for client auth."; - default = top.caFile; - defaultText = lib.literalExpression "config.${otop.caFile}"; - type = nullOr path; - }; - - disableAdmissionPlugins = lib.mkOption { - description = '' - Kubernetes admission control plugins to disable. See - - ''; - default = [ ]; - type = listOf str; - }; - - enable = lib.mkEnableOption "Kubernetes apiserver"; - - enableAdmissionPlugins = lib.mkOption { - description = '' - Kubernetes admission control plugins to enable. See - - ''; - default = [ - "NamespaceLifecycle" - "LimitRanger" - "ServiceAccount" - "ResourceQuota" - "DefaultStorageClass" - "DefaultTolerationSeconds" - "NodeRestriction" - ]; - example = [ - "NamespaceLifecycle" - "NamespaceExists" - "LimitRanger" - "SecurityContextDeny" - "ServiceAccount" - "ResourceQuota" - "PodSecurityPolicy" - "NodeRestriction" - "DefaultStorageClass" - ]; - type = listOf str; - }; - - etcd = { - servers = lib.mkOption { - description = "List of etcd servers."; - default = [ "http://127.0.0.1:2379" ]; - type = types.listOf types.str; - }; - - keyFile = lib.mkOption { - description = "Etcd key file."; + advertiseAddress = lib.mkOption { + description = '' + Kubernetes apiserver IP address on which to advertise the apiserver + to members of the cluster. This address must be reachable by the rest + of the cluster. + ''; default = null; - type = types.nullOr types.path; + type = nullOr str; }; - certFile = lib.mkOption { - description = "Etcd cert file."; + allowPrivileged = lib.mkOption { + description = "Whether to allow privileged containers on Kubernetes."; + default = false; + type = bool; + }; + + authorizationMode = lib.mkOption { + description = '' + Kubernetes apiserver authorization mode (AlwaysAllow/AlwaysDeny/ABAC/Webhook/RBAC/Node). See + + ''; + default = [ + "RBAC" + "Node" + ]; # Enabling RBAC by default, although kubernetes default is AllowAllow + type = listOf (enum [ + "AlwaysAllow" + "AlwaysDeny" + "ABAC" + "Webhook" + "RBAC" + "Node" + ]); + }; + + authorizationPolicy = lib.mkOption { + description = '' + Kubernetes apiserver authorization policy file. See + + ''; + default = [ ]; + type = listOf attrs; + }; + + basicAuthFile = lib.mkOption { + description = '' + Kubernetes apiserver basic authentication file. See + + ''; default = null; - type = types.nullOr types.path; + type = nullOr path; }; - caFile = lib.mkOption { - description = "Etcd ca file."; + bindAddress = lib.mkOption { + description = '' + The IP address on which to listen for the --secure-port port. + The associated interface(s) must be reachable by the rest + of the cluster, and by CLI/web clients. + ''; + default = "0.0.0.0"; + type = str; + }; + + clientCaFile = lib.mkOption { + description = "Kubernetes apiserver CA file for client auth."; default = top.caFile; defaultText = lib.literalExpression "config.${otop.caFile}"; - type = types.nullOr types.path; + type = nullOr path; }; - }; - extraOpts = lib.mkOption { - description = "Kubernetes apiserver extra command line options."; - default = ""; - type = separatedString " "; - }; + disableAdmissionPlugins = lib.mkOption { + description = '' + Kubernetes admission control plugins to disable. See + + ''; + default = [ ]; + type = listOf str; + }; - extraSANs = lib.mkOption { - description = "Extra x509 Subject Alternative Names to be added to the kubernetes apiserver tls cert."; - default = [ ]; - type = listOf str; - }; + enable = lib.mkEnableOption "Kubernetes apiserver"; - featureGates = lib.mkOption { - description = "Attribute set of feature gates."; - default = top.featureGates; - defaultText = lib.literalExpression "config.${otop.featureGates}"; - type = attrsOf bool; - }; + enableAdmissionPlugins = lib.mkOption { + description = '' + Kubernetes admission control plugins to enable. See + + ''; + default = [ + "NamespaceLifecycle" + "LimitRanger" + "ServiceAccount" + "ResourceQuota" + "DefaultStorageClass" + "DefaultTolerationSeconds" + "NodeRestriction" + ]; + example = [ + "NamespaceLifecycle" + "NamespaceExists" + "LimitRanger" + "SecurityContextDeny" + "ServiceAccount" + "ResourceQuota" + "PodSecurityPolicy" + "NodeRestriction" + "DefaultStorageClass" + ]; + type = listOf str; + }; - kubeletClientCaFile = lib.mkOption { - description = "Path to a cert file for connecting to kubelet."; - default = top.caFile; - defaultText = lib.literalExpression "config.${otop.caFile}"; - type = nullOr path; - }; + etcd = { + servers = lib.mkOption { + description = "List of etcd servers."; + default = [ "http://127.0.0.1:2379" ]; + type = listOf str; + }; - kubeletClientCertFile = lib.mkOption { - description = "Client certificate to use for connections to kubelet."; - default = null; - type = nullOr path; - }; + keyFile = lib.mkOption { + description = "Etcd key file."; + default = null; + type = nullOr path; + }; - kubeletClientKeyFile = lib.mkOption { - description = "Key to use for connections to kubelet."; - default = null; - type = nullOr path; - }; + certFile = lib.mkOption { + description = "Etcd cert file."; + default = null; + type = nullOr path; + }; - preferredAddressTypes = lib.mkOption { - description = "List of the preferred NodeAddressTypes to use for kubelet connections."; - type = nullOr str; - default = null; - }; + caFile = lib.mkOption { + description = "Etcd ca file."; + default = top.caFile; + defaultText = lib.literalExpression "config.${otop.caFile}"; + type = nullOr path; + }; + }; - proxyClientCertFile = lib.mkOption { - description = "Client certificate to use for connections to proxy."; - default = null; - type = nullOr path; - }; + extraOpts = lib.mkOption { + description = "Kubernetes apiserver extra command line options."; + default = ""; + type = separatedString " "; + }; - proxyClientKeyFile = lib.mkOption { - description = "Key to use for connections to proxy."; - default = null; - type = nullOr path; - }; + extraSANs = lib.mkOption { + description = "Extra x509 Subject Alternative Names to be added to the kubernetes apiserver tls cert."; + default = [ ]; + type = listOf str; + }; - runtimeConfig = lib.mkOption { - description = '' - Api runtime configuration. See - - ''; - default = "authentication.k8s.io/v1beta1=true"; - example = "api/all=false,api/v1=true"; - type = str; - }; + featureGates = lib.mkOption { + description = "Attribute set of feature gates."; + default = top.featureGates; + defaultText = lib.literalExpression "config.${otop.featureGates}"; + type = attrsOf bool; + }; - storageBackend = lib.mkOption { - description = '' - Kubernetes apiserver storage backend. - ''; - default = "etcd3"; - type = enum [ - "etcd2" - "etcd3" - ]; - }; + kubeletClientCaFile = lib.mkOption { + description = "Path to a cert file for connecting to kubelet."; + default = top.caFile; + defaultText = lib.literalExpression "config.${otop.caFile}"; + type = nullOr path; + }; - securePort = lib.mkOption { - description = "Kubernetes apiserver secure port."; - default = 6443; - type = int; - }; + kubeletClientCertFile = lib.mkOption { + description = "Client certificate to use for connections to kubelet."; + default = null; + type = nullOr path; + }; - apiAudiences = lib.mkOption { - description = '' - Kubernetes apiserver ServiceAccount issuer. - ''; - default = "api,https://kubernetes.default.svc"; - type = str; - }; + kubeletClientKeyFile = lib.mkOption { + description = "Key to use for connections to kubelet."; + default = null; + type = nullOr path; + }; - serviceAccountIssuer = lib.mkOption { - description = '' - Kubernetes apiserver ServiceAccount issuer. - ''; - default = "https://kubernetes.default.svc"; - type = str; - }; + preferredAddressTypes = lib.mkOption { + description = "List of the preferred NodeAddressTypes to use for kubelet connections."; + type = nullOr str; + default = null; + }; - serviceAccountSigningKeyFile = lib.mkOption { - description = '' - Path to the file that contains the current private key of the service - account token issuer. The issuer will sign issued ID tokens with this - private key. - ''; - type = path; - }; + proxyClientCertFile = lib.mkOption { + description = "Client certificate to use for connections to proxy."; + default = null; + type = nullOr path; + }; - serviceAccountKeyFile = lib.mkOption { - description = '' - File containing PEM-encoded x509 RSA or ECDSA private or public keys, - used to verify ServiceAccount tokens. The specified file can contain - multiple keys, and the flag can be specified multiple times with - different files. If unspecified, --tls-private-key-file is used. - Must be specified when --service-account-signing-key is provided - ''; - type = path; - }; + proxyClientKeyFile = lib.mkOption { + description = "Key to use for connections to proxy."; + default = null; + type = nullOr path; + }; - serviceClusterIpRange = lib.mkOption { - description = '' - A CIDR notation IP range from which to assign service cluster IPs. - This must not overlap with any IP ranges assigned to nodes for pods. - ''; - default = "10.0.0.0/24"; - type = str; - }; + runtimeConfig = lib.mkOption { + description = '' + Api runtime configuration. See + + ''; + default = "authentication.k8s.io/v1beta1=true"; + example = "api/all=false,api/v1=true"; + type = str; + }; - tlsCertFile = lib.mkOption { - description = "Kubernetes apiserver certificate file."; - default = null; - type = nullOr path; - }; + storageBackend = lib.mkOption { + description = '' + Kubernetes apiserver storage backend. + ''; + default = "etcd3"; + type = enum [ + "etcd2" + "etcd3" + ]; + }; - tlsKeyFile = lib.mkOption { - description = "Kubernetes apiserver private key file."; - default = null; - type = nullOr path; - }; + securePort = lib.mkOption { + description = "Kubernetes apiserver secure port."; + default = 6443; + type = int; + }; - tokenAuthFile = lib.mkOption { - description = '' - Kubernetes apiserver token authentication file. See - - ''; - default = null; - type = nullOr path; - }; + apiAudiences = lib.mkOption { + description = '' + Kubernetes apiserver ServiceAccount issuer. + ''; + default = "api,https://kubernetes.default.svc"; + type = str; + }; - verbosity = lib.mkOption { - description = '' - Optional glog verbosity level for logging statements. See - - ''; - default = null; - type = nullOr int; - }; + serviceAccountIssuer = lib.mkOption { + description = '' + Kubernetes apiserver ServiceAccount issuer. + ''; + default = "https://kubernetes.default.svc"; + type = str; + }; - webhookConfig = lib.mkOption { - description = '' - Kubernetes apiserver Webhook config file. It uses the kubeconfig file format. - See - ''; - default = null; - type = nullOr path; - }; + serviceAccountSigningKeyFile = lib.mkOption { + description = '' + Path to the file that contains the current private key of the service + account token issuer. The issuer will sign issued ID tokens with this + private key. + ''; + type = path; + }; - }; + serviceAccountKeyFile = lib.mkOption { + description = '' + File containing PEM-encoded x509 RSA or ECDSA private or public keys, + used to verify ServiceAccount tokens. The specified file can contain + multiple keys, and the flag can be specified multiple times with + different files. If unspecified, --tls-private-key-file is used. + Must be specified when --service-account-signing-key is provided + ''; + type = path; + }; + + serviceClusterIpRange = lib.mkOption { + description = '' + A CIDR notation IP range from which to assign service cluster IPs. + This must not overlap with any IP ranges assigned to nodes for pods. + ''; + default = "10.0.0.0/24"; + type = str; + }; + + tlsCertFile = lib.mkOption { + description = "Kubernetes apiserver certificate file."; + default = null; + type = nullOr path; + }; + + tlsKeyFile = lib.mkOption { + description = "Kubernetes apiserver private key file."; + default = null; + type = nullOr path; + }; + + tokenAuthFile = lib.mkOption { + description = '' + Kubernetes apiserver token authentication file. See + + ''; + default = null; + type = nullOr path; + }; + + verbosity = lib.mkOption { + description = '' + Optional glog verbosity level for logging statements. See + + ''; + default = null; + type = nullOr int; + }; + + webhookConfig = lib.mkOption { + description = '' + Kubernetes apiserver Webhook config file. It uses the kubeconfig file format. + See + ''; + default = null; + type = nullOr path; + }; + + }; ###### implementation config = lib.mkMerge [ diff --git a/nixos/modules/services/computing/boinc/client.nix b/nixos/modules/services/computing/boinc/client.nix index 8467e4b297c1..a0d244337be8 100644 --- a/nixos/modules/services/computing/boinc/client.nix +++ b/nixos/modules/services/computing/boinc/client.nix @@ -99,10 +99,8 @@ in description = "BOINC Client"; after = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; - script = '' - exec ${fhsEnvExecutable} --dir ${cfg.dataDir} ${allowRemoteGuiRpcFlag} - ''; serviceConfig = { + ExecStart = "${fhsEnvExecutable} --dir ${cfg.dataDir} ${allowRemoteGuiRpcFlag}"; User = "boinc"; Nice = 10; }; diff --git a/nixos/modules/services/hardware/libinput.nix b/nixos/modules/services/hardware/libinput.nix index 1cae86827d73..7cfce7651b54 100644 --- a/nixos/modules/services/hardware/libinput.nix +++ b/nixos/modules/services/hardware/libinput.nix @@ -431,39 +431,42 @@ in }; }; - config = lib.mkIf cfg.enable { + config = lib.mkMerge [ + (lib.mkIf cfg.enable { + services.udev.packages = [ pkgs.libinput.out ]; + }) - services.xserver.modules = [ pkgs.xorg.xf86inputlibinput ]; + (lib.mkIf (cfg.enable && config.services.xserver.enable) { + services.xserver.modules = [ pkgs.xorg.xf86inputlibinput ]; - environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ]; + # for man pages + environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ]; - environment.etc = - let - cfgPath = "X11/xorg.conf.d/40-libinput.conf"; - in - { - ${cfgPath} = { - source = pkgs.xorg.xf86inputlibinput.out + "/share/" + cfgPath; - }; - }; - - services.udev.packages = [ pkgs.libinput.out ]; - - services.xserver.inputClassSections = [ - (mkX11ConfigForDevice "mouse" "Pointer") - (mkX11ConfigForDevice "touchpad" "Touchpad") - ]; - - assertions = [ - # already present in synaptics.nix - /* + environment.etc = + let + cfgPath = "X11/xorg.conf.d/40-libinput.conf"; + in { - assertion = !config.services.xserver.synaptics.enable; - message = "Synaptics and libinput are incompatible, you cannot enable both (in services.xserver)."; - } - */ - ]; + ${cfgPath} = { + source = pkgs.xorg.xf86inputlibinput.out + "/share/" + cfgPath; + }; + }; - }; + services.xserver.inputClassSections = [ + (mkX11ConfigForDevice "mouse" "Pointer") + (mkX11ConfigForDevice "touchpad" "Touchpad") + ]; + + assertions = [ + # already present in synaptics.nix + /* + { + assertion = !config.services.xserver.synaptics.enable; + message = "Synaptics and libinput are incompatible, you cannot enable both (in services.xserver)."; + } + */ + ]; + }) + ]; } diff --git a/nixos/modules/services/hardware/pommed.nix b/nixos/modules/services/hardware/pommed.nix index 3bb53ce4603a..ba627c009efd 100644 --- a/nixos/modules/services/hardware/pommed.nix +++ b/nixos/modules/services/hardware/pommed.nix @@ -51,7 +51,7 @@ in systemd.services.pommed = { description = "Pommed Apple Hotkeys Daemon"; wantedBy = [ "multi-user.target" ]; - script = "${pkgs.pommed_light}/bin/pommed -f"; + serviceConfig.ExecStart = "${lib.getExe pkgs.pommed_light} -f"; }; }; } diff --git a/nixos/modules/services/home-automation/zigbee2mqtt.nix b/nixos/modules/services/home-automation/zigbee2mqtt.nix index dbf714bfb84e..2488c6d68504 100644 --- a/nixos/modules/services/home-automation/zigbee2mqtt.nix +++ b/nixos/modules/services/home-automation/zigbee2mqtt.nix @@ -79,6 +79,7 @@ in after = [ "network.target" ]; environment.ZIGBEE2MQTT_DATA = cfg.dataDir; serviceConfig = { + ExecStartPre = "${lib.getExe' pkgs.coreutils "cp"} --no-preserve=mode ${configFile} '${cfg.dataDir}/configuration.yaml'"; ExecStart = "${cfg.package}/bin/zigbee2mqtt"; User = "zigbee2mqtt"; Group = "zigbee2mqtt"; @@ -130,9 +131,6 @@ in ]; UMask = "0077"; }; - preStart = '' - cp --no-preserve=mode ${configFile} "${cfg.dataDir}/configuration.yaml" - ''; }; users.users.zigbee2mqtt = { diff --git a/nixos/modules/services/logging/heartbeat.nix b/nixos/modules/services/logging/heartbeat.nix index 2280c4349144..8cc99e84c9bf 100644 --- a/nixos/modules/services/logging/heartbeat.nix +++ b/nixos/modules/services/logging/heartbeat.nix @@ -67,12 +67,10 @@ in systemd.services.heartbeat = { description = "heartbeat log shipper"; wantedBy = [ "multi-user.target" ]; - preStart = '' - mkdir -p "${cfg.stateDir}"/{data,logs} - ''; serviceConfig = { User = "nobody"; AmbientCapabilities = "cap_net_raw"; + ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} -p '${cfg.stateDir}'/data '${cfg.stateDir}'/logs"; ExecStart = "${cfg.package}/bin/heartbeat -c \"${heartbeatYml}\" -path.data \"${cfg.stateDir}/data\" -path.logs \"${cfg.stateDir}/logs\""; }; }; diff --git a/nixos/modules/services/logging/journalbeat.nix b/nixos/modules/services/logging/journalbeat.nix index af178a3838d2..acd178234ab7 100644 --- a/nixos/modules/services/logging/journalbeat.nix +++ b/nixos/modules/services/logging/journalbeat.nix @@ -71,12 +71,12 @@ in wantedBy = [ "multi-user.target" ]; wants = [ "elasticsearch.service" ]; after = [ "elasticsearch.service" ]; - preStart = '' - mkdir -p ${cfg.stateDir}/data - mkdir -p ${cfg.stateDir}/logs - ''; serviceConfig = { StateDirectory = cfg.stateDir; + ExecStartPre = [ + "${lib.getExe' pkgs.coreutils "mkdir"} -p ${cfg.stateDir}/data" + "${lib.getExe' pkgs.coreutils "mkdir"} -p ${cfg.stateDir}/logs" + ]; ExecStart = '' ${cfg.package}/bin/journalbeat \ -c ${journalbeatYml} \ diff --git a/nixos/modules/services/logging/journaldriver.nix b/nixos/modules/services/logging/journaldriver.nix index efb53de0b484..d9f0ccd39d97 100644 --- a/nixos/modules/services/logging/journaldriver.nix +++ b/nixos/modules/services/logging/journaldriver.nix @@ -91,12 +91,12 @@ in config = mkIf cfg.enable { systemd.services.journaldriver = { description = "Stackdriver Logging journal forwarder"; - script = "${pkgs.journaldriver}/bin/journaldriver"; wants = [ "network-online.target" ]; after = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { + ExecStart = lib.getExe pkgs.journaldriver; Restart = "always"; DynamicUser = true; diff --git a/nixos/modules/services/logging/promtail.nix b/nixos/modules/services/logging/promtail.nix index e2bf483f426c..cc3f1bd1f5d1 100644 --- a/nixos/modules/services/logging/promtail.nix +++ b/nixos/modules/services/logging/promtail.nix @@ -66,14 +66,11 @@ in wantedBy = [ "multi-user.target" ]; stopIfChanged = false; - preStart = '' - ${lib.getExe pkgs.promtail} -config.file=${configFile} -check-syntax - ''; - serviceConfig = { Restart = "on-failure"; TimeoutStopSec = 10; + ExecStartPre = "${lib.getExe pkgs.promtail} -config.file=${configFile} -check-syntax"; ExecStart = "${pkgs.promtail}/bin/promtail -config.file=${configFile} ${escapeShellArgs cfg.extraFlags}"; ProtectSystem = "strict"; diff --git a/nixos/modules/services/logging/syslog-ng.nix b/nixos/modules/services/logging/syslog-ng.nix index 4c04d1f1f5dd..6b3e7c3e599d 100644 --- a/nixos/modules/services/logging/syslog-ng.nix +++ b/nixos/modules/services/logging/syslog-ng.nix @@ -79,7 +79,6 @@ in config = lib.mkIf cfg.enable { systemd.services.syslog-ng = { description = "syslog-ng daemon"; - preStart = "mkdir -p /{var,run}/syslog-ng"; wantedBy = [ "multi-user.target" ]; after = [ "multi-user.target" ]; # makes sure hostname etc is set serviceConfig = { @@ -87,6 +86,7 @@ in PIDFile = pidFile; StandardOutput = "null"; Restart = "on-failure"; + ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} -p /var/syslog-ng /run/syslog-ng"; ExecStart = "${cfg.package}/sbin/syslog-ng ${lib.concatStringsSep " " syslogngOptions}"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; }; diff --git a/nixos/modules/services/mail/cyrus-imap.nix b/nixos/modules/services/mail/cyrus-imap.nix index 3f60093544d5..32a9869dd3c7 100644 --- a/nixos/modules/services/mail/cyrus-imap.nix +++ b/nixos/modules/services/mail/cyrus-imap.nix @@ -342,6 +342,7 @@ in User = if (cfg.user == null) then "cyrus" else cfg.user; Group = if (cfg.group == null) then "cyrus" else cfg.group; Type = "simple"; + ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} -p '${cfg.imapdSettings.configdirectory}/socket' '${cfg.tmpDBDir}' /run/cyrus/proc /run/cyrus/lock"; ExecStart = "${cyrus-imapdPkg}/libexec/master -l $LISTENQUEUE -C /etc/imapd.conf -M /etc/cyrus.conf -p /run/cyrus/master.pid -D"; Restart = "on-failure"; RestartSec = "1s"; @@ -367,9 +368,6 @@ in RestrictNamespaces = true; RestrictRealtime = true; }; - preStart = '' - mkdir -p '${cfg.imapdSettings.configdirectory}/socket' '${cfg.tmpDBDir}' /run/cyrus/proc /run/cyrus/lock - ''; }; environment.systemPackages = [ cyrus-imapdPkg ]; }; diff --git a/nixos/modules/services/mail/dkimproxy-out.nix b/nixos/modules/services/mail/dkimproxy-out.nix index 94af3aafdbb8..e45d4afa94a6 100644 --- a/nixos/modules/services/mail/dkimproxy-out.nix +++ b/nixos/modules/services/mail/dkimproxy-out.nix @@ -109,10 +109,8 @@ in chown -R dkimproxy-out:dkimproxy-out "${keydir}" fi ''; - script = '' - exec ${pkgs.dkimproxy}/bin/dkimproxy.out --conf_file=${configfile} - ''; serviceConfig = { + ExecStart = "${pkgs.dkimproxy}/bin/dkimproxy.out --conf_file=${configfile}"; User = "dkimproxy-out"; PermissionsStartOnly = true; }; diff --git a/nixos/modules/services/mail/nullmailer.nix b/nixos/modules/services/mail/nullmailer.nix index 6dc278f89f29..a8b1cf76f351 100644 --- a/nixos/modules/services/mail/nullmailer.nix +++ b/nixos/modules/services/mail/nullmailer.nix @@ -245,13 +245,13 @@ wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - preStart = '' - rm -f /var/spool/nullmailer/trigger && mkfifo -m 660 /var/spool/nullmailer/trigger - ''; - serviceConfig = { User = cfg.user; Group = cfg.group; + ExecStartPre = [ + "${lib.getExe' pkgs.coreutils "rm"} -f /var/spool/nullmailer/trigger" + "${lib.getExe' pkgs.coreutils "mkfifo"} -m 660 /var/spool/nullmailer/trigger" + ]; ExecStart = "${pkgs.nullmailer}/bin/nullmailer-send"; Restart = "always"; }; diff --git a/nixos/modules/services/mail/postgrey.nix b/nixos/modules/services/mail/postgrey.nix index 463757fa8440..67a97f6a244f 100644 --- a/nixos/modules/services/mail/postgrey.nix +++ b/nixos/modules/services/mail/postgrey.nix @@ -210,13 +210,13 @@ in description = "Postfix Greylisting Service"; wantedBy = [ "multi-user.target" ]; before = [ "postfix.service" ]; - preStart = '' - mkdir -p /var/postgrey - chown postgrey:postgrey /var/postgrey - chmod 0770 /var/postgrey - ''; serviceConfig = { Type = "simple"; + ExecStartPre = [ + "${lib.getExe' pkgs.coreutils "mkdir"} -p /var/postgrey" + "${lib.getExe' pkgs.coreutils "chown"} postgrey:postgrey /var/postgrey" + "${lib.getExe' pkgs.coreutils "chmod"} 0770 /var/postgrey" + ]; ExecStart = '' ${pkgs.postgrey}/bin/postgrey \ ${bind-flag} \ diff --git a/nixos/modules/services/mail/stalwart-mail.nix b/nixos/modules/services/mail/stalwart-mail.nix index ed7edefac66f..a0ea04e50a14 100644 --- a/nixos/modules/services/mail/stalwart-mail.nix +++ b/nixos/modules/services/mail/stalwart-mail.nix @@ -162,16 +162,6 @@ in "network.target" ]; - preStart = - if useLegacyStorage then - '' - mkdir -p ${cfg.dataDir}/data/blobs - '' - else - '' - mkdir -p ${cfg.dataDir}/db - ''; - serviceConfig = { # Upstream service config Type = "simple"; @@ -182,6 +172,15 @@ in RestartSec = 5; SyslogIdentifier = "stalwart-mail"; + ExecStartPre = + if useLegacyStorage then + '' + ${lib.getExe' pkgs.coreutils "mkdir"} -p ${cfg.dataDir}/data/blobs + '' + else + '' + ${lib.getExe' pkgs.coreutils "mkdir"} -p ${cfg.dataDir}/db + ''; ExecStart = [ "" "${lib.getExe cfg.package} --config=${configFile}" diff --git a/nixos/modules/services/misc/autofs.nix b/nixos/modules/services/misc/autofs.nix index d7586ddb4c9a..c806a931c86c 100644 --- a/nixos/modules/services/misc/autofs.nix +++ b/nixos/modules/services/misc/autofs.nix @@ -88,14 +88,11 @@ in wants = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; - preStart = '' - # There should be only one autofs service managed by systemd, so this should be safe. - rm -f /tmp/autofs-running - ''; - serviceConfig = { Type = "forking"; PIDFile = "/run/autofs.pid"; + # There should be only one autofs service managed by systemd, so this should be safe. + ExecStartPre = "${lib.getExe' pkgs.coreutils "rm"} -f /tmp/autofs-running"; ExecStart = "${pkgs.autofs5}/bin/automount ${lib.optionalString cfg.debug "-d"} -p /run/autofs.pid -t ${toString cfg.timeout} ${autoMaster}"; ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; }; diff --git a/nixos/modules/services/misc/dictd.nix b/nixos/modules/services/misc/dictd.nix index b216459b2d9b..3de6ccb1896e 100644 --- a/nixos/modules/services/misc/dictd.nix +++ b/nixos/modules/services/misc/dictd.nix @@ -78,7 +78,7 @@ in # with code 143 instead of exiting with code 0. serviceConfig.SuccessExitStatus = [ 143 ]; serviceConfig.Type = "forking"; - script = "${pkgs.dict}/sbin/dictd -s -c ${dictdb}/share/dictd/dictd.conf --locale en_US.UTF-8"; + serviceConfig.ExecStart = "${pkgs.dict}/sbin/dictd -s -c ${dictdb}/share/dictd/dictd.conf --locale en_US.UTF-8"; }; }; } diff --git a/nixos/modules/services/misc/docker-registry.nix b/nixos/modules/services/misc/docker-registry.nix index 7fc777d5942e..d6d8df3b2baf 100644 --- a/nixos/modules/services/misc/docker-registry.nix +++ b/nixos/modules/services/misc/docker-registry.nix @@ -143,11 +143,9 @@ in description = "Docker Container Registry"; wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; - script = '' - ${cfg.package}/bin/registry serve ${configFile} - ''; serviceConfig = { + ExecStart = "${lib.getExe cfg.package} serve ${configFile}"; User = "docker-registry"; WorkingDirectory = cfg.storagePath; AmbientCapabilities = lib.mkIf (cfg.port < 1024) "cap_net_bind_service"; diff --git a/nixos/modules/services/misc/errbot.nix b/nixos/modules/services/misc/errbot.nix index d9f52af7fe72..aa94368d61d2 100644 --- a/nixos/modules/services/misc/errbot.nix +++ b/nixos/modules/services/misc/errbot.nix @@ -100,13 +100,13 @@ in { after = [ "network-online.target" ]; wantedBy = [ "multi-user.target" ]; - preStart = '' - mkdir -p ${dataDir} - chown -R errbot:errbot ${dataDir} - ''; serviceConfig = { User = "errbot"; Restart = "on-failure"; + ExecStartPre = [ + "${lib.getExe' pkgs.coreutils "mkdir"} -p ${dataDir}" + "${lib.getExe' pkgs.coreutils "chown"} -R errbot:errbot ${dataDir}" + ]; ExecStart = "${pkgs.errbot}/bin/errbot -c ${mkConfigDir instanceCfg dataDir}/config.py"; PermissionsStartOnly = true; }; diff --git a/nixos/modules/services/web-apps/dawarich.nix b/nixos/modules/services/web-apps/dawarich.nix new file mode 100644 index 000000000000..9d2d83242fc1 --- /dev/null +++ b/nixos/modules/services/web-apps/dawarich.nix @@ -0,0 +1,706 @@ +{ + lib, + pkgs, + config, + options, + ... +}: + +let + cfg = config.services.dawarich; + opt = options.services.dawarich; + + dataDir = "/var/lib/dawarich"; + + isRedisUnixSocket = lib.hasPrefix "/" cfg.redis.host; + + redisEnv = + if isRedisUnixSocket then + { + REDIS_URL = "unix://${config.services.redis.servers.dawarich.unixSocket}"; + } + else + { + # Does not support passwords, but upstream does not provide an adequate env variable + # Perhaps patch or make a PR upstream in the future + REDIS_URL = "redis://${cfg.redis.host}:${toString cfg.redis.port}"; + }; + + env = { + RAILS_ENV = "production"; + NODE_ENV = "production"; + BUNDLE_USER_HOME = "/tmp/bundle"; # will use private tmp inside systemd unit + + SELF_HOSTED = "true"; + STORE_GEODATA = "true"; + APPLICATION_PROTOCOL = "http"; + TIME_ZONE = config.time.timeZone; # otherwise upstream forces it to Europe/London + DOMAIN = cfg.localDomain; + APPLICATION_HOSTS = "127.0.0.1,::1,${cfg.localDomain}"; + + BOOTSNAP_CACHE_DIR = "/var/cache/dawarich/precompile"; + LD_PRELOAD = "${lib.getLib pkgs.jemalloc}/lib/libjemalloc.so"; + + DATABASE_USER = cfg.database.user; + DATABASE_HOST = cfg.database.host; + DATABASE_NAME = cfg.database.name; + DATABASE_PORT = toString cfg.database.port; + + SMTP_SERVER = cfg.smtp.host; + SMTP_PORT = toString cfg.smtp.port; + SMTP_FROM = cfg.smtp.fromAddress; + SMTP_USERNAME = cfg.smtp.user; + PORT = toString cfg.webPort; + } + // redisEnv + // cfg.environment; + + systemCallFilter = + let + allowedSystemCalls = [ + "@cpu-emulation" + "@debug" + "@keyring" + "@ipc" + "@mount" + "@obsolete" + "@privileged" + "@setuid" + ]; + in + [ + ("~" + lib.concatStringsSep " " allowedSystemCalls) + "@chown" + "pipe" + "pipe2" + ]; + + cfgService = { + User = cfg.user; + Group = cfg.group; + WorkingDirectory = cfg.package; + CacheDirectory = "dawarich"; + CacheDirectoryMode = "0750"; + StateDirectory = "dawarich"; + StateDirectoryMode = "0750"; + LogsDirectory = "dawarich"; + LogsDirectoryMode = "0750"; + ProcSubset = "pid"; + ProtectProc = "invisible"; + UMask = "0027"; + CapabilityBoundingSet = ""; + NoNewPrivileges = true; + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + PrivateUsers = true; + ProtectClock = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectControlGroups = true; + RestrictAddressFamilies = [ + "AF_UNIX" + "AF_INET" + "AF_INET6" + "AF_NETLINK" + ]; + RestrictNamespaces = true; + LockPersonality = true; + MemoryDenyWriteExecute = false; + RestrictRealtime = true; + RestrictSUIDSGID = true; + RemoveIPC = true; + PrivateMounts = true; + SystemCallArchitectures = "native"; + SystemCallFilter = systemCallFilter; + + # ensure permissions to connect to the redis socket + SupplementaryGroups = lib.mkIf (cfg.redis.createLocally && isRedisUnixSocket) [ + config.services.redis.servers.dawarich.group + ]; + }; + + # Units that all Dawarich units After= and Requires= on + commonUnits = + lib.optional cfg.redis.createLocally "redis-dawarich.service" + ++ lib.optional cfg.database.createLocally "postgresql.target" + ++ lib.optional cfg.automaticMigrations "dawarich-init-db.service"; + + defaultSecretKeyBaseFile = "${dataDir}/secrets/secret-key-base"; + needsGenCredentialsUnit = cfg.secretKeyBaseFile == null; + credentials = { + SECRET_KEY_BASE = lib.defaultTo defaultSecretKeyBaseFile cfg.secretKeyBaseFile; + } + // lib.optionalAttrs (cfg.database.passwordFile != null) { + DATABASE_PASSWORD = cfg.database.passwordFile; + } + // lib.optionalAttrs (cfg.smtp.passwordFile != null) { + SMTP_PASSWORD = cfg.smtp.passwordFile; + }; + loadCredentialsIntoEnv = lib.concatMapAttrsStringSep "\n" ( + name: _: ''export ${name}="$(systemd-creds cat ${name})"'' + ) credentials; + loadCredentials = lib.mapAttrsToList (name: path: "${name}:${path}") credentials; + + dawarichRails = pkgs.writeShellApplication { + name = "dawarich-rails"; + + text = + let + sourceExtraEnv = lib.concatMapStrings (p: "source ${p}\n") cfg.extraEnvFiles; + command = pkgs.writeShellScript "dawarich-rails-unwrapped" '' + ${sourceExtraEnv} + ${loadCredentialsIntoEnv} + export RAILS_ROOT="${cfg.package}" + exec ${lib.getExe' cfg.package "rails"} "$@" + ''; + env' = lib.filterAttrs (_: value: value != null) env; + supplementaryGroups = lib.optionalString (cfg.redis.createLocally && isRedisUnixSocket) ( + lib.escapeShellArg "--property=SupplementaryGroups=${config.services.redis.servers.dawarich.group}" + ); + in + '' + exec ${lib.getExe' config.systemd.package "systemd-run"} \ + ${ + lib.escapeShellArgs (map (credential: "--property=LoadCredential=${credential}") loadCredentials) + } \ + ${ + lib.escapeShellArgs (lib.mapAttrsToList (name: value: "--setenv=${name}=${toString value}") env') + } \ + --uid=${lib.escapeShellArg cfg.user} \ + --gid=${lib.escapeShellArg cfg.group} \ + ${supplementaryGroups} \ + --working-directory=${lib.escapeShellArg cfg.package} \ + --property=PrivateTmp=yes \ + --pty \ + --wait \ + --collect \ + --service-type=exec \ + --quiet \ + -- \ + ${command} "$@" + ''; + }; + dawarichConsole = pkgs.writeShellScriptBin "dawarich-console" '' + exec ${lib.getExe dawarichRails} console "$@" + ''; + + sidekiqUnits = lib.attrsets.mapAttrs' ( + name: processCfg: + lib.nameValuePair "dawarich-sidekiq-${name}" ( + let + jobClassArgs = lib.concatMapStringsSep " " (c: "-q ${c}") processCfg.jobClasses; + jobClassLabel = lib.optionalString ( + processCfg.jobClasses != [ ] + ) " (${lib.concatStringsSep ", " processCfg.jobClasses})"; + threads = toString (if processCfg.threads == null then cfg.sidekiqThreads else processCfg.threads); + in + { + after = [ + "network.target" + ] + ++ lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" + ++ commonUnits; + requires = lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" ++ commonUnits; + description = "Dawarich sidekiq${jobClassLabel}"; + wantedBy = [ "dawarich.target" ]; + environment = env // { + RAILS_MAX_THREADS = threads; + }; + script = '' + ${loadCredentialsIntoEnv} + + ${lib.getExe' cfg.package "sidekiq"} ${jobClassArgs} -c ${threads} -r ${cfg.package} + ''; + serviceConfig = { + Restart = "always"; + RestartSec = 20; + LoadCredential = loadCredentials; + EnvironmentFile = cfg.extraEnvFiles; + LimitNOFILE = "1024000"; + } + // cfgService; + } + ) + ) cfg.sidekiqProcesses; + +in +{ + + options = { + services.dawarich = { + enable = lib.mkEnableOption "Dawarich, a self-hostable alternative to Google Location History"; + + configureNginx = lib.mkOption { + description = '' + Configure nginx as a reverse proxy for dawarich. + Alternatively you can configure a reverse-proxy of your choice to serve these paths: + + `/ -> ''${pkgs.dawarich}/public` + + `/ -> 127.0.0.1:{{ webPort }} `(If there was no file in the directory above.) + + Make sure that websockets are forwarded properly. You might want to set up caching + of some requests. Take a look at dawarich's provided reverse proxy configurations at + `https://dawarich.app/docs/tutorials/reverse-proxy`. + ''; + type = lib.types.bool; + default = true; + }; + + user = lib.mkOption { + description = '' + User under which dawarich runs. If it is set to "dawarich", + that user will be created, otherwise it should be set to the + name of a user created elsewhere. + ''; + type = lib.types.str; + default = "dawarich"; + }; + + group = lib.mkOption { + description = '' + Group under which dawarich runs. + ''; + type = lib.types.str; + default = "dawarich"; + }; + + webPort = lib.mkOption { + description = "TCP port used by the dawarich web service."; + type = lib.types.port; + default = 3000; + }; + + sidekiqThreads = lib.mkOption { + description = '' + Worker threads used by the dawarich-sidekiq-all service. + If `sidekiqProcesses` is configured and any processes specify null `threads`, this value is used. + ''; + type = lib.types.int; + default = 5; + }; + + sidekiqProcesses = lib.mkOption { + description = '' + How many Sidekiq processes should be used to handle background jobs, and which job classes they handle. + Can be used to [speed up](https://dawarich.app/docs/FAQ/#how-to-speed-up-the-import-process) the import process. + ''; + type = + with lib.types; + attrsOf (submodule { + options = { + jobClasses = lib.mkOption { + # https://github.com/Freika/dawarich/blob/0.37.2/config/sidekiq.yml + type = listOf (enum [ + "app_version_checking" + "archival" + "cache" + "data_migrations" + "default" + "digests" + "exports" + "families" + "imports" + "mailers" + "places" + "points" + "reverse_geocoding" + "stats" + "tracks" + "trips" + "visit_suggesting" + ]); + description = '' + If not empty, which job classes should be executed by this process. + *If left empty, all job classes will be executed by this process.* + ''; + }; + threads = lib.mkOption { + type = nullOr int; + description = '' + Number of threads this process should use for executing jobs. + If null, the configured `sidekiqThreads` are used. + ''; + }; + }; + }); + default = { + all = { + jobClasses = [ ]; + threads = null; + }; + }; + example = { + all = { + jobClasses = [ ]; + threads = null; + }; + geocoding = { + jobClasses = [ "reverse_geocoding" ]; + threads = 10; + }; + }; + }; + + localDomain = lib.mkOption { + description = "The domain serving your Dawarich instance."; + example = "dawarich.example.org"; + type = lib.types.str; + }; + + secretKeyBaseFile = lib.mkOption { + description = '' + Path to file containing the secret key base. + A new secret key base can be generated by running: + + `nix build -f '' dawarich; cd result; bin/bundle exec rails secret` + + This file is loaded using systemd credentials, and therefore does not need to be + owned by the dawarich user. + + If this option is null, it will be created at ${defaultSecretKeyBaseFile} + with a new secret key base. + ''; + default = null; + type = lib.types.nullOr lib.types.str; + }; + + redis = { + createLocally = lib.mkOption { + description = '' + Whether to configure a local Redis server for Dawarich. + The connection is performed via Unix sockets by default, + but that can be changed by configuring {option}`${opt.redis.host}` and {option}`${opt.redis.port}`. + ''; + type = lib.types.bool; + default = true; + }; + + host = lib.mkOption { + description = "The redis host Dawarich will connect to."; + type = lib.types.str; + default = config.services.redis.servers.dawarich.unixSocket; + defaultText = lib.literalExpression "config.services.redis.servers.dawarich.unixSocket"; + }; + + port = lib.mkOption { + description = "The port of the redis server Dawarich will connect to. Set to zero to disable TCP and use Unix sockets instead."; + type = lib.types.port; + default = 0; + }; + }; + + database = { + createLocally = lib.mkOption { + description = '' + Whether to configure a local PostgreSQL server and database for Dawarich. + The connection is performed via Unix sockets. + ''; + type = lib.types.bool; + default = true; + }; + + host = lib.mkOption { + type = lib.types.str; + default = "/run/postgresql"; + example = "127.0.0.1"; + description = "Hostname or address of the postgresql server. If an absolute path is given here, it will be interpreted as a unix socket path."; + }; + + port = lib.mkOption { + type = lib.types.nullOr lib.types.port; + default = 5432; + description = "Port of the postgresql server."; + }; + + name = lib.mkOption { + type = lib.types.str; + default = "dawarich"; + description = "The name of the dawarich database."; + }; + + user = lib.mkOption { + type = lib.types.str; + default = "dawarich"; + description = "The database user for dawarich."; + }; + + passwordFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + example = "/run/keys/dawarich-db-password"; + description = '' + A file containing the password corresponding to {option}`${opt.database.user}`. + ''; + }; + }; + + smtp = { + host = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + description = "SMTP host used when sending emails to users."; + }; + + port = lib.mkOption { + type = lib.types.port; + default = 25; + description = "SMTP port used when sending emails to users."; + }; + + fromAddress = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + example = "dawarich@example.com"; + description = ''"From" address used when sending emails to users.''; + }; + + user = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + example = "dawarich@example.com"; + description = "SMTP login name."; + }; + + passwordFile = lib.mkOption { + type = lib.types.nullOr lib.types.path; + default = null; + example = "/run/keys/dawarich-smtp-password"; + description = '' + Path to file containing the SMTP password. + ''; + }; + }; + + package = lib.mkPackageOption pkgs "dawarich" { }; + + environment = lib.mkOption { + type = + with lib.types; + attrsOf ( + nullOr (oneOf [ + str + path + package + ]) + ); + default = { }; + description = '' + Extra environment variables to pass to all dawarich services. + ''; + }; + + extraEnvFiles = lib.mkOption { + type = with lib.types; listOf path; + default = [ ]; + description = '' + Extra environment files to pass to all Dawarich services. Useful for passing down environment secrets. + ''; + example = [ "/etc/dawarich/secret.env" ]; + }; + + automaticMigrations = lib.mkOption { + description = "Whether to perform database migrations automatically"; + type = lib.types.bool; + default = true; + }; + }; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + assertions = [ + { + assertion = !isRedisUnixSocket -> cfg.redis.port != 0; + message = '' + `services.dawarich.redis.port` needs to be configured if `services.dawarich.redis.host` is not a unix socket. + ''; + } + ]; + + environment.systemPackages = [ + dawarichConsole + dawarichRails + ]; + + systemd.targets.dawarich = { + description = "Target for all Dawarich services"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + }; + + systemd.services.dawarich-init-credentials = lib.mkIf needsGenCredentialsUnit { + script = '' + umask 077 + '' + + lib.optionalString (cfg.secretKeyBaseFile == null) '' + if ! test -f ${defaultSecretKeyBaseFile}; then + mkdir -p $(dirname ${defaultSecretKeyBaseFile}) + bin/bundle exec rails secret > ${defaultSecretKeyBaseFile} + fi + ''; + + environment = env; + serviceConfig = { + Type = "oneshot"; + SyslogIdentifier = "dawarich-init-dirs"; + # System Call Filtering + SystemCallFilter = [ "~@resources" ] ++ systemCallFilter; + } + // cfgService; + + after = [ "network.target" ]; + }; + + systemd.services.dawarich-init-db = lib.mkIf cfg.automaticMigrations { + script = '' + ${loadCredentialsIntoEnv} + + # Run primary database migrations first (needed before other migrations) + echo "Running primary database migrations..." + rails db:migrate + + # Run data migrations + echo "Running DATA migrations..." + rake data:migrate + + echo "Running seeds..." + rails db:seed + ''; + path = [ cfg.package ]; + environment = env; + serviceConfig = { + Type = "oneshot"; + LoadCredential = loadCredentials; + EnvironmentFile = cfg.extraEnvFiles; + WorkingDirectory = cfg.package; + # System Call Filtering + SystemCallFilter = [ "~@resources" ] ++ systemCallFilter; + } + // cfgService; + # both postgres and redis are needed for the migrations to work + after = [ + "network.target" + ] + ++ lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" + ++ lib.optional cfg.database.createLocally "postgresql.target" + ++ lib.optional cfg.redis.createLocally "redis-dawarich.service"; + requires = + lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" + ++ lib.optional cfg.database.createLocally "postgresql.target" + ++ lib.optional cfg.redis.createLocally "redis-dawarich.service"; + }; + + systemd.services.dawarich-web = { + after = [ + "network.target" + ] + ++ lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" + ++ commonUnits; + requires = lib.optional needsGenCredentialsUnit "dawarich-init-credentials.service" ++ commonUnits; + wantedBy = [ "dawarich.target" ]; + description = "Dawarich web"; + environment = env; + script = '' + ${loadCredentialsIntoEnv} + + ${lib.getExe' cfg.package "rails"} server + ''; + serviceConfig = { + Restart = "always"; + RestartSec = 20; + LoadCredential = loadCredentials; + EnvironmentFile = cfg.extraEnvFiles; + WorkingDirectory = cfg.package; + # Runtime directory and mode + RuntimeDirectory = "dawarich-web"; + RuntimeDirectoryMode = "0750"; + } + // cfgService; + }; + + systemd.tmpfiles.settings."dawarich"."${dataDir}/imports/watched".d = { + group = "dawarich"; + mode = "700"; + user = "dawarich"; + }; + + services.nginx = lib.mkIf cfg.configureNginx { + enable = true; + virtualHosts."${cfg.localDomain}" = { + root = "${cfg.package}/public/"; + + locations."/" = { + tryFiles = "$uri @proxy"; + }; + + locations."@proxy" = { + proxyPass = "http://127.0.0.1:${toString cfg.webPort}"; + recommendedProxySettings = true; + proxyWebsockets = true; + }; + }; + }; + + services.redis.servers = lib.mkIf cfg.redis.createLocally { + dawarich = { + enable = true; + port = cfg.redis.port; + bind = lib.mkIf (!isRedisUnixSocket) cfg.redis.host; + }; + }; + + services.postgresql = lib.mkIf cfg.database.createLocally { + enable = true; + extensions = ps: with ps; [ postgis ]; + ensureUsers = [ + { + inherit (cfg.database) name; + ensureDBOwnership = true; + } + ]; + ensureDatabases = [ cfg.database.name ]; + }; + + systemd.services.postgresql-setup.serviceConfig.ExecStartPost = + let + # https://github.com/Freika/dawarich/blob/0.30.6/db/schema.rb#L15-L16 + # https://postgis.net/documentation/getting_started/ + sqlFile = pkgs.writeText "dawarich-postgres-setup.sql" '' + CREATE EXTENSION IF NOT EXISTS postgis; + SELECT postgis_extensions_upgrade(); + ''; + in + lib.mkIf cfg.database.createLocally [ + '' + ${lib.getExe' config.services.postgresql.package "psql"} -d "${cfg.database.name}" -f "${sqlFile}" + '' + ]; + + users.users = lib.mkIf (cfg.user == "dawarich") { + dawarich = { + isSystemUser = true; + home = cfg.package; + inherit (cfg) group; + }; + }; + users.groups = lib.mkIf (cfg.group == "dawarich") { ${cfg.group} = { }; }; + } + { + systemd.services = lib.mkMerge [ + sidekiqUnits + ]; + } + ] + ); + + meta.maintainers = with lib.maintainers; [ + diogotcorreia + ]; + +} diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix index a479b7242f56..60db7399cdda 100644 --- a/nixos/modules/tasks/filesystems/zfs.nix +++ b/nixos/modules/tasks/filesystems/zfs.nix @@ -855,6 +855,7 @@ in "resilver_finish-start-scrub.sh" "scrub_finish-notify.sh" "statechange-notify.sh" + "zed-functions.sh" ] ++ lib.optionals (lib.versionOlder cfgZfs.package.version "2.4") [ "deadman-slot_off.sh" diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 3da2a4c24dc4..d12a0f0d10be 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -446,6 +446,7 @@ in darling-dmg = runTest ./darling-dmg.nix; dashy = runTest ./web-apps/dashy.nix; davis = runTest ./davis.nix; + dawarich = runTest ./web-apps/dawarich.nix; db-rest = runTest ./db-rest.nix; dconf = runTest ./dconf.nix; ddns-updater = runTest ./ddns-updater.nix; diff --git a/nixos/tests/lomiri-calendar-app.nix b/nixos/tests/lomiri-calendar-app.nix index 5b18e7dd50b4..726b09eae2aa 100644 --- a/nixos/tests/lomiri-calendar-app.nix +++ b/nixos/tests/lomiri-calendar-app.nix @@ -91,7 +91,7 @@ machine.sleep(10) machine.send_key("alt-f10") machine.sleep(2) - machine.wait_for_text(r"(Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)") + machine.wait_for_text(r"(Termine|Tag|Woche|Monat|Jahr|Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag|Sonntag)") machine.screenshot("lomiri-calendar_localised") ''; } diff --git a/nixos/tests/ringboard.nix b/nixos/tests/ringboard.nix index a0bd26c25c51..96dc759fbf29 100644 --- a/nixos/tests/ringboard.nix +++ b/nixos/tests/ringboard.nix @@ -6,7 +6,7 @@ }: { name = "ringboard"; - meta = { inherit (pkgs.ringboard.meta) maintainers; }; + meta.maintainers = pkgs.ringboard.meta.maintainers ++ (with lib.maintainers; [ h7x4 ]); nodes.machine = { imports = [ @@ -17,12 +17,14 @@ test-support.displayManager.auto.user = "alice"; services.xserver.displayManager.sessionCommands = '' - '${lib.getExe pkgs.gedit}' & + '${lib.getExe pkgs.gedit}' my_document & ''; services.ringboard.x11.enable = true; }; + enableOCR = true; + testScript = { nodes, ... }: let @@ -31,7 +33,8 @@ '' @polling_condition def gedit_running(): - machine.succeed("pgrep gedit") + "Check that gedit is running and visible to the user" + machine.wait_for_text("my_document") with subtest("Wait for service startup"): machine.wait_for_unit("graphical.target") @@ -40,10 +43,12 @@ with subtest("Ensure clipboard is monitored"): with gedit_running: # type: ignore[union-attr] - machine.send_chars("Hello world!") + machine.send_chars("Hello world!", delay=0.1) + machine.sleep(1) machine.send_key("ctrl-a") + machine.sleep(1) machine.send_key("ctrl-c") - machine.wait_for_console_text("Small selection transfer complete") - machine.succeed("su - '${user}' -c 'ringboard search Hello | grep world!'") + machine.wait_until_succeeds("su - '${user}' -c 'journalctl --user -u ringboard-listener.service --grep \'Small selection transfer complete\'''", timeout=60) + machine.succeed("su - '${user}' -c 'ringboard search Hello | grep world!'") ''; } diff --git a/nixos/tests/web-apps/dawarich.nix b/nixos/tests/web-apps/dawarich.nix new file mode 100644 index 000000000000..2bc7679c9853 --- /dev/null +++ b/nixos/tests/web-apps/dawarich.nix @@ -0,0 +1,77 @@ +{ ... }: +{ + name = "dawarich-nixos"; + + nodes.machine = + { pkgs, ... }: + { + services.dawarich = { + enable = true; + localDomain = "localhost"; + }; + + environment.etc.geojson.source = pkgs.fetchurl { + url = "https://github.com/Freika/dawarich/raw/8c24764aa56a084e980e21bc2ffd13a72fd611db/spec/fixtures/files/geojson/export.json"; + hash = "sha256-qI00E5ixKTRJduAD+qB3JzvrpoJmC55llNtSiPVyxz4="; + }; + }; + + testScript = '' + import json + + machine.wait_for_unit("dawarich.target") + + machine.wait_for_open_port(3000) # Web + machine.succeed("curl --fail http://localhost/") + + # Get API key via ruby console + api_key = machine.succeed("dawarich-rails runner \"puts User.find_by(email: 'demo@dawarich.app').api_key\"").strip().split("\n")[-1] + + res = machine.succeed(f"curl -f -H 'Authorization: Bearer {api_key}' http://localhost/api/v1/users/me") + user_data = json.loads(res) + assert user_data['user']['email'] == 'demo@dawarich.app' + + example_point = { + "locations": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + -122.40530871, + 37.74430413 + ] + }, + "properties": { + "battery_state": "full", + "battery_level": 0.7, + "wifi": "dawarich_home", + "timestamp": "2025-01-17T21:03:01Z", + "horizontal_accuracy": 5, + "vertical_accuracy": -1, + "altitude": 0, + "speed": 92.088, + "speed_accuracy": 0, + "course": 27.07, + "course_accuracy": 0, + "track_id": "799F32F5-89BB-45FB-A639-098B1B95B09F", + "device_id": "8D5D4197-245B-4619-A88B-2049100ADE46" + } + } + ] + } + machine.succeed(f"curl -f -H 'Authorization: Bearer {api_key}' --json '{json.dumps(example_point)}' http://localhost/api/v1/points") + + res = machine.succeed(f"curl -f -H 'Authorization: Bearer {api_key}' http://localhost/api/v1/points") + assert len(json.loads(res)) == 1 + + # Test watcher job import + import_dir = "/var/lib/dawarich/imports/watched/demo@dawarich.app" + machine.succeed(f"mkdir -p {import_dir} && cp /etc/geojson {import_dir}/example.json") + + machine.succeed('dawarich-rails runner "Import::WatcherJob.perform_now"') + # job runs in the background so doesn't update immediately + res = machine.wait_until_succeeds(f"curl -f -H 'Authorization: Bearer {api_key}' http://localhost/api/v1/points | grep '\"id\":2'") + assert len(json.loads(res)) == 11 + ''; +} diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elpaca/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elpaca/default.nix index 10d1bf24f45b..9aa784ae73dc 100644 --- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elpaca/default.nix +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/elpaca/default.nix @@ -6,63 +6,24 @@ lib, }: -melpaBuild rec { +melpaBuild { pname = "elpaca"; - version = "0-unstable-2025-11-06"; + version = "0-unstable-2025-02-16"; src = fetchFromGitHub { owner = "progfolio"; repo = "elpaca"; - rev = "b5ef5f19ac1224853234c9acdac0ec9ea1c440a1"; - hash = "sha256-EZ9emYTweRZzMKxZu9nbAaGgE2tInaL7KCKvJ5TaD0g="; + rev = "07b3a653e2411f4d4b5902af1c9b3f159e07bec5"; + hash = "sha256-+YJX2BJxH3D5u7YC/yJskZu0F4Nlat3ZROe+RCZGq9w="; }; nativeBuildInputs = [ git ]; - # Moves extensions into the source root directory to install them. - # Disables warnings related to being used with package.el and not matching the installer - # Points the elpaca-repos-directory to the installed package in the nix store - postPatch = - let - siteVersion = lib.concatStrings (lib.drop 2 (lib.splitVersion version)); - in - '' - mv extensions/* . - substituteInPlace elpaca.el \ - --replace-fail "lwarn '(elpaca installer)" \ - "ignore '(elpaca installer)" \ - --replace-fail "warn \"Package.el" \ - "ignore \"Package.el" \ - --replace-fail "(expand-file-name \"elpaca/\" elpaca-repos-directory)" \ - "\"${placeholder "out"}/share/emacs/site-lisp/elpa/elpaca-${siteVersion}.0\"" - ''; - passthru.updateScript = unstableGitUpdater { }; meta = { - description = "Elisp package manager and replacement for package.el"; - longDescription = '' - Elpaca is an elisp package manager. It allows users to find, - install, update, and remove third-party packages for Emacs. It - is a replacement for the built-in Emacs package manager, - package.el. - - Elpaca: - - Installs packages asynchronously, in parallel for fast, non-blocking installations. - - Includes a flexible UI for finding and operating on packages. - - Downloads packages from their sources for convenient elisp development. - - Supports thousands of elisp packages out of the box (MELPA, NonGNU/GNU ELPA, Org/org-contrib). - - Makes it easy for users to create their own ELPAs. - - Elpaca has been adapted for Emacs managed via Nix. To activate - Elpaca, this snippet can be used within your init.el: - - ```elisp - (add-hook 'after-init-hook #'elpaca-process-queues) - (elpaca-use-package-mode) ;; Optional, for use-package support - ``` - ''; homepage = "https://github.com/progfolio/elpaca"; + description = "Elisp package manager"; license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ abhisheksingh0x558 diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix index 32a439c65965..2eb98b47b316 100644 --- a/pkgs/applications/editors/vim/plugins/generated.nix +++ b/pkgs/applications/editors/vim/plugins/generated.nix @@ -16184,6 +16184,20 @@ final: prev: { meta.hydraPlatforms = [ ]; }; + tuis-nvim = buildVimPlugin { + pname = "tuis.nvim"; + version = "0-unstable-2026-01-15"; + src = fetchFromGitHub { + owner = "jrop"; + repo = "tuis.nvim"; + rev = "3f3daa725cf1faffe07287cfe347e054d2f80470"; + hash = "sha256-IJIqWD6XNzoAVr75WLzBf1Ut35RxSHzZ0//hTskEdSA="; + fetchSubmodules = true; + }; + meta.homepage = "https://github.com/jrop/tuis.nvim/"; + meta.hydraPlatforms = [ ]; + }; + tv-nvim = buildVimPlugin { pname = "tv.nvim"; version = "0-unstable-2026-01-10"; diff --git a/pkgs/applications/editors/vim/plugins/utils/get-plugins.nix b/pkgs/applications/editors/vim/plugins/utils/get-plugins.nix index c32f3880d6f2..4c874e98cda4 100644 --- a/pkgs/applications/editors/vim/plugins/utils/get-plugins.nix +++ b/pkgs/applications/editors/vim/plugins/utils/get-plugins.nix @@ -1,10 +1,9 @@ with import { }; let inherit (vimUtils.override { inherit vim; }) buildVimPlugin; - inherit (neovimUtils) buildNeovimPlugin; generated = callPackage { - inherit buildNeovimPlugin buildVimPlugin; + inherit buildVimPlugin; } { } { }; hasChecksum = @@ -15,16 +14,15 @@ let "outputHash" ] value; - parse = name: value: { - pname = value.pname; - version = value.version; + parse = _name: value: { + inherit (value) pname version; homePage = value.meta.homepage; checksum = if hasChecksum value then { submodules = value.src.fetchSubmodules or false; sha256 = value.src.outputHash; - rev = value.src.rev; + inherit (value.src) rev; } else null; diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names index aad3e13cc25e..860f580027f6 100644 --- a/pkgs/applications/editors/vim/plugins/vim-plugin-names +++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names @@ -1242,6 +1242,7 @@ https://github.com/dmmulroy/tsc.nvim/,HEAD, https://github.com/jgdavey/tslime.vim/,, https://github.com/mtrajano/tssorter.nvim/,HEAD, https://github.com/Quramy/tsuquyomi/,, +https://github.com/jrop/tuis.nvim/,HEAD, https://github.com/alexpasmantier/tv.nvim/,HEAD, https://github.com/folke/twilight.nvim/,, https://github.com/pmizio/typescript-tools.nvim/,, diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix index af66d232e6e1..f0dd8556189a 100644 --- a/pkgs/applications/editors/vscode/extensions/default.nix +++ b/pkgs/applications/editors/vscode/extensions/default.nix @@ -968,8 +968,8 @@ let mktplcRef = { name = "chatgpt-reborn"; publisher = "chris-hayes"; - version = "3.27.0"; - sha256 = "sha256-52SvGb9TsvDQey5cjw+ZIQBP/1dyWcHKNjqCCCyM6k4="; + version = "3.28.0"; + sha256 = "sha256-YOaOBDGoLg/bWB/Yw6CCbJ/J7s6qA8QlbM3wiknCTGQ="; }; }; @@ -1268,8 +1268,8 @@ let mktplcRef = { publisher = "denoland"; name = "vscode-deno"; - version = "3.47.0"; - hash = "sha256-T8RJi2SiFf6rMTpDQx9VuBv0zNwvusZrwybHeFe5/KQ="; + version = "3.48.0"; + hash = "sha256-AWnX4toFJnIhflc039fN31lrrTaKKXUSrePanWoZnJI="; }; meta = { changelog = "https://marketplace.visualstudio.com/items/denoland.vscode-deno/changelog"; @@ -2611,8 +2611,8 @@ let mktplcRef = { name = "language-julia"; publisher = "julialang"; - version = "1.171.2"; - hash = "sha256-XELIrqcyd6DEpJjbSlE17noiYa8CZvDwnodA1QALewM="; + version = "1.174.2"; + hash = "sha256-nlMuWnJOtUlCB9RGWUngB8KgIiNxoQTHkjI6ZtO/Gjs="; }; meta = { changelog = "https://marketplace.visualstudio.com/items/julialang.language-julia/changelog"; @@ -4469,8 +4469,8 @@ let mktplcRef = { name = "vscode-stylelint"; publisher = "stylelint"; - version = "1.6.0"; - hash = "sha256-t0zS4+UZePViqkGgVezy/2CyyqilUKb6byTYukbxqr8="; + version = "2.0.1"; + hash = "sha256-TYUDm+i7Chuybbx91AUxH/oIyZYWpZ5XnYxjhjXGP88="; }; meta = { description = "Official Stylelint extension for Visual Studio Code"; diff --git a/pkgs/applications/editors/vscode/extensions/sourcegraph.amp/default.nix b/pkgs/applications/editors/vscode/extensions/sourcegraph.amp/default.nix index 4c2a1809d3e0..f3cb6de99203 100644 --- a/pkgs/applications/editors/vscode/extensions/sourcegraph.amp/default.nix +++ b/pkgs/applications/editors/vscode/extensions/sourcegraph.amp/default.nix @@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { publisher = "sourcegraph"; name = "amp"; - version = "0.0.1768263519"; - hash = "sha256-uOvvkzXvyHiJP3ZxHBJhXW/M8Ju1DjSXpwflAkKjgxs="; + version = "0.0.1768796962"; + hash = "sha256-uZb5QI6JDv8FdLU0yZzFsJ43J0P0X5c16dl5Poa8n/w="; }; meta = { diff --git a/pkgs/applications/emulators/libretro/cores/beetle-pce-fast.nix b/pkgs/applications/emulators/libretro/cores/beetle-pce-fast.nix index 4e994394f762..8230f8c72f3a 100644 --- a/pkgs/applications/emulators/libretro/cores/beetle-pce-fast.nix +++ b/pkgs/applications/emulators/libretro/cores/beetle-pce-fast.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "mednafen-pce-fast"; - version = "0-unstable-2025-11-14"; + version = "0-unstable-2026-01-16"; src = fetchFromGitHub { owner = "libretro"; repo = "beetle-pce-fast-libretro"; - rev = "7e9b257b8a591cb7e00f9e55371edba19db9799c"; - hash = "sha256-LBx4bSnE3XeQw/Bc5EID8U6Dxj7uc6JBrV8vSwO/jEM="; + rev = "6d182b22f6b9430c76ea71579ffb2eee0e2e9521"; + hash = "sha256-QHkG5CSZgaakblOgp5HxGvtWg8K4Nbag481nhG4UjoY="; }; makefile = "Makefile"; diff --git a/pkgs/applications/emulators/libretro/cores/beetle-psx.nix b/pkgs/applications/emulators/libretro/cores/beetle-psx.nix index 34162d390ff3..f55fe76711ce 100644 --- a/pkgs/applications/emulators/libretro/cores/beetle-psx.nix +++ b/pkgs/applications/emulators/libretro/cores/beetle-psx.nix @@ -8,13 +8,13 @@ }: mkLibretroCore { core = "mednafen-psx" + lib.optionalString withHw "-hw"; - version = "0-unstable-2026-01-12"; + version = "0-unstable-2026-01-16"; src = fetchFromGitHub { owner = "libretro"; repo = "beetle-psx-libretro"; - rev = "254285de247db71ac25a4392c159dc1114940794"; - hash = "sha256-RDUyTGlrouttC9V4irOC8U1zcNsCxnTIdm6wrAECY2E="; + rev = "5965c585abcaf6b5205a1347de82471e22aaabe3"; + hash = "sha256-Mks6xJre1gaxBqWfAzVTNp6Ooy5VDc86HAoj3wlHYRw="; }; extraBuildInputs = lib.optionals withHw [ diff --git a/pkgs/applications/emulators/libretro/cores/bsnes.nix b/pkgs/applications/emulators/libretro/cores/bsnes.nix index ce95defa99c0..9c4388db5c78 100644 --- a/pkgs/applications/emulators/libretro/cores/bsnes.nix +++ b/pkgs/applications/emulators/libretro/cores/bsnes.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "bsnes"; - version = "0-unstable-2025-12-19"; + version = "0-unstable-2026-01-16"; src = fetchFromGitHub { owner = "libretro"; repo = "bsnes-libretro"; - rev = "d9b7c292cfb15959c9928e3b76bb1047b8499938"; - hash = "sha256-FzYe6p3+knxcoIcQW00p3C3+rMEsAWI+ZFdy5mvDhoY="; + rev = "d0a61b2c679bc73286be5471b222b1f1ebfb67b9"; + hash = "sha256-1C+c0cQqFSRDGBhNr4s4xD/THbyDP/iVUJpAmHFQfiE="; }; makefile = "Makefile"; diff --git a/pkgs/applications/emulators/libretro/cores/fbneo.nix b/pkgs/applications/emulators/libretro/cores/fbneo.nix index d9cc3e10cb38..23a64f05159e 100644 --- a/pkgs/applications/emulators/libretro/cores/fbneo.nix +++ b/pkgs/applications/emulators/libretro/cores/fbneo.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "fbneo"; - version = "0-unstable-2026-01-11"; + version = "0-unstable-2026-01-18"; src = fetchFromGitHub { owner = "libretro"; repo = "fbneo"; - rev = "aaecfedbb206a79d0e35a0dfe922622b921a66f7"; - hash = "sha256-Xn3lxXFf7EEism9CIGYhvP83oCpOTrpgnBAwkkB4TDM="; + rev = "3faea4f9c678bad8063f3a2774b051f42848c856"; + hash = "sha256-tH9XMBfg3O2oKIUeKWi2hl4yQuHa9BMgvkWjIxv/KIo="; }; makefile = "Makefile"; diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix index 99d0f4bd1a68..2c88fd184cfa 100644 --- a/pkgs/applications/networking/browsers/chromium/browser.nix +++ b/pkgs/applications/networking/browsers/chromium/browser.nix @@ -62,19 +62,20 @@ mkChromiumDerivation (base: rec { $out/share/applications/chromium-browser.desktop substituteInPlace $out/share/applications/chromium-browser.desktop \ - --replace "@@MENUNAME@@" "Chromium" \ - --replace "@@PACKAGE@@" "chromium" \ - --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium" - - # Append more mime types to the end - sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \ - $out/share/applications/chromium-browser.desktop + --replace-fail "@@MENUNAME@@" "Chromium" \ + --replace-fail "@@PACKAGE@@" "chromium" \ + --replace-fail "/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "chromium" \ + --replace-fail "@@URI_SCHEME@@" "x-scheme-handler/chromium;" \ + --replace-fail "@@EXTRA_DESKTOP_ENTRIES@@" "" # See https://github.com/NixOS/nixpkgs/issues/12433 - sed -i \ - -e '/\[Desktop Entry\]/a\' \ - -e 'StartupWMClass=chromium-browser' \ - $out/share/applications/chromium-browser.desktop + substituteInPlace $out/share/applications/chromium-browser.desktop \ + --replace-fail "[Desktop Entry]" "[Desktop Entry]''\nStartupWMClass=chromium-browser" + + if grep -F '@@' $out/share/applications/chromium-browser.desktop ; then + echo "error: chromium-browser.desktop contains unsubstituted placeholders" >&2 + exit 1 + fi ''; passthru = { inherit sandboxExecutableName; }; diff --git a/pkgs/applications/networking/cluster/rke2/1_35/images-versions.json b/pkgs/applications/networking/cluster/rke2/1_35/images-versions.json new file mode 100644 index 000000000000..fdbf9cd88659 --- /dev/null +++ b/pkgs/applications/networking/cluster/rke2/1_35/images-versions.json @@ -0,0 +1,138 @@ +{ + "images-calico-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-calico.linux-amd64.tar.gz", + "sha256": "d9184c1907c6a07328db80bc9787d9473874f99387997eb75712b3f109c28a95" + }, + "images-calico-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-calico.linux-amd64.tar.zst", + "sha256": "3b0fab246141f52418b0e8944ad0edac46e512ae837a6846d6685bd2ca934562" + }, + "images-calico-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-calico.linux-arm64.tar.gz", + "sha256": "9ffb3e4607f44d5dde2e5fd17e4c317fb2f232174cd9b4fc1b5979ec8f0f0fa8" + }, + "images-calico-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-calico.linux-arm64.tar.zst", + "sha256": "c1531be737cb6dc2819f35e8e63d095b05db9dcd0698416a60b786a9e3d69bbf" + }, + "images-canal-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-canal.linux-amd64.tar.gz", + "sha256": "dc6c2a3f22739fac02272372fc7eadb27809721ee921669203d46ec551fbb8a2" + }, + "images-canal-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-canal.linux-amd64.tar.zst", + "sha256": "f039d8feabd264aa6a6d684560bd05e764e748292649736d436b28974b86668e" + }, + "images-canal-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-canal.linux-arm64.tar.gz", + "sha256": "6560ef5589c30afe63195d23a27ffcf4492a2e5135bb715c4c7818cd625a244e" + }, + "images-canal-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-canal.linux-arm64.tar.zst", + "sha256": "8085686ffb57b508198916cd8ebdaec2a90b1e2f1592caeb0c4a55ae1ab4d223" + }, + "images-cilium-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-cilium.linux-amd64.tar.gz", + "sha256": "bf4fff99097f8bdf14d1ce51884e062140e311a08ad3661cd5455d966781d8ea" + }, + "images-cilium-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-cilium.linux-amd64.tar.zst", + "sha256": "755338043246a0d167a16ff63ec53651ce9e837d39625d06bbbcd2c63004ec1c" + }, + "images-cilium-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-cilium.linux-arm64.tar.gz", + "sha256": "f1b3dd87ee96aa022a73d535163bb066ae75b038188cd7937809e56d7896cd93" + }, + "images-cilium-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-cilium.linux-arm64.tar.zst", + "sha256": "decc80c50fd887ec299ff9b5ec5e7853be71c49f337cd5bb806c377e9e6f75ce" + }, + "images-core-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-core.linux-amd64.tar.gz", + "sha256": "0fcbac0cfe2b7df25a677686408da84f960f292573d29341779191a981a1cd58" + }, + "images-core-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-core.linux-amd64.tar.zst", + "sha256": "4a715e8cc723a5b6b602b223c6609b1407ff837f6d31b203e23d2c53d9d7c85b" + }, + "images-core-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-core.linux-arm64.tar.gz", + "sha256": "006b3603ca45d69897f47ac0e32b43eed3354a38fb3ed6d12b82f27c924f444d" + }, + "images-core-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-core.linux-arm64.tar.zst", + "sha256": "f2ee745a844902404623a4e45f0ecbcb7753547e199c93f87b750a9c3b7d32ff" + }, + "images-flannel-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-flannel.linux-amd64.tar.gz", + "sha256": "63751fc22b0e35c44224c0ff053d6606ec63b885d1f8bde659e931b3de17815e" + }, + "images-flannel-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-flannel.linux-amd64.tar.zst", + "sha256": "1107c8a8c5aa90d5a8351340ac0a54862bd720f265f1b48742d55289d20c299f" + }, + "images-flannel-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-flannel.linux-arm64.tar.gz", + "sha256": "337cdc528527e804e82cccdca4eb9d8a211b79b2a7839f280f285db1eabce22f" + }, + "images-flannel-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-flannel.linux-arm64.tar.zst", + "sha256": "bbb4c7627e3d449284f20d79cf8392686fca7066043777092a455fabbaaf9ad7" + }, + "images-harvester-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-harvester.linux-amd64.tar.gz", + "sha256": "add464ba1af538d9ac0e4a5b739ede0ec5601e0fb380a07b6695d69fd95fa166" + }, + "images-harvester-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-harvester.linux-amd64.tar.zst", + "sha256": "3623423261a3db1d58750d98cc71950f21ebdab355103eab192f60db90834f29" + }, + "images-harvester-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-harvester.linux-arm64.tar.gz", + "sha256": "d593f160508714b5d2e4c194c354daf16064d36505ae8e75b86fa9e8eae1c8ab" + }, + "images-harvester-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-harvester.linux-arm64.tar.zst", + "sha256": "2d0ad2cb9bf5c0e6497e4a1f7602b7868653b303c249f2034fd6b3b95e0db194" + }, + "images-multus-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-multus.linux-amd64.tar.gz", + "sha256": "2b4368fae7354431fbb66906a703f3c519bbcc71f46dd7e01d4874c911219990" + }, + "images-multus-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-multus.linux-amd64.tar.zst", + "sha256": "778b48e8e451f3440fb02dda27e87a3a1c2fc8b5e1ae1386398e30fb698fc808" + }, + "images-multus-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-multus.linux-arm64.tar.gz", + "sha256": "849f717627cc42919480bb35650e5e47c74fe39da40d1fe173f3b789abf5e3fc" + }, + "images-multus-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-multus.linux-arm64.tar.zst", + "sha256": "b570507f05e25379e0e3cd9f0bd9562d2fc87c8cba4eada865cfd22a94abab1b" + }, + "images-traefik-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-traefik.linux-amd64.tar.gz", + "sha256": "d28e86d1aba3274a7ed13278d9852956f454c4bc1da30a1df9c0b1184aa41ed1" + }, + "images-traefik-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-traefik.linux-amd64.tar.zst", + "sha256": "d7364c02738d90b1f9aaf48c5dfd17d0393333fe1a67002e522fe4cf429118e7" + }, + "images-traefik-linux-arm64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-traefik.linux-arm64.tar.gz", + "sha256": "973358a62e4cbdd955097e9bdcbec7aacc439123486439aafcd1bb5af5828571" + }, + "images-traefik-linux-arm64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-traefik.linux-arm64.tar.zst", + "sha256": "aaee9b9bf92cf42bbcb2862dd0bfaa217730ebfe69947926a6fd624b9ba19dcf" + }, + "images-vsphere-linux-amd64-tar-gz": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-vsphere.linux-amd64.tar.gz", + "sha256": "4eeb361e1946f56d6fa2dd0a0beee094d0818a4f4278b1531c3a481c349ac4a1" + }, + "images-vsphere-linux-amd64-tar-zst": { + "url": "https://github.com/rancher/rke2/releases/download/v1.35.0%2Brke2r1/rke2-images-vsphere.linux-amd64.tar.zst", + "sha256": "be8b6a4d3823c2e4f22df991236227415a771794e3631ce228f89f9f3363cdaf" + } +} diff --git a/pkgs/applications/networking/cluster/rke2/1_35/versions.nix b/pkgs/applications/networking/cluster/rke2/1_35/versions.nix new file mode 100644 index 000000000000..aaac94497b39 --- /dev/null +++ b/pkgs/applications/networking/cluster/rke2/1_35/versions.nix @@ -0,0 +1,13 @@ +{ + rke2Version = "1.35.0+rke2r1"; + rke2Commit = "233368982cc7242d3eb01e22112343839e8e8f2d"; + rke2TarballHash = "sha256-spnfiv5butC6yh9h3uosS0M5jTbPAuy6N+jzdri9Ano="; + rke2VendorHash = "sha256-DSIhALF+Ic1zm52YntGoBbbJkeq0SX7QkpyOQ9z2+Qo="; + k8sImageTag = "v1.35.0-rke2r1-build20251218"; + etcdVersion = "v3.6.6-k3s1-build20251210"; + pauseVersion = "3.6"; + ccmVersion = "v1.35.0-rc1.0.20251218152248-a6c6cd15c0c4-build20251219"; + dockerizedVersion = "v1.35.0-rke2r1"; + helmJobVersion = "v0.9.12-build20251215"; + imagesVersions = with builtins; fromJSON (readFile ./images-versions.json); +} diff --git a/pkgs/applications/networking/cluster/rke2/default.nix b/pkgs/applications/networking/cluster/rke2/default.nix index c2b0169cf691..98bc97f7c1c1 100644 --- a/pkgs/applications/networking/cluster/rke2/default.nix +++ b/pkgs/applications/networking/cluster/rke2/default.nix @@ -35,7 +35,17 @@ rec { } ) extraArgs; + rke2_1_35 = common ( + (import ./1_35/versions.nix) + // { + updateScript = [ + ./update-script.sh + "35" + ]; + } + ) extraArgs; + # Automatically set by update script rke2_stable = rke2_1_34; - rke2_latest = rke2_1_34; + rke2_latest = rke2_1_35; } diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 58895241493e..e9257a2dc520 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -101,11 +101,11 @@ "vendorHash": "sha256-quoFrJbB1vjz+MdV+jnr7FPACHuUe5Gx9POLubD2IaM=" }, "baidubce_baiducloud": { - "hash": "sha256-BNpBNBxRSKgxwvgIY289MLUf0Eui5/ccY97sAouHjbc=", + "hash": "sha256-r5NPRWjjlLD5qrLmVPe3JFrRRp3mV0NJwT3rOo0k8FA=", "homepage": "https://registry.terraform.io/providers/baidubce/baiducloud", "owner": "baidubce", "repo": "terraform-provider-baiducloud", - "rev": "v1.22.16", + "rev": "v1.22.17", "spdx": "MPL-2.0", "vendorHash": null }, @@ -1049,11 +1049,11 @@ "vendorHash": null }, "oracle_oci": { - "hash": "sha256-wHNR0U8z0wY878ww2e+yybYYwUCbiGWSkIcEiubfOp4=", + "hash": "sha256-VGf5sCHMhOFm+w3lz2yhH0lw0MSlQYlYK/+lEuXk4vc=", "homepage": "https://registry.terraform.io/providers/oracle/oci", "owner": "oracle", "repo": "terraform-provider-oci", - "rev": "v7.29.0", + "rev": "v7.30.0", "spdx": "MPL-2.0", "vendorHash": null }, diff --git a/pkgs/applications/networking/gns3/gui.nix b/pkgs/applications/networking/gns3/gui.nix index 451162118522..ef9eb9cda64b 100644 --- a/pkgs/applications/networking/gns3/gui.nix +++ b/pkgs/applications/networking/gns3/gui.nix @@ -39,21 +39,16 @@ pythonPackages.buildPythonApplication rec { propagatedBuildInputs = [ qt5.qtwayland ]; - dependencies = - with pythonPackages; - [ - distro - jsonschema - psutil - pyqt5 - sentry-sdk - setuptools - sip - truststore - ] - ++ lib.optionals (pythonOlder "3.9") [ - importlib-resources - ]; + dependencies = with pythonPackages; [ + distro + jsonschema + psutil + pyqt5 + sentry-sdk + setuptools + sip + truststore + ]; dontWrapQtApps = true; diff --git a/pkgs/applications/networking/gns3/server.nix b/pkgs/applications/networking/gns3/server.nix index 9448adc00c00..00d84dddfd9d 100644 --- a/pkgs/applications/networking/gns3/server.nix +++ b/pkgs/applications/networking/gns3/server.nix @@ -35,28 +35,23 @@ python3Packages.buildPythonApplication { build-system = with python3Packages; [ setuptools ]; - dependencies = - with python3Packages; - [ - aiofiles - aiohttp - aiohttp-cors - async-generator - distro - jinja2 - jsonschema - multidict - platformdirs - prompt-toolkit - psutil - py-cpuinfo - sentry-sdk - truststore - yarl - ] - ++ lib.optionals (pythonOlder "3.9") [ - importlib-resources - ]; + dependencies = with python3Packages; [ + aiofiles + aiohttp + aiohttp-cors + async-generator + distro + jinja2 + jsonschema + multidict + platformdirs + prompt-toolkit + psutil + py-cpuinfo + sentry-sdk + truststore + yarl + ]; postInstall = lib.optionalString (!stdenv.hostPlatform.isWindows) '' rm $out/bin/gns3loopback diff --git a/pkgs/applications/networking/mailreaders/thunderbird/packages.nix b/pkgs/applications/networking/mailreaders/thunderbird/packages.nix index 046d9d5eaf15..43117b3af188 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird/packages.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird/packages.nix @@ -100,8 +100,8 @@ rec { thunderbird-140 = common { applicationName = "Thunderbird ESR"; - version = "140.6.0esr"; - sha512 = "817a807381fa0b5e5e2c3f961931855788649ed596b1c6773ec5b0d6715e90df137ab0f755408a9137b5573169c2e2040bf6a01c4ecdb9a8b010e6c43dbb6381"; + version = "140.7.0esr"; + sha512 = "92746d87ca2d5a59082c25aa3c3a816e5bf24ae3e095f8ec478a60c5cd890faea392ff98b5b510cc9a89b155240dce9d06c7ddd0f17f564722acc65105fb6cd2"; updateScript = callPackage ./update.nix { attrPath = "thunderbirdPackages.thunderbird-140"; diff --git a/pkgs/applications/radio/rtl-sdr/default.nix b/pkgs/applications/radio/rtl-sdr/default.nix index b0eb6627d12d..0b5b550cb4e9 100644 --- a/pkgs/applications/radio/rtl-sdr/default.nix +++ b/pkgs/applications/radio/rtl-sdr/default.nix @@ -17,10 +17,17 @@ let }: stdenv.mkDerivation { inherit version pname src; + + outputs = [ + "out" + "dev" + ]; + nativeBuildInputs = [ pkg-config cmake ]; + propagatedBuildInputs = [ libusb1 ]; cmakeFlags = lib.optionals stdenv.hostPlatform.isLinux [ diff --git a/pkgs/applications/system/glances/default.nix b/pkgs/applications/system/glances/default.nix index 5c25b9ebaabf..856f9ea8fab9 100644 --- a/pkgs/applications/system/glances/default.nix +++ b/pkgs/applications/system/glances/default.nix @@ -3,7 +3,6 @@ buildPythonApplication, fetchFromGitHub, isPyPy, - pythonOlder, lib, defusedxml, packaging, @@ -31,7 +30,7 @@ buildPythonApplication rec { version = "4.3.3"; pyproject = true; - disabled = isPyPy || pythonOlder "3.9"; + disabled = isPyPy; src = fetchFromGitHub { owner = "nicolargo"; diff --git a/pkgs/build-support/appimage/appimage-exec.sh b/pkgs/build-support/appimage/appimage-exec.sh index 29b695fd0848..74a37055c862 100755 --- a/pkgs/build-support/appimage/appimage-exec.sh +++ b/pkgs/build-support/appimage/appimage-exec.sh @@ -74,6 +74,10 @@ apprun() { else echo "$(basename "$APPIMAGE")" installed in "$APPDIR" fi + # Fix potential for the appimages to try to import libraries from QT + # installed on the system, causing a version mismatch + unset QT_PLUGIN_PATH + export PATH="$PATH:$PWD/usr/bin" } diff --git a/pkgs/build-support/buildenv/default.nix b/pkgs/build-support/buildenv/default.nix index 5996239a16b4..e694a9b838e1 100644 --- a/pkgs/build-support/buildenv/default.nix +++ b/pkgs/build-support/buildenv/default.nix @@ -17,7 +17,11 @@ in lib.makeOverridable ( { - name, + name ? lib.throwIf ( + pname == null || version == null + ) "buildEnv: expect arguments 'pname' and 'version' or 'name'" "${pname}-${version}", + pname ? null, + version ? null, # The manifest file (if any). A symlink $out/manifest will be # created to it. @@ -60,8 +64,6 @@ lib.makeOverridable ( passthru ? { }, meta ? { }, - pname ? null, - version ? null, }: let chosenOutputs = map (drv: { diff --git a/pkgs/by-name/_0/_0xproto/package.nix b/pkgs/by-name/_0/_0xproto/package.nix index 6b47eef1536f..bbf00e1d4d59 100644 --- a/pkgs/by-name/_0/_0xproto/package.nix +++ b/pkgs/by-name/_0/_0xproto/package.nix @@ -6,7 +6,7 @@ }: stdenvNoCC.mkDerivation rec { pname = "0xproto"; - version = "2.501"; + version = "2.502"; src = let @@ -14,7 +14,7 @@ stdenvNoCC.mkDerivation rec { in fetchzip { url = "https://github.com/0xType/0xProto/releases/download/${version}/0xProto_${underscoreVersion}.zip"; - hash = "sha256-l1+fRPMo3k9EEGXiMw+8Z78KxjO3AGgvyqSfsN188vQ="; + hash = "sha256-ffYvfEGMoIJKVEcs2XzhDrq++SkTbQOVvb6X9q+uyu8="; stripRoot = false; }; diff --git a/pkgs/by-name/am/amazon-ecs-cli/package.nix b/pkgs/by-name/am/amazon-ecs-cli/package.nix deleted file mode 100644 index 65fca5099abf..000000000000 --- a/pkgs/by-name/am/amazon-ecs-cli/package.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - lib, - stdenv, - fetchurl, -}: - -stdenv.mkDerivation rec { - pname = "amazon-ecs-cli"; - version = "1.21.0"; - - src = - if stdenv.hostPlatform.system == "x86_64-linux" then - fetchurl { - url = "https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-linux-amd64-v${version}"; - sha256 = "sEHwhirU2EYwtBRegiIvN4yr7VKtmy7e6xx5gZOkuY0="; - } - else if stdenv.hostPlatform.system == "x86_64-darwin" then - fetchurl { - url = "https://s3.amazonaws.com/amazon-ecs-cli/ecs-cli-darwin-amd64-v${version}"; - sha256 = "1viala49sifpcmgn3jw24h5bkrlm4ffadjiqagbxj3lr0r78i9nm"; - } - else - throw "Architecture not supported"; - - dontUnpack = true; - - installPhase = '' - mkdir -p $out/bin - cp $src $out/bin/ecs-cli - chmod +x $out/bin/ecs-cli - ''; # */ - - meta = { - homepage = "https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI.html"; - description = "Amazon ECS command line interface"; - longDescription = "The Amazon Elastic Container Service (Amazon ECS) command line interface (CLI) provides high-level commands to simplify creating, updating, and monitoring clusters and tasks from a local development environment."; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - license = lib.licenses.asl20; - maintainers = with lib.maintainers; [ Scriptkiddi ]; - platforms = [ - "x86_64-linux" - "x86_64-darwin" - ]; - mainProgram = "ecs-cli"; - }; -} diff --git a/pkgs/by-name/am/amp-cli/package-lock.json b/pkgs/by-name/am/amp-cli/package-lock.json index 0cd60f0c6c0a..fbef1fd7a31c 100644 --- a/pkgs/by-name/am/amp-cli/package-lock.json +++ b/pkgs/by-name/am/amp-cli/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "@sourcegraph/amp": "^0.0.1768219292-g8af118" + "@sourcegraph/amp": "^0.0.1768760544-gf06f5a" } }, "node_modules/@napi-rs/keyring": { @@ -228,9 +228,9 @@ } }, "node_modules/@sourcegraph/amp": { - "version": "0.0.1768219292-g8af118", - "resolved": "https://registry.npmjs.org/@sourcegraph/amp/-/amp-0.0.1768219292-g8af118.tgz", - "integrity": "sha512-GW5MyNOiTu4G4cY29UI/0ttXu4b2QRwjmz4I9pvZqvIFrMmotBKC4wQinj8Dt6jD0ey7284Rhm8xHJ1iRtMoxA==", + "version": "0.0.1768760544-gf06f5a", + "resolved": "https://registry.npmjs.org/@sourcegraph/amp/-/amp-0.0.1768760544-gf06f5a.tgz", + "integrity": "sha512-ECw/n1n3aKERHW8qo5KaFgKgLDj4zJElFsyHnAS10BRv3ON0T6BPbboMvqvtYq1NEeX00QGpBDO2u0Q1+k3oGQ==", "license": "Amp Commercial License", "dependencies": { "@napi-rs/keyring": "1.1.9" diff --git a/pkgs/by-name/am/amp-cli/package.nix b/pkgs/by-name/am/amp-cli/package.nix index 126cb68a80a5..a774b7822597 100644 --- a/pkgs/by-name/am/amp-cli/package.nix +++ b/pkgs/by-name/am/amp-cli/package.nix @@ -9,11 +9,11 @@ buildNpmPackage (finalAttrs: { pname = "amp-cli"; - version = "0.0.1768219292-g8af118"; + version = "0.0.1768760544-gf06f5a"; src = fetchzip { url = "https://registry.npmjs.org/@sourcegraph/amp/-/amp-${finalAttrs.version}.tgz"; - hash = "sha256-DstiWCfox5CuHKfy3EgLk7N8KK67txuMG/flriiDH3I="; + hash = "sha256-URgYg3SZXeHrw+xXiXC1BDe0/ZUFRu9mDmqtTIA9ObU="; }; postPatch = '' @@ -45,7 +45,7 @@ buildNpmPackage (finalAttrs: { chmod +x bin/amp-wrapper.js ''; - npmDepsHash = "sha256-oB8YPiKoCG6+oNGlE6YdZ6F/6FEq96qJq/tdC164nrM="; + npmDepsHash = "sha256-7r522RT+38rjv1YqjhR9XIhWYoxVHmRUKeYfToCbsHA="; propagatedBuildInputs = [ ripgrep diff --git a/pkgs/by-name/an/ansel/package.nix b/pkgs/by-name/an/ansel/package.nix index cc2d853ac8ed..84413129b23b 100644 --- a/pkgs/by-name/an/ansel/package.nix +++ b/pkgs/by-name/an/ansel/package.nix @@ -82,13 +82,13 @@ let in stdenv.mkDerivation { pname = "ansel"; - version = "0-unstable-2026-01-09"; + version = "0-unstable-2026-01-17"; src = fetchFromGitHub { owner = "aurelienpierreeng"; repo = "ansel"; - rev = "1d3af0ff6899a96a4fb916806696e563c1accb80"; - hash = "sha256-XLKuQPCXAsH1qpC8Sw6AFSwXhl10pD0X1PSaRIhrnzs="; + rev = "0a6a812ce35f50ff4e2bf6302f1fb1c9d24a6f19"; + hash = "sha256-1tvh8ZbEUPRufFN0KHbPDqy7DEod9LRRI0XpxKJDZmU="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/ar/argo-workflows/package.nix b/pkgs/by-name/ar/argo-workflows/package.nix index 3bb18cd36d0e..235ea7a9ecbf 100644 --- a/pkgs/by-name/ar/argo-workflows/package.nix +++ b/pkgs/by-name/ar/argo-workflows/package.nix @@ -13,7 +13,7 @@ buildGoModule rec { src = fetchFromGitHub { owner = "argoproj"; - repo = "argo"; + repo = "argo-workflows"; tag = "v${version}"; hash = "sha256-TM/eK8biMxKV4SFJ1Lys+NPPeaHVjbBo83k2RH1Xi40="; }; @@ -55,7 +55,7 @@ buildGoModule rec { meta = { description = "Container native workflow engine for Kubernetes"; mainProgram = "argo"; - homepage = "https://github.com/argoproj/argo"; + homepage = "https://github.com/argoproj/argo-workflows"; changelog = "https://github.com/argoproj/argo-workflows/blob/v${version}/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ groodt ]; diff --git a/pkgs/by-name/as/astroterm/package.nix b/pkgs/by-name/as/astroterm/package.nix index f15081d962e6..924bc301471e 100644 --- a/pkgs/by-name/as/astroterm/package.nix +++ b/pkgs/by-name/as/astroterm/package.nix @@ -14,13 +14,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "astroterm"; - version = "1.0.9"; + version = "1.0.10"; src = fetchFromGitHub { owner = "da-luce"; repo = "astroterm"; tag = "v${finalAttrs.version}"; - hash = "sha256-3UXFB4NNKn2w1dYlQzhFyxWwa7/1qkCXPNdBqHK+eQ8="; + hash = "sha256-z9KblIAoXk///NnRFHCSAFNDuNiPxDuuiliajcsyJM0="; }; bsc5File = fetchurl { diff --git a/pkgs/by-name/au/automatic-timezoned/package.nix b/pkgs/by-name/au/automatic-timezoned/package.nix index 4ecf3fdda683..a3c626247ccf 100644 --- a/pkgs/by-name/au/automatic-timezoned/package.nix +++ b/pkgs/by-name/au/automatic-timezoned/package.nix @@ -7,16 +7,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "automatic-timezoned"; - version = "2.0.106"; + version = "2.0.108"; src = fetchFromGitHub { owner = "maxbrunet"; repo = "automatic-timezoned"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-djvRfp1LhkHuDmjDuOErzcD9KXH6fiRrUR73ncldzUc="; + sha256 = "sha256-aizxFWQpiwEo197Oydez2nAChQQ32jPqOEW3wNLnb7c="; }; - cargoHash = "sha256-T8PY/mFvcdXPZeQKEUekBan+0qBQnmsZ5O96EYcxkcI="; + cargoHash = "sha256-gT1pHDYwqVeZ0epGX8v3+B4o6y8jO21rUyz1rLD3eCY="; nativeInstallCheckInputs = [ versionCheckHook ]; diff --git a/pkgs/by-name/aw/aws-shell/package.nix b/pkgs/by-name/aw/aws-shell/package.nix deleted file mode 100644 index a42ced9aec35..000000000000 --- a/pkgs/by-name/aw/aws-shell/package.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ - python3Packages, - lib, - fetchFromGitHub, - fetchPypi, - awscli, - writableTmpDirAsHomeHook, -}: - -python3Packages.buildPythonApplication rec { - pname = "aws-shell"; - version = "0.2.2"; - format = "setuptools"; - - src = fetchFromGitHub { - owner = "awslabs"; - repo = "aws-shell"; - tag = version; - hash = "sha256-m96XaaFDFQaD2YPjw8D1sGJ5lex4Is4LQ5RhGzVPvH4="; - }; - - build-system = with python3Packages; [ - setuptools - ]; - - dependencies = with python3Packages; [ - botocore - pygments - mock - configobj - awscli - (prompt-toolkit.overrideAttrs (old: { - src = fetchPypi { - pname = "prompt_toolkit"; - version = "1.0.18"; - hash = "sha256-3U/KAsgGlJetkxotCZFMaw0bUBUc6Ha8Fb3kx0cJASY="; - }; - postPatch = null; - propagatedBuildInputs = old.propagatedBuildInputs ++ [ - wcwidth - six - ]; - })) - ]; - - nativeCheckInputs = with python3Packages; [ - pytestCheckHook - writableTmpDirAsHomeHook - ]; - - meta = { - homepage = "https://github.com/awslabs/aws-shell"; - description = "Integrated shell for working with the AWS CLI"; - platforms = lib.platforms.unix; - license = lib.licenses.asl20; - maintainers = with lib.maintainers; [ bot-wxt1221 ]; - mainProgram = "aws-shell"; - }; -} diff --git a/pkgs/by-name/aw/aws_mturk_clt/package.nix b/pkgs/by-name/aw/aws_mturk_clt/package.nix deleted file mode 100644 index 4d6408a0e69d..000000000000 --- a/pkgs/by-name/aw/aws_mturk_clt/package.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - jre, -}: - -stdenv.mkDerivation rec { - pname = "aws-mturk-clt"; - version = "1.3.0"; - - src = fetchurl { - url = "https://mturk.s3.amazonaws.com/CLTSource/aws-mturk-clt-${version}.tar.gz"; - sha256 = "00yyc7k3iygg83cknv9i2dsaxwpwzdkc8a2l9j56lg999hw3mqm3"; - }; - - installPhase = '' - mkdir -p $out - cp -prvd bin $out/ - - for i in $out/bin/*.sh; do - sed -i "$i" -e "s|^MTURK_CMD_HOME=.*|MTURK_CMD_HOME=$out\nexport JAVA_HOME=${jre}|" - done - - mkdir -p $out/lib - cp -prvd lib/* $out/lib/ - ''; # */ - - meta = { - homepage = "https://requester.mturk.com/developer"; - description = "Command line tools for interacting with the Amazon Mechanical Turk"; - license = lib.licenses.amazonsl; - - longDescription = '' - The Amazon Mechanical Turk is a crowdsourcing marketplace that - allows users (“requesters”) to submit tasks to be performed by - other humans (“workers”) for a small fee. This package - contains command-line tools for submitting tasks, querying - results, and so on. - - The command-line tools expect a file - mturk.properties in the current directory, - which should contain the following: - - - access_key=[insert your access key here] - secret_key=[insert your secret key here] - service_url=http://mechanicalturk.amazonaws.com/?Service=AWSMechanicalTurkRequester - - ''; - }; -} diff --git a/pkgs/by-name/aw/awscli2/package.nix b/pkgs/by-name/aw/awscli2/package.nix index b8a8e5356aa5..7557d14a22b6 100644 --- a/pkgs/by-name/aw/awscli2/package.nix +++ b/pkgs/by-name/aw/awscli2/package.nix @@ -18,11 +18,7 @@ let py = python3 // { pkgs = python3.pkgs.overrideScope ( final: prev: { - sphinx = prev.sphinx.overridePythonAttrs (prev: { - disabledTests = prev.disabledTests ++ [ - "test_check_link_response_only" # fails on hydra https://hydra.nixos.org/build/242624087/nixlog/1 - ]; - }); + # https://github.com/NixOS/nixpkgs/issues/449266 prompt-toolkit = prev.prompt-toolkit.overridePythonAttrs (prev: rec { version = "3.0.51"; src = prev.src.override { @@ -30,6 +26,9 @@ let hash = "sha256-pNYmjAgnP9nK40VS/qvPR3g+809Yra2ISASWJDdQKrU="; }; }); + + # backends/build_system/utils.py cannot parse PEP 440 version + # for python-dateutil 2.9.0.post0 (eg. post0) python-dateutil = prev.python-dateutil.overridePythonAttrs (prev: rec { version = "2.8.2"; format = "setuptools"; @@ -48,24 +47,6 @@ let ]; postPatch = null; }); - ruamel-yaml = prev.ruamel-yaml.overridePythonAttrs (prev: rec { - version = "0.17.21"; - src = prev.src.override { - inherit version; - hash = "sha256-i3zml6LyEnUqNcGsQURx3BbEJMlXO+SSa1b/P10jt68="; - }; - }); - urllib3 = prev.urllib3.overridePythonAttrs (prev: rec { - version = "1.26.18"; - build-system = with final; [ - setuptools - ]; - postPatch = null; - src = prev.src.override { - inherit version; - hash = "sha256-+OzBu6VmdBNFfFKauVW/jGe0XbeZ0VkGYmFxnjKFgKA="; - }; - }); } ); }; @@ -73,14 +54,14 @@ let in py.pkgs.buildPythonApplication rec { pname = "awscli2"; - version = "2.32.15"; # N.B: if you change this, check if overrides are still up-to-date + version = "2.33.2"; # N.B: if you change this, check if overrides are still up-to-date pyproject = true; src = fetchFromGitHub { owner = "aws"; repo = "aws-cli"; tag = version; - hash = "sha256-TOXoArw33exbMfKBnNSECymYS8hVzPoVOA7PWzbnroc="; + hash = "sha256-dAtcYDdrZASrwBjQfnZ4DUR4F5WhY59/UX92QcILavs="; }; postPatch = '' @@ -90,7 +71,8 @@ py.pkgs.buildPythonApplication rec { --replace-fail 'distro>=1.5.0,<1.9.0' 'distro>=1.5.0' \ --replace-fail 'docutils>=0.10,<0.20' 'docutils>=0.10' \ --replace-fail 'prompt-toolkit>=3.0.24,<3.0.52' 'prompt-toolkit>=3.0.24' \ - --replace-fail 'ruamel.yaml.clib>=0.2.0,<=0.2.12' 'ruamel.yaml.clib>=0.2.0' \ + --replace-fail 'ruamel.yaml>=0.15.0,<=0.17.21' 'ruamel.yaml>=0.15.0' \ + --replace-fail 'ruamel.yaml.clib>=0.2.0,<=0.2.12' 'ruamel.yaml.clib>=0.2.0' substituteInPlace requirements-base.txt \ --replace-fail "wheel==0.43.0" "wheel>=0.43.0" @@ -180,6 +162,9 @@ py.pkgs.buildPythonApplication rec { # Requires networking (socket binding not possible in sandbox) "test_is_socket" "test_is_special_file_warning" + + # Disable slow tests + "test_details_disabled_for_choice_wo_details" ]; pythonImportsCheck = [ diff --git a/pkgs/by-name/bi/bitrise/package.nix b/pkgs/by-name/bi/bitrise/package.nix index 51430f7950ac..6eae08183e49 100644 --- a/pkgs/by-name/bi/bitrise/package.nix +++ b/pkgs/by-name/bi/bitrise/package.nix @@ -6,13 +6,13 @@ }: buildGoModule rec { pname = "bitrise"; - version = "2.36.1"; + version = "2.36.3"; src = fetchFromGitHub { owner = "bitrise-io"; repo = "bitrise"; rev = "v${version}"; - hash = "sha256-U5885dS5C+AOF7DbiALy42rVcvr+2T3yE6E1mXrC49Y="; + hash = "sha256-0OwPRRr46JfAAjWyeP3n7pDaFN09U31Tq6cwGE7uKHI="; }; # many tests rely on writable $HOME/.bitrise and require network access diff --git a/pkgs/by-name/bi/biwascheme/package.nix b/pkgs/by-name/bi/biwascheme/package.nix new file mode 100644 index 000000000000..787db85cb3f7 --- /dev/null +++ b/pkgs/by-name/bi/biwascheme/package.nix @@ -0,0 +1,43 @@ +{ + buildNpmPackage, + fetchFromGitHub, + lib, + nix-update-script, + versionCheckHook, +}: + +buildNpmPackage (finalAttrs: { + pname = "biwascheme"; + version = "0.8.3"; + + src = fetchFromGitHub { + owner = "biwascheme"; + repo = "biwascheme"; + tag = "v${finalAttrs.version}"; + hash = "sha256-X3spl/myhcfmnJ1pN7RAoR0rc4kEM9s0DLtrN9RqyhU="; + }; + + npmDepsHash = "sha256-jVLCR6gIgK5OhH/KQPn3lYdTuNpMAEAQS1EtqIq8jTM="; + + postPatch = '' + substituteInPlace rollup.config.js \ + --replace-fail "git rev-parse HEAD" "echo ${finalAttrs.version}" + ''; + + env.PUPPETEER_SKIP_DOWNLOAD = true; + + doInstallCheck = true; + nativeInstallCheckInputs = [ versionCheckHook ]; + versionCheckProgramArg = "--version"; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Scheme interpreter written in JavaScript"; + homepage = "https://github.com/biwascheme/biwascheme"; + changelog = "https://github.com/biwascheme/biwascheme/blob/${finalAttrs.src.tag}/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ yiyu ]; + mainProgram = "biwas"; + }; +}) diff --git a/pkgs/by-name/bl/bluesky-pds/package.nix b/pkgs/by-name/bl/bluesky-pds/package.nix index e48ae021f483..57a80857b04e 100644 --- a/pkgs/by-name/bl/bluesky-pds/package.nix +++ b/pkgs/by-name/bl/bluesky-pds/package.nix @@ -27,13 +27,13 @@ in stdenv.mkDerivation (finalAttrs: { pname = "pds"; - version = "0.4.193"; + version = "0.4.204"; src = fetchFromGitHub { owner = "bluesky-social"; repo = "pds"; tag = "v${finalAttrs.version}"; - hash = "sha256-OCG1YR56k0syIxRVrwUr0teaBJFQXocq0H6j9JaQkh8="; + hash = "sha256-jYCMwHKKFIsfOgGYiKVrWtIT7atPA8NsetvfjDW05yE="; }; sourceRoot = "${finalAttrs.src.name}/service"; @@ -63,7 +63,7 @@ stdenv.mkDerivation (finalAttrs: { ; pnpm = pnpm_9; fetcherVersion = 2; - hash = "sha256-4qKWkINpUHzatiMa7ZNYp1NauU2641W0jHDjmRL9ipI="; + hash = "sha256-G6xZfbfz+jud1N6lxwp5FA5baAkFwmofejsPt/Gaze8="; }; buildPhase = '' diff --git a/pkgs/by-name/bo/boxflat/package.nix b/pkgs/by-name/bo/boxflat/package.nix index c583dc98dd6d..a513aa1b5186 100644 --- a/pkgs/by-name/bo/boxflat/package.nix +++ b/pkgs/by-name/bo/boxflat/package.nix @@ -14,14 +14,14 @@ python3Packages.buildPythonPackage rec { pname = "boxflat"; - version = "1.35.3"; + version = "1.35.5"; pyproject = true; src = fetchFromGitHub { owner = "Lawstorant"; repo = "boxflat"; tag = "v${version}"; - hash = "sha256-ayreXC73OLNpnwNuJe0ImC/ch5W+O0lnkuD31ztTqso="; + hash = "sha256-R03mQIsa6T1ApV8SMWvilBfiCGcAWvyZ5hDDgAuGd6s="; }; build-system = [ python3Packages.setuptools ]; diff --git a/pkgs/by-name/br/brainflow/package.nix b/pkgs/by-name/br/brainflow/package.nix index a0e3e018238e..85e799bb6d0a 100644 --- a/pkgs/by-name/br/brainflow/package.nix +++ b/pkgs/by-name/br/brainflow/package.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "brainflow"; - version = "5.19.0"; + version = "5.20.0"; src = fetchFromGitHub { owner = "brainflow-dev"; repo = "brainflow"; tag = finalAttrs.version; - hash = "sha256-XoTd7pEsY2RuMQFj5zo9NhlYgiG0J0aEMdKuxtDuaFg="; + hash = "sha256-qxITJjO6Rf9cx4XWRguOlohud8gnMSQDb/qgwv3wA+8="; }; patches = [ ]; diff --git a/pkgs/by-name/ca/canaille/package.nix b/pkgs/by-name/ca/canaille/package.nix index 6d4100e7c8ca..780460c31d01 100644 --- a/pkgs/by-name/ca/canaille/package.nix +++ b/pkgs/by-name/ca/canaille/package.nix @@ -15,8 +15,6 @@ python.pkgs.buildPythonApplication rec { version = "0.0.74"; pyproject = true; - disabled = python.pythonOlder "3.10"; - src = fetchFromGitLab { owner = "yaal"; repo = "canaille"; diff --git a/pkgs/by-name/ca/candy-icons/package.nix b/pkgs/by-name/ca/candy-icons/package.nix index 41e3dbef3175..87fdb1706ed7 100644 --- a/pkgs/by-name/ca/candy-icons/package.nix +++ b/pkgs/by-name/ca/candy-icons/package.nix @@ -8,13 +8,13 @@ stdenvNoCC.mkDerivation { pname = "candy-icons"; - version = "0-unstable-2025-12-26"; + version = "0-unstable-2026-01-13"; src = fetchFromGitHub { owner = "EliverLara"; repo = "candy-icons"; - rev = "1ec7ed314104847d6bffdc89ef67663917a67268"; - hash = "sha256-p8WZTNHwYTom0QnWvOU0JLRbEYZlGQq/QPpK3KlwBH8="; + rev = "42f5c4817f47e2ef4b011080ebbb2f50a9a6955b"; + hash = "sha256-d7jxoqWPRlNX43CdIEihT6kxvke3k8GG9CJkmlkuRNw="; }; nativeBuildInputs = [ gtk3 ]; diff --git a/pkgs/by-name/ca/carapace-bridge/package.nix b/pkgs/by-name/ca/carapace-bridge/package.nix index dcc1c040c16b..1e3a854fd2b7 100644 --- a/pkgs/by-name/ca/carapace-bridge/package.nix +++ b/pkgs/by-name/ca/carapace-bridge/package.nix @@ -8,13 +8,13 @@ buildGoModule (finalAttrs: { pname = "carapace-bridge"; - version = "1.4.10"; + version = "1.4.11"; src = fetchFromGitHub { owner = "carapace-sh"; repo = "carapace-bridge"; tag = "v${finalAttrs.version}"; - hash = "sha256-6CCLSwbAYkMelaM5ac1I1kwOlWKPSOU9M9/2Dybt55I="; + hash = "sha256-npy20q8Fmi4KKN/q41iG6sWmuQVLhiHyUCGVUwS0FsA="; }; # buildGoModule tries to run `go mod vendor` instead of `go work vendor` on diff --git a/pkgs/by-name/ca/cargo-binstall/package.nix b/pkgs/by-name/ca/cargo-binstall/package.nix index dd664782d669..8852ba00bac7 100644 --- a/pkgs/by-name/ca/cargo-binstall/package.nix +++ b/pkgs/by-name/ca/cargo-binstall/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage rec { pname = "cargo-binstall"; - version = "1.16.6"; + version = "1.16.7"; src = fetchFromGitHub { owner = "cargo-bins"; repo = "cargo-binstall"; tag = "v${version}"; - hash = "sha256-6acLC+ufODhCvHn7g+yzaN+qnTDjUrCBIX8uOj0PPgg="; + hash = "sha256-0r7QEGwuIh2mquKFqcf3VjvilhVz25Xpr2rJPQp504E="; }; - cargoHash = "sha256-IPDhTbYRtL4nBdNgaQfZ2M+RwZYC5eJfs/+VNlOXodo="; + cargoHash = "sha256-ZJCIjQm/vbO1Voji143HXT3BwlXRtFq4rFNRUguwouA="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ca/cargo-xwin/package.nix b/pkgs/by-name/ca/cargo-xwin/package.nix index a964b7f3c7e7..fb2572b1f4fd 100644 --- a/pkgs/by-name/ca/cargo-xwin/package.nix +++ b/pkgs/by-name/ca/cargo-xwin/package.nix @@ -6,16 +6,16 @@ rustPlatform.buildRustPackage rec { pname = "cargo-xwin"; - version = "0.20.2"; + version = "0.21.2"; src = fetchFromGitHub { owner = "rust-cross"; repo = "cargo-xwin"; rev = "v${version}"; - hash = "sha256-M7OO2yO5BvNTqJLI50g25M5aupdOxmlZ3eealmP51Kc="; + hash = "sha256-GQV8Sy7BCkPGYusojZGQtaazTXONdJIZ4B4toO1Lj/w="; }; - cargoHash = "sha256-DwQGmdSzEjzqfsvqczAMJfi9gJjK2b9FAGmMi7rGKuw="; + cargoHash = "sha256-fVr5W5xpucqUyKpDcubAh6GkB0roJ548EHgaIzqVJl0="; meta = { description = "Cross compile Cargo project to Windows MSVC target with ease"; diff --git a/pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix b/pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix index 6e4713428d87..5afd24f0b573 100644 --- a/pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix +++ b/pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix @@ -11,16 +11,13 @@ rustc, setuptools-rust, openssl, - Security ? null, isPyPy, cffi, pkg-config, pytestCheckHook, pytest-subtests, - pythonOlder, pretend, libiconv, - libxcrypt, iso8601, py, pytz, @@ -90,8 +87,7 @@ buildPythonPackage rec { ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv - ] - ++ lib.optionals (pythonOlder "3.9") [ libxcrypt ]; + ]; propagatedBuildInputs = lib.optionals (!isPyPy) [ cffi ]; diff --git a/pkgs/by-name/cg/cgt-calc/package.nix b/pkgs/by-name/cg/cgt-calc/package.nix index ee7aeb9813c3..9cb0f8732e9a 100644 --- a/pkgs/by-name/cg/cgt-calc/package.nix +++ b/pkgs/by-name/cg/cgt-calc/package.nix @@ -1,22 +1,35 @@ { lib, fetchFromGitHub, + fetchpatch, python3Packages, withTeXLive ? true, texliveSmall, }: -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "cgt-calc"; - version = "1.13.0"; + version = "1.14.0"; pyproject = true; src = fetchFromGitHub { owner = "KapJI"; repo = "capital-gains-calculator"; - rev = "v${version}"; - hash = "sha256-y/Y05wG89nccXyxfjqazyPJhd8dOkfwRJre+Rzx97Hw="; + rev = "v${finalAttrs.version}"; + hash = "sha256-6iOlDNlpfCrbRCxEJsRYw6zqOehv/buVN+iU6J6CtIk="; }; + patches = [ + # https://github.com/KapJI/capital-gains-calculator/pull/715 + (fetchpatch { + url = "https://github.com/KapJI/capital-gains-calculator/commit/ec7155c1256b876d5906a3885656489e9fdd798c.patch"; + hash = "sha256-pfGHSKuDRF0T1hP7kpRC285limd1voqLXcXCP7mAD3s="; + }) + ]; + + pythonRelaxDeps = [ + "defusedxml" + ]; + build-system = with python3Packages; [ poetry-core ]; @@ -26,6 +39,7 @@ python3Packages.buildPythonApplication rec { jinja2 pandas requests + pyrate-limiter types-requests yfinance ]; @@ -45,4 +59,4 @@ python3Packages.buildPythonApplication rec { maintainers = with lib.maintainers; [ ambroisie ]; platforms = lib.platforms.unix; }; -} +}) diff --git a/pkgs/by-name/ch/chatbox/package.nix b/pkgs/by-name/ch/chatbox/package.nix index 6a3561e7260e..63a554668463 100644 --- a/pkgs/by-name/ch/chatbox/package.nix +++ b/pkgs/by-name/ch/chatbox/package.nix @@ -6,11 +6,11 @@ }: let pname = "chatbox"; - version = "1.18.2"; + version = "1.18.4"; src = fetchurl { url = "https://download.chatboxai.app/releases/Chatbox-${version}-x86_64.AppImage"; - hash = "sha256-5SDoObRi+Zwq4ZvnPz1dYvjhU5oLHbbAG4X4E8KfFbA="; + hash = "sha256-6BUvwL87ndtI2lFMcNKxpdOpn+EyUhAK9jc+a/zpjpU="; }; appimageContents = appimageTools.extract { inherit pname version src; }; diff --git a/pkgs/by-name/ch/chirp/package.nix b/pkgs/by-name/ch/chirp/package.nix index e6b8d383a3e7..32fb80eab144 100644 --- a/pkgs/by-name/ch/chirp/package.nix +++ b/pkgs/by-name/ch/chirp/package.nix @@ -11,14 +11,14 @@ python3Packages.buildPythonApplication { pname = "chirp"; - version = "0.4.0-unstable-2026-01-12"; + version = "0.4.0-unstable-2026-01-17"; pyproject = true; src = fetchFromGitHub { owner = "kk7ds"; repo = "chirp"; - rev = "e6100c8a3d4769848db16b9557c585bf9ff5c58c"; - hash = "sha256-DpM8agWg0D4PJN7yR2frPCF7nnDt6ksv9PtQwqOJSos="; + rev = "a98aca98ea0aaf8aec1f13b088eaff6bd1ea5632"; + hash = "sha256-IjsdKKevGgn0ZyxjlxRPhdnApR8/O3tDdIjQS61aM/s="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/cl/clash-rs/package.nix b/pkgs/by-name/cl/clash-rs/package.nix index 7c704ea10369..5330bcd2b9db 100644 --- a/pkgs/by-name/cl/clash-rs/package.nix +++ b/pkgs/by-name/cl/clash-rs/package.nix @@ -10,16 +10,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "clash-rs"; - version = "0.9.3"; + version = "0.9.4"; src = fetchFromGitHub { owner = "Watfaq"; repo = "clash-rs"; tag = "v${finalAttrs.version}"; - hash = "sha256-MVj+GcSt0Q9bWLz7MpCIj9MtnHh/GRB3p+DapMPLxeY="; + hash = "sha256-WtNnBw0/eAz/uO/dlD2yRZHW38CXIT8zhh4lZ3HaIFs="; }; - cargoHash = "sha256-Ikur9G6oSdKbK7gdZozBkplUjPfSjIABTVHjX7UPPvc="; + cargoHash = "sha256-8SLBsYtO6qVihc/C9R3ZptHCKgl2iXiQrOWqgDBXdTc="; cargoPatches = [ ./Cargo.patch ]; diff --git a/pkgs/by-name/cl/cloudflare-warp/package.nix b/pkgs/by-name/cl/cloudflare-warp/package.nix index 1715759a7690..a83bfc047df7 100644 --- a/pkgs/by-name/cl/cloudflare-warp/package.nix +++ b/pkgs/by-name/cl/cloudflare-warp/package.nix @@ -20,19 +20,29 @@ jq, ripgrep, common-updater-scripts, + xar, + cpio, headless ? false, }: let - version = "2025.9.558"; + version = "2025.10.186.0"; sources = { x86_64-linux = fetchurl { - url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}.0_amd64.deb"; - hash = "sha256-eYPy8YnP/vvYmvvjvF6Y0gSzdglsvoPW6CJ5npjrtpo="; + url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}_amd64.deb"; + hash = "sha256-l+csDSBXRAFb2075ciCAlE0bS5F48mAIK/Bv1r3Q8GE="; }; aarch64-linux = fetchurl { - url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}.0_arm64.deb"; - hash = "sha256-K8XENo+9n3ChmQ33wAg/KiVHjNOKOXp6UQM2fpntgkE="; + url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}_arm64.deb"; + hash = "sha256-S6CfWYzcv+1Djj+TX+lrP5eG7oIpM0JrqtSw/UDD9ko="; + }; + x86_64-darwin = fetchurl { + url = "https://downloads.cloudflareclient.com/v1/download/macos/version/${version}"; + hash = "sha256-nnoOXPSpOJRyNdCC0/YAoBK8SwB+++qVwgZplrjNi2U="; + }; + aarch64-darwin = fetchurl { + url = "https://downloads.cloudflareclient.com/v1/download/macos/version/${version}"; + hash = "sha256-nnoOXPSpOJRyNdCC0/YAoBK8SwB+++qVwgZplrjNi2U="; }; }; in @@ -46,26 +56,34 @@ stdenv.mkDerivation (finalAttrs: { or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); nativeBuildInputs = [ + makeWrapper + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + xar + cpio + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ dpkg autoPatchelfHook versionCheckHook - makeWrapper ] - ++ lib.optionals (!headless) [ + ++ lib.optionals (!headless && stdenv.hostPlatform.isLinux) [ copyDesktopItems desktop-file-utils ]; - buildInputs = [ - dbus - libpcap - openssl - nss - (lib.getLib stdenv.cc.cc) - ] - ++ lib.optionals (!headless) [ - gtk3 - ]; + buildInputs = lib.optionals stdenv.hostPlatform.isLinux ( + [ + dbus + libpcap + openssl + nss + (lib.getLib stdenv.cc.cc) + ] + ++ lib.optionals (!headless) [ + gtk3 + ] + ); desktopItems = lib.optionals (!headless) [ (makeDesktopItem { @@ -88,48 +106,78 @@ stdenv.mkDerivation (finalAttrs: { "libpcap.so.0.8" ]; - installPhase = '' - runHook preInstall + unpackPhase = lib.optionalString stdenv.hostPlatform.isDarwin '' + runHook preUnpack - mv usr $out - mv bin $out - mv etc $out - patchelf --replace-needed libpcap.so.0.8 ${libpcap}/lib/libpcap.so $out/bin/warp-dex - mv lib/systemd/system $out/lib/systemd/ - substituteInPlace $out/lib/systemd/system/warp-svc.service \ - --replace-fail "ExecStart=" "ExecStart=$out" - ${lib.optionalString (!headless) '' - substituteInPlace $out/lib/systemd/user/warp-taskbar.service \ - --replace-fail "ExecStart=" "ExecStart=$out" \ - --replace-fail "BindsTo=" "PartOf=" + xar -xf $src + zcat < Cloudflare_WARP_${version}.pkg/Payload | cpio -i - cat >>$out/lib/systemd/user/warp-taskbar.service <= 6.1.0) + fakeredis (0.1.4) + ffaker (2.25.0) +- ffi (1.17.2-aarch64-linux-gnu) +- ffi (1.17.2-arm-linux-gnu) +- ffi (1.17.2-arm64-darwin) +- ffi (1.17.2-x86-linux-gnu) +- ffi (1.17.2-x86_64-darwin) +- ffi (1.17.2-x86_64-linux-gnu) ++ ffi (1.17.2) + foreman (0.90.0) + thor (~> 1.4) + fugit (1.11.1) diff --git a/pkgs/by-name/da/dawarich/0002-openssl-hotfix.diff b/pkgs/by-name/da/dawarich/0002-openssl-hotfix.diff new file mode 100644 index 000000000000..a17bea34279e --- /dev/null +++ b/pkgs/by-name/da/dawarich/0002-openssl-hotfix.diff @@ -0,0 +1,32 @@ +diff --git a/Gemfile b/Gemfile +index 36cf0d9c..fc914849 100644 +--- a/Gemfile ++++ b/Gemfile +@@ -28,6 +28,7 @@ gem 'omniauth-github', '~> 2.0.0' + gem 'omniauth-google-oauth2' + gem 'omniauth_openid_connect' + gem 'omniauth-rails_csrf_protection' ++gem 'openssl' + gem 'parallel' + gem 'pg' + gem 'prometheus_exporter' +diff --git a/Gemfile.lock b/Gemfile.lock +index a32eb801..b2fc45bc 100644 +--- a/Gemfile.lock ++++ b/Gemfile.lock +@@ -348,6 +348,7 @@ GEM + tzinfo + validate_url + webfinger (~> 2.0) ++ openssl (3.3.1) + optimist (3.2.1) + orm_adapter (0.5.0) + ostruct (0.6.1) +@@ -665,6 +666,7 @@ DEPENDENCIES + omniauth-google-oauth2 + omniauth-rails_csrf_protection + omniauth_openid_connect ++ openssl + parallel + pg + prometheus_exporter diff --git a/pkgs/by-name/da/dawarich/gemset.nix b/pkgs/by-name/da/dawarich/gemset.nix new file mode 100644 index 000000000000..fdcca67bb9bd --- /dev/null +++ b/pkgs/by-name/da/dawarich/gemset.nix @@ -0,0 +1,3390 @@ +{ + actioncable = { + dependencies = [ + "actionpack" + "activesupport" + "nio4r" + "websocket-driver" + "zeitwerk" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "14vlhzrgfgmz0fvrvd81j9xfw8ig091yiwq496firapgxffd7jpq"; + type = "gem"; + }; + version = "8.0.3"; + }; + actionmailbox = { + dependencies = [ + "actionpack" + "activejob" + "activerecord" + "activestorage" + "activesupport" + "mail" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0bxxqqflmczwl4ivcqjwwsnrhljcalk1i2hj02qisr3wjgw4811a"; + type = "gem"; + }; + version = "8.0.3"; + }; + actionmailer = { + dependencies = [ + "actionpack" + "actionview" + "activejob" + "activesupport" + "mail" + "rails-dom-testing" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "08y7ihafq71879ncq963rwi541b0gafqx8h5ba26zab521qc7h3d"; + type = "gem"; + }; + version = "8.0.3"; + }; + actionpack = { + dependencies = [ + "actionview" + "activesupport" + "nokogiri" + "rack" + "rack-session" + "rack-test" + "rails-dom-testing" + "rails-html-sanitizer" + "useragent" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1lsspr8nffzn8qpfmj654w1qja1915x6bnzzhpbjj1cy235j2g6n"; + type = "gem"; + }; + version = "8.0.3"; + }; + actiontext = { + dependencies = [ + "actionpack" + "activerecord" + "activestorage" + "activesupport" + "globalid" + "nokogiri" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1x4xd8h5sdwdm3rc8h2pxxmq4a0i0wa0gk6c56zq58pzc3xgsihw"; + type = "gem"; + }; + version = "8.0.3"; + }; + actionview = { + dependencies = [ + "activesupport" + "builder" + "erubi" + "rails-dom-testing" + "rails-html-sanitizer" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0rnfn44g217n9hgvn4ga7l0hl149b91djnl07nzra7kxy1pr8wai"; + type = "gem"; + }; + version = "8.0.3"; + }; + activejob = { + dependencies = [ + "activesupport" + "globalid" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1dm1vc5vvk5pwq4x7sfh3g6qzzwbyac37ggh1mm1rzraharxv7j6"; + type = "gem"; + }; + version = "8.0.3"; + }; + activemodel = { + dependencies = [ "activesupport" ]; + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0z565q17fmhj4b9j689r0xx1s26w1xcw8z0qyb6h8v0wb8j0fsa0"; + type = "gem"; + }; + version = "8.0.3"; + }; + activerecord = { + dependencies = [ + "activemodel" + "activesupport" + "timeout" + ]; + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1a6fng58lria02wlwiqjgqway0nx1wq31dsxn5xvbk7958xwd5cv"; + type = "gem"; + }; + version = "8.0.3"; + }; + activerecord-postgis-adapter = { + dependencies = [ + "activerecord" + "rgeo-activerecord" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "06xp91kanz3w2s89wqb97fzzzcpy79rfjjs4zq85m402zg2fm08w"; + type = "gem"; + }; + version = "11.0.0"; + }; + activestorage = { + dependencies = [ + "actionpack" + "activejob" + "activerecord" + "activesupport" + "marcel" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0plck0b57b9ni8n52hj5slv5n8i7w3nfwq6r47nkb2hjbpmsskjg"; + type = "gem"; + }; + version = "8.0.3"; + }; + activesupport = { + dependencies = [ + "base64" + "benchmark" + "bigdecimal" + "concurrent-ruby" + "connection_pool" + "drb" + "i18n" + "logger" + "minitest" + "securerandom" + "tzinfo" + "uri" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "08vqq5y6vniz30p747xa8yfqb3cz8scqd8r65wij62v661gcw4d7"; + type = "gem"; + }; + version = "8.0.3"; + }; + addressable = { + dependencies = [ "public_suffix" ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0cl2qpvwiffym62z991ynks7imsm87qmgxf0yfsmlwzkgi9qcaa6"; + type = "gem"; + }; + version = "2.8.7"; + }; + aes_key_wrap = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "19bn0y70qm6mfj4y1m0j3s8ggh6dvxwrwrj5vfamhdrpddsz8ddr"; + type = "gem"; + }; + version = "1.1.0"; + }; + ast = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "10yknjyn0728gjn6b5syynvrvrwm66bhssbxq8mkhshxghaiailm"; + type = "gem"; + }; + version = "2.4.3"; + }; + attr_extras = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "09y83ygjsk4rva8bn9mfb4whjh7q2sl4093n6wnvm1axvnlwjvyr"; + type = "gem"; + }; + version = "7.1.0"; + }; + attr_required = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "16fbwr6nmsn97n0a6k1nwbpyz08zpinhd6g7196lz1syndbgrszh"; + type = "gem"; + }; + version = "1.0.2"; + }; + aws-eventstream = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mvjjn8vh1c3nhibmjj9qcwxagj6m9yy961wblfqdmvhr9aklb3y"; + type = "gem"; + }; + version = "1.3.2"; + }; + aws-partitions = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "06y8bc0iasxm2m9l6yz84kp7d0nka52z6adz4ia09rv1ry1czrm6"; + type = "gem"; + }; + version = "1.1072.0"; + }; + aws-sdk-core = { + dependencies = [ + "aws-eventstream" + "aws-partitions" + "aws-sigv4" + "jmespath" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1vmi65a22dq0rhjiydr94zwpn9hx3vib7vp922ccjg0vrih7mlzy"; + type = "gem"; + }; + version = "3.215.1"; + }; + aws-sdk-kms = { + dependencies = [ + "aws-sdk-core" + "aws-sigv4" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0xd3ddd9jiapkgv8im4pl9dcdy2ps7qjsssf2nz3q6sd1ca8x0di"; + type = "gem"; + }; + version = "1.96.0"; + }; + aws-sdk-s3 = { + dependencies = [ + "aws-sdk-core" + "aws-sdk-kms" + "aws-sigv4" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "10ziy8zslfjs0ihls7wiq6zvsncq89azh36rshmlylry1hhxjbxz"; + type = "gem"; + }; + version = "1.177.0"; + }; + aws-sigv4 = { + dependencies = [ "aws-eventstream" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1nx1il781qg58nwjkkdn9fw741cjjnixfsh389234qm8j5lpka2h"; + type = "gem"; + }; + version = "1.11.0"; + }; + base64 = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0yx9yn47a8lkfcjmigk79fykxvr80r4m1i35q82sxzynpbm7lcr7"; + type = "gem"; + }; + version = "0.3.0"; + }; + bcrypt = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "16a0g2q40biv93i1hch3gw8rbmhp77qnnifj1k0a6m7dng3zh444"; + type = "gem"; + }; + version = "3.1.20"; + }; + benchmark = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0v1337j39w1z7x9zs4q7ag0nfv4vs4xlsjx2la0wpv8s6hig2pa6"; + type = "gem"; + }; + version = "0.5.0"; + }; + bigdecimal = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "19y406nx17arzsbc515mjmr6k5p59afprspa1k423yd9cp8d61wb"; + type = "gem"; + }; + version = "4.0.1"; + }; + bindata = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0n4ymlgik3xcg94h52dzmh583ss40rl3sn0kni63v56sq8g6l62k"; + type = "gem"; + }; + version = "2.5.1"; + }; + bootsnap = { + dependencies = [ "msgpack" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "003xl226y120cbq1n99805jw6w75gcz1gs941yz3h7li3qy3kqha"; + type = "gem"; + }; + version = "1.18.6"; + }; + brakeman = { + dependencies = [ "racc" ]; + groups = [ + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "164l8dh3c22c8448hgd0zqhsffxvn4d9wad2zzipav29sssjd532"; + type = "gem"; + }; + version = "7.1.1"; + }; + builder = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0pw3r2lyagsxkm71bf44v5b74f7l9r7di22brbyji9fwz791hya9"; + type = "gem"; + }; + version = "3.3.0"; + }; + bundler-audit = { + dependencies = [ "thor" ]; + groups = [ + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0j0h5cgnzk0ms17ssjkzfzwz65ggrs3lsp53a1j46p4616m1s1bk"; + type = "gem"; + }; + version = "0.9.2"; + }; + byebug = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "07hsr9zzl2mvf5gk65va4smdizlk9rsiz8wwxik0p96cj79518fl"; + type = "gem"; + }; + version = "12.0.0"; + }; + capybara = { + dependencies = [ + "addressable" + "matrix" + "mini_mime" + "nokogiri" + "rack" + "rack-test" + "regexp_parser" + "xpath" + ]; + groups = [ "test" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1vxfah83j6zpw3v5hic0j70h519nvmix2hbszmjwm8cfawhagns2"; + type = "gem"; + }; + version = "3.40.0"; + }; + chartkick = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0jcr6rjfb3q0jpnivpl1dw7iz2mwvsxv0zh7ipr317qqhzgdfj18"; + type = "gem"; + }; + version = "5.2.1"; + }; + chunky_png = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1znw5x86hmm9vfhidwdsijz8m38pqgmv98l9ryilvky0aldv7mc9"; + type = "gem"; + }; + version = "1.4.0"; + }; + coderay = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0jvxqxzply1lwp7ysn94zjhh57vc14mcshw1ygw14ib8lhc00lyw"; + type = "gem"; + }; + version = "1.1.3"; + }; + concurrent-ruby = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1aymcakhzl83k77g2f2krz07bg1cbafbcd2ghvwr4lky3rz86mkb"; + type = "gem"; + }; + version = "1.3.6"; + }; + connection_pool = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1b8nlxr5z843ii7hfk6igpr5acw3k2ih9yjrgkyz2gbmallgjkz5"; + type = "gem"; + }; + version = "2.5.5"; + }; + crack = { + dependencies = [ + "bigdecimal" + "rexml" + ]; + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0zjcdl5i6lw508r01dym05ibhkc784cfn93m1d26c7fk1hwi0jpz"; + type = "gem"; + }; + version = "1.0.1"; + }; + crass = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw"; + type = "gem"; + }; + version = "1.0.6"; + }; + cronex = { + dependencies = [ + "tzinfo" + "unicode" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "11i1psgzcqzj4a7p62vy56i5p8s00d29y9rf9wf9blpshph99ir1"; + type = "gem"; + }; + version = "0.15.0"; + }; + css-zero = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1jiihfxvfw0wl42m0jzpq94iqa2ra878dqllkk34w49pv0wsgrkz"; + type = "gem"; + }; + version = "1.1.15"; + }; + csv = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1kfqg0m6vqs6c67296f10cr07im5mffj90k2b5dsm51liidcsvp9"; + type = "gem"; + }; + version = "3.3.4"; + }; + data_migrate = { + dependencies = [ + "activerecord" + "railties" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1ywg2qvpf1yxfbcdwmw2pl274i4bicjc4gsz6gaq5r0mklcb5f8q"; + type = "gem"; + }; + version = "11.3.1"; + }; + database_consistency = { + dependencies = [ "activerecord" ]; + groups = [ "development" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "19yf280vw91ji4prrbk17qy336l1y1jqvwsnhf3fc7yscim431sj"; + type = "gem"; + }; + version = "2.0.6"; + }; + date = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1rbfqkzr6i8b6538z16chvrkgywf5p5vafsgmnbmvrmh0ingsx2y"; + type = "gem"; + }; + version = "3.5.0"; + }; + debug = { + dependencies = [ + "irb" + "reline" + ]; + groups = [ + "development" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1wmfy5n5v2rzpr5vz698sqfj1gl596bxrqw44sahq4x0rxjdn98l"; + type = "gem"; + }; + version = "1.11.0"; + }; + devise = { + dependencies = [ + "bcrypt" + "orm_adapter" + "railties" + "responders" + "warden" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1y57fpcvy1kjd4nb7zk7mvzq62wqcpfynrgblj558k3hbvz4404j"; + type = "gem"; + }; + version = "4.9.4"; + }; + diff-lcs = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0qlrj2qyysc9avzlr4zs1py3x684hqm61n4czrsk1pyllz5x5q4s"; + type = "gem"; + }; + version = "1.6.2"; + }; + docile = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "07pj4z3h8wk4fgdn6s62vw1lwvhj0ac0x10vfbdkr9xzk7krn5cn"; + type = "gem"; + }; + version = "1.4.1"; + }; + dotenv = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1hwjsddv666wpp42bip3fqx7c5qq6s8lwf74dj71yn7d1h37c4cy"; + type = "gem"; + }; + version = "3.1.8"; + }; + dotenv-rails = { + dependencies = [ + "dotenv" + "railties" + ]; + groups = [ + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1i40g6kzwp8yxsxzpzgsq2hww9gxryl5lck1bwxshn4bd8id3ja6"; + type = "gem"; + }; + version = "3.1.8"; + }; + drb = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0wrkl7yiix268s2md1h6wh91311w95ikd8fy8m5gx589npyxc00b"; + type = "gem"; + }; + version = "2.2.3"; + }; + email_validator = { + dependencies = [ "activemodel" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0106y8xakq6frv2xc68zz76q2l2cqvhfjc7ji69yyypcbc4kicjs"; + type = "gem"; + }; + version = "2.2.4"; + }; + erb = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0y95ynlfngs0s5x1w6mwralszhbi9d75lcdbdkqk75wcklzqjc17"; + type = "gem"; + }; + version = "6.0.0"; + }; + erubi = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1naaxsqkv5b3vklab5sbb9sdpszrjzlfsbqpy7ncbnw510xi10m0"; + type = "gem"; + }; + version = "1.13.1"; + }; + et-orbi = { + dependencies = [ "tzinfo" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1g785lz4z2k7jrdl7bnnjllzfrwpv9pyki94ngizj8cqfy83qzkc"; + type = "gem"; + }; + version = "1.4.0"; + }; + factory_bot = { + dependencies = [ "activesupport" ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1gpgcr5dfrq7hs3wafxaqrkx84zm2rlfwbwamd6p1d71mrfjjnff"; + type = "gem"; + }; + version = "6.5.5"; + }; + factory_bot_rails = { + dependencies = [ + "factory_bot" + "railties" + ]; + groups = [ + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0s3dpi8x754bwv4mlasdal8ffiahi4b4ajpccnkaipp4x98lik6k"; + type = "gem"; + }; + version = "6.5.1"; + }; + fakeredis = { + groups = [ "test" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0xlkcavchj9l9457q4gfjynrzj3d9q9p8sxwclqrn4g2wjdc8vap"; + type = "gem"; + }; + version = "0.1.4"; + }; + faraday = { + dependencies = [ + "faraday-net_http" + "json" + "logger" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1ka175ci0q9ylpcy651pjj580diplkaskycn4n7jcmbyv7jwz6c6"; + type = "gem"; + }; + version = "2.14.0"; + }; + faraday-follow_redirects = { + dependencies = [ "faraday" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1nfmmnmqgbxci7dlca0qnwxn8j29yv7v8wm26m0f4l0kmcc13ynk"; + type = "gem"; + }; + version = "0.4.0"; + }; + faraday-net_http = { + dependencies = [ "net-http" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0fxbckg468dabkkznv48ss8zv14d9cd8mh1rr3m98aw7wzx5fmq9"; + type = "gem"; + }; + version = "3.4.1"; + }; + ffaker = { + groups = [ + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0h7crcdqddlds3kx0q3vsx3cm6s62psvfx98crasqnhrz2nwb1g4"; + type = "gem"; + }; + version = "2.25.0"; + }; + ffi = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "19kdyjg3kv7x0ad4xsd4swy5izsbb1vl1rpb6qqcqisr5s23awi9"; + type = "gem"; + }; + version = "1.17.2"; + }; + foreman = { + dependencies = [ "thor" ]; + groups = [ "development" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0z0i7wn1x5ii3i9q9c4d3ps0d3zfw71llvaaf5caq1xn8wnmwrzz"; + type = "gem"; + }; + version = "0.90.0"; + }; + fugit = { + dependencies = [ + "et-orbi" + "raabro" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0s5gg88f2d5wpppgrgzfhnyi9y2kzprvhhjfh3q1bd79xmwg962q"; + type = "gem"; + }; + version = "1.12.1"; + }; + geocoder = { + dependencies = [ + "base64" + "csv" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + fetchSubmodules = false; + rev = "12ac3e659fc5b57c1ffd12f04b8cad2f73d0939c"; + sha256 = "0k4wafl8f3v3vv3zzy1v9b4yiz3nz15zy41kg8j4fx1kbcvasgm1"; + type = "git"; + url = "https://github.com/Freika/geocoder.git"; + }; + version = "1.8.5"; + }; + globalid = { + dependencies = [ "activesupport" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "04gzhqvsm4z4l12r9dkac9a75ah45w186ydhl0i4andldsnkkih5"; + type = "gem"; + }; + version = "1.3.0"; + }; + gpx = { + dependencies = [ + "csv" + "nokogiri" + "rake" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1cgm6dzzpslhgxcqcgqnpvargrq9d3v2xhxgan1l1cayc33pn837"; + type = "gem"; + }; + version = "1.2.1"; + }; + groupdate = { + dependencies = [ "activesupport" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0xv7zdaw799fvhbh0pdq2hi6lhvp1sid988l35l18s45yddqvamy"; + type = "gem"; + }; + version = "6.7.0"; + }; + h3 = { + dependencies = [ + "ffi" + "rgeo-geojson" + "zeitwerk" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1vgy9d5pafk2lkb9r1w3d3y6wbzdkc7ls5k83rc6r307cinjblwr"; + type = "gem"; + }; + version = "3.7.4"; + }; + hashdiff = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1lbw8lqzjv17vnwb9vy5ki4jiyihybcc5h2rmcrqiz1xa6y9s1ww"; + type = "gem"; + }; + version = "1.2.1"; + }; + hashie = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x"; + type = "gem"; + }; + version = "5.0.0"; + }; + httparty = { + dependencies = [ + "csv" + "mini_mime" + "multi_xml" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0mbbjr774zxb2wcpbwc93l0i481bxk7ga5hpap76w3q1y9idvh9s"; + type = "gem"; + }; + version = "0.23.1"; + }; + i18n = { + dependencies = [ "concurrent-ruby" ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1994i044vdmzzkyr76g8rpl1fq1532wf0sb21xg5r1ilj5iphmr8"; + type = "gem"; + }; + version = "1.14.8"; + }; + importmap-rails = { + dependencies = [ + "actionpack" + "activesupport" + "railties" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "05767zlpfafsairdl1kgalfdjlvydjsd1qdd5447hcpqj885p7vj"; + type = "gem"; + }; + version = "2.2.2"; + }; + io-console = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1jszj95hazqqpnrjjzr326nn1j32xmsc9xvd97mbcrrgdc54858y"; + type = "gem"; + }; + version = "0.8.1"; + }; + irb = { + dependencies = [ + "pp" + "rdoc" + "reline" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1aja320qnimlnfc80wf2i2x8i99kl5sdzfacsfzzfzzs3vzysja3"; + type = "gem"; + }; + version = "1.15.3"; + }; + jmespath = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1cdw9vw2qly7q7r41s7phnac264rbsdqgj4l0h4nqgbjb157g393"; + type = "gem"; + }; + version = "1.6.2"; + }; + json = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "01fmiz052cvnxgdnhb3qwcy88xbv7l3liz0fkvs5qgqqwjp0c1di"; + type = "gem"; + }; + version = "2.18.0"; + }; + json-jwt = { + dependencies = [ + "activesupport" + "aes_key_wrap" + "base64" + "bindata" + "faraday" + "faraday-follow_redirects" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1k64mp59jlbqd5hyy46pf93s3yl1xdngfy8i8flq2hn5nhk91ybg"; + type = "gem"; + }; + version = "1.17.0"; + }; + json-schema = { + dependencies = [ "addressable" ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1abl1a92zv9xxw3xb3hrzjpk8xiz2hp54lqmj6a2b900qs11mxxy"; + type = "gem"; + }; + version = "5.0.1"; + }; + jwt = { + dependencies = [ "base64" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1i8wmzgb5nfhvkx1f6bhdwfm7v772172imh439v3xxhkv3hllhp6"; + type = "gem"; + }; + version = "2.10.1"; + }; + kaminari = { + dependencies = [ + "activesupport" + "kaminari-actionview" + "kaminari-activerecord" + "kaminari-core" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0gia8irryvfhcr6bsr64kpisbgdbqjsqfgrk12a11incmpwny1y4"; + type = "gem"; + }; + version = "1.2.2"; + }; + kaminari-actionview = { + dependencies = [ + "actionview" + "kaminari-core" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "02f9ghl3a9b5q7l079d3yzmqjwkr4jigi7sldbps992rigygcc0k"; + type = "gem"; + }; + version = "1.2.2"; + }; + kaminari-activerecord = { + dependencies = [ + "activerecord" + "kaminari-core" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0c148z97s1cqivzbwrak149z7kl1rdmj7dxk6rpkasimmdxsdlqd"; + type = "gem"; + }; + version = "1.2.2"; + }; + kaminari-core = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1zw3pg6kj39y7jxakbx7if59pl28lhk98fx71ks5lr3hfgn6zliv"; + type = "gem"; + }; + version = "1.2.2"; + }; + language_server-protocol = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1k0311vah76kg5m6zr7wmkwyk5p2f9d9hyckjpn3xgr83ajkj7px"; + type = "gem"; + }; + version = "3.17.0.5"; + }; + lint_roller = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "11yc0d84hsnlvx8cpk4cbj6a4dz9pk0r1k29p0n1fz9acddq831c"; + type = "gem"; + }; + version = "1.1.0"; + }; + logger = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "00q2zznygpbls8asz5knjvvj2brr3ghmqxgr83xnrdj4rk3xwvhr"; + type = "gem"; + }; + version = "1.7.0"; + }; + lograge = { + dependencies = [ + "actionpack" + "activesupport" + "railties" + "request_store" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1qcsvh9k4c0cp6agqm9a8m4x2gg7vifryqr7yxkg2x9ph9silds2"; + type = "gem"; + }; + version = "0.14.0"; + }; + loofah = { + dependencies = [ + "crass" + "nokogiri" + ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0dx316q03x6rpdbl610rdaj2vfd5s8fanixk21j4gv3h5f230nk5"; + type = "gem"; + }; + version = "2.24.1"; + }; + mail = { + dependencies = [ + "logger" + "mini_mime" + "net-imap" + "net-pop" + "net-smtp" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0ha9sgkfqna62c1basc17dkx91yk7ppgjq32k4nhrikirlz6g9kg"; + type = "gem"; + }; + version = "2.9.0"; + }; + marcel = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1vhb1sbzlq42k2pzd9v0w5ws4kjx184y8h4d63296bn57jiwzkzx"; + type = "gem"; + }; + version = "1.1.0"; + }; + matrix = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1h2cgkpzkh3dd0flnnwfq6f3nl2b1zff9lvqz8xs853ssv5kq23i"; + type = "gem"; + }; + version = "0.4.2"; + }; + method_source = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1igmc3sq9ay90f8xjvfnswd1dybj1s3fi0dwd53inwsvqk4h24qq"; + type = "gem"; + }; + version = "1.1.0"; + }; + mini_mime = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1vycif7pjzkr29mfk4dlqv3disc5dn0va04lkwajlpr1wkibg0c6"; + type = "gem"; + }; + version = "1.1.5"; + }; + mini_portile2 = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "12f2830x7pq3kj0v8nz0zjvaw02sv01bqs1zwdrc04704kwcgmqc"; + type = "gem"; + }; + version = "2.8.9"; + }; + minitest = { + dependencies = [ "prism" ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1fslin1vyh60snwygx8jnaj4kwhk83f3m0v2j2b7bsg2917wfm3q"; + type = "gem"; + }; + version = "6.0.1"; + }; + msgpack = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "04ihgnwp2ka68v82a6jpk9yqmazfwnbk3vsz6sb040kq6gf53dzd"; + type = "gem"; + }; + version = "1.7.3"; + }; + multi_json = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z"; + type = "gem"; + }; + version = "1.15.0"; + }; + multi_xml = { + dependencies = [ "bigdecimal" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0wyzwvch1a4c77g5zjwjhgf9z5inzngq42b197dm9qzqjb8dqjld"; + type = "gem"; + }; + version = "0.8.0"; + }; + net-http = { + dependencies = [ "uri" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1ysrwaabhf0sn24jrp0nnp51cdv0jf688mh5i6fsz63q2c6b48cn"; + type = "gem"; + }; + version = "0.6.0"; + }; + net-imap = { + dependencies = [ + "date" + "net-protocol" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0i24prs7yy1p1zdps2x1ksb7lmvbn2f0llxwdjdw3z2ksddx136b"; + type = "gem"; + }; + version = "0.5.12"; + }; + net-pop = { + dependencies = [ "net-protocol" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1wyz41jd4zpjn0v1xsf9j778qx1vfrl24yc20cpmph8k42c4x2w4"; + type = "gem"; + }; + version = "0.1.2"; + }; + net-protocol = { + dependencies = [ "timeout" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1a32l4x73hz200cm587bc29q8q9az278syw3x6fkc9d1lv5y0wxa"; + type = "gem"; + }; + version = "0.2.2"; + }; + net-smtp = { + dependencies = [ "net-protocol" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0dh7nzjp0fiaqq1jz90nv4nxhc2w359d7c199gmzq965cfps15pd"; + type = "gem"; + }; + version = "0.5.1"; + }; + nio4r = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1a9www524fl1ykspznz54i0phfqya4x45hqaz67in9dvw1lfwpfr"; + type = "gem"; + }; + version = "2.7.4"; + }; + nokogiri = { + dependencies = [ + "mini_portile2" + "racc" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1hcwwr2h8jnqqxmf8mfb52b0dchr7pm064ingflb78wa00qhgk6m"; + type = "gem"; + }; + version = "1.18.10"; + }; + oauth2 = { + dependencies = [ + "faraday" + "jwt" + "logger" + "multi_xml" + "rack" + "snaky_hash" + "version_gem" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0dcqwwlm8afr97mg1i633yia3hzd61f0j5csrspzsvf0mfp85qf4"; + type = "gem"; + }; + version = "2.0.17"; + }; + oj = { + dependencies = [ + "bigdecimal" + "ostruct" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1cajn3ylwhby1x51d9hbchm964qwb5zp63f7sfdm55n85ffn1ara"; + type = "gem"; + }; + version = "3.16.11"; + }; + omniauth = { + dependencies = [ + "hashie" + "logger" + "rack" + "rack-protection" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0g3n12k5npmmgai2cs3snimy6r7h0bvalhjxv0fjxlphjq25p822"; + type = "gem"; + }; + version = "2.1.4"; + }; + omniauth-github = { + dependencies = [ + "omniauth" + "omniauth-oauth2" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1m6a7kg3lxz2nm96prln2ja8r4wlm37m5vsy9199vnynqq5fgy4g"; + type = "gem"; + }; + version = "2.0.1"; + }; + omniauth-google-oauth2 = { + dependencies = [ + "jwt" + "oauth2" + "omniauth" + "omniauth-oauth2" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1pdf3bx036l6ggz6lkkykv77m9k4jypwsiw1q7874czwh2v50768"; + type = "gem"; + }; + version = "1.2.1"; + }; + omniauth-oauth2 = { + dependencies = [ + "oauth2" + "omniauth" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0y4y122xm8zgrxn5nnzwg6w39dnjss8pcq2ppbpx9qn7kiayky5j"; + type = "gem"; + }; + version = "1.8.0"; + }; + omniauth-rails_csrf_protection = { + dependencies = [ + "actionpack" + "omniauth" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1q2zvkw34vk1vyhn5kp30783w1wzam9i9g5ygsdjn2gz59kzsw0i"; + type = "gem"; + }; + version = "1.0.2"; + }; + omniauth_openid_connect = { + dependencies = [ + "omniauth" + "openid_connect" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "099xg7s6450wlfzs77mbdx78g3dp0glx5q6f44i78akf7283hbqz"; + type = "gem"; + }; + version = "0.8.0"; + }; + openid_connect = { + dependencies = [ + "activemodel" + "attr_required" + "email_validator" + "faraday" + "faraday-follow_redirects" + "json-jwt" + "mail" + "rack-oauth2" + "swd" + "tzinfo" + "validate_url" + "webfinger" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "10i13cn40jiiw8lslkv7bj1isinnwbmzlk6msgiph3gqry08702x"; + type = "gem"; + }; + version = "2.3.1"; + }; + openssl = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0dzq3k5hmqlav2mwf7bc10mr1mlmlnpin498g7jhbhpdpa324s6n"; + type = "gem"; + }; + version = "3.3.1"; + }; + optimist = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0kp3f8g7g7cbw5vfkmpdv71pphhpcxk3lpc892mj9apkd7ys1y4c"; + type = "gem"; + }; + version = "3.2.1"; + }; + orm_adapter = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda"; + type = "gem"; + }; + version = "0.5.0"; + }; + ostruct = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "05xqijcf80sza5pnlp1c8whdaay8x5dc13214ngh790zrizgp8q9"; + type = "gem"; + }; + version = "0.6.1"; + }; + pagy = { + dependencies = [ + "json" + "yaml" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "08pikkvj916fw75l7ycmzb3gf1w9cp3h1jphls0pnqbphf1v3r4g"; + type = "gem"; + }; + version = "43.2.2"; + }; + parallel = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0c719bfgcszqvk9z47w2p8j2wkz5y35k48ywwas5yxbbh3hm3haa"; + type = "gem"; + }; + version = "1.27.0"; + }; + parser = { + dependencies = [ + "ast" + "racc" + ]; + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mmb59323ldv6vxfmy98azgsla9k3di3fasvpb28hnn5bkx8fdff"; + type = "gem"; + }; + version = "3.3.10.0"; + }; + patience_diff = { + dependencies = [ "optimist" ]; + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0b42yr1yyph9knibnf7v896wzfqf9mmzlw00m3sgy0mghr20k4pl"; + type = "gem"; + }; + version = "1.2.0"; + }; + pg = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0xf8i58shwvwlka4ld12nxcgqv0d5r1yizsvw74w5jaw83yllqaq"; + type = "gem"; + }; + version = "1.6.2"; + }; + pp = { + dependencies = [ "prettyprint" ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1xlxmg86k5kifci1xvlmgw56x88dmqf04zfzn7zcr4qb8ladal99"; + type = "gem"; + }; + version = "0.6.3"; + }; + prettyprint = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "14zicq3plqi217w6xahv7b8f7aj5kpxv1j1w98344ix9h5ay3j9b"; + type = "gem"; + }; + version = "0.2.0"; + }; + prism = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "00silqnlzzm97gn21lm39q95hjn058waqky44j25r67p9drjy1hh"; + type = "gem"; + }; + version = "1.7.0"; + }; + prometheus_exporter = { + dependencies = [ "webrick" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "15vl8fw8vjnaj9g129dzrwk9nlrdqgffaj3rys4ba9ns2bqim9rq"; + type = "gem"; + }; + version = "2.2.0"; + }; + pry = { + dependencies = [ + "coderay" + "method_source" + ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0ssv704qg75mwlyagdfr9xxbzn1ziyqgzm0x474jkynk8234pm8j"; + type = "gem"; + }; + version = "0.15.2"; + }; + pry-byebug = { + dependencies = [ + "byebug" + "pry" + ]; + groups = [ + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0wpa3jd46h44rjz3hjwl5c0zfx3jav4a64nm8h0g1iwv61yvn2hb"; + type = "gem"; + }; + version = "3.11.0"; + }; + pry-rails = { + dependencies = [ "pry" ]; + groups = [ + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0garafb0lxbm3sx2r9pqgs7ky9al58cl3wmwc0gmvmrl9bi2i7m6"; + type = "gem"; + }; + version = "0.3.11"; + }; + psych = { + dependencies = [ + "date" + "stringio" + ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0vii1xc7x81hicdbp7dlllhmbw5w3jy20shj696n0vfbbnm2hhw1"; + type = "gem"; + }; + version = "5.2.6"; + }; + public_suffix = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1543ap9w3ydhx39ljcd675cdz9cr948x9mp00ab8qvq6118wv9xz"; + type = "gem"; + }; + version = "6.0.2"; + }; + puma = { + dependencies = [ "nio4r" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1pa9zpr51kqnsq549p6apvnr95s9flx6bnwqii24s8jg2b5i0p74"; + type = "gem"; + }; + version = "7.1.0"; + }; + pundit = { + dependencies = [ "activesupport" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1gcb23749jwggmgic4607ky6hm2c9fpkya980iihpy94m8miax73"; + type = "gem"; + }; + version = "2.5.2"; + }; + raabro = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "10m8bln9d00dwzjil1k42i5r7l82x25ysbi45fwyv4932zsrzynl"; + type = "gem"; + }; + version = "1.4.0"; + }; + racc = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0byn0c9nkahsl93y9ln5bysq4j31q8xkf2ws42swighxd4lnjzsa"; + type = "gem"; + }; + version = "1.8.1"; + }; + rack = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1xmnrk076sqymilydqgyzhkma3hgqhcv8xhy7ks479l2a3vvcx2x"; + type = "gem"; + }; + version = "3.2.4"; + }; + rack-oauth2 = { + dependencies = [ + "activesupport" + "attr_required" + "faraday" + "faraday-follow_redirects" + "json-jwt" + "rack" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0cn6a9v8nry9fx4zrzp1xakfp2n5xv5075j90q56m20k7zvjrq23"; + type = "gem"; + }; + version = "2.3.0"; + }; + rack-protection = { + dependencies = [ + "base64" + "logger" + "rack" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1b4bamcbpk29i7jvly3i7ayfj69yc1g03gm4s7jgamccvx12hvng"; + type = "gem"; + }; + version = "4.2.1"; + }; + rack-session = { + dependencies = [ + "base64" + "rack" + ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1sg4laz2qmllxh1c5sqlj9n1r7scdn08p3m4b0zmhjvyx9yw0v8b"; + type = "gem"; + }; + version = "2.1.1"; + }; + rack-test = { + dependencies = [ "rack" ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0qy4ylhcfdn65a5mz2hly7g9vl0g13p5a0rmm6sc0sih5ilkcnh0"; + type = "gem"; + }; + version = "2.2.0"; + }; + rackup = { + dependencies = [ "rack" ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "13brkq5xkj6lcdxj3f0k7v28hgrqhqxjlhd4y2vlicy5slgijdzp"; + type = "gem"; + }; + version = "2.2.1"; + }; + rails = { + dependencies = [ + "actioncable" + "actionmailbox" + "actionmailer" + "actionpack" + "actiontext" + "actionview" + "activejob" + "activemodel" + "activerecord" + "activestorage" + "activesupport" + "railties" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0igxnfy4xckvk2b6x17zrwa8xwnkxnpv36ca4wma7bhs5n1c10sx"; + type = "gem"; + }; + version = "8.0.3"; + }; + rails-dom-testing = { + dependencies = [ + "activesupport" + "minitest" + "nokogiri" + ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "07awj8bp7jib54d0khqw391ryw8nphvqgw4bb12cl4drlx9pkk4a"; + type = "gem"; + }; + version = "2.3.0"; + }; + rails-html-sanitizer = { + dependencies = [ + "loofah" + "nokogiri" + ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0q55i6mpad20m2x1lg5pkqfpbmmapk0sjsrvr1sqgnj2hb5f5z1m"; + type = "gem"; + }; + version = "1.6.2"; + }; + rails_icons = { + dependencies = [ + "nokogiri" + "rails" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0aixqyan3ik3z84135wn0zvvfb8krj4qxccsg9jbznjx0ywblhap"; + type = "gem"; + }; + version = "1.4.0"; + }; + rails_pulse = { + dependencies = [ + "css-zero" + "groupdate" + "pagy" + "rails" + "ransack" + "request_store" + "turbo-rails" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mla44nhcpr57i4dqir173b3jyzfpvy9prnzyz5nlf0ny3hysk5s"; + type = "gem"; + }; + version = "0.2.4"; + }; + railties = { + dependencies = [ + "actionpack" + "activesupport" + "irb" + "rackup" + "rake" + "thor" + "tsort" + "zeitwerk" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1lpiazaaq8di4lz9iqjqdrsnha6kfq6k35kd9nk9jhhksz51vqxc"; + type = "gem"; + }; + version = "8.0.3"; + }; + rainbow = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503"; + type = "gem"; + }; + version = "3.1.1"; + }; + rake = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "175iisqb211n0qbfyqd8jz2g01q6xj038zjf4q0nm8k6kz88k7lc"; + type = "gem"; + }; + version = "13.3.1"; + }; + ransack = { + dependencies = [ + "activerecord" + "activesupport" + "i18n" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0gd6nwr0xlvgas21p1qgw90cg27xdi70988dw5q8a20rzhvarska"; + type = "gem"; + }; + version = "4.4.1"; + }; + rdoc = { + dependencies = [ + "erb" + "psych" + "tsort" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0p4z1cs2zvkkvl0xiiy76ys1ipbhx0df15241jx7gnp61317qdbi"; + type = "gem"; + }; + version = "6.16.1"; + }; + redis = { + dependencies = [ "redis-client" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1bpsh5dbvybsa8qnv4dg11a6f2zn4sndarf7pk4iaayjgaspbrmm"; + type = "gem"; + }; + version = "5.4.1"; + }; + redis-client = { + dependencies = [ "connection_pool" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "16vplvxrsaq6as1hzw71mkfcpjdphk0m662k36vrilq2f9dgndhk"; + type = "gem"; + }; + version = "0.26.2"; + }; + regexp_parser = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "192mzi0wgwl024pwpbfa6c2a2xlvbh3mjd75a0sakdvkl60z64ya"; + type = "gem"; + }; + version = "2.11.3"; + }; + reline = { + dependencies = [ "io-console" ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0d8q5c4nh2g9pp758kizh8sfrvngynrjlm0i1zn3cnsnfd4v160i"; + type = "gem"; + }; + version = "0.6.3"; + }; + request_store = { + dependencies = [ "rack" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1jw89j9s5p5cq2k7ffj5p4av4j4fxwvwjs1a4i9g85d38r9mvdz1"; + type = "gem"; + }; + version = "1.7.0"; + }; + responders = { + dependencies = [ + "actionpack" + "railties" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "06ilkbbwvc8d0vppf8ywn1f79ypyymlb9krrhqv4g0q215zaiwlj"; + type = "gem"; + }; + version = "3.1.1"; + }; + rexml = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0hninnbvqd2pn40h863lbrn9p11gvdxp928izkag5ysx8b1s5q0r"; + type = "gem"; + }; + version = "3.4.4"; + }; + rgeo = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mfxgxhsk4hpxh0ahk9yk593qiminv91gnfxkyixgm0nh6kn56ay"; + type = "gem"; + }; + version = "3.0.1"; + }; + rgeo-activerecord = { + dependencies = [ + "activerecord" + "rgeo" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "151hzz2amv4xn3ka5ab3rm3ghbyip8fqsa5m6jkpbf38qn6jz8n8"; + type = "gem"; + }; + version = "8.0.0"; + }; + rgeo-geojson = { + dependencies = [ + "multi_json" + "rgeo" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "045jf6v7zhnj0mc5whkkh11w33khr3zcd564zklyyhscpphjrvff"; + type = "gem"; + }; + version = "2.2.0"; + }; + rqrcode = { + dependencies = [ + "chunky_png" + "rqrcode_core" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1bwqy1iwbyn1091mg203is5ngsnvfparwa1wh89s1sgnfmirkmg2"; + type = "gem"; + }; + version = "3.1.0"; + }; + rqrcode_core = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1ayrj7pwbv1g6jg5vvx6rq05lr1kbkfzbzqplj169aapmcivhh0y"; + type = "gem"; + }; + version = "2.0.0"; + }; + rspec-core = { + dependencies = [ "rspec-support" ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1r6zbis0hhbik1ck8kh58qb37d1qwij1x1d2fy4jxkzryh3na4r5"; + type = "gem"; + }; + version = "3.13.3"; + }; + rspec-expectations = { + dependencies = [ + "diff-lcs" + "rspec-support" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0dl8npj0jfpy31bxi6syc7jymyd861q277sfr6jawq2hv6hx791k"; + type = "gem"; + }; + version = "3.13.5"; + }; + rspec-mocks = { + dependencies = [ + "diff-lcs" + "rspec-support" + ]; + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0klv9mibmnfqw92w5bc1bab1x4dai60xfh0xz0mhgicibsp3gcbq"; + type = "gem"; + }; + version = "3.13.6"; + }; + rspec-rails = { + dependencies = [ + "actionpack" + "activesupport" + "railties" + "rspec-core" + "rspec-expectations" + "rspec-mocks" + "rspec-support" + ]; + groups = [ + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1kis8dfxlvi6gdzrv9nsn3ckw0c2z7armhni917qs1jx7yjkjc8i"; + type = "gem"; + }; + version = "8.0.2"; + }; + rspec-support = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0hrzdcklbl8pv721cq906yfl38fmqmlnh33ff8l752z1ys9y6q9a"; + type = "gem"; + }; + version = "3.13.3"; + }; + rswag-api = { + dependencies = [ + "activesupport" + "railties" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "04ssahiw9fn3dvxzp7gbrlnc51dlcz9fbc14c2mvi2hncmmk72vj"; + type = "gem"; + }; + version = "2.17.0"; + }; + rswag-specs = { + dependencies = [ + "activesupport" + "json-schema" + "railties" + "rspec-core" + ]; + groups = [ + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1qx9mxhnwz8ia9ry1fwn3hzc2zg7n774gvm4whgp9y49vzvbvcm3"; + type = "gem"; + }; + version = "2.17.0"; + }; + rswag-ui = { + dependencies = [ + "actionpack" + "railties" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "04ij8kr28qg70f3511vks38rnhcyww0y9xhrypwxswc1bsdpnw2z"; + type = "gem"; + }; + version = "2.17.0"; + }; + rubocop = { + dependencies = [ + "json" + "language_server-protocol" + "lint_roller" + "parallel" + "parser" + "rainbow" + "regexp_parser" + "rubocop-ast" + "ruby-progressbar" + "unicode-display_width" + ]; + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0wz2np5ck54vpwcz18y9x7w80c308wza7gmfcykysq59ajkadw89"; + type = "gem"; + }; + version = "1.82.1"; + }; + rubocop-ast = { + dependencies = [ + "parser" + "prism" + ]; + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1zbikzd6237fvlzjfxdlhwi2vbmavg1cc81y6cyr581365nnghs9"; + type = "gem"; + }; + version = "1.49.0"; + }; + rubocop-rails = { + dependencies = [ + "activesupport" + "lint_roller" + "rack" + "rubocop" + "rubocop-ast" + ]; + groups = [ "development" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "08kf3nhhhxcwb9shb4bv7jxr1mjrs63fwpywppmgy9cbwip29zqh"; + type = "gem"; + }; + version = "2.34.2"; + }; + ruby-progressbar = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0cwvyb7j47m7wihpfaq7rc47zwwx9k4v7iqd9s1xch5nm53rrz40"; + type = "gem"; + }; + version = "1.13.0"; + }; + rubyzip = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0g2vx9bwl9lgn3w5zacl52ax57k4zqrsxg05ixf42986bww9kvf0"; + type = "gem"; + }; + version = "3.2.2"; + }; + securerandom = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1cd0iriqfsf1z91qg271sm88xjnfd92b832z49p1nd542ka96lfc"; + type = "gem"; + }; + version = "0.4.1"; + }; + selenium-webdriver = { + dependencies = [ + "base64" + "logger" + "rexml" + "rubyzip" + "websocket" + ]; + groups = [ "test" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "16rmdnc8c779gmphv7n4rcx8bc6yv24i555lzqx2drmrqk721jbg"; + type = "gem"; + }; + version = "4.35.0"; + }; + sentry-rails = { + dependencies = [ + "railties" + "sentry-ruby" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1rkp3wpikhwvypabw578rqk5660xkv741jl59dvk34h9b1z9g8g1"; + type = "gem"; + }; + version = "6.2.0"; + }; + sentry-ruby = { + dependencies = [ + "bigdecimal" + "concurrent-ruby" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "05xcf7dwqd59nklk29r4dmdjjpy8hb19rccls5mm7l50ldca7f6p"; + type = "gem"; + }; + version = "6.2.0"; + }; + shoulda-matchers = { + dependencies = [ "activesupport" ]; + groups = [ "test" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0i1zkr4rsvf8pz1x38wkb82nsjx28prmyb5blsmw86pd5cmmfszg"; + type = "gem"; + }; + version = "6.5.0"; + }; + sidekiq = { + dependencies = [ + "connection_pool" + "json" + "logger" + "rack" + "redis-client" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mjcm3csall2idnza3w9gvayq3fbpz0k1jsmhsdpgxj6ipddik1p"; + type = "gem"; + }; + version = "8.0.10"; + }; + sidekiq-cron = { + dependencies = [ + "cronex" + "fugit" + "globalid" + "sidekiq" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1b2aqj17izziipb6wvsa8jr60ng8w8mal7acfkf316i8faikvawn"; + type = "gem"; + }; + version = "2.3.1"; + }; + sidekiq-limit_fetch = { + dependencies = [ "sidekiq" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "09wbzaa1sq2xxzm18f6xxj084m6g31bl9fx99kqw92fvs6sjy93x"; + type = "gem"; + }; + version = "4.4.1"; + }; + simplecov = { + dependencies = [ + "docile" + "simplecov-html" + "simplecov_json_formatter" + ]; + groups = [ "test" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py"; + type = "gem"; + }; + version = "0.22.0"; + }; + simplecov-html = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "02zi3rwihp7rlnp9x18c9idnkx7x68w6jmxdhyc0xrhjwrz0pasx"; + type = "gem"; + }; + version = "0.13.1"; + }; + simplecov_json_formatter = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j"; + type = "gem"; + }; + version = "0.1.4"; + }; + snaky_hash = { + dependencies = [ + "hashie" + "version_gem" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0mnllrwhs7psw6xxs8x5yx85k12qjfdgs8zs0bxm70bfascx58r5"; + type = "gem"; + }; + version = "2.0.3"; + }; + sprockets = { + dependencies = [ + "concurrent-ruby" + "rack" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "15rzfzd9dca4v0mr0bbhsbwhygl0k9l24iqqlx0fijig5zfi66wm"; + type = "gem"; + }; + version = "4.2.1"; + }; + sprockets-rails = { + dependencies = [ + "actionpack" + "activesupport" + "sprockets" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "17hiqkdpcjyyhlm997mgdcr45v35j5802m5a979i5jgqx5n8xs59"; + type = "gem"; + }; + version = "3.5.2"; + }; + stackprof = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "03788mbipmihq2w7rznzvv0ks0s9z1321k1jyr6ffln8as3d5xmg"; + type = "gem"; + }; + version = "0.2.27"; + }; + stimulus-rails = { + dependencies = [ "railties" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "01nbcxyi1mhikq8yjl0g9swy1cpzx146pli6w16gcfpkl7zpcmkn"; + type = "gem"; + }; + version = "1.3.4"; + }; + stringio = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ + { + engine = "maglev"; + } + { + engine = "mingw"; + } + { + engine = "mingw"; + } + { + engine = "ruby"; + } + ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1v74k5yw7ndikr53wgbjn6j51p83qnzqbn9z4b53r102jcx3ri4r"; + type = "gem"; + }; + version = "3.1.8"; + }; + strong_migrations = { + dependencies = [ "activerecord" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "09llhlw9ddsjyv6c59z3yjwdhrxc2q60a60wjvqhrhhy96dkmjlb"; + type = "gem"; + }; + version = "2.5.1"; + }; + super_diff = { + dependencies = [ + "attr_extras" + "diff-lcs" + "patience_diff" + ]; + groups = [ "test" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1qc3682i373ccml000xvi9pdksj3rb9v9znagjs762iypp3nwrkm"; + type = "gem"; + }; + version = "0.17.0"; + }; + swd = { + dependencies = [ + "activesupport" + "attr_required" + "faraday" + "faraday-follow_redirects" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0m86fzmwgw0vc8p6fwvnsdbldpgbqdz9cbp2zj9z06bc4jjf5nsc"; + type = "gem"; + }; + version = "2.0.3"; + }; + tailwindcss-rails = { + dependencies = [ + "railties" + "tailwindcss-ruby" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "02vg7lbb95ixx9m6bgm2x0nrcm4dxyl0dcsd7ygg6z7bamz32yg8"; + type = "gem"; + }; + version = "3.3.2"; + }; + tailwindcss-ruby = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "09y40d93pi8s5yp076yzj5sf1vjifq0a4mrlmx379ggi8p6bfks6"; + type = "gem"; + }; + version = "3.4.17"; + }; + thor = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0gcarlmpfbmqnjvwfz44gdjhcmm634di7plcx2zdgwdhrhifhqw7"; + type = "gem"; + }; + version = "1.4.0"; + }; + timeout = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1nqf9rg974k4bjji7aggalg8pfvbkd9hys4hv5y450jb21qgkxph"; + type = "gem"; + }; + version = "0.4.4"; + }; + tsort = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "17q8h020dw73wjmql50lqw5ddsngg67jfw8ncjv476l5ys9sfl4n"; + type = "gem"; + }; + version = "0.2.0"; + }; + turbo-rails = { + dependencies = [ + "actionpack" + "railties" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "15gafkrlg8rdk2fra0w3rjc1jwicbdjv24grr5qn97z57kfv9jyb"; + type = "gem"; + }; + version = "2.0.20"; + }; + tzinfo = { + dependencies = [ "concurrent-ruby" ]; + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd"; + type = "gem"; + }; + version = "2.0.6"; + }; + unicode = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mx9lwzy021lpcqql5kn4yi20njhf5h7c7wxm2fx51p1r2zr9wj2"; + type = "gem"; + }; + version = "0.4.4.5"; + }; + unicode-display_width = { + dependencies = [ "unicode-emoji" ]; + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0hiwhnqpq271xqari6mg996fgjps42sffm9cpk6ljn8sd2srdp8c"; + type = "gem"; + }; + version = "3.2.0"; + }; + unicode-emoji = { + groups = [ + "default" + "development" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "03zqn207zypycbz5m9mn7ym763wgpk7hcqbkpx02wrbm1wank7ji"; + type = "gem"; + }; + version = "4.2.0"; + }; + uri = { + groups = [ + "default" + "development" + "staging" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1ijpbj7mdrq7rhpq2kb51yykhrs2s54wfs6sm9z3icgz4y6sb7rp"; + type = "gem"; + }; + version = "1.1.1"; + }; + useragent = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0i1q2xdjam4d7gwwc35lfnz0wyyzvnca0zslcfxm9fabml9n83kh"; + type = "gem"; + }; + version = "0.16.11"; + }; + validate_url = { + dependencies = [ + "activemodel" + "public_suffix" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0lblym140w5n88ijyfgcvkxvpfj8m6z00rxxf2ckmmhk0x61dzkj"; + type = "gem"; + }; + version = "1.0.15"; + }; + version_gem = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "195r5qylwxwqbllnpli9c2pzin0lky6h3fw912h88g2lmri0j6hc"; + type = "gem"; + }; + version = "1.1.9"; + }; + warden = { + dependencies = [ "rack" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1l7gl7vms023w4clg02pm4ky9j12la2vzsixi2xrv9imbn44ys26"; + type = "gem"; + }; + version = "1.2.9"; + }; + webfinger = { + dependencies = [ + "activesupport" + "faraday" + "faraday-follow_redirects" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0p39802sfnm62r4x5hai8vn6d1wqbxsxnmbynsk8rcvzwyym4yjn"; + type = "gem"; + }; + version = "2.1.3"; + }; + webmock = { + dependencies = [ + "addressable" + "crack" + "hashdiff" + ]; + groups = [ "test" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1mqw7ca931zmqgad0fq4gw7z3gwb0pwx9cmd1b12ga4hgjsnysag"; + type = "gem"; + }; + version = "3.26.1"; + }; + webrick = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "12d9n8hll67j737ym2zw4v23cn4vxyfkb6vyv1rzpwv6y6a3qbdl"; + type = "gem"; + }; + version = "1.9.1"; + }; + websocket = { + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0dr78vh3ag0d1q5gfd8960g1ca9g6arjd2w54mffid8h4i7agrxp"; + type = "gem"; + }; + version = "1.2.11"; + }; + websocket-driver = { + dependencies = [ + "base64" + "websocket-extensions" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0qj9dmkmgahmadgh88kydb7cv15w13l1fj3kk9zz28iwji5vl3gd"; + type = "gem"; + }; + version = "0.8.0"; + }; + websocket-extensions = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0hc2g9qps8lmhibl5baa91b4qx8wqw872rgwagml78ydj8qacsqw"; + type = "gem"; + }; + version = "0.1.5"; + }; + with_advisory_lock = { + dependencies = [ + "activerecord" + "zeitwerk" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "001sswk3d1n8nf4pzxxc4rvxw47q05m0harl50ys25b18nxqai6z"; + type = "gem"; + }; + version = "7.0.2"; + }; + xpath = { + dependencies = [ "nokogiri" ]; + groups = [ + "default" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd"; + type = "gem"; + }; + version = "3.2.0"; + }; + yaml = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "0hhr8z9m9yq2kf7ls0vf8ap1hqma1yd72y2r13b88dffwv8nj3i4"; + type = "gem"; + }; + version = "0.4.0"; + }; + zeitwerk = { + groups = [ + "default" + "development" + "test" + ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "119ypabas886gd0n9kiid3q41w76gz60s8qmiak6pljpkd56ps5j"; + type = "gem"; + }; + version = "2.7.3"; + }; +} diff --git a/pkgs/by-name/da/dawarich/package.nix b/pkgs/by-name/da/dawarich/package.nix new file mode 100644 index 000000000000..81154d401d6d --- /dev/null +++ b/pkgs/by-name/da/dawarich/package.nix @@ -0,0 +1,142 @@ +{ + lib, + applyPatches, + bundlerEnv, + fetchFromGitHub, + fetchNpmDeps, + nixosTests, + nodejs, + npmHooks, + ruby_3_4, + stdenv, + tailwindcss_3, + gemset ? import ./gemset.nix, + sources ? lib.importJSON ./sources.json, + unpatchedSource ? fetchFromGitHub { + owner = "Freika"; + repo = "dawarich"; + tag = sources.version; + inherit (sources) hash; + }, +}: +let + ruby = ruby_3_4; +in +stdenv.mkDerivation (finalAttrs: { + pname = "dawarich"; + inherit (sources) version; + + # Use `applyPatches` here because bundix in the update script (see ./update.sh) + # needs to run on the already patched Gemfile and Gemfile.lock. + # Only patches changing these two files should be here; + # patches for other parts of the application should go directly into mkDerivation. + src = applyPatches { + src = unpatchedSource; + patches = [ + # bundix and bundlerEnv fail with system-specific gems + ./0001-build-ffi-gem.diff + # openssl 3.6.0 breaks ruby openssl gem + # See https://github.com/NixOS/nixpkgs/issues/456753 + # and https://github.com/ruby/openssl/issues/949#issuecomment-3370358680 + ./0002-openssl-hotfix.diff + ]; + postPatch = '' + substituteInPlace ./Gemfile \ + --replace-fail "ruby File.read('.ruby-version').strip" "ruby '>= 3.4.0'" + ''; + }; + + postPatch = '' + # move import directory to a more convenient place, otherwise its behind systemd private tmp + substituteInPlace ./app/services/imports/watcher.rb \ + --replace-fail 'tmp/imports/watched' 'storage/imports/watched' + ''; + + dawarichGems = bundlerEnv { + name = "${finalAttrs.pname}-gems-${finalAttrs.version}"; + inherit gemset ruby; + inherit (finalAttrs) version; + gemdir = finalAttrs.src; + }; + + npmDeps = fetchNpmDeps { + inherit (finalAttrs) src; + hash = sources.npmHash; + }; + + RAILS_ENV = "production"; + NODE_ENV = "production"; + REDIS_URL = ""; # build error if not defined + TAILWINDCSS_INSTALL_DIR = "${tailwindcss_3}/bin"; + + nativeBuildInputs = [ + nodejs + npmHooks.npmConfigHook + finalAttrs.dawarichGems + finalAttrs.dawarichGems.wrappedRuby + ]; + propagatedBuildInputs = [ + finalAttrs.dawarichGems.wrappedRuby + ]; + buildInputs = [ + finalAttrs.dawarichGems + ]; + + buildPhase = '' + runHook preBuild + + patchShebangs bin/ + for b in $(ls $dawarichGems/bin/) + do + if [ ! -f bin/$b ]; then + ln -s $dawarichGems/bin/$b bin/$b + fi + done + + SECRET_KEY_BASE_DUMMY=1 bundle exec rake assets:precompile + + rm -rf node_modules tmp log storage + ln -s /var/log/dawarich log + ln -s /var/lib/dawarich storage + ln -s /tmp tmp + + # delete more files unneeded at runtime + rm -rf docker docs screenshots package.json package-lock.json *.md *.example + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + # tests are not needed at runtime + rm -rf spec e2e + # delete artifacts from patching + rm *.orig + + mkdir -p $out + mv .{ruby*,app_version} $out/ + mv * $out/ + + runHook postInstall + ''; + + passthru = { + tests = { + inherit (nixosTests) dawarich; + }; + # run with: nix-shell ./maintainers/scripts/update.nix --argstr package dawarich + updateScript = ./update.sh; + }; + + meta = { + changelog = "https://github.com/Freika/dawarich/blob/${finalAttrs.version}/CHANGELOG.md"; + description = "Self-hostable alternative to Google Location History (Google Maps Timeline)"; + homepage = "https://dawarich.app/"; + license = lib.licenses.agpl3Only; + maintainers = with lib.maintainers; [ + diogotcorreia + ]; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/da/dawarich/sources.json b/pkgs/by-name/da/dawarich/sources.json new file mode 100644 index 000000000000..f67649193411 --- /dev/null +++ b/pkgs/by-name/da/dawarich/sources.json @@ -0,0 +1,5 @@ +{ + "version": "0.37.3", + "hash": "sha256-cZBT3ek5mzHbPr4aVHU47SNstEuBnpBNaCfaAe/IAEw=", + "npmHash": "sha256-wDe1Zx9HyheS76ltLtDQ+f4M7ohu/pyRuRaGGCnhkQI=" +} diff --git a/pkgs/by-name/da/dawarich/update.sh b/pkgs/by-name/da/dawarich/update.sh new file mode 100755 index 000000000000..3e77d7b934ba --- /dev/null +++ b/pkgs/by-name/da/dawarich/update.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p bundix curl jq nix-update nix-prefetch-github prefetch-npm-deps gnused +set -e +set -o pipefail + +OWNER="Freika" +REPO="dawarich" + +old_version=$(nix-instantiate --eval -A 'dawarich.version' default.nix | tr -d '"') +version=$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/$OWNER/$REPO/releases/latest" | jq -r ".tag_name") + +echo "Updating to $version" + +if [[ "$old_version" == "$version" ]]; then + echo "Already up to date!" + exit 0 +fi + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" + +echo "Fetching source code $REVISION" +JSON=$(nix-prefetch-github "$OWNER" "$REPO" --rev "refs/tags/$version" 2>/dev/null) +HASH=$(echo "$JSON" | jq -r .hash) + +cat > "$SCRIPT_DIR/sources.json" << EOF +{ + "version": "$version", + "hash": "$HASH", + "npmHash": "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" +} +EOF + +SOURCE_DIR="$(nix-build --no-out-link -A dawarich.src)" + +echo "Creating gemset.nix" +bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" --gemset="$SCRIPT_DIR/gemset.nix" +nixfmt "$SCRIPT_DIR/gemset.nix" + +NPM_HASH="$(prefetch-npm-deps "$SOURCE_DIR/package-lock.json" 2>/dev/null)" +sed -i "s;sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=;$NPM_HASH;g" "$SCRIPT_DIR/sources.json" diff --git a/pkgs/by-name/dd/ddns-go/package.nix b/pkgs/by-name/dd/ddns-go/package.nix index 503ddceaa275..acc91c3e26ce 100644 --- a/pkgs/by-name/dd/ddns-go/package.nix +++ b/pkgs/by-name/dd/ddns-go/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "ddns-go"; - version = "6.14.1"; + version = "6.15.0"; src = fetchFromGitHub { owner = "jeessy2"; repo = "ddns-go"; rev = "v${version}"; - hash = "sha256-c+V+EgJvElL/Ga0z6420E50c59cmjn/IlkfyeATLDFs="; + hash = "sha256-NDIevPRIbRqh97IWk4lCqmjobepVMeG5QFKUJdw9Lyo="; }; - vendorHash = "sha256-vpdT1apjuMvM6MmQfx1XBQtQznK7oxUjIdkgOXjUF6g="; + vendorHash = "sha256-EGhZyoitQ7l0sQZbono2pKhQZJEnGrennMz453Lrbek="; ldflags = [ "-X main.version=${version}" diff --git a/pkgs/by-name/de/devenv/package.nix b/pkgs/by-name/de/devenv/package.nix index 374bc1eea425..3fa704104734 100644 --- a/pkgs/by-name/de/devenv/package.nix +++ b/pkgs/by-name/de/devenv/package.nix @@ -22,25 +22,30 @@ let devenv_nix = let - components = - (nixVersions.nixComponents_git.override { version = devenvNixVersion; }).overrideSource - (fetchFromGitHub { - owner = "cachix"; - repo = "nix"; - rev = "devenv-${devenvNixVersion}"; - hash = "sha256-3+GHIYGg4U9XKUN4rg473frIVNn8YD06bjwxKS1IPrU="; - }); + components = ( + nixVersions.nixComponents_git.overrideSource (fetchFromGitHub { + owner = "cachix"; + repo = "nix"; + rev = "devenv-${devenvNixVersion}"; + hash = "sha256-3+GHIYGg4U9XKUN4rg473frIVNn8YD06bjwxKS1IPrU="; + }) + ); in + # Support for mdbook >= 0.5, https://github.com/NixOS/nix/issues/14628 ( - # Support for mdbook >= 0.5, https://github.com/NixOS/nix/issues/14628 - components.appendPatches [ + (components.appendPatches [ (fetchpatch2 { name = "nix-2.30-14695-mdbook-0.5-support.patch"; url = "https://github.com/NixOS/nix/commit/5cbd7856de0a9c13351f98e32a1e26d0854d87fd.patch"; excludes = [ "doc/manual/package.nix" ]; hash = "sha256-GYaTOG9wZT9UI4G6za535PkLyjHKSxwBjJsXbjmI26g="; }) - ] + ]).overrideScope + ( + finalScope: prevScope: { + version = devenvNixVersion; + } + ) ).nix-everything.overrideAttrs (old: { pname = "devenv-nix"; diff --git a/pkgs/by-name/di/diffnav/package.nix b/pkgs/by-name/di/diffnav/package.nix index c2f7989ec58a..ff9e2f7b6731 100644 --- a/pkgs/by-name/di/diffnav/package.nix +++ b/pkgs/by-name/di/diffnav/package.nix @@ -8,13 +8,13 @@ buildGoModule rec { pname = "diffnav"; - version = "0.5.0"; + version = "0.6.0"; src = fetchFromGitHub { owner = "dlvhdr"; repo = "diffnav"; tag = "v${version}"; - hash = "sha256-QDPH7vBoA4YCmC+CLmeBdspwOhFEV3iSiyBYX6lwOLA="; + hash = "sha256-pak1R2BmL3A8YADwFw7QZk7JsGQzBBS/xHzRhYlMKGo="; }; vendorHash = "sha256-cDA5qstTRApt4DXcakNLR5nsyh9i7z2Qrvp6q/OoYhY="; diff --git a/pkgs/by-name/do/dopamine/package.nix b/pkgs/by-name/do/dopamine/package.nix index 8ac7f7bf4593..8362a23bb41d 100644 --- a/pkgs/by-name/do/dopamine/package.nix +++ b/pkgs/by-name/do/dopamine/package.nix @@ -7,11 +7,11 @@ }: appimageTools.wrapType2 rec { pname = "dopamine"; - version = "3.0.1"; + version = "3.0.2"; src = fetchurl { url = "https://github.com/digimezzo/dopamine/releases/download/v${version}/Dopamine-${version}.AppImage"; - hash = "sha256-crOW1I8YN7+OyolgeiVvBZ8Zsw0RNUjozmvGgQO1ymA="; + hash = "sha256-Cb3Kwqf4PQW+bQonsPdACzp7gpVTm0DpR8wOcQ1qZFE="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/do/double-entry-generator/package.nix b/pkgs/by-name/do/double-entry-generator/package.nix index 55ff58368de5..b6b56b8bacae 100644 --- a/pkgs/by-name/do/double-entry-generator/package.nix +++ b/pkgs/by-name/do/double-entry-generator/package.nix @@ -6,11 +6,11 @@ }: buildGoModule rec { pname = "double-entry-generator"; - version = "2.14.0"; + version = "2.15.0"; src = fetchFromGitHub { owner = "deb-sig"; repo = "double-entry-generator"; - hash = "sha256-gKgk9H0p17Pv+giV+vz4cdU99EQ3AhY+WC8Weu+XPPQ="; + hash = "sha256-w2OKKSsz9t/4+aKPWq04+Sk0lJbxYeVah+o00T5YWQM="; rev = "v${version}"; }; diff --git a/pkgs/by-name/dt/dt-schema/package.nix b/pkgs/by-name/dt/dt-schema/package.nix index 6aacd1306435..3cffc72ca6fe 100644 --- a/pkgs/by-name/dt/dt-schema/package.nix +++ b/pkgs/by-name/dt/dt-schema/package.nix @@ -1,26 +1,5 @@ { - python3, + python3Packages, }: -let - python = python3.override { - self = python; - packageOverrides = self: super: { - # see https://github.com/devicetree-org/dt-schema/issues/108 - jsonschema = super.jsonschema.overridePythonAttrs (old: rec { - version = "4.17.3"; - - src = old.src.override { - inherit version; - hash = "sha256-D4ZEN6uLYHa6ZwdFPvj5imoNUSqA6T+KvbZ29zfstg0="; - }; - - propagatedBuildInputs = with self; [ - attrs - pyrsistent - ]; - }); - }; - }; -in -python.pkgs.toPythonApplication python.pkgs.dtschema +python3Packages.toPythonApplication python3Packages.dtschema diff --git a/pkgs/by-name/du/dump_syms/package.nix b/pkgs/by-name/du/dump_syms/package.nix index b351c4cf8057..c43cd6a9a7dd 100644 --- a/pkgs/by-name/du/dump_syms/package.nix +++ b/pkgs/by-name/du/dump_syms/package.nix @@ -14,7 +14,7 @@ let pname = "dump_syms"; - version = "2.3.5"; + version = "2.3.6"; in rustPlatform.buildRustPackage { inherit pname version; @@ -23,10 +23,10 @@ rustPlatform.buildRustPackage { owner = "mozilla"; repo = "dump_syms"; rev = "v${version}"; - hash = "sha256-zxYGxqnh6urXDC/ZQf3aFzBqOj5QNulyDpTsZ47BDkU="; + hash = "sha256-ABfjLV6WMIiaSiyfR/uxL6+VyO/pO6oZjbJSAxRGXuE="; }; - cargoHash = "sha256-gnXf6APcEJJKpKsqsBPLXlZddEt+6ENyt15iDw8XShc="; + cargoHash = "sha256-t9xK7epfBp1XgewlAuAnInlKQDQ+3gVNmJoLNcey8YU="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/ej/ejsonkms/package.nix b/pkgs/by-name/ej/ejsonkms/package.nix index 15acdd383a80..57bdf5a9679a 100644 --- a/pkgs/by-name/ej/ejsonkms/package.nix +++ b/pkgs/by-name/ej/ejsonkms/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "ejsonkms"; - version = "0.2.9"; + version = "0.3.0"; src = fetchFromGitHub { owner = "envato"; repo = "ejsonkms"; rev = "v${version}"; - hash = "sha256-IQZYpxY6t7W9a3PKc9o7+MbOOxsa0Hs1H8HneilrdBs="; + hash = "sha256-BLOlDvheCwlxYaONGh/foqvWs33ZqGA3n7SkM5LfJKY="; }; - vendorHash = "sha256-xOp02g7F1rb3Zq8lbjvDrYrFrcT+msv/KUqQd2qVKdA="; + vendorHash = "sha256-6C/hZwqB6yqFjfDe+KQAY+ja41v/FVaEmPEUXb0FZTA="; ldflags = [ "-X main.version=v${version}" diff --git a/pkgs/by-name/el/element-desktop/element-desktop-pin.nix b/pkgs/by-name/el/element-desktop/element-desktop-pin.nix index 5c2cee48db3b..522dbb0fef13 100644 --- a/pkgs/by-name/el/element-desktop/element-desktop-pin.nix +++ b/pkgs/by-name/el/element-desktop/element-desktop-pin.nix @@ -1,7 +1,7 @@ { - "version" = "1.12.7"; + "version" = "1.12.8"; "hashes" = { - "desktopSrcHash" = "sha256-VnZyNrylYbKhd9YyuoUSJWbTEphOsTivbbYIUeEZv2U="; - "desktopYarnHash" = "sha256-Gnd/ouRI/OxFwsvR5arfi/FcGld3XjtW9tzuwyX8IRg="; + "desktopSrcHash" = "sha256-J+ITqHLxbmhhjFnyfBlHFzxrPeIvsCv+iaxa8DiWorM="; + "desktopYarnHash" = "sha256-coa2AMNGLDtqcrQJDc/DDkcaWBCLa76VTKJLGlr7dpQ="; }; } diff --git a/pkgs/by-name/el/element-web-unwrapped/element-web-pin.nix b/pkgs/by-name/el/element-web-unwrapped/element-web-pin.nix index e4973d165cbe..68f55011557f 100644 --- a/pkgs/by-name/el/element-web-unwrapped/element-web-pin.nix +++ b/pkgs/by-name/el/element-web-unwrapped/element-web-pin.nix @@ -1,8 +1,8 @@ { - "version" = "1.12.7"; + "version" = "1.12.8"; "hashes" = { - "webSrcHash" = "sha256-D24x3T1m0qRmlpmkZ7zTAxhtMUddlMaip0JKT8H3Ci0="; - "webYarnHash" = "sha256-72M6XyI9zfxcym7e/CvLmQHe21eyzQXO3YfQipFh06s="; - "webSharedComponentsYarnHash" = "sha256-NrDB0itZ0xSFg4lZhAs6EGFap8GE1CZ1/EFa7fa4P2Q="; + "webSrcHash" = "sha256-c1vrFEe0kEpCXs67oeZPv0xqmL3YaqAvD1nqoTQXlzk="; + "webYarnHash" = "sha256-Vo0SkCUPVQsVCgVILT+uvjbExDpYk4/DRfWdiisbf1o="; + "webSharedComponentsYarnHash" = "sha256-8wvjoanSd5KLDW6MbwY+3Ch9rzWpukeQEvYzMxXsbKA="; }; } diff --git a/pkgs/by-name/en/enzyme/package.nix b/pkgs/by-name/en/enzyme/package.nix index 5d0550a97377..b0e6ef0efa76 100644 --- a/pkgs/by-name/en/enzyme/package.nix +++ b/pkgs/by-name/en/enzyme/package.nix @@ -7,13 +7,13 @@ }: llvmPackages.stdenv.mkDerivation rec { pname = "enzyme"; - version = "0.0.235"; + version = "0.0.238"; src = fetchFromGitHub { owner = "EnzymeAD"; repo = "Enzyme"; rev = "v${version}"; - hash = "sha256-wrz2DyhJAn5T639RdVDjRogPRLriSHiiDn05AgBLYnU="; + hash = "sha256-n++71Ibt4+nnyx56ICovObJx9CH12fxH+WXsAByIyJA="; }; postPatch = '' diff --git a/pkgs/by-name/eq/equicord/package.nix b/pkgs/by-name/eq/equicord/package.nix index ec8b144b022b..60947666ec93 100644 --- a/pkgs/by-name/eq/equicord/package.nix +++ b/pkgs/by-name/eq/equicord/package.nix @@ -20,13 +20,13 @@ stdenv.mkDerivation (finalAttrs: { # the Equicord repository. Dates as tags (and automatic releases) were the compromise # we came to with upstream. Please do not change the version schema (e.g., to semver) # unless upstream changes the tag schema from dates. - version = "2025-12-25"; + version = "2026-01-19"; src = fetchFromGitHub { owner = "Equicord"; repo = "Equicord"; tag = finalAttrs.version; - hash = "sha256-ce5n7E+eJLPnj/dUnaaDi4R8kKO4+iOcQgdtOin4NcM="; + hash = "sha256-pEFU1E+BqAAAz2ywPrS1MejhZ/g47iG/4BBey+2F7Hw="; }; pnpmDeps = fetchPnpmDeps { diff --git a/pkgs/by-name/ex/exploitdb/package.nix b/pkgs/by-name/ex/exploitdb/package.nix index 25c1d8516041..04fedc522b2f 100644 --- a/pkgs/by-name/ex/exploitdb/package.nix +++ b/pkgs/by-name/ex/exploitdb/package.nix @@ -6,13 +6,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "exploitdb"; - version = "2025-12-26"; + version = "2026-01-18"; src = fetchFromGitLab { owner = "exploit-database"; repo = "exploitdb"; tag = finalAttrs.version; - hash = "sha256-7it08Z2n1Wl4GaVTLxBIlejwPEsmyv+j142/HAndLO0="; + hash = "sha256-ZV8CcpZzxK1uts8RzUmzp4mKXvS/xv8D02Jsv7DzByQ="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/fe/feishin/package.nix b/pkgs/by-name/fe/feishin/package.nix index ad5a61e44302..4c6229c24007 100644 --- a/pkgs/by-name/fe/feishin/package.nix +++ b/pkgs/by-name/fe/feishin/package.nix @@ -12,16 +12,17 @@ darwin, copyDesktopItems, makeDesktopItem, + nix-update-script, }: let pname = "feishin"; - version = "1.2.0"; + version = "1.3.0"; src = fetchFromGitHub { owner = "jeffvli"; repo = "feishin"; tag = "v${version}"; - hash = "sha256-acNUXvmj964pO8h2fsGfex2BeIshExMWe0w/QmtikkM="; + hash = "sha256-loe2hdn4TGCOLI1OQ19/zXikTKijYWtgSeP1gbwxfO0="; }; electron = electron_39; @@ -147,6 +148,8 @@ buildNpmPackage { }) ]; + passthru.updateScript = nix-update-script { }; + meta = { description = "Full-featured Jellyfin, Navidrome, and OpenSubsonic Compatible Music Player"; homepage = "https://github.com/jeffvli/feishin"; diff --git a/pkgs/by-name/fe/fertilizer/package.nix b/pkgs/by-name/fe/fertilizer/package.nix index 1f5a01d80666..1a3f8608e588 100644 --- a/pkgs/by-name/fe/fertilizer/package.nix +++ b/pkgs/by-name/fe/fertilizer/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, }: -python3.pkgs.buildPythonApplication rec { +python3.pkgs.buildPythonApplication (finalAttrs: { pname = "fertilizer"; version = "0.3.0"; pyproject = true; @@ -12,7 +12,7 @@ python3.pkgs.buildPythonApplication rec { src = fetchFromGitHub { owner = "moleculekayak"; repo = "fertilizer"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-sDoAjEiKxHf+HtFLZr6RwuXN+rl0ZQnFUoQ09QiE6Xc="; }; @@ -40,4 +40,4 @@ python3.pkgs.buildPythonApplication rec { maintainers = with lib.maintainers; [ ambroisie ]; mainProgram = "fertilizer"; }; -} +}) diff --git a/pkgs/by-name/fl/floorp-bin-unwrapped/sources.json b/pkgs/by-name/fl/floorp-bin-unwrapped/sources.json index 2c97744e808f..7854e67964ef 100644 --- a/pkgs/by-name/fl/floorp-bin-unwrapped/sources.json +++ b/pkgs/by-name/fl/floorp-bin-unwrapped/sources.json @@ -1,21 +1,21 @@ { - "version": "12.9.2", + "version": "12.10.2", "sources": { "aarch64-linux": { - "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.9.2/floorp-linux-aarch64.tar.xz", - "sha256": "6a9f3a23401045bdacfcee26ff5bdd95a5f2bbd21eb08601a98e18b09df04fb5" + "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.10.2/floorp-linux-aarch64.tar.xz", + "sha256": "a6c0919ff1ba5099d7efcc595aa943ea26fb1614c9fdc8099dda5d7cdd2c902b" }, "x86_64-linux": { - "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.9.2/floorp-linux-x86_64.tar.xz", - "sha256": "c73cd19566b8c4d80cdd01ae8d76bbc8198b210027fbd590e250dc7ab1252032" + "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.10.2/floorp-linux-x86_64.tar.xz", + "sha256": "8014ec6416b70a6a762c9109aa70a28fc305c08711493691fb8b00a2f53bc910" }, "aarch64-darwin": { - "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.9.2/floorp-macOS-universal.dmg", - "sha256": "cc27a9cd3eff0679ab916666583e2aed1fb882f0f4ea66676a133532cc8d5611" + "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.10.2/floorp-macOS-universal.dmg", + "sha256": "d225e9f6f1d81c6049905699ff08a64fb67496a16c31a2634af4c4f2e96f7a6d" }, "x86_64-darwin": { - "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.9.2/floorp-macOS-universal.dmg", - "sha256": "cc27a9cd3eff0679ab916666583e2aed1fb882f0f4ea66676a133532cc8d5611" + "url": "https://github.com/Floorp-Projects/Floorp/releases/download/v12.10.2/floorp-macOS-universal.dmg", + "sha256": "d225e9f6f1d81c6049905699ff08a64fb67496a16c31a2634af4c4f2e96f7a6d" } } } diff --git a/pkgs/by-name/fr/free42/package.nix b/pkgs/by-name/fr/free42/package.nix index 87335369dc90..64d3471da57f 100644 --- a/pkgs/by-name/fr/free42/package.nix +++ b/pkgs/by-name/fr/free42/package.nix @@ -11,11 +11,11 @@ }: stdenv.mkDerivation rec { pname = "free42"; - version = "3.3.10"; + version = "3.3.11"; src = fetchurl { url = "https://thomasokken.com/free42/upstream/free42-nologo-${version}.tgz"; - hash = "sha256-Vh+Sh3oX1ICy0R6R4zu9Df2+ba2mM33qHtifINNpn7Y="; + hash = "sha256-Y9tV06K+1tZmoNBLS5tsOoLPjS2unTe8c0AYkHgDVVo="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ga/gate/package.nix b/pkgs/by-name/ga/gate/package.nix index 367948c351f9..cae6cff91584 100644 --- a/pkgs/by-name/ga/gate/package.nix +++ b/pkgs/by-name/ga/gate/package.nix @@ -6,7 +6,7 @@ let pname = "gate"; - version = "0.62.2"; + version = "0.62.3"; in buildGoModule { inherit pname version; @@ -15,10 +15,10 @@ buildGoModule { owner = "minekube"; repo = "gate"; tag = "v${version}"; - hash = "sha256-WxR2VKlvDFOzIiDPuJLoBa5U9afMrYJ9QTDl0yTgSu4="; + hash = "sha256-tOyXVqmexAWpC2s86aUUjmDp6V+qvP3ve8FrqdtexvU="; }; - vendorHash = "sha256-f7SkECS80Lwkd0xSzHq+x05ZBjBYKXsA4rPidyIAYak="; + vendorHash = "sha256-AZa9u1f8MgnqW0QX6X+naRqukGTxI7WMNY4ZgJHoKyw="; ldflags = [ "-s" diff --git a/pkgs/by-name/gc/gcovr/package.nix b/pkgs/by-name/gc/gcovr/package.nix index ff3c8f6789d5..e2e0948687fa 100644 --- a/pkgs/by-name/gc/gcovr/package.nix +++ b/pkgs/by-name/gc/gcovr/package.nix @@ -12,8 +12,6 @@ python3Packages.buildPythonPackage (finalAttrs: { version = "8.4"; pyproject = true; - disabled = python3Packages.pythonOlder "3.9"; - src = fetchFromGitHub { owner = "gcovr"; repo = "gcovr"; diff --git a/pkgs/by-name/gd/gdevelop/darwin.nix b/pkgs/by-name/gd/gdevelop/darwin.nix index 36f87e326cf5..4f1a8d8000ff 100644 --- a/pkgs/by-name/gd/gdevelop/darwin.nix +++ b/pkgs/by-name/gd/gdevelop/darwin.nix @@ -18,7 +18,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { src = fetchurl { url = "https://github.com/4ian/GDevelop/releases/download/v${version}/GDevelop-5-${version}-universal-mac.zip"; - hash = "sha256-U4dRxWZ/0EJWeFhTJkocSFhlks11gSPn3z68k2/1FB0="; + hash = "sha256-zBUWAFsaa+GenaHDRYNlwMs3BmyOIQ3sr/YYCX1ytEE="; }; sourceRoot = "."; diff --git a/pkgs/by-name/gd/gdevelop/linux.nix b/pkgs/by-name/gd/gdevelop/linux.nix index c02116b79f6a..d3bc3827566d 100644 --- a/pkgs/by-name/gd/gdevelop/linux.nix +++ b/pkgs/by-name/gd/gdevelop/linux.nix @@ -13,7 +13,7 @@ let if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { url = "https://github.com/4ian/GDevelop/releases/download/v${version}/GDevelop-5-${version}.AppImage"; - hash = "sha256-C3KTa+fs8Mnpz/UELKX+nb6yp6kvdM9+uX5d6Ht2q1w="; + hash = "sha256-1XmKHyUuNcY1efWKLSsEoh+dvSmzUFz3FaoO/iTD7QY="; } else throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}"; diff --git a/pkgs/by-name/gd/gdevelop/package.nix b/pkgs/by-name/gd/gdevelop/package.nix index 63bc4eb3d901..9c5c3c14a568 100644 --- a/pkgs/by-name/gd/gdevelop/package.nix +++ b/pkgs/by-name/gd/gdevelop/package.nix @@ -4,7 +4,7 @@ callPackage, }: let - version = "5.6.251"; + version = "5.6.252"; pname = "gdevelop"; meta = { description = "Graphical Game Development Studio"; diff --git a/pkgs/by-name/ge/gemini-cli-bin/package.nix b/pkgs/by-name/ge/gemini-cli-bin/package.nix index f3e8edabf114..976a8ed25215 100644 --- a/pkgs/by-name/ge/gemini-cli-bin/package.nix +++ b/pkgs/by-name/ge/gemini-cli-bin/package.nix @@ -6,21 +6,25 @@ sysctl, writableTmpDirAsHomeHook, nix-update-script, + ripgrep, }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "gemini-cli-bin"; - version = "0.22.5"; + version = "0.24.4"; src = fetchurl { url = "https://github.com/google-gemini/gemini-cli/releases/download/v${finalAttrs.version}/gemini.js"; - hash = "sha256-g6b45+EWBiZ6Ij0nXp0L5jBW8wv1y0KK5CgiThk8Y7U="; + hash = "sha256-xteIV43P5qPOamxsGjCXeCkd1zQmNNbMhvzSWc26DQU="; }; dontUnpack = true; strictDeps = true; - buildInputs = [ nodejs ]; + buildInputs = [ + nodejs + ripgrep + ]; installPhase = '' runHook preInstall @@ -37,6 +41,12 @@ stdenvNoCC.mkDerivation (finalAttrs: { --replace-fail "settings.merged.general?.disableAutoUpdate ?? false" "settings.merged.general?.disableAutoUpdate ?? true" \ --replace-fail "settings.merged.general?.disableAutoUpdate" "(settings.merged.general?.disableAutoUpdate ?? true)" + # use `ripgrep` from `nixpkgs`, more dependencies but prevent downloading incompatible binary on NixOS + # this workaround can be removed once the following upstream issue is resolved: + # https://github.com/google-gemini/gemini-cli/issues/11438 + substituteInPlace $out/bin/gemini \ + --replace-fail 'const existingPath = await resolveExistingRgPath();' 'const existingPath = "${lib.getExe ripgrep}";' + runHook postInstall ''; diff --git a/pkgs/by-name/gi/git-pages-cli/package.nix b/pkgs/by-name/gi/git-pages-cli/package.nix index 2163069a62b3..73dab6b04fe8 100644 --- a/pkgs/by-name/gi/git-pages-cli/package.nix +++ b/pkgs/by-name/gi/git-pages-cli/package.nix @@ -8,17 +8,17 @@ buildGoModule (finalAttrs: { pname = "git-pages-cli"; - version = "1.5.1"; + version = "1.5.2"; src = fetchFromGitea { domain = "codeberg.org"; owner = "git-pages"; repo = "git-pages-cli"; rev = "v${finalAttrs.version}"; - hash = "sha256-T6spNuuG0l1bFv7SnsDTGBtD3Sa+8zKN0/VbsKVkGrM="; + hash = "sha256-58fEurUoRw1hJ2eYHrXrsVDElVVo5BH0bZFw7h1yM0w="; }; - vendorHash = "sha256-5vjUhN3lCr41q91lOD7v0F9c6a8GJj7wBGnnzgFBhJU="; + vendorHash = "sha256-Mico/PFTb8YoRZCP42QETS0DkzMABUGTzBvy692XDJc="; ldflags = [ "-X" diff --git a/pkgs/by-name/gi/github-copilot-cli/package.nix b/pkgs/by-name/gi/github-copilot-cli/package.nix index dd8c0db1b92c..bc69b214ac2a 100644 --- a/pkgs/by-name/gi/github-copilot-cli/package.nix +++ b/pkgs/by-name/gi/github-copilot-cli/package.nix @@ -10,11 +10,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "github-copilot-cli"; - version = "0.0.380"; + version = "0.0.384"; src = fetchzip { url = "https://registry.npmjs.org/@github/copilot/-/copilot-${finalAttrs.version}.tgz"; - hash = "sha256-QClw+IEz0TBVgaQGhZVwk63Bvjb5btTtBPkHWV7Wxl0="; + hash = "sha256-UI85wx9So28J0QCXP1z2zCXmA54L1dzd0Msr9NLs0CY="; }; nativeBuildInputs = [ makeBinaryWrapper ]; diff --git a/pkgs/by-name/gi/gitlogue/package.nix b/pkgs/by-name/gi/gitlogue/package.nix index 97d4e98fbf38..3c615d5082f3 100644 --- a/pkgs/by-name/gi/gitlogue/package.nix +++ b/pkgs/by-name/gi/gitlogue/package.nix @@ -11,16 +11,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "gitlogue"; - version = "0.6.0"; + version = "0.7.0"; src = fetchFromGitHub { owner = "unhappychoice"; repo = "gitlogue"; tag = "v${finalAttrs.version}"; - hash = "sha256-tcq0TIB9Mfm3kt2PInMto7g2VNpDsOvBiQGNP8+nFvY="; + hash = "sha256-mZ2A6274Ujpo5rTewFaMUslZhLCKJ2iw43J8X3vuBBI="; }; - cargoHash = "sha256-RZ+JiMy0zHu8aEn4ytRmFcvASRcsHDVK9ls77W7ann0="; + cargoHash = "sha256-MueaRVomOiQsPSOnHpB/k9a8fNpKpFRilAXgIkVxZ94="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/gl/glslls/package.nix b/pkgs/by-name/gl/glslls/package.nix index e09a9bc35e6c..a8db204b1090 100644 --- a/pkgs/by-name/gl/glslls/package.nix +++ b/pkgs/by-name/gl/glslls/package.nix @@ -19,6 +19,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-wi1QiqaWRh1DmIhwmu94lL/4uuMv6DnB+whM61Jg1Zs="; }; + # Fix build with GCC 15 + postPatch = '' + sed -i "1i #include " externals/glslang/SPIRV/SpvBuilder.h + ''; + nativeBuildInputs = [ python3 cmake diff --git a/pkgs/by-name/go/go2rtc/package.nix b/pkgs/by-name/go/go2rtc/package.nix index e0a9dc6a6d57..a4d9cd99f216 100644 --- a/pkgs/by-name/go/go2rtc/package.nix +++ b/pkgs/by-name/go/go2rtc/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "go2rtc"; - version = "1.9.13"; + version = "1.9.14"; src = fetchFromGitHub { owner = "AlexxIT"; repo = "go2rtc"; tag = "v${version}"; - hash = "sha256-/o7cn5VuORl03zwinxmRD0Y0eDToLX1ODTe1LHQSCXQ="; + hash = "sha256-LwMQeRUIIsbsxaX9EItmlGSab4ssidI2Eklw39hXEHQ="; }; - vendorHash = "sha256-PlYL97TSYAzSO5KSBEk4DCdvOZ9YHoTv55P16Mzyzzg="; + vendorHash = "sha256-fbDHuLuajAMOQwqyvLdQJYglcygjo4EDqPEjeiSWz2Y="; env.CGO_ENABLED = 0; diff --git a/pkgs/by-name/go/google-alloydb-auth-proxy/package.nix b/pkgs/by-name/go/google-alloydb-auth-proxy/package.nix index 182520505ffa..9739cac5f2dd 100644 --- a/pkgs/by-name/go/google-alloydb-auth-proxy/package.nix +++ b/pkgs/by-name/go/google-alloydb-auth-proxy/package.nix @@ -7,18 +7,18 @@ buildGoModule rec { pname = "google-alloydb-auth-proxy"; - version = "1.13.9"; + version = "1.13.10"; src = fetchFromGitHub { owner = "GoogleCloudPlatform"; repo = "alloydb-auth-proxy"; tag = "v${version}"; - hash = "sha256-VCfK2EcFerIxqaAEY9KnfPLqwOJaz6CVRbTQGzTM6SY="; + hash = "sha256-e+m7vr/N4Ij8X89f12ZjJDh60hOMQXQOBOaVE4TUVaA="; }; subPackages = [ "." ]; - vendorHash = "sha256-sC+bAlzb+Pcj0+NQDaUeyjr6I+fv7cQ3+JHJKKtmiT4="; + vendorHash = "sha256-PKtN0HvIzxr42XpandoHqqK9N0ohq2dXxGbnIlMO8mo="; checkFlags = [ "-short" diff --git a/pkgs/by-name/go/goverlay/package.nix b/pkgs/by-name/go/goverlay/package.nix index 3702638479a4..f0db6f99954f 100644 --- a/pkgs/by-name/go/goverlay/package.nix +++ b/pkgs/by-name/go/goverlay/package.nix @@ -24,13 +24,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "goverlay"; - version = "1.7.0"; + version = "1.7.1"; src = fetchFromGitHub { owner = "benjamimgois"; repo = "goverlay"; tag = finalAttrs.version; - hash = "sha256-xfc+ht1piVnjXK+hxHKbhdpp63p/DMLPSzvJq+mYhFs="; + hash = "sha256-zzGxeBnyj04zmPNQ09sYAO17Jaiwx+HA5TyiLo4jFr8="; }; outputs = [ diff --git a/pkgs/by-name/gr/gramps/package.nix b/pkgs/by-name/gr/gramps/package.nix index 590c54b9e41f..290f80bfd269 100644 --- a/pkgs/by-name/gr/gramps/package.nix +++ b/pkgs/by-name/gr/gramps/package.nix @@ -22,7 +22,7 @@ ghostscript, }: -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { version = "6.0.6"; pname = "gramps"; pyproject = true; @@ -30,7 +30,7 @@ python3Packages.buildPythonApplication rec { src = fetchFromGitHub { owner = "gramps-project"; repo = "gramps"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-+sWO+c7haKXH42JVT6Zpz70cHdGC/TPgBUMSD+0+/JI="; }; @@ -113,7 +113,7 @@ python3Packages.buildPythonApplication rec { pinpox tomasajt ]; - changelog = "https://github.com/gramps-project/gramps/blob/${src.tag}/ChangeLog"; + changelog = "https://github.com/gramps-project/gramps/blob/${finalAttrs.src.rev}/ChangeLog"; longDescription = '' Every person has their own story but they are also part of a collective family history. Gramps gives you the ability to record the many details of @@ -123,4 +123,4 @@ python3Packages.buildPythonApplication rec { ''; license = lib.licenses.gpl2Plus; }; -} +}) diff --git a/pkgs/by-name/gr/grimblast/package.nix b/pkgs/by-name/gr/grimblast/package.nix index dddf243a7053..0e6ccfd3552f 100644 --- a/pkgs/by-name/gr/grimblast/package.nix +++ b/pkgs/by-name/gr/grimblast/package.nix @@ -19,13 +19,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "grimblast"; - version = "0.1-unstable-2025-12-18"; + version = "0.1-unstable-2026-01-14"; src = fetchFromGitHub { owner = "hyprwm"; repo = "contrib"; - rev = "41dbcac8183bb1b3a4ade0d8276b2f2df6ae4690"; - hash = "sha256-d3HmUbmfTDIt9mXEHszqyo2byqQMoyJtUJCZ9U1IqHQ="; + rev = "541628cebe42792ddf5063c4abd6402c2f1bd68f"; + hash = "sha256-CopNx3j//gZ2mE0ggEK9dZ474UcbDhpTw+KMor8mSxI="; }; strictDeps = true; diff --git a/pkgs/by-name/gu/guglielmo/package.nix b/pkgs/by-name/gu/guglielmo/package.nix index b16b3393064a..7cfb6eb426fa 100644 --- a/pkgs/by-name/gu/guglielmo/package.nix +++ b/pkgs/by-name/gu/guglielmo/package.nix @@ -50,7 +50,12 @@ stdenv.mkDerivation (finalAttrs: { postFixup = '' # guglielmo opens SDR libraries at run time - patchelf --add-rpath "${airspy}/lib:${rtl-sdr}/lib" $out/bin/.guglielmo-wrapped + patchelf --add-rpath "${ + lib.makeLibraryPath [ + airspy + rtl-sdr + ] + }" $out/bin/.guglielmo-wrapped ''; meta = { diff --git a/pkgs/by-name/gu/gui-for-singbox/package.nix b/pkgs/by-name/gu/gui-for-singbox/package.nix index a68fb36e2072..aa4972bdb927 100644 --- a/pkgs/by-name/gu/gui-for-singbox/package.nix +++ b/pkgs/by-name/gu/gui-for-singbox/package.nix @@ -18,13 +18,13 @@ let pname = "gui-for-singbox"; - version = "1.18.0"; + version = "1.19.0"; src = fetchFromGitHub { owner = "GUI-for-Cores"; repo = "GUI.for.SingBox"; tag = "v${version}"; - hash = "sha256-8X+hLtNKE9iFJMvUtY1ZDXwp39b4bKDotiU79jVto4E="; + hash = "sha256-CY5i5+ObqPVCPiqHLttjxhMOi9fiHp5HWX33fq43txw="; }; metaCommon = { diff --git a/pkgs/by-name/h2/h2o/package.nix b/pkgs/by-name/h2/h2o/package.nix index b161645843de..91e796183994 100644 --- a/pkgs/by-name/h2/h2o/package.nix +++ b/pkgs/by-name/h2/h2o/package.nix @@ -23,13 +23,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "h2o"; - version = "2.3.0-rolling-2026-01-16"; + version = "2.3.0-rolling-2026-01-19"; src = fetchFromGitHub { owner = "h2o"; repo = "h2o"; - rev = "ccea64b17ade832753db933658047ede9f31a380"; - hash = "sha256-47oNCbOGqNNNUkoP6Bj5F8Zv5QAN0+MGOIGo5jXGtf4="; + rev = "a9ba592b904684b8d12e9a825e4a579c31999c2b"; + hash = "sha256-ZLoZgMIhBtLJ0GS6leyTegNauAczGB0Ua1pU6PE31yE="; }; outputs = [ diff --git a/pkgs/by-name/ha/haproxy/package.nix b/pkgs/by-name/ha/haproxy/package.nix index 672e5d52d391..8c0cf6428ad1 100644 --- a/pkgs/by-name/ha/haproxy/package.nix +++ b/pkgs/by-name/ha/haproxy/package.nix @@ -39,11 +39,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "haproxy"; - version = "3.3.0"; + version = "3.3.1"; src = fetchurl { url = "https://www.haproxy.org/download/${lib.versions.majorMinor finalAttrs.version}/src/haproxy-${finalAttrs.version}.tar.gz"; - hash = "sha256-vy2mtp+C17hVvpd6ueHUcE7vVim2V6xyr7WVioackC4="; + hash = "sha256-t3rNrop2ANuVdvx0kpJ0LBCRZ2SABVEwNd6nZ+RaAN8="; }; buildInputs = [ diff --git a/pkgs/by-name/ha/hawkeye/package.nix b/pkgs/by-name/ha/hawkeye/package.nix index cb26366ba51c..e054f1583460 100644 --- a/pkgs/by-name/ha/hawkeye/package.nix +++ b/pkgs/by-name/ha/hawkeye/package.nix @@ -7,16 +7,16 @@ rustPackages.rustPlatform.buildRustPackage (finalAttrs: { pname = "hawkeye"; - version = "6.4.0"; + version = "6.4.1"; src = fetchFromGitHub { owner = "korandoru"; repo = "hawkeye"; tag = "v${finalAttrs.version}"; - hash = "sha256-iK6h4xxZzahK045711TWbhjxwWNPShOX7V8HMmADkaA="; + hash = "sha256-k+FXv4TJuIgsgFaci3I5HTgjd7PeLJDpPGCH6Tx81Kw="; }; - cargoHash = "sha256-QmVERRi4rB92Z7hn5gQJaWNQCQrzGC9lf8eHjUODmv0="; + cargoHash = "sha256-T2OH/dbs0SXk/0PkUImv3jq71Z1luhTbjsb/sSr5yBY="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/hl/hl-log-viewer/package.nix b/pkgs/by-name/hl/hl-log-viewer/package.nix index 6577bf30f363..a2a7cb60cd95 100644 --- a/pkgs/by-name/hl/hl-log-viewer/package.nix +++ b/pkgs/by-name/hl/hl-log-viewer/package.nix @@ -9,16 +9,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "hl-log-viewer"; - version = "0.35.1"; + version = "0.35.2"; src = fetchFromGitHub { owner = "pamburus"; repo = "hl"; tag = "v${finalAttrs.version}"; - hash = "sha256-gkUZHepuPOzFi0oWFBzqXPFfWaxlKr5+VCkZwawz+/Q="; + hash = "sha256-jCUr+9FPYnGRbeQkrJjfb9/Cjn3kq40z6cYkU4Gomts="; }; - cargoHash = "sha256-jon7nDdK2bYDIh/zqJV7em87se9XBXV6+c2HlMBzJnA="; + cargoHash = "sha256-+QFNdQv2swIEHivQ5E7ujyYk7xa6gM8A5SwJfnKPScY="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/iw/iwe/package.nix b/pkgs/by-name/iw/iwe/package.nix index 1af2da020e84..fdb780d5e1f2 100644 --- a/pkgs/by-name/iw/iwe/package.nix +++ b/pkgs/by-name/iw/iwe/package.nix @@ -8,16 +8,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "iwe"; - version = "0.0.59"; + version = "0.0.60"; src = fetchFromGitHub { owner = "iwe-org"; repo = "iwe"; tag = "iwe-v${finalAttrs.version}"; - hash = "sha256-6GaYFAN3Cz9VAvYaMQTAsXNolDuuVXfkrwqBqbr8Kfw="; + hash = "sha256-PSSH8uytCPtTgxte/wc0TfTiKD96DiVrWFJN9QjuHo8="; }; - cargoHash = "sha256-1j1XAcwbct9wJrEWYpJFFzVRmjHliUmNxgprUF43/ew="; + cargoHash = "sha256-PqINghZ88FsXj4HEFp0ugFH30lbQfBcoiv86PPOCzLI="; cargoBuildFlags = [ "--package=iwe" diff --git a/pkgs/by-name/je/jefferson/package.nix b/pkgs/by-name/je/jefferson/package.nix index 965b27ae7ec1..79911953cbb5 100644 --- a/pkgs/by-name/je/jefferson/package.nix +++ b/pkgs/by-name/je/jefferson/package.nix @@ -9,7 +9,6 @@ python3.pkgs.buildPythonApplication rec { pname = "jefferson"; version = "0.4.6"; pyproject = true; - disabled = python3.pkgs.pythonOlder "3.9"; src = fetchFromGitHub { owner = "onekey-sec"; diff --git a/pkgs/by-name/ka/karere/package.nix b/pkgs/by-name/ka/karere/package.nix index 2365d3b0fbc2..c73a4eefc4af 100644 --- a/pkgs/by-name/ka/karere/package.nix +++ b/pkgs/by-name/ka/karere/package.nix @@ -20,18 +20,18 @@ stdenv.mkDerivation (finalAttrs: { pname = "karere"; - version = "2.0.9"; + version = "2.3.2"; src = fetchFromGitHub { owner = "tobagin"; repo = "karere"; tag = "v${finalAttrs.version}"; - hash = "sha256-roxynxGiM43VHl+ngo/EMKEJ56XaYA6qaok/SzppFlY="; + hash = "sha256-FtGT2GXBHmXHLxRW+J2735+Z+++xbzyNAjyfXPewZ8Y="; }; cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) pname version src; - hash = "sha256-BYG1TgCbkaQlquFy/tmjzdfypc8yno7w7SdBsgqOxkU="; + hash = "sha256-NqE9x3mBfHt1bhSpxm+DurX61oJDxt3IibTYFi/lqO8="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ki/ki/package.nix b/pkgs/by-name/ki/ki/package.nix index 4dac23993144..3806ca6a23f3 100644 --- a/pkgs/by-name/ki/ki/package.nix +++ b/pkgs/by-name/ki/ki/package.nix @@ -11,8 +11,6 @@ python3Packages.buildPythonApplication { pyproject = true; - disabled = python3Packages.pythonOlder "3.9"; - src = fetchFromGitHub { owner = "langfield"; repo = "ki"; diff --git a/pkgs/by-name/la/labelle/package.nix b/pkgs/by-name/la/labelle/package.nix index a2a2f9ec98c1..bb0b4b5002e2 100644 --- a/pkgs/by-name/la/labelle/package.nix +++ b/pkgs/by-name/la/labelle/package.nix @@ -8,14 +8,14 @@ }: python3Packages.buildPythonApplication rec { pname = "labelle"; - version = "1.4.2"; + version = "1.4.3"; pyproject = true; src = fetchFromGitHub { owner = "labelle-org"; repo = "labelle"; tag = "v${version}"; - hash = "sha256-p+V6ihFDxhG7t4LiwTJVfJTk6rxJxGHqxTdplbLZR2Q="; + hash = "sha256-yYhtA7Rxg95HCOIKTak172tcuTnWlCbSDlPQ9VOpoWE="; }; postPatch = '' diff --git a/pkgs/by-name/la/lacy/package.nix b/pkgs/by-name/la/lacy/package.nix index 95cecaec55b5..e968d3069dbf 100644 --- a/pkgs/by-name/la/lacy/package.nix +++ b/pkgs/by-name/la/lacy/package.nix @@ -6,18 +6,18 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "lacy"; - version = "0.6.0"; + version = "0.6.1"; src = fetchFromGitHub { owner = "timothebot"; repo = "lacy"; tag = "v${finalAttrs.version}"; - hash = "sha256-NjLCN9RDWusfw1BwSzRQLCx4UhHyMpQZ5+igRG1rX9Q="; + hash = "sha256-3LFJpzuL2ULnStFwW165gH/S8Hjh49QE4R6c0NyKRSI="; }; passthru.updateScript = nix-update-script { }; - cargoHash = "sha256-eE/kyb09AwcYTsyXQ9Yn43QF2veCRAgGkNgykJHCsFE="; + cargoHash = "sha256-OJW29CopdO7lbkr0F2KVnfbRGEGIf8J8Vu8YChjeElY="; meta = { description = "Fast magical cd alternative for lacy terminal navigators"; diff --git a/pkgs/by-name/le/lefthook/package.nix b/pkgs/by-name/le/lefthook/package.nix index 163cd50866d5..ba0f5327c33a 100644 --- a/pkgs/by-name/le/lefthook/package.nix +++ b/pkgs/by-name/le/lefthook/package.nix @@ -8,7 +8,7 @@ let pname = "lefthook"; - version = "2.0.14"; + version = "2.0.15"; in buildGoModule { inherit pname version; @@ -17,7 +17,7 @@ buildGoModule { owner = "evilmartians"; repo = "lefthook"; rev = "v${version}"; - hash = "sha256-YPDE4KvYW5P93+mb7RWiXBqkGrkzr/fPlVDh1Keizdk="; + hash = "sha256-HBVBH3F6EGLaB2FRgkhdwR9+E9PlthxEs/kckUZJosA="; }; vendorHash = "sha256-fIPvoR/uRI3q/yOl1qS2pE4JdCPc4RC4DEy8LT7Xrs0="; diff --git a/pkgs/by-name/le/lemon/package.nix b/pkgs/by-name/le/lemon/package.nix index 8ab85bd08711..c870a191559b 100644 --- a/pkgs/by-name/le/lemon/package.nix +++ b/pkgs/by-name/le/lemon/package.nix @@ -8,13 +8,13 @@ let srcs = { lemon = fetchurl { - sha256 = "1c5pk2hz7j9hix5mpc38rwnm8dnlr2jqswf4lan6v78ccbyqzkjx"; - url = "http://www.sqlite.org/src/raw/tool/lemon.c?name=680980c7935bfa1edec20c804c9e5ba4b1dd96f5"; + hash = "sha256-TXVOEtRpOhLCyi4C3RMt0lHmMp/y2K5YdL8ND6WPrOY="; + url = "https://www.sqlite.org/src/raw/3fdc16b23f1ea0c91c049b518fc3f75c71843dbfe2b447fcb3cd92d9e4f219f8?at=lemon.c"; name = "lemon.c"; }; lempar = fetchurl { - sha256 = "1ba13a6yh9j2cs1aw2fh4dxqvgf399gxq1gpp4sh8q0f2w6qiw3i"; - url = "http://www.sqlite.org/src/raw/tool/lempar.c?name=01ca97f87610d1dac6d8cd96ab109ab1130e76dc"; + hash = "sha256-TYKrUJHtpoljeRWZq4Y1rYLlu7LeM/HuUhe3LJZZkVo="; + url = "https://www.sqlite.org/src/raw/b57e1780bf8098dd4a9a5bba537f994276ea825a420f6165153e5894dc2dfb07?at=lempar.c"; name = "lempar.c"; }; }; @@ -22,7 +22,7 @@ let in stdenv.mkDerivation { pname = "lemon"; - version = "1.69"; + version = "1.0-unstable"; dontUnpack = true; diff --git a/pkgs/by-name/li/libgsf/package.nix b/pkgs/by-name/li/libgsf/package.nix index e27be5d3e91a..6d073e648605 100644 --- a/pkgs/by-name/li/libgsf/package.nix +++ b/pkgs/by-name/li/libgsf/package.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "libgsf"; - version = "1.14.54"; + version = "1.14.55"; outputs = [ "out" @@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "GNOME"; repo = "libgsf"; tag = "LIBGSF_${lib.replaceString "." "_" finalAttrs.version}"; - hash = "sha256-jry6Ezzm3uEofIsJd97EzX+qoOjQEb3H1Y8o65nqmeo="; + hash = "sha256-lx/FgF4X0aLtUFRaX69gX9J7w9ZlO0A1xoVg9Fgvtfo="; }; postPatch = '' diff --git a/pkgs/by-name/li/libretro-shaders-slang/package.nix b/pkgs/by-name/li/libretro-shaders-slang/package.nix index 77b5bbeaa515..b57fcab011bf 100644 --- a/pkgs/by-name/li/libretro-shaders-slang/package.nix +++ b/pkgs/by-name/li/libretro-shaders-slang/package.nix @@ -7,13 +7,13 @@ stdenvNoCC.mkDerivation { pname = "libretro-shaders-slang"; - version = "0-unstable-2026-01-08"; + version = "0-unstable-2026-01-11"; src = fetchFromGitHub { owner = "libretro"; repo = "slang-shaders"; - rev = "c2f3c5b0ce8c5e7e3ed9d885a924f85712cb38a0"; - hash = "sha256-tQ/eUFNlzKYaP6eDiykCtooccEa2YP++iFXKSUVgwcw="; + rev = "3d62b0e20f5bfa1a244edd70987e565de7e68849"; + hash = "sha256-nkPMdoqIel0OIFM9J99rX50IUKObnEDERpwIkOYGsA4="; }; dontConfigure = true; diff --git a/pkgs/by-name/li/libvisio/package.nix b/pkgs/by-name/li/libvisio/package.nix index 5c4ba03253c5..64dd85a9e474 100644 --- a/pkgs/by-name/li/libvisio/package.nix +++ b/pkgs/by-name/li/libvisio/package.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { pname = "libvisio"; - version = "0.1.8"; + version = "0.1.10"; outputs = [ "out" @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "https://dev-www.libreoffice.org/src/libvisio/${pname}-${version}.tar.xz"; - hash = "sha256-tAmP+/TcuecSE/oKzdvZKPJ77TDbLYAjSBOxXVPQQFs="; + hash = "sha256-np7/dREtTZLZImKtf8JZnCHib4/FulSQDv3IPAUB5HI="; }; strictDeps = true; diff --git a/pkgs/by-name/ll/llama-cpp/package.nix b/pkgs/by-name/ll/llama-cpp/package.nix index 3fe9e30521d3..93235e8127f9 100644 --- a/pkgs/by-name/ll/llama-cpp/package.nix +++ b/pkgs/by-name/ll/llama-cpp/package.nix @@ -31,7 +31,7 @@ metalSupport ? stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64 && !openclSupport, vulkanSupport ? false, rpcSupport ? false, - curl, + openssl, llama-cpp, shaderc, vulkan-headers, @@ -74,13 +74,13 @@ let in effectiveStdenv.mkDerivation (finalAttrs: { pname = "llama-cpp"; - version = "7767"; + version = "7772"; src = fetchFromGitHub { owner = "ggml-org"; repo = "llama.cpp"; tag = "b${finalAttrs.version}"; - hash = "sha256-k6Q1fUci0SkEB8vH5G3oG/evG7aUYBSqo+iXYG6x/dE="; + hash = "sha256-qARA75QjtqBiRI4Hjr+dHs4Kr+Gk9n1DxRk401y+m68="; leaveDotGit = true; postFetch = '' git -C "$out" rev-parse --short HEAD > $out/COMMIT @@ -105,7 +105,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { ++ optionals rocmSupport rocmBuildInputs ++ optionals blasSupport [ blas ] ++ optionals vulkanSupport vulkanBuildInputs - ++ [ curl ]; + ++ [ openssl ]; preConfigure = '' prependToVar cmakeFlags "-DLLAMA_BUILD_COMMIT:STRING=$(cat COMMIT)" @@ -117,7 +117,7 @@ effectiveStdenv.mkDerivation (finalAttrs: { (cmakeBool "LLAMA_BUILD_EXAMPLES" false) (cmakeBool "LLAMA_BUILD_SERVER" true) (cmakeBool "LLAMA_BUILD_TESTS" (finalAttrs.finalPackage.doCheck or false)) - (cmakeBool "LLAMA_CURL" true) + (cmakeBool "LLAMA_OPENSSL" true) (cmakeBool "BUILD_SHARED_LIBS" true) (cmakeBool "GGML_BLAS" blasSupport) (cmakeBool "GGML_CLBLAST" openclSupport) diff --git a/pkgs/by-name/ll/llm-ls/package.nix b/pkgs/by-name/ll/llm-ls/package.nix index 821a8a11a8a2..98566af2103f 100644 --- a/pkgs/by-name/ll/llm-ls/package.nix +++ b/pkgs/by-name/ll/llm-ls/package.nix @@ -4,24 +4,26 @@ fetchFromGitHub, fetchpatch, pkg-config, + oniguruma, versionCheckHook, nix-update-script, }: -rustPlatform.buildRustPackage rec { +rustPlatform.buildRustPackage (finalAttrs: { pname = "llm-ls"; version = "0.5.3"; src = fetchFromGitHub { owner = "huggingface"; repo = "llm-ls"; - tag = version; + tag = finalAttrs.version; hash = "sha256-ICMM2kqrHFlKt2/jmE4gum1Eb32afTJkT3IRoqcjJJ8="; }; cargoPatches = [ # https://github.com/huggingface/llm-ls/pull/102 ./fix-time-compilation-failure.patch + (fetchpatch { name = "fix-version.patch"; url = "https://github.com/huggingface/llm-ls/commit/479401f3a5173f2917a888c8068f84e29b7dceed.patch?full_index=1"; @@ -29,12 +31,18 @@ rustPlatform.buildRustPackage rec { }) ]; + env.RUSTONIG_SYSTEM_LIBONIG = true; + cargoHash = "sha256-qiYspv2KcvzxVshVpAMlSqFDqbbiutpLyWMz+QSIVmQ="; buildAndTestSubdir = "crates/llm-ls"; nativeBuildInputs = [ pkg-config ]; + buildInputs = [ + oniguruma + ]; + nativeInstallCheckInputs = [ versionCheckHook ]; @@ -47,10 +55,10 @@ rustPlatform.buildRustPackage rec { meta = { description = "LSP server leveraging LLMs for code completion (and more?)"; homepage = "https://github.com/huggingface/llm-ls"; - changelog = "https://github.com/huggingface/llm-ls/releases/tag/${version}"; + changelog = "https://github.com/huggingface/llm-ls/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ jfvillablanca ]; platforms = lib.platforms.all; mainProgram = "llm-ls"; }; -} +}) diff --git a/pkgs/by-name/lu/lua-language-server/package.nix b/pkgs/by-name/lu/lua-language-server/package.nix index 47343ecd6937..c50079c6e8a4 100644 --- a/pkgs/by-name/lu/lua-language-server/package.nix +++ b/pkgs/by-name/lu/lua-language-server/package.nix @@ -19,13 +19,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "lua-language-server"; - version = "3.16.1"; + version = "3.17.0"; src = fetchFromGitHub { owner = "luals"; repo = "lua-language-server"; tag = finalAttrs.version; - hash = "sha256-HYtnTJYII548+/tp+1UjRgsBaTuDz27AIc2MvBjBh8o="; + hash = "sha256-jeO01VvukzpVPP/ob/p/br51uy6eVdAFqRTIo/DttR0="; fetchSubmodules = true; }; @@ -137,7 +137,6 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.mit; maintainers = with lib.maintainers; [ gepbird - sei40kr ]; mainProgram = "lua-language-server"; platforms = lib.platforms.linux ++ lib.platforms.darwin; diff --git a/pkgs/by-name/lx/lxgw-neoxihei/package.nix b/pkgs/by-name/lx/lxgw-neoxihei/package.nix index 92f295a4a80a..32e084e89119 100644 --- a/pkgs/by-name/lx/lxgw-neoxihei/package.nix +++ b/pkgs/by-name/lx/lxgw-neoxihei/package.nix @@ -6,11 +6,11 @@ stdenvNoCC.mkDerivation rec { pname = "lxgw-neoxihei"; - version = "1.238"; + version = "1.239"; src = fetchurl { url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf"; - hash = "sha256-DEH63tH3+edrk/Srh89dqNDgevM8CuccUlBpNnGpXKE="; + hash = "sha256-x8ZhP+umMjSESZjf0R2vIbszcs6IUlEVIZKAQD20DxY="; }; dontUnpack = true; diff --git a/pkgs/by-name/ma/mailpit/source.nix b/pkgs/by-name/ma/mailpit/source.nix index 44026157c289..a564becc52c2 100644 --- a/pkgs/by-name/ma/mailpit/source.nix +++ b/pkgs/by-name/ma/mailpit/source.nix @@ -1,6 +1,6 @@ { - version = "1.28.2"; - hash = "sha256-KqNMykpeNwY86DmpxH0+AGsVsQlICIyU49Y8P1wko+A="; - npmDepsHash = "sha256-17cX1tGjHade5sxNqlZGITBKleZR2IwTujVqecsb9Po="; - vendorHash = "sha256-pzzzji+MflKwFzAMkWQrGt99M9yanVsguHrHKB6VXSc="; + version = "1.28.3"; + hash = "sha256-5QfGfEevV/8Epmh7cSHwB11J6wmpXzXHsPCrDms1bAo="; + npmDepsHash = "sha256-zyEk7OcaN8ikJFvSzIIVvTKICi8GtekT4FB2YDHzo3o="; + vendorHash = "sha256-yx7L7evEt0p/U8H+gNGl1sx/JZ5qg+0fInFjZK8xdp4="; } diff --git a/pkgs/by-name/ma/makejinja/package.nix b/pkgs/by-name/ma/makejinja/package.nix index 22064b74b2ab..2cbf26937e78 100644 --- a/pkgs/by-name/ma/makejinja/package.nix +++ b/pkgs/by-name/ma/makejinja/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, }: -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "makejinja"; version = "2.8.2"; pyproject = true; @@ -12,7 +12,7 @@ python3Packages.buildPythonApplication rec { src = fetchFromGitHub { owner = "mirkolenz"; repo = "makejinja"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-TH4pgohh6yIgsPtsHnYSUr17Apk8C02KD+8sNO5GOf8="; }; @@ -46,6 +46,6 @@ python3Packages.buildPythonApplication rec { mirkolenz ]; platforms = lib.platforms.darwin ++ lib.platforms.linux; - changelog = "https://github.com/mirkolenz/makejinja/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/mirkolenz/makejinja/blob/${finalAttrs.src.rev}/CHANGELOG.md"; }; -} +}) diff --git a/pkgs/by-name/ma/mark/package.nix b/pkgs/by-name/ma/mark/package.nix index 918ee20b7ecf..ea56bb31bcc4 100644 --- a/pkgs/by-name/ma/mark/package.nix +++ b/pkgs/by-name/ma/mark/package.nix @@ -8,16 +8,16 @@ # https://github.com/kovetskiy/mark/pull/581#issuecomment-2797872996 buildGoModule rec { pname = "mark"; - version = "15.2.0"; + version = "15.3.0"; src = fetchFromGitHub { owner = "kovetskiy"; repo = "mark"; rev = "v${version}"; - sha256 = "sha256-ZvFaSoD9nQtxc5ONWneVgpAfX3f7sS0lBSMXqhABn8o="; + sha256 = "sha256-tQmoTvZO/Las8QDJqcmW7upAciFEQqVFVKEVx6Zg7Mg="; }; - vendorHash = "sha256-3hfeh7PRzsPfQ+aLPV44ExXum6lG6Huvc7itRIn8mNo="; + vendorHash = "sha256-Pk56hx2GRq+4NmCVx0S8Mr2Jgnn44aSRNfhtZIH9Lxk="; ldflags = [ "-s" diff --git a/pkgs/by-name/ma/markdownlint-cli2/package-lock.json b/pkgs/by-name/ma/markdownlint-cli2/package-lock.json new file mode 100644 index 000000000000..8ff9f25177a4 --- /dev/null +++ b/pkgs/by-name/ma/markdownlint-cli2/package-lock.json @@ -0,0 +1,7704 @@ +{ + "name": "markdownlint-cli2", + "version": "0.20.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "markdownlint-cli2", + "version": "0.20.0", + "license": "MIT", + "dependencies": { + "globby": "15.0.0", + "js-yaml": "4.1.1", + "jsonc-parser": "3.3.1", + "markdown-it": "14.1.0", + "markdownlint": "0.40.0", + "markdownlint-cli2-formatter-default": "0.0.6", + "micromatch": "4.0.8" + }, + "bin": { + "markdownlint-cli2": "markdownlint-cli2-bin.mjs" + }, + "devDependencies": { + "@eslint/js": "9.39.1", + "@playwright/test": "1.57.0", + "@stylistic/eslint-plugin": "5.6.1", + "ajv": "8.17.1", + "ava": "6.4.1", + "c8": "10.1.3", + "chalk": "5.6.2", + "cpy": "12.1.0", + "cpy-cli": "6.0.0", + "eslint": "9.39.1", + "eslint-plugin-jsdoc": "61.4.1", + "eslint-plugin-n": "17.23.1", + "eslint-plugin-unicorn": "62.0.0", + "execa": "9.6.1", + "markdown-it-emoji": "3.0.0", + "markdown-it-for-inline": "2.0.1", + "markdownlint-cli2-formatter-codequality": "0.0.7", + "markdownlint-cli2-formatter-json": "0.0.9", + "markdownlint-cli2-formatter-junit": "0.0.14", + "markdownlint-cli2-formatter-pretty": "0.0.9", + "markdownlint-cli2-formatter-sarif": "0.0.4", + "markdownlint-cli2-formatter-summarize": "0.0.8", + "markdownlint-cli2-formatter-template": "0.0.4", + "markdownlint-rule-extended-ascii": "0.2.1", + "npm-run-all": "4.1.5", + "terminal-link": "5.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.76.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz", + "integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.46.0", + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~6.10.0" + }, + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@es-joy/resolve.exports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.3.tgz", + "integrity": "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "consola": "^3.2.3", + "detect-libc": "^2.0.0", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^2.6.7", + "nopt": "^8.0.0", + "semver": "^7.5.3", + "tar": "^7.4.0" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/base62": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.6.1.tgz", + "integrity": "sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.0", + "@typescript-eslint/types": "^8.47.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=9.0.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/katex": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", + "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/types": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vercel/nft": { + "version": "0.29.4", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.4.tgz", + "integrity": "sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^10.4.5", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", + "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrgv": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arrgv/-/arrgv-1.0.2.tgz", + "integrity": "sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/arrify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", + "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ava": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/ava/-/ava-6.4.1.tgz", + "integrity": "sha512-vxmPbi1gZx9zhAjHBgw81w/iEDKcrokeRk/fqDTyA2DQygZ0o+dUGRHFOtX8RA5N0heGJTTsIk7+xYxitDb61Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vercel/nft": "^0.29.4", + "acorn": "^8.15.0", + "acorn-walk": "^8.3.4", + "ansi-styles": "^6.2.1", + "arrgv": "^1.0.2", + "arrify": "^3.0.0", + "callsites": "^4.2.0", + "cbor": "^10.0.9", + "chalk": "^5.4.1", + "chunkd": "^2.0.1", + "ci-info": "^4.3.0", + "ci-parallel-vars": "^1.0.1", + "cli-truncate": "^4.0.0", + "code-excerpt": "^4.0.0", + "common-path-prefix": "^3.0.0", + "concordance": "^5.0.4", + "currently-unhandled": "^0.4.1", + "debug": "^4.4.1", + "emittery": "^1.2.0", + "figures": "^6.1.0", + "globby": "^14.1.0", + "ignore-by-default": "^2.1.0", + "indent-string": "^5.0.0", + "is-plain-object": "^5.0.0", + "is-promise": "^4.0.0", + "matcher": "^5.0.0", + "memoize": "^10.1.0", + "ms": "^2.1.3", + "p-map": "^7.0.3", + "package-config": "^5.0.0", + "picomatch": "^4.0.2", + "plur": "^5.1.0", + "pretty-ms": "^9.2.0", + "resolve-cwd": "^3.0.0", + "stack-utils": "^2.0.6", + "strip-ansi": "^7.1.0", + "supertap": "^3.0.1", + "temp-dir": "^3.0.0", + "write-file-atomic": "^6.0.0", + "yargs": "^17.7.2" + }, + "bin": { + "ava": "entrypoints/cli.mjs" + }, + "engines": { + "node": "^18.18 || ^20.8 || ^22 || ^23 || >=24" + }, + "peerDependencies": { + "@ava/typescript": "*" + }, + "peerDependenciesMeta": { + "@ava/typescript": { + "optional": true + } + } + }, + "node_modules/ava/node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ava/node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ava/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz", + "integrity": "sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/builtin-modules": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", + "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", + "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^1.0.1", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^7.0.1", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "monocart-coverage-reports": "^2" + }, + "peerDependenciesMeta": { + "monocart-coverage-reports": { + "optional": true + } + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-4.2.0.tgz", + "integrity": "sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001764", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz", + "integrity": "sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/cbor": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.11.tgz", + "integrity": "sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==", + "dev": true, + "license": "MIT", + "dependencies": { + "nofilter": "^3.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/chunkd": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-2.0.1.tgz", + "integrity": "sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ci-parallel-vars": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", + "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/code-excerpt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", + "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "convert-to-spaces": "^2.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concordance": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-5.0.4.tgz", + "integrity": "sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "date-time": "^3.1.0", + "esutils": "^2.0.3", + "fast-diff": "^1.2.0", + "js-string-escape": "^1.0.1", + "lodash": "^4.17.15", + "md5-hex": "^3.0.1", + "semver": "^7.3.2", + "well-known-symbols": "^2.0.0" + }, + "engines": { + "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-to-spaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", + "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/copy-file": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/copy-file/-/copy-file-11.1.0.tgz", + "integrity": "sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.11", + "p-event": "^6.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js-compat": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", + "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cpy": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/cpy/-/cpy-12.1.0.tgz", + "integrity": "sha512-3z9tP1rPBLG7pQYn9iRgl7JOSew0SMPuWmakaRfzhXpmFBHmRbp7JekpuqPkXbbWOdSeKSbInYEcdIZjov2fNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-file": "^11.1.0", + "globby": "^15.0.0", + "junk": "^4.0.1", + "micromatch": "^4.0.8", + "p-filter": "^4.1.0", + "p-map": "^7.0.3" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cpy-cli": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cpy-cli/-/cpy-cli-6.0.0.tgz", + "integrity": "sha512-q7GUqTDnRymCbScJ4Ph1IUM86wWdKG8JbgrvKLgvvehH4wrbRcVN+jRwOTlxJdwm7ykdXMKSp6IESksFeHa0eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cpy": "^12.0.0", + "meow": "^13.2.0" + }, + "bin": { + "cpy": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", + "integrity": "sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "time-zone": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-1.2.0.tgz", + "integrity": "sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "61.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.4.1.tgz", + "integrity": "sha512-3c1QW/bV25sJ1MsIvsvW+EtLtN6yZMduw7LVQNVt72y2/5BbV5Pg5b//TE5T48LRUxoEQGaZJejCmcj3wCxBzw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.76.0", + "@es-joy/resolve.exports": "1.2.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.4.3", + "escape-string-regexp": "^4.0.0", + "espree": "^10.4.0", + "esquery": "^1.6.0", + "html-entities": "^2.6.0", + "object-deep-merge": "^2.0.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.3", + "spdx-expression-parse": "^4.0.0", + "to-valid-identifier": "^1.0.0" + }, + "engines": { + "node": ">=20.11.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "17.23.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", + "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.5.0", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "globrex": "^0.1.2", + "ignore": "^5.3.2", + "semver": "^7.6.3", + "ts-declaration-location": "^1.0.6" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "62.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-62.0.0.tgz", + "integrity": "sha512-HIlIkGLkvf29YEiS/ImuDZQbP12gWyx5i3C6XrRxMvVdqMroCI9qoVYCoIl17ChN+U89pn9sVwLxhIWj5nEc7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "@eslint-community/eslint-utils": "^4.9.0", + "@eslint/plugin-kit": "^0.4.0", + "change-case": "^5.4.4", + "ci-info": "^4.3.1", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.46.0", + "esquery": "^1.6.0", + "find-up-simple": "^1.0.1", + "globals": "^16.4.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^5.0.0", + "jsesc": "^3.1.0", + "pluralize": "^8.0.0", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.13.0", + "semver": "^7.7.3", + "strip-indent": "^4.1.1" + }, + "engines": { + "node": "^20.10.0 || >=21.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=9.38.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-15.0.0.tgz", + "integrity": "sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-2.1.0.tgz", + "integrity": "sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10 <11 || >=12 <13 || >=14" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/irregular-plurals": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", + "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^5.0.0" + }, + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz", + "integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/junit-report-builder": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/junit-report-builder/-/junit-report-builder-5.1.1.tgz", + "integrity": "sha512-ZNOIIGMzqCGcHQEA2Q4rIQQ3Df6gSIfne+X9Rly9Bc2y55KxAZu8iGv+n2pP0bLf0XAOctJZgeloC54hWzCahQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "make-dir": "^3.1.0", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/junit-report-builder/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/junit-report-builder/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/katex": { + "version": "0.16.27", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.27.tgz", + "integrity": "sha512-aeQoDkuRWSqQN6nSvVCEFvfXdqo1OQiCmmW1kc9xSdjutPv7BGO7pqY9sQRJpMOGrEdfDgF2TfRXe5eUAD2Waw==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/load-json-file": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", + "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-emoji": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-3.0.0.tgz", + "integrity": "sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdown-it-for-inline": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/markdown-it-for-inline/-/markdown-it-for-inline-2.0.1.tgz", + "integrity": "sha512-JGOi3/Ohhzehs+1qSA4CkDydmVBtiYi2q2BD//YtTbSK+75InrGJX2MtPq1AdMeC4BV7rwEhq1+3pLnwGbsgzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdownlint": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.40.0.tgz", + "integrity": "sha512-UKybllYNheWac61Ia7T6fzuQNDZimFIpCg2w6hHjgV1Qu0w1TV0LlSgryUGzM0bkKQCBhy2FDhEELB73Kb0kAg==", + "license": "MIT", + "dependencies": { + "micromark": "4.0.2", + "micromark-core-commonmark": "2.0.3", + "micromark-extension-directive": "4.0.0", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.1", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.2", + "string-width": "8.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli2": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.20.0.tgz", + "integrity": "sha512-esPk+8Qvx/f0bzI7YelUeZp+jCtFOk3KjZ7s9iBQZ6HlymSXoTtWGiIRZP05/9Oy2ehIoIjenVwndxGtxOIJYQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "globby": "15.0.0", + "js-yaml": "4.1.1", + "jsonc-parser": "3.3.1", + "markdown-it": "14.1.0", + "markdownlint": "0.40.0", + "markdownlint-cli2-formatter-default": "0.0.6", + "micromatch": "4.0.8" + }, + "bin": { + "markdownlint-cli2": "markdownlint-cli2-bin.mjs" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint-cli2-formatter-codequality": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-codequality/-/markdownlint-cli2-formatter-codequality-0.0.7.tgz", + "integrity": "sha512-7DmWN/l3SHqCZn8iWik1qTkJq6p2j12Snmt94uNhD8dkZyR18k1rkRFaM6e04AyNAww+frNuUAupVHmnNMspPQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2-formatter-default": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.6.tgz", + "integrity": "sha512-VVDGKsq9sgzu378swJ0fcHfSicUnMxnL8gnLm/Q4J/xsNJ4e5bA6lvAz7PCzIl0/No0lHyaWdqVD2jotxOSFMQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2-formatter-json": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-json/-/markdownlint-cli2-formatter-json-0.0.9.tgz", + "integrity": "sha512-f8Hp3YD51RgrK7k2nh0OYXt6Jq3kT9Cs3FIaI+BTDdMywplfMNkiBb6VTijL0ZrpOpd9YXa4VER91DL1DdyMgA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2-formatter-junit": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-junit/-/markdownlint-cli2-formatter-junit-0.0.14.tgz", + "integrity": "sha512-q+aScBwPMKk97WiPSZ9f+Un4PvGkbII5LRVhnGX5yWYr8iPbaHqfNASaNl1om92ceJlS3OD+04ghtR3K2DZR3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "junit-report-builder": "5.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2-formatter-pretty": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-pretty/-/markdownlint-cli2-formatter-pretty-0.0.9.tgz", + "integrity": "sha512-5zuqYonXTUu7yLP+f0ERcYu3c6tlWJVMkp+ovo6RNEvy8NEpkdUXRBAObbuJVSE3bJcaqderebfLSlEdUK8HDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "5.6.2", + "terminal-link": "5.0.0" + }, + "engines": { + "node": ">=14.18.0" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2-formatter-sarif": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-sarif/-/markdownlint-cli2-formatter-sarif-0.0.4.tgz", + "integrity": "sha512-rTszXGdLUk/i0UiBx+JUif9r68C1SSKC29Muyr9XNKv9oiF0vzfTdBRAcy7PLuIzusebsiiz6xZXA6UGjHYQ0Q==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2-formatter-summarize": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-summarize/-/markdownlint-cli2-formatter-summarize-0.0.8.tgz", + "integrity": "sha512-Uif/EDMzqbbRVb9I67botIQnFluw+XGuqBd+m8n4jo95MegKOA+CJm/QlJCqUDMDBDnnYnyR6SaDlCyMkBUcXA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2-formatter-template": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-template/-/markdownlint-cli2-formatter-template-0.0.4.tgz", + "integrity": "sha512-DcUt0q/6fAOAxOvKicBzpz6oSkCSmLD7+k+s8DEmdKzm+ZGo6i6rioRDUMkgE4W/YGR6Z6cF3ubVTH0i/1eGUQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-rule-extended-ascii": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/markdownlint-rule-extended-ascii/-/markdownlint-rule-extended-ascii-0.2.1.tgz", + "integrity": "sha512-R7ED3LfGk87Jv2lx2a4BwkSAR3dYtlXmLR+taBYyVMttAu8j6Xq/W/rDU9UUaMAMEGYpUwvCzxIAyEDrRyU/9A==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + } + }, + "node_modules/markdownlint/node_modules/string-width": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", + "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/matcher": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-5.0.0.tgz", + "integrity": "sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/matcher/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5-hex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", + "integrity": "sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==", + "dev": true, + "license": "MIT", + "dependencies": { + "blueimp-md5": "^2.10.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/memoize": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.2.0.tgz", + "integrity": "sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/memoize?sponsor=1" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-4.0.0.tgz", + "integrity": "sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.19" + } + }, + "node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-deep-merge": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz", + "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-event": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", + "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-map": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-config": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/package-config/-/package-config-5.0.0.tgz", + "integrity": "sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up-simple": "^1.0.0", + "load-json-file": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/plur": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz", + "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "irregular-plurals": "^3.3.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reserved-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-indent": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supertap": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/supertap/-/supertap-3.0.1.tgz", + "integrity": "sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^5.0.0", + "js-yaml": "^3.14.1", + "serialize-error": "^7.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/supertap/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/supertap/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz", + "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^5.0.1", + "supports-color": "^10.2.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.2.tgz", + "integrity": "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/terminal-link": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-5.0.0.tgz", + "integrity": "sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "supports-hyperlinks": "^4.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-valid-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/base62": "^1.0.0", + "reserved-identifiers": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-declaration-location": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz", + "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==", + "dev": true, + "funding": [ + { + "type": "ko-fi", + "url": "https://ko-fi.com/rebeccastevens" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/ts-declaration-location" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "picomatch": "^4.0.2" + }, + "peerDependencies": { + "typescript": ">=4.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/write-file-atomic": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-6.0.0.tgz", + "integrity": "sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/pkgs/by-name/ma/markdownlint-cli2/package.nix b/pkgs/by-name/ma/markdownlint-cli2/package.nix index 65c38b5ec9d9..8ff98716372c 100644 --- a/pkgs/by-name/ma/markdownlint-cli2/package.nix +++ b/pkgs/by-name/ma/markdownlint-cli2/package.nix @@ -1,57 +1,52 @@ { lib, - stdenvNoCC, - fetchurl, - makeWrapper, + buildNpmPackage, + fetchFromGitHub, markdownlint-cli2, - nodejs, + nix-update-script, runCommand, - zstd, }: -stdenvNoCC.mkDerivation (finalAttrs: { +buildNpmPackage rec { pname = "markdownlint-cli2"; - version = "0.18.1"; + version = "0.20.0"; - # upstream is not interested in including package-lock.json in the source - # https://github.com/DavidAnson/markdownlint-cli2/issues/198#issuecomment-1690529976 - # see also https://github.com/DavidAnson/markdownlint-cli2/issues/186 - # so use the tarball from the archlinux mirror - src = fetchurl { - url = "https://us.mirrors.cicku.me/archlinux/extra/os/x86_64/markdownlint-cli2-${finalAttrs.version}-1-any.pkg.tar.zst"; - hash = "sha256-M7qmhRDJGm2MhgS2oMfRrkLAst1Ye/rPCwP78UBbyyY="; + src = fetchFromGitHub { + owner = "DavidAnson"; + repo = "markdownlint-cli2"; + tag = "v${version}"; + hash = "sha256-wZfLTk7F9HZaRFvYEo5rT+k/ivNk0fU+p844LMO06ek="; }; - nativeBuildInputs = [ - makeWrapper - zstd - ]; + npmDepsHash = "sha256-tWvweCpzopItgfhpiBHUcpBvrJYCiq588WXzF9hvFfs="; - dontBuild = true; - - installPhase = '' - runHook preInstall - - mkdir -p $out/bin - cp -r lib share $out - makeWrapper "${lib.getExe nodejs}" "$out/bin/markdownlint-cli2" \ - --add-flags "$out/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs" - - runHook postInstall + postPatch = '' + rm -f .npmrc + ln -s ${./package-lock.json} package-lock.json ''; - passthru.tests = { - smoke = runCommand "${finalAttrs.pname}-test" { nativeBuildInputs = [ markdownlint-cli2 ]; } '' - markdownlint-cli2 ${markdownlint-cli2}/share/doc/markdownlint-cli2/README.md > $out - ''; + dontNpmBuild = true; + + passthru = { + tests = { + smoke = runCommand "${pname}-test" { nativeBuildInputs = [ markdownlint-cli2 ]; } '' + markdownlint-cli2 ${markdownlint-cli2}/lib/node_modules/markdownlint-cli2/CHANGELOG.md > $out + ''; + }; + updateScript = nix-update-script { + extraArgs = [ "--generate-lockfile" ]; + }; }; meta = { - changelog = "https://github.com/DavidAnson/markdownlint-cli2/blob/v${finalAttrs.version}/CHANGELOG.md"; + changelog = "https://github.com/DavidAnson/markdownlint-cli2/blob/v${version}/CHANGELOG.md"; description = "Fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the markdownlint library"; homepage = "https://github.com/DavidAnson/markdownlint-cli2"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ natsukium ]; + maintainers = with lib.maintainers; [ + anthonyroussel + natsukium + ]; mainProgram = "markdownlint-cli2"; }; -}) +} diff --git a/pkgs/by-name/ma/matrix-alertmanager-receiver/package.nix b/pkgs/by-name/ma/matrix-alertmanager-receiver/package.nix index c30f9668c93d..6cc61c020e4f 100644 --- a/pkgs/by-name/ma/matrix-alertmanager-receiver/package.nix +++ b/pkgs/by-name/ma/matrix-alertmanager-receiver/package.nix @@ -8,16 +8,16 @@ buildGoModule (finalAttrs: { pname = "matrix-alertmanager-receiver"; - version = "2025.12.24"; + version = "2026.1.14"; src = fetchFromGitHub { owner = "metio"; repo = "matrix-alertmanager-receiver"; tag = finalAttrs.version; - hash = "sha256-RK9Z/QeA0AjOfFROtOYKd3uCPn3NN+eyeuLQVWxlH6U="; + hash = "sha256-JUdnaz790NbiBlUlESIQMR2qehF/8OU0smSrA3+wOSQ="; }; - vendorHash = "sha256-HJEpWf3WeMw9vLj7L6thx1ur5YuC5xjIuMCHaFZ2tS8="; + vendorHash = "sha256-ZZYifNTMCL39ar00duYvvS8B6vJ8QZkMNb8vG6kgYOI="; env.CGO_ENABLED = "0"; diff --git a/pkgs/by-name/ma/matrix-authentication-service/package.nix b/pkgs/by-name/ma/matrix-authentication-service/package.nix index 3b5a046611ca..cacd8bdc86a1 100644 --- a/pkgs/by-name/ma/matrix-authentication-service/package.nix +++ b/pkgs/by-name/ma/matrix-authentication-service/package.nix @@ -18,21 +18,21 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "matrix-authentication-service"; - version = "1.8.0"; + version = "1.9.0"; src = fetchFromGitHub { owner = "element-hq"; repo = "matrix-authentication-service"; tag = "v${finalAttrs.version}"; - hash = "sha256-LpjDmSadmga7L93y3UNEnMJQHAeANSbG0qRR7XLprfk="; + hash = "sha256-DfgGh8KAXnGrq2W7V/QWnBF7b3Z26mIWeFQ2tEIPqa4="; }; - cargoHash = "sha256-PsQUA6KgkbKmVwnSUfAMqnULCIMJ4mLjGIGYRlhB4Pk="; + cargoHash = "sha256-r1fG+9mUYKbcAPc7CUUYvFf/Lhjnt6/MDCdCn/uiJU8="; npmDeps = fetchNpmDeps { name = "${finalAttrs.pname}-${finalAttrs.version}-npm-deps"; src = "${finalAttrs.src}/${finalAttrs.npmRoot}"; - hash = "sha256-3OHKomEml0/g8E3S0fKPcscbv3BoOJ9dQrgLNSLHhvg="; + hash = "sha256-UbaUx2wZi/bUVbdphCTcFBCaFQ8tkuvdYkSduCBRzzU="; }; npmRoot = "frontend"; diff --git a/pkgs/by-name/ma/matrix-synapse-unwrapped/package.nix b/pkgs/by-name/ma/matrix-synapse-unwrapped/package.nix index 3317a0b118ea..c15411e0183f 100644 --- a/pkgs/by-name/ma/matrix-synapse-unwrapped/package.nix +++ b/pkgs/by-name/ma/matrix-synapse-unwrapped/package.nix @@ -33,6 +33,7 @@ python3Packages.buildPythonApplication rec { with python3Packages; [ poetry-core + setuptools-rust ] ++ [ rustPlatform.maturinBuildHook @@ -51,7 +52,7 @@ python3Packages.buildPythonApplication rec { libiconv ]; - pythonRemoveDeps = [ "setuptools_rust" ]; + pythonRemoveDeps = [ "setuptools-rust" ]; dependencies = with python3Packages; @@ -82,7 +83,6 @@ python3Packages.buildPythonApplication rec { pyrsistent pyyaml service-identity - setuptools-rust signedjson sortedcontainers treq diff --git a/pkgs/by-name/ma/matrix-zulip-bridge/package.nix b/pkgs/by-name/ma/matrix-zulip-bridge/package.nix index 89d577665a1a..93b5ab3651e1 100644 --- a/pkgs/by-name/ma/matrix-zulip-bridge/package.nix +++ b/pkgs/by-name/ma/matrix-zulip-bridge/package.nix @@ -9,8 +9,6 @@ python3Packages.buildPythonApplication rec { version = "0.4.1"; pyproject = true; - disabled = python3Packages.pythonOlder "3.10"; - src = fetchFromGitHub { owner = "GearKite"; repo = "MatrixZulipBridge"; diff --git a/pkgs/by-name/me/meilisearch/package.nix b/pkgs/by-name/me/meilisearch/package.nix index 3a1b810147eb..757aad01951b 100644 --- a/pkgs/by-name/me/meilisearch/package.nix +++ b/pkgs/by-name/me/meilisearch/package.nix @@ -8,18 +8,18 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "meilisearch"; - version = "1.32.2"; + version = "1.33.0"; src = fetchFromGitHub { owner = "meilisearch"; repo = "meilisearch"; tag = "v${finalAttrs.version}"; - hash = "sha256-72AflpW0z1vpPEYsP07U9NJ84CEPhAbLo+tXxI8Qha4="; + hash = "sha256-OC8JPG/UAgBm+l5bFG4A+4/3cqkUMbeBkqIG+rjiucY="; }; cargoBuildFlags = [ "--package=meilisearch" ]; - cargoHash = "sha256-UCQk76TB7gWFd0077RQ39IXGrGjc6hxhXJW0pBheADU="; + cargoHash = "sha256-MwCbrPnWLipuSaJdtrm595e/geE/pb6Nw1vHL7l/XRU="; # Default features include mini dashboard which downloads something from the internet. buildNoDefaultFeatures = true; diff --git a/pkgs/by-name/me/memcached-exporter/package.nix b/pkgs/by-name/me/memcached-exporter/package.nix index 508f40801b3f..4523c392af77 100644 --- a/pkgs/by-name/me/memcached-exporter/package.nix +++ b/pkgs/by-name/me/memcached-exporter/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "memcached-exporter"; - version = "0.15.4"; + version = "0.15.5"; src = fetchFromGitHub { owner = "prometheus"; repo = "memcached_exporter"; tag = "v${finalAttrs.version}"; - hash = "sha256-3xqMq9bxxz7/GChHlCBIHb8HZ5TT5MsfBVE8ap533nc="; + hash = "sha256-f9ME3JOeQDcqXrgbX9MiRGvJJz2i3vYBwnjZAYChnlY="; }; - vendorHash = "sha256-Fcz02viZxXhzTW23GchU4lKi+WriMdpSZKoqXCCn9MA="; + vendorHash = "sha256-8+9qze2peeXIYa9Mm+sS5/2TQMpJGAHo687LJEZS7So="; # Tests touch the network doCheck = false; diff --git a/pkgs/by-name/me/metee/package.nix b/pkgs/by-name/me/metee/package.nix index 4f4b38bd71f8..042761a11381 100644 --- a/pkgs/by-name/me/metee/package.nix +++ b/pkgs/by-name/me/metee/package.nix @@ -7,12 +7,12 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "metee"; - version = "6.1.0"; + version = "6.2.1"; src = fetchFromGitHub { owner = "intel"; repo = "metee"; tag = finalAttrs.version; - hash = "sha256-ybTi4pFZAkoO6FAyUOLK+ZbTQb7uwu/sqhYxo06SE9A="; + hash = "sha256-TMHc/0N1DUx+aKOCrfBRoQgKj968FIq+FcusyLG0oPI="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/by-name/mi/minder/package.nix b/pkgs/by-name/mi/minder/package.nix index fb1a18f5551b..8654f9d39bb6 100644 --- a/pkgs/by-name/mi/minder/package.nix +++ b/pkgs/by-name/mi/minder/package.nix @@ -23,13 +23,13 @@ stdenv.mkDerivation rec { pname = "minder"; - version = "2.0.3"; + version = "2.0.4"; src = fetchFromGitHub { owner = "phase1geo"; repo = "minder"; tag = version; - hash = "sha256-gqTVRICPI6XlJmrBT6b5cONmBQ9LhsEuHUf/19NmXPo="; + hash = "sha256-IY4phXunB4ypU6wRhhXA2wg7Vsv8WvcL6nEXDiOGj/E="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/mo/mokuro/package.nix b/pkgs/by-name/mo/mokuro/package.nix index 139f1ad7e06f..9d996817449e 100644 --- a/pkgs/by-name/mo/mokuro/package.nix +++ b/pkgs/by-name/mo/mokuro/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, }: -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "mokuro"; version = "0.2.2"; pyproject = true; @@ -12,7 +12,7 @@ python3Packages.buildPythonApplication rec { src = fetchFromGitHub { owner = "kha-white"; repo = "mokuro"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-cdbkculYPPWCSqBufpgt4EU3ne6KU2Dxk0xsvkdMZHA="; fetchSubmodules = true; }; @@ -43,11 +43,11 @@ python3Packages.buildPythonApplication rec { doCheck = false; meta = { - changelog = "https://github.com/kha-white/mokuro/releases/tag/v${version}"; + changelog = "https://github.com/kha-white/mokuro/releases/tag/${finalAttrs.src.tag}"; description = "Read Japanese manga inside browser with selectable text"; homepage = "https://github.com/kha-white/mokuro"; license = lib.licenses.gpl3Only; mainProgram = "mokuro"; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/by-name/mo/moor/package.nix b/pkgs/by-name/mo/moor/package.nix index 996d0d36c897..814a68a7b6e2 100644 --- a/pkgs/by-name/mo/moor/package.nix +++ b/pkgs/by-name/mo/moor/package.nix @@ -10,16 +10,16 @@ buildGoModule (finalAttrs: { pname = "moor"; - version = "2.10.1"; + version = "2.10.2"; src = fetchFromGitHub { owner = "walles"; repo = "moor"; tag = "v${finalAttrs.version}"; - hash = "sha256-xnm1ZKceij5V2AgfB1ZAabDvB+l+Ha6F2WuHAzcA1mo="; + hash = "sha256-DS2cfu/yX+ebCn7V3FQVN8ltCJcEMD+wIjlS+ENHP8w="; }; - vendorHash = "sha256-MQPR4AW+Y+1l7akLxaWI5NAmKmhZdRKTzrueNEqHZoQ="; + vendorHash = "sha256-lz3cq2xL9byhLNbAwEvYOsP9WQsu0hqrWe2EDaLSeOQ="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/mu/mumps/package.nix b/pkgs/by-name/mu/mumps/package.nix index d536e153cd37..556649396352 100644 --- a/pkgs/by-name/mu/mumps/package.nix +++ b/pkgs/by-name/mu/mumps/package.nix @@ -49,7 +49,7 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "mumps"; - version = "5.8.1"; + version = "5.8.2"; # makeFlags contain space and one should use makeFlagsArray+ # Setting this magic var is an optional solution __structuredAttrs = true; @@ -58,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchzip { url = "https://mumps-solver.org/MUMPS_${finalAttrs.version}.tar.gz"; - hash = "sha256-60hNYhbHONv9E9VY8G0goE83q7AwJh1u/Z+QRK8anHQ="; + hash = "sha256-AzCzNUd+NFP7Jat4cw1YpA9160cvW1zXLoLxstsbtHA="; }; postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' diff --git a/pkgs/by-name/na/naja/package.nix b/pkgs/by-name/na/naja/package.nix index 97a06283fdef..25e350ac1203 100644 --- a/pkgs/by-name/na/naja/package.nix +++ b/pkgs/by-name/na/naja/package.nix @@ -110,6 +110,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Structural Netlist API (and more) for EDA post synthesis flow development"; homepage = "https://github.com/najaeda/naja"; + changelog = "https://github.com/najaeda/naja/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; teams = [ lib.teams.ngi ]; mainProgram = "naja_edit"; diff --git a/pkgs/by-name/nb/nb/package.nix b/pkgs/by-name/nb/nb/package.nix index 84a26deefde3..86d56303e855 100644 --- a/pkgs/by-name/nb/nb/package.nix +++ b/pkgs/by-name/nb/nb/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { pname = "nb"; - version = "7.23.2"; + version = "7.24.0"; src = fetchFromGitHub { owner = "xwmx"; repo = "nb"; rev = version; - hash = "sha256-JwbIETH2D/qYZTNUemsYSmcCjV/7kXKUK9JKnuBBe/0="; + hash = "sha256-oGVuBwnuKQqlhwW8gBWwhR09ZVBYV3vWzJxKu+KTlL8="; }; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/ne/nemorosa/package.nix b/pkgs/by-name/ne/nemorosa/package.nix index b5c281c146a7..2e86c2076505 100644 --- a/pkgs/by-name/ne/nemorosa/package.nix +++ b/pkgs/by-name/ne/nemorosa/package.nix @@ -4,7 +4,7 @@ python3Packages, }: -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "nemorosa"; version = "0.4.1"; pyproject = true; @@ -12,7 +12,7 @@ python3Packages.buildPythonApplication rec { src = fetchFromGitHub { owner = "KyokoMiki"; repo = "nemorosa"; - tag = version; + tag = finalAttrs.version; hash = "sha256-AqFjpEakEZ21iXmIIxhX+ez2aI/RMsLaUoECipQcaM4="; }; @@ -62,4 +62,4 @@ python3Packages.buildPythonApplication rec { maintainers = with lib.maintainers; [ ambroisie ]; mainProgram = "nemorosa"; }; -} +}) diff --git a/pkgs/by-name/ni/nimbo/package.nix b/pkgs/by-name/ni/nimbo/package.nix deleted file mode 100644 index e1f974e4f1bf..000000000000 --- a/pkgs/by-name/ni/nimbo/package.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ - lib, - stdenv, - awscli, - fetchFromGitHub, - installShellFiles, - python3, -}: - -python3.pkgs.buildPythonApplication (finalAttrs: { - pname = "nimbo"; - version = "0.3.0"; - format = "setuptools"; - - src = fetchFromGitHub { - owner = "nimbo-sh"; - repo = "nimbo"; - tag = "v${finalAttrs.version}"; - hash = "sha256-YC5T02Sw22Uczufbyts8l99oCQW4lPq0gPMRXCoKsvw="; - }; - - postPatch = '' - # Wrong format specifier in awscli dependency - substituteInPlace setup.py \ - --replace-fail "awscli>=1.19<2.0" "awscli>=1.19,<2.0" - ''; - - pythonRelaxDeps = [ - "awscli" - "colorama" - "rich" - ]; - - build-system = with python3.pkgs; [ setuptools ]; - - nativeBuildInputs = [ installShellFiles ]; - - dependencies = with python3.pkgs; [ - boto3 - click - colorama - pydantic - pyyaml - requests - rich - setuptools - ]; - - # nimbo tests require an AWS instance - doCheck = false; - - pythonImportsCheck = [ "nimbo" ]; - - makeWrapperArgs = [ - "--prefix" - "PATH" - ":" - (lib.makeBinPath [ awscli ]) - ]; - - meta = { - description = "Run machine learning jobs on AWS with a single command"; - homepage = "https://github.com/nimbo-sh/nimbo"; - license = lib.licenses.bsl11; - maintainers = with lib.maintainers; [ noreferences ]; - }; -}) diff --git a/pkgs/by-name/ni/nix-init/package.nix b/pkgs/by-name/ni/nix-init/package.nix index e6a84d96ea5e..fee8f60c7566 100644 --- a/pkgs/by-name/ni/nix-init/package.nix +++ b/pkgs/by-name/ni/nix-init/package.nix @@ -95,6 +95,9 @@ rustPlatform.buildRustPackage (finalAttrs: { homepage = "https://github.com/nix-community/nix-init"; changelog = "https://github.com/nix-community/nix-init/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mpl20; - maintainers = [ lib.maintainers.eclairevoyant ]; + maintainers = with lib.maintainers; [ + eclairevoyant + figsoda + ]; }; }) diff --git a/pkgs/by-name/ni/nix-your-shell/package.nix b/pkgs/by-name/ni/nix-your-shell/package.nix index 8d3bbcb32cfe..e3e2abf8bee9 100644 --- a/pkgs/by-name/ni/nix-your-shell/package.nix +++ b/pkgs/by-name/ni/nix-your-shell/package.nix @@ -8,16 +8,16 @@ }: rustPlatform.buildRustPackage rec { pname = "nix-your-shell"; - version = "1.4.6"; + version = "1.4.7"; src = fetchFromGitHub { owner = "MercuryTechnologies"; repo = "nix-your-shell"; tag = "v${version}"; - hash = "sha256-FjGjLq/4qeZz9foA7pfz1hiXvsdmbnzB3BpiTESLE1c="; + hash = "sha256-CE1yVD0uT5QnCfuTshAvM4r0BQ6XeaT22PdEhaYJJk8="; }; - cargoHash = "sha256-zQpK13iudyWDZbpAN8zm9kKmz8qy3yt8JxT4lwq4YF0="; + cargoHash = "sha256-BGyO+MK5pRMNFauRvTWxluHoPjqqsIJP1yajWEJnIvI="; passthru = { generate-config = diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/options.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/options.py index 75fbeadce1d0..9e337e6b1082 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/options.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/options.py @@ -97,7 +97,7 @@ class BaseConverter(Converter[md.TR], Generic[md.TR]): if lit := option_is(option, key, 'literalMD'): return [ self._render(f"*{key.capitalize()}:*\n{lit['text']}") ] elif lit := option_is(option, key, 'literalExpression'): - code = md_make_code(lit['text']) + code = md_make_code(lit['text'], info="nix") return [ self._render(f"*{key.capitalize()}:*\n{code}") ] elif key in option: raise Exception(f"{key} has unrecognized type", option[key]) diff --git a/pkgs/by-name/no/normcap/package.nix b/pkgs/by-name/no/normcap/package.nix index 52f2fead7924..6ecd51425d85 100644 --- a/pkgs/by-name/no/normcap/package.nix +++ b/pkgs/by-name/no/normcap/package.nix @@ -32,8 +32,6 @@ ps.buildPythonApplication rec { version = "0.6.0"; pyproject = true; - disabled = ps.pythonOlder "3.9"; - src = fetchFromGitHub { owner = "dynobo"; repo = "normcap"; diff --git a/pkgs/by-name/nu/nu_scripts/package.nix b/pkgs/by-name/nu/nu_scripts/package.nix index 4e037875e9f1..7acd06655faf 100644 --- a/pkgs/by-name/nu/nu_scripts/package.nix +++ b/pkgs/by-name/nu/nu_scripts/package.nix @@ -7,13 +7,13 @@ stdenvNoCC.mkDerivation { pname = "nu_scripts"; - version = "0-unstable-2025-12-28"; + version = "0-unstable-2026-01-11"; src = fetchFromGitHub { owner = "nushell"; repo = "nu_scripts"; - rev = "1cb6d6c460949b989b7fb1a6d02456a560521366"; - hash = "sha256-Cq814VegRIWRR0UfRz3xV3pHm4C1701I5BoPRsEi+ZQ="; + rev = "c0eef9bb94eaf9d69f1cc27e2e1964fdb66fb24a"; + hash = "sha256-KfnxoyLY8F0jx6h/SGQb5hkTBHgaa0fktE1qM4BKTBc="; }; installPhase = '' diff --git a/pkgs/by-name/nu/numix-icon-theme-circle/package.nix b/pkgs/by-name/nu/numix-icon-theme-circle/package.nix index 0d70e787f41a..7730bb9e2483 100644 --- a/pkgs/by-name/nu/numix-icon-theme-circle/package.nix +++ b/pkgs/by-name/nu/numix-icon-theme-circle/package.nix @@ -10,13 +10,13 @@ stdenvNoCC.mkDerivation rec { pname = "numix-icon-theme-circle"; - version = "25.12.27"; + version = "26.01.11"; src = fetchFromGitHub { owner = "numixproject"; repo = "numix-icon-theme-circle"; rev = version; - sha256 = "sha256-5/PSZdSLpVlS5+dKjDhN82wuCiQRE/J1OEQSihlB81A="; + sha256 = "sha256-L+GO3TJ7UJYIjpsVtWgFkFd313u+E4I4ResNgQz8T70="; }; nativeBuildInputs = [ gtk3 ]; diff --git a/pkgs/by-name/nu/nurl/package.nix b/pkgs/by-name/nu/nurl/package.nix index 88d1ae1c0311..0211d0575337 100644 --- a/pkgs/by-name/nu/nurl/package.nix +++ b/pkgs/by-name/nu/nurl/package.nix @@ -52,7 +52,10 @@ rustPlatform.buildRustPackage rec { homepage = "https://github.com/nix-community/nurl"; changelog = "https://github.com/nix-community/nurl/blob/v${version}/CHANGELOG.md"; license = lib.licenses.mpl20; - maintainers = [ lib.maintainers.matthiasbeyer ]; + maintainers = with lib.maintainers; [ + figsoda + matthiasbeyer + ]; mainProgram = "nurl"; }; } diff --git a/pkgs/by-name/nz/nzbhydra2/package.nix b/pkgs/by-name/nz/nzbhydra2/package.nix index ab80b6c0b1e1..5b63f7ba78bf 100644 --- a/pkgs/by-name/nz/nzbhydra2/package.nix +++ b/pkgs/by-name/nz/nzbhydra2/package.nix @@ -35,16 +35,16 @@ let in maven.buildMavenPackage rec { pname = "nzbhydra2"; - version = "8.2.2"; + version = "8.3.0"; src = fetchFromGitHub { owner = "theotherp"; repo = pname; tag = "v${version}"; - hash = "sha256-aUaPzfP4PPX08DZxbDhy7U/qH37ddR9jWtt+pt7BqCI="; + hash = "sha256-7CYMh/viZ/9bVZ4gNNZRnKHh4uDH4E5Td2oVC4Rok0M="; }; - mvnHash = "sha256-02Fj7Rv0kGmO7ysHWMjE7qlwFY3G+hQzjXvrvRG/2M8="; + mvnHash = "sha256-dodZT40zNqfaPd8VxfNYY10VrFNlL4xESDdTrgcFaaY="; mvnFetchExtraArgs.preBuild = '' mvn -nsu "${timestampParameter}" --projects org.nzbhydra:github-release-plugin "-Dmaven.repo.local=$out/.m2" clean install @@ -90,7 +90,7 @@ maven.buildMavenPackage rec { meta = { description = "Usenet meta search"; homepage = "https://github.com/theotherp/nzbhydra2"; - license = lib.licenses.asl20; + license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ matteopacini tmarkus diff --git a/pkgs/by-name/oc/octodns/package.nix b/pkgs/by-name/oc/octodns/package.nix index f52003327919..8f3e57e49d76 100644 --- a/pkgs/by-name/oc/octodns/package.nix +++ b/pkgs/by-name/oc/octodns/package.nix @@ -22,8 +22,6 @@ python3Packages.buildPythonApplication rec { version = "1.15.0"; pyproject = true; - disabled = python.pythonOlder "3.9"; - src = fetchFromGitHub { owner = "octodns"; repo = "octodns"; diff --git a/pkgs/by-name/op/open-web-calendar/package.nix b/pkgs/by-name/op/open-web-calendar/package.nix index b3b12768becf..f5295707e3c5 100644 --- a/pkgs/by-name/op/open-web-calendar/package.nix +++ b/pkgs/by-name/op/open-web-calendar/package.nix @@ -15,8 +15,6 @@ python.pkgs.buildPythonApplication rec { version = "1.49"; pyproject = true; - disabled = python.pythonOlder "3.9"; - src = fetchPypi { inherit version; pname = "open_web_calendar"; diff --git a/pkgs/by-name/or/or-tools/package.nix b/pkgs/by-name/or/or-tools/package.nix index 254ea0faadc4..c2f7071a90fe 100644 --- a/pkgs/by-name/or/or-tools/package.nix +++ b/pkgs/by-name/or/or-tools/package.nix @@ -43,7 +43,6 @@ let ninja numpy pytestCheckHook - pythonOlder setuptools ; python = python3; diff --git a/pkgs/by-name/or/or-tools/pybind11-2.13.6.nix b/pkgs/by-name/or/or-tools/pybind11-2.13.6.nix index 048ed89f5632..0ba3cd381c66 100644 --- a/pkgs/by-name/or/or-tools/pybind11-2.13.6.nix +++ b/pkgs/by-name/or/or-tools/pybind11-2.13.6.nix @@ -5,7 +5,6 @@ stdenv, lib, buildPythonPackage, - pythonOlder, fetchFromGitHub, cmake, ninja, @@ -16,7 +15,6 @@ catch2, numpy, pytestCheckHook, - libxcrypt, makeSetupHook, }: let @@ -51,7 +49,6 @@ buildPythonPackage rec { setuptools ]; - buildInputs = lib.optionals (pythonOlder "3.9") [ libxcrypt ]; propagatedNativeBuildInputs = [ setupHook ]; dontUseCmakeBuildDir = true; diff --git a/pkgs/by-name/os/osu-lazer-bin/package.nix b/pkgs/by-name/os/osu-lazer-bin/package.nix index 2a129cc9758c..663eae34dd7c 100644 --- a/pkgs/by-name/os/osu-lazer-bin/package.nix +++ b/pkgs/by-name/os/osu-lazer-bin/package.nix @@ -10,23 +10,23 @@ let pname = "osu-lazer-bin"; - version = "2026.102.1"; + version = "2026.119.0"; src = { aarch64-darwin = fetchzip { url = "https://github.com/ppy/osu/releases/download/${version}-lazer/osu.app.Apple.Silicon.zip"; - hash = "sha256-NY5iWdFmwqjSIJG665eGRFk9vA/C1wYEyb1pYS74xJo="; + hash = "sha256-pM+dqCihHkUCu4xNZpZVIuP7UWwJ5a2DntA2S5PmxT4="; stripRoot = false; }; x86_64-darwin = fetchzip { url = "https://github.com/ppy/osu/releases/download/${version}-lazer/osu.app.Intel.zip"; - hash = "sha256-P4haI+MRGcCUQhcRpUPULGRlUoCtBeHq8FFXOar4s3c="; + hash = "sha256-wPFUH7Hy9sMPqCRoG8RMV6fZE6xtEKJGSBD7/XSTa34="; stripRoot = false; }; x86_64-linux = fetchurl { url = "https://github.com/ppy/osu/releases/download/${version}-lazer/osu.AppImage"; - hash = "sha256-3oUtXQ3PWSMfIaQhfskptyETlzXNHV3nA1sO5ICmsxg="; + hash = "sha256-lx8lU9tNXD90rpaKlIyR0C4eSivfmVAJP7Wq+n3Ht08="; }; } .${stdenvNoCC.system} or (throw "osu-lazer-bin: ${stdenvNoCC.system} is unsupported."); diff --git a/pkgs/by-name/os/osu-lazer/deps.json b/pkgs/by-name/os/osu-lazer/deps.json index 6e9f29e134bb..67be9bf66bc5 100644 --- a/pkgs/by-name/os/osu-lazer/deps.json +++ b/pkgs/by-name/os/osu-lazer/deps.json @@ -626,8 +626,8 @@ }, { "pname": "ppy.osu.Framework", - "version": "2026.102.0", - "hash": "sha256-hmZfLliFuninJkIFml+hRSzpfp+q5h98i7yzTUaH/R8=" + "version": "2026.108.0", + "hash": "sha256-3xYUwhcZJKT446AX3Vvbb2kQaNDTGGR/efGy/E32NP8=" }, { "pname": "ppy.osu.Framework.NativeLibs", @@ -641,8 +641,8 @@ }, { "pname": "ppy.osu.Game.Resources", - "version": "2025.1218.0", - "hash": "sha256-ZtCdeZpFJd4t7PAf8uVrqMazyifi+MiTQHO/c/9nHP8=" + "version": "2026.108.0", + "hash": "sha256-1kM2v5AqHXS2G8xD++28tcHZe9QPB4946wpG7s6dVeo=" }, { "pname": "ppy.osuTK.NS20", diff --git a/pkgs/by-name/os/osu-lazer/package.nix b/pkgs/by-name/os/osu-lazer/package.nix index 6bfa14ea5e86..732921de1468 100644 --- a/pkgs/by-name/os/osu-lazer/package.nix +++ b/pkgs/by-name/os/osu-lazer/package.nix @@ -22,13 +22,13 @@ buildDotnetModule rec { pname = "osu-lazer"; - version = "2026.102.1"; + version = "2026.119.0"; src = fetchFromGitHub { owner = "ppy"; repo = "osu"; tag = "${version}-lazer"; - hash = "sha256-9aqLnC53t2lkhA3m5lGrL5wWvKWVrdw5ckNZGO2krAQ="; + hash = "sha256-aAWWq4nX8AeWTT8/aRbHccq+Zx87qP4izxXL3fE7QMg="; }; projectFile = "osu.Desktop/osu.Desktop.csproj"; diff --git a/pkgs/by-name/pa/particle-cli/package.nix b/pkgs/by-name/pa/particle-cli/package.nix index 7b2f1a9f41aa..a1743386a1ca 100644 --- a/pkgs/by-name/pa/particle-cli/package.nix +++ b/pkgs/by-name/pa/particle-cli/package.nix @@ -8,16 +8,16 @@ buildNpmPackage (finalAttrs: { pname = "particle-cli"; - version = "3.44.1"; + version = "3.45.0"; src = fetchFromGitHub { owner = "particle-iot"; repo = "particle-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-l4MzJ57PkNECW2/k7gnVsrHcJtc4vZRsgzUkGz1hQiU="; + hash = "sha256-Hq2flUBStEouVEhYI25fNFK9ohvHfk792vlPa7b3DRA="; }; - npmDepsHash = "sha256-B9r8wvpIPnLupuhycocJCl5EN63xi1KI5fHT5uQZTzY="; + npmDepsHash = "sha256-rHT8ZLBe3uO1NxrbVBdrh0fn9gvBVq4XE8Gfhcshq/E="; buildInputs = [ udev diff --git a/pkgs/by-name/pg/pgmetrics/package.nix b/pkgs/by-name/pg/pgmetrics/package.nix index 7691c6f799b1..b32cdc529e53 100644 --- a/pkgs/by-name/pg/pgmetrics/package.nix +++ b/pkgs/by-name/pg/pgmetrics/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "pgmetrics"; - version = "1.18.0"; + version = "1.19.0"; src = fetchFromGitHub { owner = "rapidloop"; repo = "pgmetrics"; rev = "v${version}"; - sha256 = "sha256-kaoJZdBzx2DGvoA+aIJnfM2ORTM9xMXHaXEuUD/qqe0="; + sha256 = "sha256-PvixAR6jLhwK4nbGWEAnQkjI+JtSwX2izI7/ksi7qs8="; }; - vendorHash = "sha256-2p8BZw/GB/w99VL5NFIBpmyadNmasqrWVncpBHTyh6Q="; + vendorHash = "sha256-LphlFl56M8G3kncnj66u1CixgBTLvDBtWqXtUjHDY14="; doCheck = false; diff --git a/pkgs/by-name/pk/pkgsite/package.nix b/pkgs/by-name/pk/pkgsite/package.nix index 3d8e64b31376..477ec4c21039 100644 --- a/pkgs/by-name/pk/pkgsite/package.nix +++ b/pkgs/by-name/pk/pkgsite/package.nix @@ -7,16 +7,16 @@ buildGoModule { pname = "pkgsite"; - version = "0-unstable-2026-01-07"; + version = "0-unstable-2026-01-16"; src = fetchFromGitHub { owner = "golang"; repo = "pkgsite"; - rev = "a6a3e5202c579664010c2776ca0b3d1a6d035b69"; - hash = "sha256-xUN/aHcAzA2DDzitZV+kEVfGgADOSCsY0zJLiRdTAQg="; + rev = "550788255d99f0e9ee169f12bf65d16e1ede9f7b"; + hash = "sha256-Gx4MKLQ7Ed8XIy9oULWD1mRVcD2f7i+fb2aDjFrG9RI="; }; - vendorHash = "sha256-rruIjtXtFZ0MOJkWx4n+7apKGv4Pq6GrOWoQ3o+8KFs="; + vendorHash = "sha256-udLOOjBMLZ38jrX/7r+hmiUr/k6gxU0Sypo6S0ezep0="; subPackages = [ "cmd/pkgsite" ]; diff --git a/pkgs/by-name/pl/pleroma/mix.nix b/pkgs/by-name/pl/pleroma/mix.nix index 4347e45fa236..391703350132 100644 --- a/pkgs/by-name/pl/pleroma/mix.nix +++ b/pkgs/by-name/pl/pleroma/mix.nix @@ -30,12 +30,12 @@ let argon2_elixir = buildMix rec { name = "argon2_elixir"; - version = "4.0.0"; + version = "4.1.3"; src = fetchHex { pkg = "argon2_elixir"; version = "${version}"; - sha256 = "f9da27cf060c9ea61b1bd47837a28d7e48a8f6fa13a745e252556c14f9132c7f"; + sha256 = "7c295b8d8e0eaf6f43641698f962526cdf87c6feb7d14bd21e599271b510608c"; }; beamDeps = [ @@ -46,12 +46,12 @@ let bandit = buildMix rec { name = "bandit"; - version = "1.5.5"; + version = "1.5.7"; src = fetchHex { pkg = "bandit"; version = "${version}"; - sha256 = "f21579a29ea4bc08440343b2b5f16f7cddf2fea5725d31b72cf973ec729079e1"; + sha256 = "f2dd92ae87d2cbea2fa9aa1652db157b6cba6c405cb44d4f6dd87abba41371cd"; }; beamDeps = [ @@ -107,12 +107,12 @@ let benchee = buildMix rec { name = "benchee"; - version = "1.3.0"; + version = "1.4.0"; src = fetchHex { pkg = "benchee"; version = "${version}"; - sha256 = "34f4294068c11b2bd2ebf2c59aac9c7da26ffa0068afdf3419f1b176e16c5f81"; + sha256 = "299cd10dd8ce51c9ea3ddb74bb150f93d25e968f93e4c1fa31698a8e4fa5d715"; }; beamDeps = [ @@ -180,12 +180,12 @@ let castore = buildMix rec { name = "castore"; - version = "1.0.8"; + version = "1.0.15"; src = fetchHex { pkg = "castore"; version = "${version}"; - sha256 = "0b2b66d2ee742cb1d9cb8c8be3b43c3a70ee8651f37b75a8b982e036752983f1"; + sha256 = "96ce4c69d7d5d7a0761420ef743e2f4096253931a3ba69e5ff8ef1844fe446d3"; }; beamDeps = [ ]; @@ -193,12 +193,12 @@ let cc_precompiler = buildMix rec { name = "cc_precompiler"; - version = "0.1.9"; + version = "0.1.11"; src = fetchHex { pkg = "cc_precompiler"; version = "${version}"; - sha256 = "9dcab3d0f3038621f1601f13539e7a9ee99843862e66ad62827b0c42b2f58a54"; + sha256 = "3427232caf0835f94680e5bcf082408a70b48ad68a5f5c0b02a3bea9f3a075b9"; }; beamDeps = [ elixir_make ]; @@ -232,12 +232,12 @@ let comeonin = buildMix rec { name = "comeonin"; - version = "5.4.0"; + version = "5.5.1"; src = fetchHex { pkg = "comeonin"; version = "${version}"; - sha256 = "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"; + sha256 = "65aac8f19938145377cee73973f192c5645873dcf550a8a6b18187d17c13ccdb"; }; beamDeps = [ ]; @@ -284,12 +284,12 @@ let covertool = buildRebar3 rec { name = "covertool"; - version = "2.0.6"; + version = "2.0.7"; src = fetchHex { pkg = "covertool"; version = "${version}"; - sha256 = "5db3fcd82180d8ea4ad857d4d1ab21a8d31b5aee0d60d2f6c0f9e25a411d1e21"; + sha256 = "46158ed6e1a0df7c0a912e314c7b8e053bd74daa5fc6b790614922a155b5720c"; }; beamDeps = [ ]; @@ -297,12 +297,12 @@ let cowboy = buildErlangMk rec { name = "cowboy"; - version = "2.12.0"; + version = "2.13.0"; src = fetchHex { pkg = "cowboy"; version = "${version}"; - sha256 = "8a7abe6d183372ceb21caa2709bec928ab2b72e18a3911aa1771639bef82651e"; + sha256 = "e724d3a70995025d654c1992c7b11dbfea95205c047d86ff9bf1cda92ddc5614"; }; beamDeps = [ @@ -329,12 +329,12 @@ let cowlib = buildRebar3 rec { name = "cowlib"; - version = "2.13.0"; + version = "2.15.0"; src = fetchHex { pkg = "cowlib"; version = "${version}"; - sha256 = "e1e1284dc3fc030a64b1ad0d8382ae7e99da46c3246b815318a4b848873800a4"; + sha256 = "4f00c879a64b4fe7c8fcb42a4281925e9ffdb928820b03c3ad325a617e857532"; }; beamDeps = [ ]; @@ -342,12 +342,12 @@ let credo = buildMix rec { name = "credo"; - version = "1.7.7"; + version = "1.7.12"; src = fetchHex { pkg = "credo"; version = "${version}"; - sha256 = "8bc87496c9aaacdc3f90f01b7b0582467b69b4bd2441fe8aae3109d843cc2f2e"; + sha256 = "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"; }; beamDeps = [ @@ -385,12 +385,12 @@ let db_connection = buildMix rec { name = "db_connection"; - version = "2.7.0"; + version = "2.8.0"; src = fetchHex { pkg = "db_connection"; version = "${version}"; - sha256 = "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"; + sha256 = "008399dae5eee1bf5caa6e86d204dcb44242c82b1ed5e22c881f2c34da201b15"; }; beamDeps = [ telemetry ]; @@ -398,12 +398,12 @@ let decimal = buildMix rec { name = "decimal"; - version = "2.1.1"; + version = "2.3.0"; src = fetchHex { pkg = "decimal"; version = "${version}"; - sha256 = "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"; + sha256 = "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"; }; beamDeps = [ ]; @@ -424,12 +424,12 @@ let dialyxir = buildMix rec { name = "dialyxir"; - version = "1.4.3"; + version = "1.4.6"; src = fetchHex { pkg = "dialyxir"; version = "${version}"; - sha256 = "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"; + sha256 = "8cf5615c5cd4c2da6c501faae642839c8405b49f8aa057ad4ae401cb808ef64d"; }; beamDeps = [ erlex ]; @@ -450,12 +450,12 @@ let earmark_parser = buildMix rec { name = "earmark_parser"; - version = "1.4.39"; + version = "1.4.44"; src = fetchHex { pkg = "earmark_parser"; version = "${version}"; - sha256 = "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"; + sha256 = "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"; }; beamDeps = [ ]; @@ -463,12 +463,12 @@ let ecto = buildMix rec { name = "ecto"; - version = "3.11.2"; + version = "3.13.2"; src = fetchHex { pkg = "ecto"; version = "${version}"; - sha256 = "3c38bca2c6f8d8023f2145326cc8a80100c3ffe4dcbd9842ff867f7fc6156c65"; + sha256 = "669d9291370513ff56e7b7e7081b7af3283d02e046cf3d403053c557894a0b3e"; }; beamDeps = [ @@ -497,12 +497,12 @@ let ecto_psql_extras = buildMix rec { name = "ecto_psql_extras"; - version = "0.7.15"; + version = "0.8.8"; src = fetchHex { pkg = "ecto_psql_extras"; version = "${version}"; - sha256 = "b6127f3a5c6fc3d84895e4768cc7c199f22b48b67d6c99b13fbf4a374e73f039"; + sha256 = "04c63d92b141723ad6fed2e60a4b461ca00b3594d16df47bbc48f1f4534f2c49"; }; beamDeps = [ @@ -514,12 +514,12 @@ let ecto_sql = buildMix rec { name = "ecto_sql"; - version = "3.11.3"; + version = "3.13.2"; src = fetchHex { pkg = "ecto_sql"; version = "${version}"; - sha256 = "e5f36e3d736b99c7fee3e631333b8394ade4bafe9d96d35669fca2d81c2be928"; + sha256 = "539274ab0ecf1a0078a6a72ef3465629e4d6018a3028095dc90f60a19c371717"; }; beamDeps = [ @@ -561,12 +561,12 @@ let erlex = buildMix rec { name = "erlex"; - version = "0.2.6"; + version = "0.2.7"; src = fetchHex { pkg = "erlex"; version = "${version}"; - sha256 = "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"; + sha256 = "3ed95f79d1a844c3f6bf0cea61e0d5612a42ce56da9c03f01df538685365efb0"; }; beamDeps = [ ]; @@ -617,12 +617,12 @@ let ex_aws_s3 = buildMix rec { name = "ex_aws_s3"; - version = "2.5.3"; + version = "2.5.8"; src = fetchHex { pkg = "ex_aws_s3"; version = "${version}"; - sha256 = "4f09dd372cc386550e484808c5ac5027766c8d0cd8271ccc578b82ee6ef4f3b8"; + sha256 = "84e512ca2e0ae6a6c497036dff06d4493ffb422cfe476acc811d7c337c16691c"; }; beamDeps = [ @@ -633,12 +633,12 @@ let ex_const = buildMix rec { name = "ex_const"; - version = "0.2.4"; + version = "0.3.0"; src = fetchHex { pkg = "ex_const"; version = "${version}"; - sha256 = "96fd346610cc992b8f896ed26a98be82ac4efb065a0578f334a32d60a3ba9767"; + sha256 = "76546322abb9e40ee4a2f454cf1c8a5b25c3672fa79bed1ea52c31e0d2428ca9"; }; beamDeps = [ ]; @@ -646,12 +646,12 @@ let ex_doc = buildMix rec { name = "ex_doc"; - version = "0.31.1"; + version = "0.38.2"; src = fetchHex { pkg = "ex_doc"; version = "${version}"; - sha256 = "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0"; + sha256 = "732f2d972e42c116a70802f9898c51b54916e542cc50968ac6980512ec90f42b"; }; beamDeps = [ @@ -663,12 +663,12 @@ let ex_machina = buildMix rec { name = "ex_machina"; - version = "2.7.0"; + version = "2.8.0"; src = fetchHex { pkg = "ex_machina"; version = "${version}"; - sha256 = "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8"; + sha256 = "79fe1a9c64c0c1c1fab6c4fa5d871682cb90de5885320c187d117004627a7729"; }; beamDeps = [ @@ -721,12 +721,12 @@ let fast_html = buildMix rec { name = "fast_html"; - version = "2.3.0"; + version = "2.5.0"; src = fetchHex { pkg = "fast_html"; version = "${version}"; - sha256 = "f18e3c7668f82d3ae0b15f48d48feeb257e28aa5ab1b0dbf781c7312e5da029d"; + sha256 = "69eb46ed98a5d9cca1ccd4a5ac94ce5dd626fc29513fbaa0a16cd8b2da67ae3e"; }; beamDeps = [ @@ -766,16 +766,15 @@ let finch = buildMix rec { name = "finch"; - version = "0.18.0"; + version = "0.20.0"; src = fetchHex { pkg = "finch"; version = "${version}"; - sha256 = "69f5045b042e531e53edc2574f15e25e735b522c37e2ddb766e15b979e03aa65"; + sha256 = "2658131a74d051aabfcba936093c903b8e89da9a1b63e430bee62045fa9b2ee2"; }; beamDeps = [ - castore mime mint nimble_options @@ -802,12 +801,12 @@ let floki = buildMix rec { name = "floki"; - version = "0.35.2"; + version = "0.38.0"; src = fetchHex { pkg = "floki"; version = "${version}"; - sha256 = "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9"; + sha256 = "a5943ee91e93fb2d635b612caf5508e36d37548e84928463ef9dd986f0d1abd9"; }; beamDeps = [ ]; @@ -841,12 +840,12 @@ let gun = buildRebar3 rec { name = "gun"; - version = "2.0.1"; + version = "2.2.0"; src = fetchHex { pkg = "gun"; version = "${version}"; - sha256 = "a10bc8d6096b9502205022334f719cc9a08d9adcfbfc0dbee9ef31b56274a20b"; + sha256 = "76022700c64287feb4df93a1795cff6741b83fb37415c40c34c38d2a4645261a"; }; beamDeps = [ cowlib ]; @@ -875,12 +874,12 @@ let hpax = buildMix rec { name = "hpax"; - version = "0.2.0"; + version = "1.0.3"; src = fetchHex { pkg = "hpax"; version = "${version}"; - sha256 = "bea06558cdae85bed075e6c036993d43cd54d447f76d8190a8db0dc5893fa2f1"; + sha256 = "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"; }; beamDeps = [ ]; @@ -966,12 +965,12 @@ let joken = buildMix rec { name = "joken"; - version = "2.6.0"; + version = "2.6.2"; src = fetchHex { pkg = "joken"; version = "${version}"; - sha256 = "5a95b05a71cd0b54abd35378aeb1d487a23a52c324fa7efdffc512b655b5aaa7"; + sha256 = "5134b5b0a6e37494e46dbf9e4dad53808e5e787904b7c73972651b51cce3d72b"; }; beamDeps = [ jose ]; @@ -979,12 +978,12 @@ let jose = buildMix rec { name = "jose"; - version = "1.11.6"; + version = "1.11.10"; src = fetchHex { pkg = "jose"; version = "${version}"; - sha256 = "6275cb75504f9c1e60eeacb771adfeee4905a9e182103aa59b53fed651ff9738"; + sha256 = "0d6cd36ff8ba174db29148fc112b5842186b68a90ce9fc2b3ec3afe76593e614"; }; beamDeps = [ ]; @@ -1044,12 +1043,12 @@ let majic = buildMix rec { name = "majic"; - version = "1.0.0"; + version = "1.1.1"; src = fetchHex { pkg = "majic"; version = "${version}"; - sha256 = "7905858f76650d49695f14ea55cd9aaaee0c6654fa391671d4cf305c275a0a9e"; + sha256 = "7fbb0372f0447b3f777056177d6ab3f009742e68474f850521ff56b84bd85b96"; }; beamDeps = [ @@ -1088,12 +1087,12 @@ let makeup_erlang = buildMix rec { name = "makeup_erlang"; - version = "0.1.3"; + version = "1.0.2"; src = fetchHex { pkg = "makeup_erlang"; version = "${version}"; - sha256 = "b78dc853d2e670ff6390b605d807263bf606da3c82be37f9d7f68635bd886fc9"; + sha256 = "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"; }; beamDeps = [ makeup ]; @@ -1140,12 +1139,12 @@ let mimerl = buildRebar3 rec { name = "mimerl"; - version = "1.3.0"; + version = "1.4.0"; src = fetchHex { pkg = "mimerl"; version = "${version}"; - sha256 = "a1e15a50d1887217de95f0b9b0793e32853f7c258a5cd227650889b38839fe9d"; + sha256 = "13af15f9f68c65884ecca3a3891d50a7b57d82152792f3e19d88650aa126b144"; }; beamDeps = [ ]; @@ -1153,12 +1152,12 @@ let mint = buildMix rec { name = "mint"; - version = "1.6.1"; + version = "1.7.1"; src = fetchHex { pkg = "mint"; version = "${version}"; - sha256 = "4fc518dcc191d02f433393a72a7ba3f6f94b101d094cb6bf532ea54c89423780"; + sha256 = "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"; }; beamDeps = [ @@ -1182,12 +1181,12 @@ let mock = buildMix rec { name = "mock"; - version = "0.3.8"; + version = "0.3.9"; src = fetchHex { pkg = "mock"; version = "${version}"; - sha256 = "7fa82364c97617d79bb7d15571193fc0c4fe5afd0c932cef09426b3ee6fe2022"; + sha256 = "9e1b244c4ca2551bb17bb8415eed89e40ee1308e0fbaed0a4fdfe3ec8a4adbd3"; }; beamDeps = [ meck ]; @@ -1208,25 +1207,25 @@ let mox = buildMix rec { name = "mox"; - version = "1.1.0"; + version = "1.2.0"; src = fetchHex { pkg = "mox"; version = "${version}"; - sha256 = "d44474c50be02d5b72131070281a5d3895c0e7a95c780e90bc0cfe712f633a13"; + sha256 = "c7b92b3cc69ee24a7eeeaf944cd7be22013c52fcb580c1f33f50845ec821089a"; }; - beamDeps = [ ]; + beamDeps = [ nimble_ownership ]; }; mua = buildMix rec { name = "mua"; - version = "0.2.3"; + version = "0.2.4"; src = fetchHex { pkg = "mua"; version = "${version}"; - sha256 = "7fe861a87fcc06a980d3941bbcb2634e5f0f30fd6ad15ef6c0423ff9dc7e46de"; + sha256 = "e7e4dacd5ad65f13e3542772e74a159c00bd2d5579e729e9bb72d2c73a266fb7"; }; beamDeps = [ castore ]; @@ -1258,6 +1257,19 @@ let beamDeps = [ ]; }; + nimble_ownership = buildMix rec { + name = "nimble_ownership"; + version = "1.0.1"; + + src = fetchHex { + pkg = "nimble_ownership"; + version = "${version}"; + sha256 = "3825e461025464f519f3f3e4a1f9b68c47dc151369611629ad08b636b73bb22d"; + }; + + beamDeps = [ ]; + }; + nimble_parsec = buildMix rec { name = "nimble_parsec"; version = "0.6.0"; @@ -1273,12 +1285,12 @@ let nimble_pool = buildMix rec { name = "nimble_pool"; - version = "0.2.6"; + version = "1.1.0"; src = fetchHex { pkg = "nimble_pool"; version = "${version}"; - sha256 = "1c715055095d3f2705c4e236c18b618420a35490da94149ff8b580a2144f653f"; + sha256 = "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"; }; beamDeps = [ ]; @@ -1286,12 +1298,12 @@ let oban = buildMix rec { name = "oban"; - version = "2.18.3"; + version = "2.19.4"; src = fetchHex { pkg = "oban"; version = "${version}"; - sha256 = "36ca6ca84ef6518f9c2c759ea88efd438a3c81d667ba23b02b062a0aa785475e"; + sha256 = "5fcc6219e6464525b808d97add17896e724131f498444a292071bf8991c99f97"; }; beamDeps = [ @@ -1336,15 +1348,16 @@ let open_api_spex = buildMix rec { name = "open_api_spex"; - version = "3.18.2"; + version = "3.22.0"; src = fetchHex { pkg = "open_api_spex"; version = "${version}"; - sha256 = "aa3e6dcfc0ad6a02596b2172662da21c9dd848dac145ea9e603f54e3d81b8d2b"; + sha256 = "dd751ddbdd709bb4a5313e9a24530da6e66594773c7242a0c2592cbd9f589063"; }; beamDeps = [ + decimal jason plug poison @@ -1379,18 +1392,19 @@ let phoenix_ecto = buildMix rec { name = "phoenix_ecto"; - version = "4.4.3"; + version = "4.6.5"; src = fetchHex { pkg = "phoenix_ecto"; version = "${version}"; - sha256 = "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"; + sha256 = "26ec3208eef407f31b748cadd044045c6fd485fbff168e35963d2f9dfff28d4b"; }; beamDeps = [ ecto phoenix_html plug + postgrex ]; }; @@ -1409,12 +1423,12 @@ let phoenix_live_dashboard = buildMix rec { name = "phoenix_live_dashboard"; - version = "0.8.3"; + version = "0.8.7"; src = fetchHex { pkg = "phoenix_live_dashboard"; version = "${version}"; - sha256 = "f9470a0a8bae4f56430a23d42f977b5a6205fdba6559d76f932b876bfaec652d"; + sha256 = "3a8625cab39ec261d48a13b7468dc619c0ede099601b084e343968309bd4d7d7"; }; beamDeps = [ @@ -1526,12 +1540,12 @@ let plug = buildMix rec { name = "plug"; - version = "1.16.1"; + version = "1.18.1"; src = fetchHex { pkg = "plug"; version = "${version}"; - sha256 = "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"; + sha256 = "57a57db70df2b422b564437d2d33cf8d33cd16339c1edb190cd11b1a3a546cc2"; }; beamDeps = [ @@ -1543,12 +1557,12 @@ let plug_cowboy = buildMix rec { name = "plug_cowboy"; - version = "2.7.1"; + version = "2.7.4"; src = fetchHex { pkg = "plug_cowboy"; version = "${version}"; - sha256 = "02dbd5f9ab571b864ae39418db7811618506256f6d13b4a45037e5fe78dc5de3"; + sha256 = "9b85632bd7012615bae0a5d70084deb1b25d2bcbb32cab82d1e9a1e023168aa3"; }; beamDeps = [ @@ -1560,12 +1574,12 @@ let plug_crypto = buildMix rec { name = "plug_crypto"; - version = "2.1.0"; + version = "2.1.1"; src = fetchHex { pkg = "plug_crypto"; version = "${version}"; - sha256 = "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"; + sha256 = "6470bce6ffe41c8bd497612ffde1a7e4af67f36a15eea5f921af71cf3e11247c"; }; beamDeps = [ ]; @@ -1612,12 +1626,12 @@ let postgrex = buildMix rec { name = "postgrex"; - version = "0.17.5"; + version = "0.21.1"; src = fetchHex { pkg = "postgrex"; version = "${version}"; - sha256 = "50b8b11afbb2c4095a3ba675b4f055c416d0f3d7de6633a595fc131a828a67eb"; + sha256 = "27d8d21c103c3cc68851b533ff99eef353e6a0ff98dc444ea751de43eb48bdac"; }; beamDeps = [ @@ -1728,12 +1742,12 @@ let ranch = buildRebar3 rec { name = "ranch"; - version = "1.8.0"; + version = "2.2.0"; src = fetchHex { pkg = "ranch"; version = "${version}"; - sha256 = "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"; + sha256 = "fa0b99a1780c80218a4197a59ea8d3bdae32fbff7e88527d7d8a4787eff4f8e7"; }; beamDeps = [ ]; @@ -1741,12 +1755,12 @@ let recon = buildMix rec { name = "recon"; - version = "2.5.4"; + version = "2.5.6"; src = fetchHex { pkg = "recon"; version = "${version}"; - sha256 = "e9ab01ac7fc8572e41eb59385efeb3fb0ff5bf02103816535bacaedf327d0263"; + sha256 = "96c6799792d735cc0f0fd0f86267e9d351e63339cbe03df9d162010cefc26bb0"; }; beamDeps = [ ]; @@ -1770,12 +1784,12 @@ let sleeplocks = buildRebar3 rec { name = "sleeplocks"; - version = "1.1.2"; + version = "1.1.3"; src = fetchHex { pkg = "sleeplocks"; version = "${version}"; - sha256 = "9fe5d048c5b781d6305c1a3a0f40bb3dfc06f49bf40571f3d2d0c57eaa7f59a5"; + sha256 = "d3b3958552e6eb16f463921e70ae7c767519ef8f5be46d7696cc1ed649421321"; }; beamDeps = [ ]; @@ -1796,12 +1810,12 @@ let statistex = buildMix rec { name = "statistex"; - version = "1.0.0"; + version = "1.1.0"; src = fetchHex { pkg = "statistex"; version = "${version}"; - sha256 = "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27"; + sha256 = "f5950ea26ad43246ba2cce54324ac394a4e7408fdcf98b8e230f503a0cba9cf5"; }; beamDeps = [ ]; @@ -1809,12 +1823,12 @@ let sweet_xml = buildMix rec { name = "sweet_xml"; - version = "0.7.4"; + version = "0.7.5"; src = fetchHex { pkg = "sweet_xml"; version = "${version}"; - sha256 = "e7c4b0bdbf460c928234951def54fe87edf1a170f6896675443279e2dbeba167"; + sha256 = "193b28a9b12891cae351d81a0cead165ffe67df1b73fe5866d10629f4faefb12"; }; beamDeps = [ ]; @@ -1822,12 +1836,12 @@ let swoosh = buildMix rec { name = "swoosh"; - version = "1.16.9"; + version = "1.16.12"; src = fetchHex { pkg = "swoosh"; version = "${version}"; - sha256 = "878b1a7a6c10ebbf725a3349363f48f79c5e3d792eb621643b0d276a38acc0a6"; + sha256 = "0e262df1ae510d59eeaaa3db42189a2aa1b3746f73771eb2616fc3f7ee63cc20"; }; beamDeps = [ @@ -1863,12 +1877,12 @@ let table_rex = buildMix rec { name = "table_rex"; - version = "4.0.0"; + version = "4.1.0"; src = fetchHex { pkg = "table_rex"; version = "${version}"; - sha256 = "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"; + sha256 = "95932701df195d43bc2d1c6531178fc8338aa8f38c80f098504d529c43bc2601"; }; beamDeps = [ ]; @@ -1902,12 +1916,12 @@ let telemetry_metrics_prometheus_core = buildMix rec { name = "telemetry_metrics_prometheus_core"; - version = "1.2.0"; + version = "1.2.1"; src = fetchHex { pkg = "telemetry_metrics_prometheus_core"; version = "${version}"; - sha256 = "9cba950e1c4733468efbe3f821841f34ac05d28e7af7798622f88ecdbbe63ea3"; + sha256 = "5e2c599da4983c4f88a33e9571f1458bf98b0cf6ba930f1dc3a6e8cf45d5afb6"; }; beamDeps = [ @@ -1918,12 +1932,12 @@ let telemetry_poller = buildRebar3 rec { name = "telemetry_poller"; - version = "1.0.0"; + version = "1.3.0"; src = fetchHex { pkg = "telemetry_poller"; version = "${version}"; - sha256 = "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"; + sha256 = "51f18bed7128544a50f75897db9974436ea9bfba560420b646af27a9a9b35211"; }; beamDeps = [ telemetry ]; @@ -1931,12 +1945,12 @@ let tesla = buildMix rec { name = "tesla"; - version = "1.11.0"; + version = "1.15.3"; src = fetchHex { pkg = "tesla"; version = "${version}"; - sha256 = "b83ab5d4c2d202e1ea2b7e17a49f788d49a699513d7c4f08f2aef2c281be69db"; + sha256 = "98bb3d4558abc67b92fb7be4cd31bb57ca8d80792de26870d362974b58caeda7"; }; beamDeps = [ @@ -1947,6 +1961,7 @@ let jason mime mint + mox poison telemetry ]; @@ -1954,12 +1969,12 @@ let thousand_island = buildMix rec { name = "thousand_island"; - version = "1.3.5"; + version = "1.3.14"; src = fetchHex { pkg = "thousand_island"; version = "${version}"; - sha256 = "2be6954916fdfe4756af3239fb6b6d75d0b8063b5df03ba76fd8a4c87849e180"; + sha256 = "d0d24a929d31cdd1d7903a4fe7f2409afeedff092d277be604966cd6aa4307ef"; }; beamDeps = [ telemetry ]; @@ -2023,12 +2038,12 @@ let ueberauth = buildMix rec { name = "ueberauth"; - version = "0.10.7"; + version = "0.10.8"; src = fetchHex { pkg = "ueberauth"; version = "${version}"; - sha256 = "0bccf73e2ffd6337971340832947ba232877aa8122dba4c95be9f729c8987377"; + sha256 = "f2d3172e52821375bccb8460e5fa5cb91cfd60b19b636b6e57e9759b6f8c10c1"; }; beamDeps = [ plug ]; @@ -2036,12 +2051,12 @@ let unicode_util_compat = buildRebar3 rec { name = "unicode_util_compat"; - version = "0.7.0"; + version = "0.7.1"; src = fetchHex { pkg = "unicode_util_compat"; version = "${version}"; - sha256 = "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"; + sha256 = "b3a917854ce3ae233619744ad1e0102e05673136776fb2fa76234f3e03b23642"; }; beamDeps = [ ]; @@ -2108,12 +2123,12 @@ let websock_adapter = buildMix rec { name = "websock_adapter"; - version = "0.5.6"; + version = "0.5.8"; src = fetchHex { pkg = "websock_adapter"; version = "${version}"; - sha256 = "e04378d26b0af627817ae84c92083b7e97aca3121196679b73c73b99d0d133ea"; + sha256 = "315b9a1865552212b5f35140ad194e67ce31af45bcee443d4ecb96b5fd3f3782"; }; beamDeps = [ diff --git a/pkgs/by-name/pl/pleroma/package.nix b/pkgs/by-name/pl/pleroma/package.nix index 0a05709893d2..33d206419ef1 100644 --- a/pkgs/by-name/pl/pleroma/package.nix +++ b/pkgs/by-name/pl/pleroma/package.nix @@ -20,14 +20,14 @@ let in beamPackages.mixRelease rec { pname = "pleroma"; - version = "2.9.1"; + version = "2.10.0"; src = fetchFromGitLab { domain = "git.pleroma.social"; owner = "pleroma"; repo = "pleroma"; rev = "v${version}"; - sha256 = "sha256-mZcr+LlRQFDZVU5yAm0XkFdFHCDp4DZNLoVUlWxknMI="; + sha256 = "sha256-kW4AcOYHtm8lVXRroDCUM7jY7o39JHx/J/mfy2XfBgs="; }; patches = [ ./Revert-Config-Restrict-permissions-of-OTP-config.patch ]; @@ -77,8 +77,8 @@ beamPackages.mixRelease rec { domain = "git.pleroma.social"; owner = "pleroma/elixir-libraries"; repo = "elixir-captcha"; - rev = "90f6ce7672f70f56708792a98d98bd05176c9176"; - sha256 = "sha256-s7EuAhmCsQA/4p2NJHJSWB/DZ5hA+7EelPsUOvKr2Po="; + rev = "e7b7cc34cc16b383461b966484c297e4ec9aeef6"; + sha256 = "sha256-gcsZ8BzmKfSeX2QsWDxQd34nKxIM0eJKBAaxxYyFSlg="; }; beamDeps = [ ]; }; @@ -94,6 +94,18 @@ beamPackages.mixRelease rec { }; beamDeps = with final; [ prometheus ]; }; + oban_plugins_lazarus = beamPackages.buildMix { + name = "oban_plugins_lazarus"; + version = "0.1.0"; + src = fetchFromGitLab { + domain = "git.pleroma.social"; + owner = "pleroma/elixir-libraries"; + repo = "oban_plugins_lazarus"; + rev = "e49fc355baaf0e435208bf5f534d31e26e897711"; + hash = "sha256-zSzPniRN7jQLAEGGOuwserDSLy2lSZ74NFMD/IOBsC8="; + }; + beamDeps = with final; [ oban ]; + }; remote_ip = beamPackages.buildMix { name = "remote_ip"; version = "0.1.5"; diff --git a/pkgs/by-name/pm/pmars/0001-fix-round-redefinition.patch b/pkgs/by-name/pm/pmars/0001-fix-round-redefinition.patch deleted file mode 100644 index 455514a26ef9..000000000000 --- a/pkgs/by-name/pm/pmars/0001-fix-round-redefinition.patch +++ /dev/null @@ -1,92 +0,0 @@ -diff '--color=auto' -ruN a/src/cdb.c b/src/cdb.c ---- a/src/cdb.c 1970-01-01 01:00:01.000000000 +0100 -+++ b/src/cdb.c 2024-10-08 11:28:57.892951658 +0200 -@@ -1564,7 +1564,7 @@ - (warriorsLeft ? warriorsLeft : 1)); - substitute(buf[bi1], "CYCLE", outs, buf[bi2]); - SWITCHBI; -- sprintf(outs, "%d", round); -+ sprintf(outs, "%d", roundCounter); - substitute(buf[bi1], "ROUND", outs, buf[bi2]); - - SWITCHBI; -@@ -1875,7 +1875,7 @@ - #endif - int nFuture, nPast, count, taskHalf = (coreSize <= 10000 ? 7 : 5); - -- sprintf(outs, roundOfCycle, round, rounds, -+ sprintf(outs, roundOfCycle, roundCounter, rounds, - (cycle + (warriorsLeft ? warriorsLeft : 1) - 1) / - (warriorsLeft ? warriorsLeft : 1)); - cdb_fputs(outs, COND); -diff '--color=auto' -ruN a/src/curdisp.c b/src/curdisp.c ---- a/src/curdisp.c 1970-01-01 01:00:01.000000000 +0100 -+++ b/src/curdisp.c 2024-10-08 11:29:52.129955266 +0200 -@@ -156,7 +156,7 @@ - wstandend(corewin); - if (!--refreshCounter) { - refreshCounter = refreshInterval; -- update_statusline(round); -+ update_statusline(roundCounter); - wrefresh(corewin); - } - } -@@ -542,7 +542,7 @@ - text_display_close() - { - if (displayLevel) { -- update_statusline(round - 1); -+ update_statusline(roundCounter - 1); - wstandout(corewin); - mvwaddstr(corewin, 0, 0, pressAnyKey); - wrefresh(corewin); -diff '--color=auto' -ruN a/src/sim.c b/src/sim.c ---- a/src/sim.c 1970-01-01 01:00:01.000000000 +0100 -+++ b/src/sim.c 2024-10-08 11:28:21.848284678 +0200 -@@ -173,7 +173,7 @@ - mem_struct FAR *memory; - - long cycle; --int round; -+int roundCounter; - - char alloc_p = 0; /* indicate whether memory has been allocated */ - int warriorsLeft; /* number of warriors still left in core */ -@@ -328,7 +328,7 @@ - #endif - - display_init(); -- round = 1; -+ roundCounter = 1; - do { /* each round */ - #if defined(DOS16) && !defined(SERVER) && !defined(DOSTXTGRAPHX) && !defined(DOSGRXGRAPHX) && !defined(DJGPP) - fputc('\r', stdout); /* enable interruption by Ctrl-C */ -@@ -1421,13 +1421,13 @@ - #ifndef SERVER - if (debugState == BREAK) { - if (warriorsLeft == 1 && warriors != 1) -- sprintf(outs, warriorTerminatedEndOfRound, W - warrior, W->name, round); -+ sprintf(outs, warriorTerminatedEndOfRound, W - warrior, W->name, roundCounter); - else -- sprintf(outs, endOfRound, round); -+ sprintf(outs, endOfRound, roundCounter); - debugState = cdb(outs); - } - #endif -- } while (++round <= rounds); -+ } while (++roundCounter <= rounds); - - display_close(); - #ifdef PERMUTATE -diff '--color=auto' -ruN a/src/sim.h b/src/sim.h ---- a/src/sim.h 1970-01-01 01:00:01.000000000 +0100 -+++ b/src/sim.h 2024-10-08 11:27:46.730634854 +0200 -@@ -89,7 +89,7 @@ - #define FAR - #endif - --extern int round; -+extern int roundCounter; - extern long cycle; - extern ADDR_T progCnt; /* program counter */ - extern warrior_struct *W; /* indicate which warrior is running */ diff --git a/pkgs/by-name/pm/pmars/0002-fix-sighandler.patch b/pkgs/by-name/pm/pmars/0002-fix-sighandler.patch deleted file mode 100644 index 82fb19fe7ba9..000000000000 --- a/pkgs/by-name/pm/pmars/0002-fix-sighandler.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff '--color=auto' -ruN a/src/pmars.c b/src/pmars.c ---- a/src/pmars.c 2024-11-12 20:36:28.142766807 +0100 -+++ b/src/pmars.c 2024-11-12 20:39:48.096710063 +0100 -@@ -72,7 +72,7 @@ - #ifdef PSPACE - void pspace_init(void); - #endif --#if defined(unix) || defined(__MSDOS__) || defined(VMS) -+#if defined(unix) || defined(__MSDOS__) || defined(VMS) || defined(__MACH__) - void sighandler(int dummy); - #endif - #if defined(CURSESGRAPHX) -@@ -87,7 +87,7 @@ - #ifdef PSPACE - void pspace_init(); - #endif --#if defined(unix) || defined(__MSDOS__) -+#if defined(unix) || defined(__MSDOS__) || defined(__MACH__) - void sighandler(); - #endif - #if defined(CURSESGRAPHX) -@@ -224,7 +224,7 @@ - } - - /* called when ctrl-c is pressed; prepares for debugger entry */ --#if defined(unix) || defined(__MSDOS__) || defined (__OS2__) -+#if defined(unix) || defined(__MSDOS__) || defined (__OS2__) || defined(__MACH__) - void - #ifdef __OS2__ - _cdecl -@@ -290,7 +290,7 @@ - int argc; - char **argv; - { --#if defined(unix) && !defined(DJGPP) -+#if (defined(unix) && !defined(DJGPP)) || defined(__MACH__) - #ifdef SIGINT - signal(SIGINT, sighandler); - #endif -diff '--color=auto' -ruN a/src/xwindisp.c b/src/xwindisp.c ---- a/src/xwindisp.c 2024-11-12 20:36:28.143766827 +0100 -+++ b/src/xwindisp.c 2024-11-12 20:37:39.708178145 +0100 -@@ -61,6 +61,9 @@ - #define YELLOW 14 - #define WHITE 15 - -+/* defined in pmars.c */ -+extern void sighandler(int dummy); -+ - /* X names of the colors we allocate */ - static char *xColorNames[MAXXCOLOR] = { - "black", "blue3", "green3", "cyan3", diff --git a/pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch b/pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch index 04933f9718eb..3dd89db44758 100644 --- a/pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch +++ b/pkgs/by-name/pm/pmars/0003-fix-ncurses-opaque-WINDOW.patch @@ -1,9 +1,9 @@ diff '--color=auto' -ruN a/src/curdisp.c b/src/curdisp.c ---- a/src/curdisp.c 2025-05-08 23:23:48.070346219 +0200 -+++ b/src/curdisp.c 2025-05-08 23:29:33.851400436 +0200 -@@ -28,12 +28,6 @@ - #include "sim.h" - #endif +--- a/src/curdisp.c 2026-01-03 04:22:43.000000000 +0100 ++++ b/src/curdisp.c 2026-01-11 20:40:22.526484970 +0100 +@@ -33,12 +33,6 @@ + extern unsigned long loopDelayAr[SPEEDLEVELS]; + static int use_color; -/* For window structure in BSD 4.4/Curses 8.x library */ -#ifdef BSD44 @@ -14,44 +14,28 @@ diff '--color=auto' -ruN a/src/curdisp.c b/src/curdisp.c typedef struct win_st { WINDOW *win; int page; -@@ -428,18 +422,18 @@ +@@ -461,11 +455,11 @@ str--; maxchar++; leaveok(curwin, TRUE); - if (ox = curwin->_curx) { -+ if (ox = getcurx(curwin)) { - #if 0 - #ifdef ATTRIBUTE -- mvwaddch(curwin, curwin->_cury, --ox, ' ' | attr); -+ mvwaddch(curwin, getcury(curwin), --ox, ' ' | attr); - #else -- mvwaddch(curwin, curwin->_cury, --ox, ' '); -+ mvwaddch(curwin, getcury(curwin), --ox, ' '); - #endif - #endif /* 0 */ - mvwaddch(curwin, curwin->_cury, --ox, ' '); - wmove(curwin, curwin->_cury, ox); ++ if (ox = getcurx(curwin)) { + mvwaddch(curwin, getcury(curwin), --ox, ' '); + wmove(curwin, getcury(curwin), ox); } else { - oy = curwin->_cury - 1; + oy = getcury(curwin) - 1; - #if 0 - #ifdef ATTRIBUTE - mvwaddch(curwin, oy, COLS - 1, ' ' | attr); -@@ -470,12 +464,12 @@ + mvwaddch(curwin, oy, COLS - 1, ' '); + wmove(curwin, oy, COLS - 1); + } +@@ -477,7 +471,7 @@ + leaveok(curwin, TRUE); + for (getyx(curwin, oy, ox); str > ostr; str--, maxchar++) { if (ox--) - #if 0 - #ifdef ATTRIBUTE -- mvwaddch(curwin, curwin->_cury, ox, ' ' | attr); -+ mvwaddch(curwin, getcury(curwin), ox, ' ' | attr); - #else - mvwaddch(curwin, curwin->_cury, ox, ' '); + mvwaddch(curwin, getcury(curwin), ox, ' '); - #endif - #endif /* 0 */ -- mvwaddch(curwin, curwin->_cury, ox, ' '); -+ mvwaddch(curwin, getcury(curwin), ox, ' '); else - #if 0 - #ifdef ATTRIBUTE + mvwaddch(curwin, oy, ox = COLS, ' '); + } diff --git a/pkgs/by-name/pm/pmars/package.nix b/pkgs/by-name/pm/pmars/package.nix index cce56b0b1d89..2bb2830f97eb 100644 --- a/pkgs/by-name/pm/pmars/package.nix +++ b/pkgs/by-name/pm/pmars/package.nix @@ -21,20 +21,15 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "pmars"; - version = "0.9.4"; + version = "0.9.5"; src = fetchzip { url = "http://www.koth.org/pmars/pmars-${finalAttrs.version}.zip"; - hash = "sha256-68zsH9HWWp13pozjMajayS/VhY8iTosUp1CvcAmj/dE="; + stripRoot = false; + hash = "sha256-p6iZkb0Nrcj7LtAxtS6Ics5CS9taPHbsoIdE5C1QYnI="; }; patches = [ - # Error under Clang due to global "round" variable: redefinition of 'round' as different kind of symbol - ./0001-fix-round-redefinition.patch - - # call to undeclared function 'sighandler' & undefined sighandler on Darwin - ./0002-fix-sighandler.patch - # ncurses' WINDOW struct was turned opaque for outside code, use functions for accessing values instead ./0003-fix-ncurses-opaque-WINDOW.patch ]; @@ -43,7 +38,7 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace src/Makefile \ --replace-fail 'CC = gcc' "CC = $CC" \ --replace-fail '@strip' "@$STRIP" \ - --replace-fail 'CFLAGS = -O -DEXT94 -DXWINGRAPHX -DPERMUTATE -DRWLIMIT' "CFLAGS = ${ + --replace-fail 'CFLAGS += -O -DEXT94 -DXWINGRAPHX -DPERMUTATE -DRWLIMIT' "CFLAGS += ${ lib.concatMapStringsSep " " (opt: "-D${opt}") options } ${ lib.optionalString ( diff --git a/pkgs/by-name/po/portablemc/package.nix b/pkgs/by-name/po/portablemc/package.nix index 435c3e02ee79..3959d20e8fad 100644 --- a/pkgs/by-name/po/portablemc/package.nix +++ b/pkgs/by-name/po/portablemc/package.nix @@ -45,7 +45,7 @@ let ] ++ lib.optional textToSpeechSupport flite; in -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "portablemc"; version = "4.4.1"; pyproject = true; @@ -53,7 +53,7 @@ python3Packages.buildPythonApplication rec { src = fetchFromGitHub { owner = "mindstorm38"; repo = "portablemc"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-KE1qf6aIcDjwKzrdKDUmriWfAt+vuriew6ixHKm0xs8="; }; @@ -91,9 +91,9 @@ python3Packages.buildPythonApplication rec { Including fast and easy installation of common mod loaders such as Fabric, Forge, NeoForge and Quilt. This launcher is compatible with the standard Minecraft directories. ''; - changelog = "https://github.com/mindstorm38/portablemc/releases/tag/v${version}"; + changelog = "https://github.com/mindstorm38/portablemc/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.gpl3Only; mainProgram = "portablemc"; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/by-name/pr/prl-tools/package.nix b/pkgs/by-name/pr/prl-tools/package.nix index a587c5413b93..8617058f3d8f 100644 --- a/pkgs/by-name/pr/prl-tools/package.nix +++ b/pkgs/by-name/pr/prl-tools/package.nix @@ -40,13 +40,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "prl-tools"; - version = "26.2.0-57363"; + version = "26.2.1-57371"; # We download the full distribution to extract prl-tools-lin.iso from # => ${dmg}/Parallels\ Desktop.app/Contents/Resources/Tools/prl-tools-lin.iso src = fetchurl { url = "https://download.parallels.com/desktop/v${lib.versions.major finalAttrs.version}/${finalAttrs.version}/ParallelsDesktop-${finalAttrs.version}.dmg"; - hash = "sha256-vxSLyqpKaf8azw0RvKMBHNa2x50HM6wwt+iH9rMyZQE="; + hash = "sha256-mmZsaLYaA9OjYwfZ75Be59n8Ve2DjdG6fGqgx8NpdLI="; }; hardeningDisable = [ diff --git a/pkgs/by-name/pr/probe-rs-tools/package.nix b/pkgs/by-name/pr/probe-rs-tools/package.nix index 1f8dd8d91846..55de3239cb2a 100644 --- a/pkgs/by-name/pr/probe-rs-tools/package.nix +++ b/pkgs/by-name/pr/probe-rs-tools/package.nix @@ -18,16 +18,16 @@ let in rustPlatform.buildRustPackage rec { pname = "probe-rs-tools"; - version = "0.30.0"; + version = "0.31.0"; src = fetchFromGitHub { owner = "probe-rs"; repo = "probe-rs"; tag = "v${version}"; - hash = "sha256-3tVCsMXrNTFhTQit4PNTXtHOXq8GSEWdLBJ9iqtgWyQ="; + hash = "sha256-ZcH2FBKsbBtTYfRQgPfOOODDpyB7VydcO7F7pq8xzD0="; }; - cargoHash = "sha256-CL+aTPllQqa22ENU2FWhBMSe0Mf1MAfemytIiqf0bHk="; + cargoHash = "sha256-fVmwZw34lK6eKkqNT/SW5wzeeyWg6Qp48eso6yibICE="; buildAndTestSubdir = pname; diff --git a/pkgs/by-name/pt/ptcollab/package.nix b/pkgs/by-name/pt/ptcollab/package.nix index fbfc772bffea..6cec5df4641a 100644 --- a/pkgs/by-name/pt/ptcollab/package.nix +++ b/pkgs/by-name/pt/ptcollab/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "ptcollab"; - version = "0.6.4.9"; + version = "0.6.4.10"; src = fetchFromGitHub { owner = "yuxshao"; repo = "ptcollab"; rev = "v${finalAttrs.version}"; - hash = "sha256-1fVhimwBAYtC+HnuxA7ywfEnVlqHnlzwfKT9+H/ZG0k="; + hash = "sha256-8CllDcbbVXmDyD5jyKVoNq96wqWtfoPM2CEN13KYptQ="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/py/pyprland/package.nix b/pkgs/by-name/py/pyprland/package.nix index d0e4e202b078..aa7ef6504be7 100644 --- a/pkgs/by-name/py/pyprland/package.nix +++ b/pkgs/by-name/py/pyprland/package.nix @@ -10,8 +10,6 @@ python3Packages.buildPythonApplication rec { version = "2.5.1"; pyproject = true; - disabled = python3Packages.pythonOlder "3.10"; - src = fetchFromGitHub { owner = "hyprland-community"; repo = "pyprland"; diff --git a/pkgs/by-name/py/pyxel/package.nix b/pkgs/by-name/py/pyxel/package.nix index 507d91963156..3770dd9aea92 100644 --- a/pkgs/by-name/py/pyxel/package.nix +++ b/pkgs/by-name/py/pyxel/package.nix @@ -6,7 +6,7 @@ SDL2, }: -python3.pkgs.buildPythonApplication rec { +python3.pkgs.buildPythonApplication (finalAttrs: { pname = "pyxel"; version = "2.3.18"; pyproject = true; @@ -14,7 +14,7 @@ python3.pkgs.buildPythonApplication rec { src = fetchFromGitHub { owner = "kitao"; repo = "pyxel"; - rev = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-pw1ZDmQ7zGwfM98jjym34RbLmUbjuuUnCoPGczxdai8="; }; @@ -52,7 +52,7 @@ python3.pkgs.buildPythonApplication rec { ]; meta = { - changelog = "https://github.com/kitao/pyxel/tree/${src.rev}/CHANGELOG.md"; + changelog = "https://github.com/kitao/pyxel/tree/${finalAttrs.src.rev}/CHANGELOG.md"; description = "Retro game engine for Python"; homepage = "https://github.com/kitao/pyxel"; license = lib.licenses.mit; @@ -60,4 +60,4 @@ python3.pkgs.buildPythonApplication rec { maintainers = with lib.maintainers; [ tomasajt ]; platforms = lib.platforms.linux ++ lib.platforms.darwin; }; -} +}) diff --git a/pkgs/by-name/ra/railway/package.nix b/pkgs/by-name/ra/railway/package.nix index be74a9fca6c9..9b034b8bb296 100644 --- a/pkgs/by-name/ra/railway/package.nix +++ b/pkgs/by-name/ra/railway/package.nix @@ -7,16 +7,16 @@ }: rustPlatform.buildRustPackage rec { pname = "railway"; - version = "4.23.2"; + version = "4.25.3"; src = fetchFromGitHub { owner = "railwayapp"; repo = "cli"; rev = "v${version}"; - hash = "sha256-3Uh8SR4H0mgsamGCLrpgq+ujNtegPQvSVUm7ALfQLh8="; + hash = "sha256-dml5lyZoA4f9W9MdiSRj2P9+mXs9s87w8cS2J0RvC2k="; }; - cargoHash = "sha256-voN3tRl4CetkuQ9RbIQzpIO2gJeBzP9TPmouJyqeYSw="; + cargoHash = "sha256-9zk+SHwZL80fB/HuQbfpYvOTKx3UCNLvvlbnDAB/VYM="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/rc/rcu/package.nix b/pkgs/by-name/rc/rcu/package.nix index 7a00c9b90c72..9312c9a684f4 100644 --- a/pkgs/by-name/rc/rcu/package.nix +++ b/pkgs/by-name/rc/rcu/package.nix @@ -24,7 +24,7 @@ let in python3Packages.buildPythonApplication rec { pname = "rcu"; - version = "4.0.32"; + version = "4.0.33"; pyproject = false; @@ -32,7 +32,7 @@ python3Packages.buildPythonApplication rec { let src-tarball = requireFile { name = "rcu-${version}-source.tar.gz"; - hash = "sha256-0sJyCRDV76HUy78RBO27AgkXGroL217GNwHp8HMSKx8="; + hash = "sha256-ezbG3qUfUyr9JEXyKTrULYCVm4hA4+nvcHPzJpdLaWY="; url = "https://www.davisr.me/projects/rcu/"; }; in diff --git a/pkgs/by-name/re/re-isearch/package.nix b/pkgs/by-name/re/re-isearch/package.nix index feef672373c9..fb527df247ad 100644 --- a/pkgs/by-name/re/re-isearch/package.nix +++ b/pkgs/by-name/re/re-isearch/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation { pname = "re-Isearch"; - version = "2.20220925.4.0a-unstable-2025-12-30"; + version = "2.20220925.4.0a-unstable-2026-01-14"; src = fetchFromGitHub { owner = "re-Isearch"; repo = "re-Isearch"; - rev = "cff7cd6d0fdcc42e87f6e1ffb24a51f2880c061f"; - hash = "sha256-VxWhEhxTfWU4Gfsq8PY3SCxb7Gvckh0pr7GsNSdCl2w="; + rev = "304fa432f4f364c96e99e12f362d8c1f4c02db08"; + hash = "sha256-B8fjW9ulGgoU7nZerv893PV6Blnq/Nyj2YYZBsu+Tf8="; }; patches = [ diff --git a/pkgs/by-name/re/reqable/package.nix b/pkgs/by-name/re/reqable/package.nix index a255675004ea..19d8833e3a63 100644 --- a/pkgs/by-name/re/reqable/package.nix +++ b/pkgs/by-name/re/reqable/package.nix @@ -28,11 +28,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "reqable"; - version = "3.0.33"; + version = "3.0.34"; src = fetchurl { url = "https://github.com/reqable/reqable-app/releases/download/${finalAttrs.version}/reqable-app-linux-x86_64.deb"; - hash = "sha256-Cb4cJsUvmlCupquE9o9VkxxHoTnRkvuAaximyABeBQk="; + hash = "sha256-cKkrGvGnccU4sRzQ/LFzSh1yG1BViNz2E8aLUlzQaAI="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ri/ringboard/package.nix b/pkgs/by-name/ri/ringboard/package.nix index 2add27225960..0ba46a48be6b 100644 --- a/pkgs/by-name/ri/ringboard/package.nix +++ b/pkgs/by-name/ri/ringboard/package.nix @@ -10,6 +10,7 @@ makeWrapper, displayServer ? "x11", nixosTests, + nix-update-script, }: assert lib.assertOneOf "displayServer" displayServer [ @@ -22,16 +23,16 @@ rustPlatform.buildRustPackage (finalAttrs: { # release version needs nightly, so we use a custom tree, see: # https://github.com/SUPERCILEX/clipboard-history/issues/22#issuecomment-3676256971 - version = "0.13.2-unstable-2025-12-19"; + version = "0.14.0-unstable-2026-01-19"; src = fetchFromGitHub { owner = "SUPERCILEX"; repo = "clipboard-history"; - rev = "08a2a2a77fa38240dfc6a33adabb3a473ce6bcfd"; - hash = "sha256-iG/pk6xizCv2sUqTA44nb4AnbaOuDsIONuUfJuOWnc8="; + rev = "cb2e94add2388a68a8f015b77f9b082b1658b3b7"; + hash = "sha256-r2632XJ/2Er1TuHCDNm6uItvdhqJ87i9p+h9M2MwKwk="; }; - cargoHash = "sha256-LuWUf37X/Z0xCbAQmaMY8lle7gGZWoz2bgYhe/uRonU="; + cargoHash = "sha256-c5Zdvz2xHsGh4VnOED2JiitNWwNTSkygaMFHPPLANqw="; nativeBuildInputs = [ makeWrapper @@ -97,11 +98,15 @@ rustPlatform.buildRustPackage (finalAttrs: { sed -i "s|Icon=ringboard|Icon=$out/share/icons/hicolor/1024x1024/ringboard.jpeg|g" $out/share/applications/ringboard-egui.desktop ''; - passthru.tests.nixos = nixosTests.ringboard; + passthru = { + tests.nixos = nixosTests.ringboard; + updateScript = nix-update-script { extraArgs = [ "--version=branch=stable" ]; }; + }; meta = { description = "Fast, efficient, and composable clipboard manager for Linux"; homepage = "https://github.com/SUPERCILEX/clipboard-history"; + changelog = "https://github.com/SUPERCILEX/clipboard-history/releases/tag/${finalAttrs.version}"; license = lib.licenses.asl20; platforms = lib.platforms.linux; maintainers = [ lib.maintainers.magnetophon ]; diff --git a/pkgs/by-name/ro/routedns/package.nix b/pkgs/by-name/ro/routedns/package.nix index 791558a6393d..84c0cc44cf01 100644 --- a/pkgs/by-name/ro/routedns/package.nix +++ b/pkgs/by-name/ro/routedns/package.nix @@ -7,13 +7,13 @@ buildGoModule rec { pname = "routedns"; - version = "0.1.128"; + version = "0.1.130"; src = fetchFromGitHub { owner = "folbricht"; repo = "routedns"; rev = "v${version}"; - hash = "sha256-jUk0wa+hw0MIXnV1K/n19rGRKKolEf6q+dtKHmnuj3I="; + hash = "sha256-eYtFfRi+w+0xnIZi/OXc+dt/HI/SQxoZphgduK6eETU="; }; vendorHash = "sha256-woInU618JPwVxGDJDZQ6+j9wY6qNSB5Xu8wXf7s2qvQ="; diff --git a/pkgs/by-name/rq/rqlite/package.nix b/pkgs/by-name/rq/rqlite/package.nix index c290ee4e10e9..0da2e44f6e03 100644 --- a/pkgs/by-name/rq/rqlite/package.nix +++ b/pkgs/by-name/rq/rqlite/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "rqlite"; - version = "9.3.14"; + version = "9.3.15"; src = fetchFromGitHub { owner = "rqlite"; repo = "rqlite"; tag = "v${finalAttrs.version}"; - hash = "sha256-DZOL2klXdB7fKWnImQeRbeSSeDgluAHAPO7yP8QNak4="; + hash = "sha256-VMVDXpbDN8mZJJycsFK1LOujIXw29584wnDE470C87U="; }; - vendorHash = "sha256-4HHUtmF4Q9QzVCqHYCkIG8lHlQ7soBXsGFuGl4uL8PQ="; + vendorHash = "sha256-O/VaYGjEMTOExdQfaL3XcnPmQxEYXjCMVfI6Vl+roZw="; subPackages = [ "cmd/rqlite" diff --git a/pkgs/by-name/ru/rune-languageserver/package.nix b/pkgs/by-name/ru/rune-languageserver/package.nix index 3c15a36fe587..5d7cf2d7a205 100644 --- a/pkgs/by-name/ru/rune-languageserver/package.nix +++ b/pkgs/by-name/ru/rune-languageserver/package.nix @@ -2,27 +2,39 @@ lib, rustPlatform, fetchCrate, + versionCheckHook, + nix-update-script, }: -rustPlatform.buildRustPackage rec { +rustPlatform.buildRustPackage (finalAttrs: { pname = "rune-languageserver"; - version = "0.13.4"; + version = "0.14.1"; src = fetchCrate { - inherit pname version; - hash = "sha256-Kw6Qh/9eQPMj4V689+7AxuJB+aCciK3FZTfcdhyZXGY="; + inherit (finalAttrs) pname version; + hash = "sha256-0b8XGbMQqMolOdQEMjpwHAVI3A4fXemyCowN39qY16A="; }; - cargoHash = "sha256-YviRACndc4r4ul72ZF3I/R/nEsIoML2Ek2xqUUE3FDQ="; + cargoHash = "sha256-QrzOpfDpG08IUoydvSoh0qxJ0vg86391NnyEyJeZr54="; env = { - RUNE_VERSION = version; + RUNE_VERSION = finalAttrs.version; + }; + + nativeInstallCheckInputs = [ + versionCheckHook + ]; + doInstallCheck = true; + + passthru = { + updateScript = nix-update-script { }; }; meta = { description = "Language server for the Rune Language, an embeddable dynamic programming language for Rust"; homepage = "https://crates.io/crates/rune-languageserver"; - changelog = "https://github.com/rune-rs/rune/releases/tag/${version}"; + downloadPage = "https://github.com/rune-rs/rune"; + changelog = "https://github.com/rune-rs/rune/releases/tag/${finalAttrs.version}"; license = with lib.licenses; [ asl20 mit @@ -30,4 +42,4 @@ rustPlatform.buildRustPackage rec { maintainers = [ ]; mainProgram = "rune-languageserver"; }; -} +}) diff --git a/pkgs/by-name/sc/screenly-cli/package.nix b/pkgs/by-name/sc/screenly-cli/package.nix index 654a9c543dd6..d8edb2c1d762 100644 --- a/pkgs/by-name/sc/screenly-cli/package.nix +++ b/pkgs/by-name/sc/screenly-cli/package.nix @@ -10,16 +10,16 @@ rustPlatform.buildRustPackage rec { pname = "screenly-cli"; - version = "1.0.5"; + version = "1.1.0"; src = fetchFromGitHub { owner = "screenly"; repo = "cli"; tag = "v${version}"; - hash = "sha256-OSol+KVfxL/bz9qwT9u8MmjPQ11qqFYWnVQLXfcA6pQ="; + hash = "sha256-Icx0Nkn0ScbNTmXllkUj6DPhGqzh8HnIQPpej4ABJac="; }; - cargoHash = "sha256-znob9SvnE1y9yX/tTJY7jjJx/TnLTmoRRokScj5H1Yg="; + cargoHash = "sha256-XYXWbwuoPqL93R8Bre26kBPxkiXpJ0Dg06cBOyDK8ok="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/se/seaweedfs/package.nix b/pkgs/by-name/se/seaweedfs/package.nix index 7db65f7928ae..6ca9d8588e76 100644 --- a/pkgs/by-name/se/seaweedfs/package.nix +++ b/pkgs/by-name/se/seaweedfs/package.nix @@ -11,16 +11,16 @@ buildGoModule (finalAttrs: { pname = "seaweedfs"; - version = "4.06"; + version = "4.07"; src = fetchFromGitHub { owner = "seaweedfs"; repo = "seaweedfs"; tag = finalAttrs.version; - hash = "sha256-6pdRL5YceoMkToRmGxMeCghwyqmwhpm+MXajpiS7plM="; + hash = "sha256-MeMB5YuRVWL9bR2LUvSzRcaNpSu+D5IwLqPI/OKvjoI="; }; - vendorHash = "sha256-H56gS8E4MdO3MXC3yd2+r5ueffNfrDt5kTD7lkUuYBg="; + vendorHash = "sha256-m3rOw41lJA9rRd5788V0H9tlJf10BDzKJNAZepMQ9oI="; nativeBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libredirect.hook ]; diff --git a/pkgs/by-name/se/selfci/Cargo.toml.patch b/pkgs/by-name/se/selfci/Cargo.toml.patch new file mode 100644 index 000000000000..ab385872ce7a --- /dev/null +++ b/pkgs/by-name/se/selfci/Cargo.toml.patch @@ -0,0 +1,13 @@ +diff --git a/Cargo.toml b/Cargo.toml +index 8f7a1e2..e2062c4 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -10,7 +10,7 @@ readme = "README.md" + keywords = ["ci"] + categories = ["development-tools"] + authors = ["dpc "] +-rust-version = "1.92" ++rust-version = "1.91" + + [[bin]] + name = "selfci" diff --git a/pkgs/by-name/se/selfci/package.nix b/pkgs/by-name/se/selfci/package.nix new file mode 100644 index 000000000000..a5c4f3d33b83 --- /dev/null +++ b/pkgs/by-name/se/selfci/package.nix @@ -0,0 +1,48 @@ +{ + lib, + fetchgit, + nix-update-script, + rustPlatform, + git, + makeWrapper, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "selfci"; + version = "0-unstable-2026-01-17"; + + src = fetchgit { + url = "https://radicle.dpc.pw/z2tDzYbAXxTQEKTGFVwiJPajkbeDU.git"; + rev = "83e693dada851ce0da32713869d3da02c52ed257"; + hash = "sha256-f0BfHvIQnhhiPie3a+9MeEGzZ+/KcgrbKBneu8Jo+xs="; + }; + + cargoHash = "sha256-Z3f35HIZiNeKeDNFPUVkFvL2OpMWzqRvxOL5/hUEzJw="; + + nativeBuildInputs = [ + makeWrapper + ]; + + patches = [ + ./Cargo.toml.patch + ]; + + doCheck = false; + + postInstall = '' + wrapProgram "$out"/bin/selfci \ + --prefix PATH : ${lib.makeBinPath [ git ]} + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Minimalistic local-first Unix-philosophy-abiding CI"; + homepage = "https://app.radicle.xyz/nodes/radicle.dpc.pw/rad%3Az2tDzYbAXxTQEKTGFVwiJPajkbeDU"; + license = lib.licenses.mpl20; + maintainers = with lib.maintainers; [ + dvn0 + ]; + mainProgram = "selfci"; + }; +}) diff --git a/pkgs/by-name/sh/showmethekey/package.nix b/pkgs/by-name/sh/showmethekey/package.nix index 75d7335e7366..53e736581b8c 100644 --- a/pkgs/by-name/sh/showmethekey/package.nix +++ b/pkgs/by-name/sh/showmethekey/package.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation rec { pname = "showmethekey"; - version = "1.18.4"; + version = "1.19.0"; src = fetchFromGitHub { owner = "AlynxZhou"; repo = "showmethekey"; tag = "v${version}"; - hash = "sha256-Wj7r4rnY8+QGWtk9h88gk3LxkNLIKUA/46lkyPK86h0="; + hash = "sha256-jQRckUqLe9sshi3SJqpFwSsy5H0Gp17kkcCdslwg6cM="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/si/signal-desktop/libsignal-node.nix b/pkgs/by-name/si/signal-desktop/libsignal-node.nix index f9a0174b46f3..ab6305a1bff5 100644 --- a/pkgs/by-name/si/signal-desktop/libsignal-node.nix +++ b/pkgs/by-name/si/signal-desktop/libsignal-node.nix @@ -24,23 +24,23 @@ let in rustPlatform.buildRustPackage (finalAttrs: { pname = "libsignal-node"; - version = "0.86.3"; + version = "0.86.9"; src = fetchFromGitHub { owner = "signalapp"; repo = "libsignal"; tag = "v${finalAttrs.version}"; - hash = "sha256-MEwtFOYdp8VjZ++R003kXj72m5yY5V/s+PwyORmN5os="; + hash = "sha256-WQdaE9RqRn0/DldUC8FgLALagVGit0Cd3n90t0nEgUs="; }; - cargoHash = "sha256-xAYMoOdEhq0502lWSwm1aDFh4gIEP1OYUWdOAqijeGM="; + cargoHash = "sha256-2vIEBQmMBLppk4/t8mvR1n2K/YWUtUaxNl9SpUCNVM8="; npmRoot = "node"; npmDeps = fetchNpmDeps { name = "${finalAttrs.pname}-npm-deps"; inherit (finalAttrs) version src; sourceRoot = "${finalAttrs.src.name}/${finalAttrs.npmRoot}"; - hash = "sha256-6LL0+jLDfvU021EnArI71IAJOM/0HZcxNu5D+HfitS4="; + hash = "sha256-a7TNY+oe7bBLE5D3WYn75Su7RK/xl6UEkv7sosc/TBU="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/si/signal-desktop/package.nix b/pkgs/by-name/si/signal-desktop/package.nix index d07c3b5b51f6..3839c6846834 100644 --- a/pkgs/by-name/si/signal-desktop/package.nix +++ b/pkgs/by-name/si/signal-desktop/package.nix @@ -54,13 +54,13 @@ let ''; }); - version = "7.84.0"; + version = "7.85.0"; src = fetchFromGitHub { owner = "signalapp"; repo = "Signal-Desktop"; tag = "v${version}"; - hash = "sha256-Ay4mMurnEDNoFkEhxPn4SWBhrkNg94+AGFMrNA0mTcE="; + hash = "sha256-fBaxgd9KjqomG2VrDnbIyVjf9Fv1vFrV4ge0h3yswGk="; }; sticker-creator = stdenv.mkDerivation (finalAttrs: { @@ -144,15 +144,15 @@ stdenv.mkDerivation (finalAttrs: { fetcherVersion = 1; hash = if withAppleEmojis then - "sha256-/1/sUHt1J6wv/MuaZdE1XbkIkXfrllBoqt8AXP1d0Pw=" + "sha256-EqDHhfpdnj4ZhTVnmVmyiRjTUIGX5fpdAsxqRY/tzQI=" else - "sha256-x2A4sX7m/zNVTEWRXOKD6VsUR+aGjEFhIv+NQVe+RwQ="; + "sha256-Vfs1/J3R6O0Ct4gAPO/mVCwr6EaMBpltOImPrRHLkFM="; }; env = { ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; SIGNAL_ENV = "production"; - SOURCE_DATE_EPOCH = 1767827358; + SOURCE_DATE_EPOCH = 1768433780; }; preBuild = '' diff --git a/pkgs/by-name/si/sing-box/package.nix b/pkgs/by-name/si/sing-box/package.nix index 82e534956bb8..9c92099562af 100644 --- a/pkgs/by-name/si/sing-box/package.nix +++ b/pkgs/by-name/si/sing-box/package.nix @@ -10,16 +10,16 @@ buildGoModule (finalAttrs: { pname = "sing-box"; - version = "1.12.16"; + version = "1.12.17"; src = fetchFromGitHub { owner = "SagerNet"; repo = "sing-box"; tag = "v${finalAttrs.version}"; - hash = "sha256-enmT6BnGzEpk9BPB9IZWJctMoe/FiNqYmkiq0d9/m2k="; + hash = "sha256-3dxkoSfXSMID8GVhjyPC2n8UNqOx8IkSkGuFmWZ3TbI="; }; - vendorHash = "sha256-rs5Jxj75qU47zEH0gbYy0/QUSq3sektaITcefg2Qb78="; + vendorHash = "sha256-p5E3tJiqhgTeE35vVt03Yo9oF3DZPO9hXuKKR6r0V+g="; tags = [ "with_quic" diff --git a/pkgs/by-name/sm/smoked-salmon/package.nix b/pkgs/by-name/sm/smoked-salmon/package.nix index 9c38d4fbd84c..56a8174bba68 100644 --- a/pkgs/by-name/sm/smoked-salmon/package.nix +++ b/pkgs/by-name/sm/smoked-salmon/package.nix @@ -17,7 +17,7 @@ let sox ]; in -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "smoked-salmon"; version = "0.9.7.4"; pyproject = true; @@ -25,7 +25,7 @@ python3Packages.buildPythonApplication rec { src = fetchFromGitHub { owner = "smokin-salmon"; repo = "smoked-salmon"; - tag = version; + tag = finalAttrs.version; hash = "sha256-JOwqu/Hu7BjYLo3DdL6o+9TI/OQvlgj5Xu8WQ0cujwo="; }; @@ -74,7 +74,7 @@ python3Packages.buildPythonApplication rec { "--suffix" "PATH" ":" - (lib.makeBinPath runtimeDeps) + (lib.makeBinPath finalAttrs.passthru.runtimeDeps) ]; passthru = { @@ -91,4 +91,4 @@ python3Packages.buildPythonApplication rec { undefined-landmark ]; }; -} +}) diff --git a/pkgs/by-name/so/sourcery/package.nix b/pkgs/by-name/so/sourcery/package.nix index 45348e09a4af..0d6a4894a706 100644 --- a/pkgs/by-name/so/sourcery/package.nix +++ b/pkgs/by-name/so/sourcery/package.nix @@ -22,13 +22,13 @@ let inherit (stdenv.hostPlatform) system; platformInfo = platformInfos.${system} or (throw "Unsupported platform ${system}"); in -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "sourcery"; version = "1.37.0"; format = "wheel"; src = fetchPypi { - inherit pname version; + inherit (finalAttrs) pname version; format = "wheel"; inherit (platformInfo) platform hash; }; @@ -50,4 +50,4 @@ python3Packages.buildPythonApplication rec { "x86_64-darwin" ]; }; -} +}) diff --git a/pkgs/by-name/sp/spacectl/package.nix b/pkgs/by-name/sp/spacectl/package.nix index 130e99e39406..ce740e360fb3 100644 --- a/pkgs/by-name/sp/spacectl/package.nix +++ b/pkgs/by-name/sp/spacectl/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "spacectl"; - version = "1.17.2"; + version = "1.17.3"; src = fetchFromGitHub { owner = "spacelift-io"; repo = "spacectl"; rev = "v${version}"; - hash = "sha256-3z4jlFYhvECbjqmzlXlbgWgy1nPqVTCA35wyqjzszzs="; + hash = "sha256-kH5CVmticNZDDW97iMY+kU7m2bP44PgKvGSZzEgPoFw="; }; vendorHash = "sha256-f/09XZiaYNUZzKM0jITFdUmKt8UQy90K4PGhC6ZupCk="; diff --git a/pkgs/by-name/ss/ssh-agent-mux/package.nix b/pkgs/by-name/ss/ssh-agent-mux/package.nix new file mode 100644 index 000000000000..d33864f444bd --- /dev/null +++ b/pkgs/by-name/ss/ssh-agent-mux/package.nix @@ -0,0 +1,30 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + openssh, +}: + +rustPlatform.buildRustPackage rec { + pname = "ssh-agent-mux"; + version = "0.2.0"; + + src = fetchFromGitHub { + owner = "overhacked"; + repo = "ssh-agent-mux"; + rev = "v${version}"; + hash = "sha256-tIGrENlZcT9fGke6MRnsLsmm+kb0Mm3C6DckkZi8hpE="; + }; + + cargoHash = "sha256-u5kGYCYDvEhSuGOLnhdt9IpRwzllXbSJDwY1XzpHBCc="; + + nativeCheckInputs = [ openssh ]; + + meta = { + description = "A proxy that multiplexes SSH agent requests to multiple upstream agents"; + homepage = "https://github.com/overhacked/ssh-agent-mux"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.kalbasit ]; + mainProgram = "ssh-agent-mux"; + }; +} diff --git a/pkgs/by-name/st/stable-diffusion-cpp/package.nix b/pkgs/by-name/st/stable-diffusion-cpp/package.nix index 795878ab0a88..25fbed45c9d4 100644 --- a/pkgs/by-name/st/stable-diffusion-cpp/package.nix +++ b/pkgs/by-name/st/stable-diffusion-cpp/package.nix @@ -42,13 +42,13 @@ let in effectiveStdenv.mkDerivation (finalAttrs: { pname = "stable-diffusion-cpp"; - version = "master-468-885e62e"; + version = "master-475-2efd199"; src = fetchFromGitHub { owner = "leejet"; repo = "stable-diffusion.cpp"; - rev = "master-468-885e62e"; - hash = "sha256-KGbHKUZ1YbANB5RQl2cGq3MkHANLosloia3ntLhIS+o="; + rev = "master-475-2efd199"; + hash = "sha256-ic0mnkKjgfL8k94ZCyqckjDR953NL7kBZ/tlIfLgZYo="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/st/streamlink/package.nix b/pkgs/by-name/st/streamlink/package.nix index f035a674b6b4..989662a50fc1 100644 --- a/pkgs/by-name/st/streamlink/package.nix +++ b/pkgs/by-name/st/streamlink/package.nix @@ -11,12 +11,12 @@ python3Packages.buildPythonApplication rec { pname = "streamlink"; - version = "8.1.0"; + version = "8.1.2"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-rNKXIZoMuq/+TikikFVLnEVAj6n25NwSEdHM0fSkQDk="; + hash = "sha256-0ICZ+hsWm61KmR0xsquJ8EugixMZ7R9b0OrYVH1MWtM="; }; patches = [ diff --git a/pkgs/by-name/su/subtitleeditor/package.nix b/pkgs/by-name/su/subtitleeditor/package.nix index eb4d1b777bb1..7676ad413f57 100644 --- a/pkgs/by-name/su/subtitleeditor/package.nix +++ b/pkgs/by-name/su/subtitleeditor/package.nix @@ -19,15 +19,15 @@ wrapGAppsHook3, }: -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "subtitleeditor"; - version = "unstable-2019-11-30"; + version = "0.55.0"; src = fetchFromGitHub { - owner = "kitone"; + owner = "subtitleeditor"; repo = "subtitleeditor"; - rev = "4c215f4cff4483c44361a2f1d45efc4c6670787f"; - sha256 = "sha256-1Q1nd3GJ6iDGQv4SM2S1ehVW6kPdbqTn8KTtTb0obiQ="; + tag = finalAttrs.version; + hash = "sha256-jhKewfhJ97zxUPp1P2twmgNkMQa/hi2ZZZ8mOFcCOlQ="; }; nativeBuildInputs = [ @@ -71,10 +71,10 @@ stdenv.mkDerivation { and refine existing subtitle. This program also shows sound waves, which makes it easier to synchronise subtitles to voices. ''; - homepage = "http://kitone.github.io/subtitleeditor/"; + homepage = "https://subtitleeditor.github.io/subtitleeditor/"; license = lib.licenses.gpl3Plus; platforms = lib.platforms.linux; maintainers = [ lib.maintainers.plcplc ]; mainProgram = "subtitleeditor"; }; -} +}) diff --git a/pkgs/by-name/sv/svxlink/package.nix b/pkgs/by-name/sv/svxlink/package.nix index c26357a8ffb1..1b7a3bb3fd66 100644 --- a/pkgs/by-name/sv/svxlink/package.nix +++ b/pkgs/by-name/sv/svxlink/package.nix @@ -36,8 +36,8 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ (lib.cmakeBool "DO_INSTALL_CHOWN" false) - (lib.cmakeFeature "RTLSDR_LIBRARIES" "${rtl-sdr}/lib/librtlsdr.so") - (lib.cmakeFeature "RTLSDR_INCLUDE_DIRS" "${rtl-sdr}/include") + (lib.cmakeFeature "RTLSDR_LIBRARIES" "${lib.getLib rtl-sdr}/lib/librtlsdr.so") + (lib.cmakeFeature "RTLSDR_INCLUDE_DIRS" "${lib.getInclude rtl-sdr}/include") ]; dontWrapQtApps = true; diff --git a/pkgs/by-name/sw/swgp-go/package.nix b/pkgs/by-name/sw/swgp-go/package.nix new file mode 100644 index 000000000000..0163fe098498 --- /dev/null +++ b/pkgs/by-name/sw/swgp-go/package.nix @@ -0,0 +1,44 @@ +{ + buildGoModule, + lib, + fetchFromGitHub, + # doubles the binary size + withPprof ? false, +}: + +buildGoModule { + pname = "swgp-go"; + version = "1.8.0-0-unstable-2026-01-18"; + + src = fetchFromGitHub { + owner = "database64128"; + repo = "swgp-go"; + rev = "e8ed210b0a016c450ba371ee43041f2f53444841"; + hash = "sha256-LDYNQwc6vdVkI0bqD96p64D25fz0aGclFDc8SqvCdJQ="; + }; + + vendorHash = "sha256-Ghv5FwSPQSUFQ1t2zWTXpFggCA4/qrQmnVYkYBF8AQ4="; + + ldflags = [ + "-s" + "-w" + ]; + + tags = lib.optionals (!withPprof) [ + "swgpgo_nopprof" + ]; + + # Tests try to do DNS lookups + doCheck = false; + + meta = { + description = "Simple WireGuard proxy with minimal overhead for WireGuard traffic"; + homepage = "https://github.com/database64128/swgp-go"; + license = lib.licenses.agpl3Plus; + maintainers = with lib.maintainers; [ + flokli + rvdp + ]; + mainProgram = "swgp-go"; + }; +} diff --git a/pkgs/by-name/ta/talhelper/package.nix b/pkgs/by-name/ta/talhelper/package.nix index 33c15ed5c1e6..4b11a555908a 100644 --- a/pkgs/by-name/ta/talhelper/package.nix +++ b/pkgs/by-name/ta/talhelper/package.nix @@ -9,13 +9,13 @@ buildGoModule (finalAttrs: { pname = "talhelper"; - version = "3.1.0"; + version = "3.1.1"; src = fetchFromGitHub { owner = "budimanjojo"; repo = "talhelper"; tag = "v${finalAttrs.version}"; - hash = "sha256-pvJQ6l/Zh5TpGiWe3SXWsUOwFK5WUoGTu76MPyZcXRo="; + hash = "sha256-2CuMGYzJV1kfOjAl9eniyzIUJGAeg32Jro5f8Y5m7cs="; }; vendorHash = "sha256-AkCUKg5oA2XvvDtE0m9fQdeqowx5A1SnnimF7F/CORg="; diff --git a/pkgs/by-name/te/teleport_17/package.nix b/pkgs/by-name/te/teleport_17/package.nix index 6bc5efd1add4..a60756fa8c86 100644 --- a/pkgs/by-name/te/teleport_17/package.nix +++ b/pkgs/by-name/te/teleport_17/package.nix @@ -7,11 +7,11 @@ }: buildTeleport { - version = "17.7.12"; - hash = "sha256-o4bepzHmPx9TfDBz0QsqQ9nd8o/WV1UTRDBnT1wM2yE="; - vendorHash = "sha256-m4oeFuH+60UFBkK6BHil4X8BSHwCVrCJ0i0b5eNJLYE="; - cargoHash = "sha256-qz8gkooQTuBlPWC4lHtvBQpKkd+nEZ0Hl7AVg9JkPqs="; - pnpmHash = "sha256-I+uNfC9aAuFuCqRFdp442pW25F1G7rZwl+1s00i/wq0="; + version = "17.7.14"; + hash = "sha256-k8ZleEYaH1Zh4go8QQPbfoAn1fD/YaHfk6Q671pQlIM="; + vendorHash = "sha256-GTv4nb4wfVfcfjnK0dawJIAP0eSzIWibawqygUSzDxc="; + cargoHash = "sha256-EnIdf/3idwoQGJd6edQtWaXzVC1Gkwf8X2w2Zq80KGA="; + pnpmHash = "sha256-bublGuaTIOh0YdYIgSFfnE3E16sn4ktNCGPXoRIxxHY="; wasm-bindgen-cli = wasm-bindgen-cli_0_2_95; inherit buildGoModule withRdpClient extPatches; diff --git a/pkgs/by-name/tg/tg/package.nix b/pkgs/by-name/tg/tg/package.nix index ad714cd23cd1..6f37fa8ac62d 100644 --- a/pkgs/by-name/tg/tg/package.nix +++ b/pkgs/by-name/tg/tg/package.nix @@ -10,7 +10,6 @@ python3Packages.buildPythonApplication rec { pname = "tg"; version = "0.22.0"; pyproject = true; - disabled = python3Packages.pythonOlder "3.9"; src = fetchFromGitHub { owner = "paul-nameless"; diff --git a/pkgs/by-name/ti/tini/package.nix b/pkgs/by-name/ti/tini/package.nix index e9e225bed90c..1d5258134f15 100644 --- a/pkgs/by-name/ti/tini/package.nix +++ b/pkgs/by-name/ti/tini/package.nix @@ -27,6 +27,10 @@ stdenv.mkDerivation rec { url = "https://github.com/krallin/tini/commit/071c715e376e9ee0ac1a196fe8c38bcb61ad385c.patch"; hash = "sha256-idnYcVuhCXQuhFSqcrNjbCLhR4HNlv8QonrtBqEbo3A="; }) + (fetchpatch { + url = "https://github.com/krallin/tini/commit/924c4bd6028457188942ecbfdc75e6a343fa9395.patch"; + hash = "sha256-i6xcf+qpjD+7ZQY3ueiDaxO4+UA2LutLCZLNmT+ji1s="; + }) ]; postPatch = "sed -i /tini-static/d CMakeLists.txt"; diff --git a/pkgs/by-name/to/todoist/package.nix b/pkgs/by-name/to/todoist/package.nix index e65deb19f956..097aac960a03 100644 --- a/pkgs/by-name/to/todoist/package.nix +++ b/pkgs/by-name/to/todoist/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "todoist"; - version = "0.22.0"; + version = "0.23.0"; src = fetchFromGitHub { owner = "sachaos"; repo = "todoist"; rev = "v${version}"; - sha256 = "sha256-+UECYUozca7PKKiTrmPAobSF0y6xnWYCGaChk9bwANg="; + sha256 = "sha256-+W6pc6J5eK/Sg7rc/6XJQtQ2IwVjyF/GbCX8+88k4Gc="; }; - vendorHash = "sha256-fWFFWFVnLtZivlqMRIi6TjvticiKlyXF2Bx9Munos8M="; + vendorHash = "sha256-eVB5k/Z5Z6SsPqySPm4xZIh07c9xbijImRk8zdvY6tA="; doCheck = false; diff --git a/pkgs/by-name/ub/ubi_reader/package.nix b/pkgs/by-name/ub/ubi_reader/package.nix index 469d09422700..47bf461e833f 100644 --- a/pkgs/by-name/ub/ubi_reader/package.nix +++ b/pkgs/by-name/ub/ubi_reader/package.nix @@ -9,7 +9,6 @@ python3.pkgs.buildPythonApplication rec { pname = "ubi_reader"; version = "0.8.10"; pyproject = true; - disabled = python3.pkgs.pythonOlder "3.9"; src = fetchFromGitHub { owner = "onekey-sec"; diff --git a/pkgs/by-name/ud/udisks/package.nix b/pkgs/by-name/ud/udisks/package.nix index 0514dac00904..26312470acc6 100644 --- a/pkgs/by-name/ud/udisks/package.nix +++ b/pkgs/by-name/ud/udisks/package.nix @@ -42,13 +42,13 @@ stdenv.mkDerivation rec { pname = "udisks"; - version = "2.10.2"; + version = "2.11.0"; src = fetchFromGitHub { owner = "storaged-project"; repo = "udisks"; tag = "udisks-${version}"; - hash = "sha256-W0vZY6tYxAJbqxNF3F6F6J6h6XxLT+Fon+LqR6jwFUQ="; + hash = "sha256-G3qE4evcn5gtsd8Lrj6vjxCsAl/2LCdqdtaqLFFadMw="; }; outputs = [ diff --git a/pkgs/by-name/un/unblob/package.nix b/pkgs/by-name/un/unblob/package.nix index a2cb8c016542..557e1b934800 100644 --- a/pkgs/by-name/un/unblob/package.nix +++ b/pkgs/by-name/un/unblob/package.nix @@ -49,7 +49,6 @@ python3.pkgs.buildPythonApplication rec { pname = "unblob"; version = "25.5.26"; pyproject = true; - disabled = python3.pkgs.pythonOlder "3.9"; src = fetchFromGitHub { owner = "onekey-sec"; diff --git a/pkgs/by-name/up/upsies/package.nix b/pkgs/by-name/up/upsies/package.nix index 5d9d0a001196..e210cc4253db 100644 --- a/pkgs/by-name/up/upsies/package.nix +++ b/pkgs/by-name/up/upsies/package.nix @@ -16,7 +16,7 @@ let oxipng ]; in -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "upsies"; version = "2026.01.03"; pyproject = true; @@ -25,7 +25,7 @@ python3Packages.buildPythonApplication rec { domain = "codeberg.org"; owner = "plotski"; repo = "upsies"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-Ya1v0DR5a4fPsFVJKVSDbgy+hWE136aRV3pFMExlRhU="; }; @@ -71,7 +71,7 @@ python3Packages.buildPythonApplication rec { pytestCheckHook trustme ] - ++ runtimeDeps; + ++ finalAttrs.passthru.runtimeDeps; disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ # Fail during object comparisons on Darwin @@ -110,11 +110,15 @@ python3Packages.buildPythonApplication rec { "--suffix" "PATH" ":" - (lib.makeBinPath runtimeDeps) + (lib.makeBinPath finalAttrs.passthru.runtimeDeps) ]; __darwinAllowLocalNetworking = true; + passthru = { + inherit runtimeDeps; + }; + meta = { description = "Toolkit for collecting, generating, normalizing and sharing video metadata"; homepage = "https://upsies.readthedocs.io/"; @@ -122,4 +126,4 @@ python3Packages.buildPythonApplication rec { mainProgram = "upsies"; maintainers = with lib.maintainers; [ ambroisie ]; }; -} +}) diff --git a/pkgs/by-name/us/usb-modeswitch/data.nix b/pkgs/by-name/us/usb-modeswitch/data.nix index 347f19b48115..348ff4fa7fee 100644 --- a/pkgs/by-name/us/usb-modeswitch/data.nix +++ b/pkgs/by-name/us/usb-modeswitch/data.nix @@ -1,5 +1,4 @@ { - lib, stdenv, fetchurl, tcl, @@ -7,13 +6,13 @@ udevCheckHook, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "usb-modeswitch-data"; version = "20251207"; src = fetchurl { - url = "http://www.draisberghof.de/usb_modeswitch/${pname}-${version}.tar.bz2"; - sha256 = "sha256-C7EtZK7l5GfDGvYaU/uCj/eqWcVKgsqF7u3kxWkL+mY="; + url = "https://www.draisberghof.de/usb_modeswitch/${finalAttrs.pname}-${finalAttrs.version}.tar.bz2"; + hash = "sha256-C7EtZK7l5GfDGvYaU/uCj/eqWcVKgsqF7u3kxWkL+mY="; }; doInstallCheck = true; @@ -44,4 +43,4 @@ stdenv.mkDerivation rec { description = "Device database and the rules file for 'multi-mode' USB devices"; inherit (usb-modeswitch.meta) license maintainers platforms; }; -} +}) diff --git a/pkgs/by-name/us/usb-modeswitch/package.nix b/pkgs/by-name/us/usb-modeswitch/package.nix index 3dbcce763660..3fd460f0b7a0 100644 --- a/pkgs/by-name/us/usb-modeswitch/package.nix +++ b/pkgs/by-name/us/usb-modeswitch/package.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: { version = "2.6.2"; src = fetchurl { - url = "http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-${finalAttrs.version}.tar.bz2"; + url = "https://www.draisberghof.de/usb_modeswitch/usb-modeswitch-${finalAttrs.version}.tar.bz2"; hash = "sha256-96vTN3hKnRvTnLilh1GK/28qQ9kWFF6v2Asbi3FG22Y="; }; diff --git a/pkgs/by-name/v2/v2ray/package.nix b/pkgs/by-name/v2/v2ray/package.nix index d207232ff7a1..5cb287387190 100644 --- a/pkgs/by-name/v2/v2ray/package.nix +++ b/pkgs/by-name/v2/v2ray/package.nix @@ -16,18 +16,18 @@ buildGoModule rec { pname = "v2ray-core"; - version = "5.43.0"; + version = "5.44.1"; src = fetchFromGitHub { owner = "v2fly"; repo = "v2ray-core"; rev = "v${version}"; - hash = "sha256-MVcli2lxjLPDgv/1vBJP8xnM5HUj8RuL4RGN/LQgvjE="; + hash = "sha256-Y/8rZYNoN5jr7+Q4IMj+uTGo7KfE5LKwUIEuSMROj5c="; }; # `nix-update` doesn't support `vendorHash` yet. # https://github.com/Mic92/nix-update/pull/95 - vendorHash = "sha256-vjhajKxkdO5toLmVcSK07fjp0JE2VykqXSrew4WigwU="; + vendorHash = "sha256-YgiNqz2LSW4RFWFF5T1NjioCRIrZHB/ZhsVlahxuxuI="; ldflags = [ "-s" diff --git a/pkgs/by-name/vo/voicevox-engine/package.nix b/pkgs/by-name/vo/voicevox-engine/package.nix index f15ff0a8bc8e..7934fee85c7d 100644 --- a/pkgs/by-name/vo/voicevox-engine/package.nix +++ b/pkgs/by-name/vo/voicevox-engine/package.nix @@ -5,7 +5,7 @@ voicevox-core, }: -python3Packages.buildPythonApplication rec { +python3Packages.buildPythonApplication (finalAttrs: { pname = "voicevox-engine"; version = "0.25.1"; pyproject = true; @@ -13,7 +13,7 @@ python3Packages.buildPythonApplication rec { src = fetchFromGitHub { owner = "VOICEVOX"; repo = "voicevox_engine"; - tag = version; + tag = finalAttrs.version; hash = "sha256-4pZs5f6Fe4kHIKcyww1eq9uRTf7rk5KAr/00H8aH9qA="; }; @@ -27,7 +27,7 @@ python3Packages.buildPythonApplication rec { ]; dependencies = [ - passthru.pyopenjtalk + finalAttrs.passthru.pyopenjtalk ] ++ (with python3Packages; [ fastapi @@ -62,7 +62,7 @@ python3Packages.buildPythonApplication rec { mv resources/character_info test_character_info # populate the `character_info` directory with the actual model metadata instead of the demo metadata - cp -r --no-preserve=all ${passthru.resources}/character_info resources/character_info + cp -r --no-preserve=all ${finalAttrs.passthru.resources}/character_info resources/character_info # the `character_info` directory copied from `resources` doesn't exactly have the expected format, # so we transform them to be acceptable by `voicevox-engine` @@ -99,10 +99,10 @@ python3Packages.buildPythonApplication rec { passthru = { resources = fetchFromGitHub { - name = "voicevox-resource-${version}"; # this contains ${version} to invalidate the hash upon updating the package + name = "voicevox-resource-${finalAttrs.version}"; # this contains ${version} to invalidate the hash upon updating the package owner = "VOICEVOX"; repo = "voicevox_resource"; - tag = version; + tag = finalAttrs.version; hash = "sha256-YaUVlZnpxu/IhLrp1XdcxDyus7DRhyzu4VKfabTsPUY="; }; @@ -110,7 +110,7 @@ python3Packages.buildPythonApplication rec { }; meta = { - changelog = "https://github.com/VOICEVOX/voicevox_engine/releases/tag/${src.tag}"; + changelog = "https://github.com/VOICEVOX/voicevox_engine/releases/tag/${finalAttrs.src.tag}"; description = "Engine for the VOICEVOX speech synthesis software"; homepage = "https://github.com/VOICEVOX/voicevox_engine"; license = lib.licenses.lgpl3Only; @@ -121,4 +121,4 @@ python3Packages.buildPythonApplication rec { ]; platforms = lib.platforms.linux ++ lib.platforms.darwin; }; -} +}) diff --git a/pkgs/by-name/vu/vunnel/package.nix b/pkgs/by-name/vu/vunnel/package.nix index 9f45fcc25450..e3efa1b482ef 100644 --- a/pkgs/by-name/vu/vunnel/package.nix +++ b/pkgs/by-name/vu/vunnel/package.nix @@ -5,16 +5,16 @@ python3, }: -python3.pkgs.buildPythonApplication rec { +python3.pkgs.buildPythonApplication (finalAttrs: { pname = "vunnel"; - version = "0.46.4"; + version = "0.48.0"; pyproject = true; src = fetchFromGitHub { owner = "anchore"; repo = "vunnel"; - tag = "v${version}"; - hash = "sha256-2eopYMfg2jjZMT/FP5923aLoXTKAcwAdCkcyXT8weeY="; + tag = "v${finalAttrs.version}"; + hash = "sha256-D0/DoYmmLeAvGnr6ljE8p0B6dmFi4UHwcWCQRb85OkM="; leaveDotGit = true; }; @@ -85,9 +85,9 @@ python3.pkgs.buildPythonApplication rec { meta = { description = "Tool for collecting vulnerability data from various sources"; homepage = "https://github.com/anchore/vunnel"; - changelog = "https://github.com/anchore/vunnel/releases/tag/${src.tag}"; + changelog = "https://github.com/anchore/vunnel/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ fab ]; mainProgram = "vunnel"; }; -} +}) diff --git a/pkgs/by-name/wh/whisper-cpp/package.nix b/pkgs/by-name/wh/whisper-cpp/package.nix index d7b745d00558..25d1f4e3d5f5 100644 --- a/pkgs/by-name/wh/whisper-cpp/package.nix +++ b/pkgs/by-name/wh/whisper-cpp/package.nix @@ -74,13 +74,13 @@ let in effectiveStdenv.mkDerivation (finalAttrs: { pname = "whisper-cpp"; - version = "1.8.2"; + version = "1.8.3"; src = fetchFromGitHub { owner = "ggml-org"; repo = "whisper.cpp"; tag = "v${finalAttrs.version}"; - hash = "sha256-OU5mDnLZHmtdSEN5u0syJcU91L+NCO45f9eG6OsgFfU="; + hash = "sha256-TeS1lGKEzkHOoBemy/tMGtIsy0iouj9DTYIgTjUNcQk="; }; # The upstream download script tries to download the models to the @@ -158,9 +158,6 @@ effectiveStdenv.mkDerivation (finalAttrs: { ]; postInstall = '' - # Add "whisper-cpp" prefix before every command - mv -v "$out/bin/"{quantize,whisper-quantize} - install -v -D -m755 "$src/models/download-ggml-model.sh" "$out/bin/whisper-cpp-download-ggml-model" wrapProgram "$out/bin/whisper-cpp-download-ggml-model" \ diff --git a/pkgs/by-name/wi/windsurf/info.json b/pkgs/by-name/wi/windsurf/info.json index d5b28c766726..e9fb3fbfcc62 100644 --- a/pkgs/by-name/wi/windsurf/info.json +++ b/pkgs/by-name/wi/windsurf/info.json @@ -1,20 +1,20 @@ { "aarch64-darwin": { - "version": "1.13.5", + "version": "1.13.9", "vscodeVersion": "1.106.0", - "url": "https://windsurf-stable.codeiumdata.com/darwin-arm64/stable/97d7a9c6ff229572f6154acb491d23ffeb2d932e/Windsurf-darwin-arm64-1.13.5.zip", - "sha256": "52219286140ceb6bf880b1de6af1cb24756244b2b550b1afe901d651feaaef3c" + "url": "https://windsurf-stable.codeiumdata.com/darwin-arm64/stable/a473c86f69ab6b6f98bc47437adc6263df8738d0/Windsurf-darwin-arm64-1.13.9.zip", + "sha256": "a4e3930b30d8abb708ef99a08c8f31da4d0dfbf395ad9c8fe4c57640f9eab8f0" }, "x86_64-darwin": { - "version": "1.13.5", + "version": "1.13.9", "vscodeVersion": "1.106.0", - "url": "https://windsurf-stable.codeiumdata.com/darwin-x64/stable/97d7a9c6ff229572f6154acb491d23ffeb2d932e/Windsurf-darwin-x64-1.13.5.zip", - "sha256": "59635461c47df84c94556fa51ee7b872f7f5ef3e496bfcf2d1ac872d622cc811" + "url": "https://windsurf-stable.codeiumdata.com/darwin-x64/stable/a473c86f69ab6b6f98bc47437adc6263df8738d0/Windsurf-darwin-x64-1.13.9.zip", + "sha256": "d24a452a562ea662f2a56c304b56603bba5af1597025bb6f1d0f3534c94aae1d" }, "x86_64-linux": { - "version": "1.13.5", + "version": "1.13.9", "vscodeVersion": "1.106.0", - "url": "https://windsurf-stable.codeiumdata.com/linux-x64/stable/97d7a9c6ff229572f6154acb491d23ffeb2d932e/Windsurf-linux-x64-1.13.5.tar.gz", - "sha256": "0b4333e77c93d21901149ee21323653a9dbf8b5f6d37bc281ab6158569038e8f" + "url": "https://windsurf-stable.codeiumdata.com/linux-x64/stable/a473c86f69ab6b6f98bc47437adc6263df8738d0/Windsurf-linux-x64-1.13.9.tar.gz", + "sha256": "a3a4893b354c5d4dc367dbb723bdecef16c3f0e573a7d895219991314fb2c434" } } diff --git a/pkgs/by-name/wl/wlc/package.nix b/pkgs/by-name/wl/wlc/package.nix index 06866b932ae9..caea2fc5d649 100644 --- a/pkgs/by-name/wl/wlc/package.nix +++ b/pkgs/by-name/wl/wlc/package.nix @@ -6,12 +6,12 @@ python3.pkgs.buildPythonPackage rec { pname = "wlc"; - version = "1.17.1"; + version = "1.17.2"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-FtxJ1clfvJCggg4h9Lzwq4S4KyejJxppjrB3i7Jiy/Y="; + hash = "sha256-9BM2xNbiNy8efpkZjEhQ2OSl0RJiOGSut16o8yMA14A="; }; build-system = with python3.pkgs; [ setuptools ]; diff --git a/pkgs/by-name/xa/xandikos/package.nix b/pkgs/by-name/xa/xandikos/package.nix index e522d56bee4e..3d9650a1b5a5 100644 --- a/pkgs/by-name/xa/xandikos/package.nix +++ b/pkgs/by-name/xa/xandikos/package.nix @@ -10,8 +10,6 @@ python3Packages.buildPythonApplication rec { version = "0.2.12"; pyproject = true; - disabled = python3Packages.pythonOlder "3.9"; - src = fetchFromGitHub { owner = "jelmer"; repo = "xandikos"; diff --git a/pkgs/by-name/xe/xemu/package.nix b/pkgs/by-name/xe/xemu/package.nix index 142a8e43bc07..eb264d7f8a40 100644 --- a/pkgs/by-name/xe/xemu/package.nix +++ b/pkgs/by-name/xe/xemu/package.nix @@ -34,13 +34,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "xemu"; - version = "0.8.131"; + version = "0.8.132"; src = fetchFromGitHub { owner = "xemu-project"; repo = "xemu"; tag = "v${finalAttrs.version}"; - hash = "sha256-S92q8JhRcev+4tkC8tbP+7OJ2JFgygLTjbzuAoqtzRI="; + hash = "sha256-oIsO3pYP3ggs9IgMlMi2z+AWZT6HvCpPOzOk2FdgOPs="; nativeBuildInputs = [ git diff --git a/pkgs/by-name/xk/xk6/package.nix b/pkgs/by-name/xk/xk6/package.nix index 1d6fa3f9d8cb..a195a7294499 100644 --- a/pkgs/by-name/xk/xk6/package.nix +++ b/pkgs/by-name/xk/xk6/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "xk6"; - version = "1.3.2"; + version = "1.3.3"; src = fetchFromGitHub { owner = "grafana"; repo = "xk6"; tag = "v${version}"; - hash = "sha256-5ZrkSYJlHRaEc8Quv2EoPAHp2Th9mE/Vi/scwPt/maE="; + hash = "sha256-qqfrvReO6V7kUV2GouBJBgc/+xOClX2WrbTkrZ+lLtA="; }; vendorHash = null; diff --git a/pkgs/by-name/xr/xrizer/package.nix b/pkgs/by-name/xr/xrizer/package.nix index fc77532e1949..4938567012b6 100644 --- a/pkgs/by-name/xr/xrizer/package.nix +++ b/pkgs/by-name/xr/xrizer/package.nix @@ -12,26 +12,34 @@ vulkan-loader, stdenv, }: +let + platformPaths = { + "aarch64-linux" = "bin/linuxarm64"; + "i686-linux" = "bin"; + "x86_64-linux" = "bin/linux64"; + }; +in rustPlatform.buildRustPackage rec { pname = "xrizer"; - version = "0.3"; + version = "0.4"; src = fetchFromGitHub { owner = "Supreeeme"; repo = "xrizer"; tag = "v${version}"; - hash = "sha256-o6/uGbczYp5t6trjFIltZAMSM61adn+BvNb1fBhBSsk="; + hash = "sha256-IRhLWlGHywp0kZe5aGmMHAF1zZwva3sGg68eG1E2K9A="; }; patches = [ + # https://github.com/Supreeeme/xrizer/pull/262 (fetchpatch2 { - name = "xrizer-fix-flaky-tests.patch"; - url = "https://github.com/Supreeeme/xrizer/commit/f58d797e75a8d920982abeaeedee83877dd3c493.diff?full_index=1"; - hash = "sha256-TI++ZY7QX1iaj3WT0woXApSY2Tairraao5kzF77ewYY="; + name = "xrizer-fix-aarch64.patch"; + url = "https://github.com/Supreeeme/xrizer/commit/70ea6f616cd7608462cdf2f5bf76a85acf23fe33.patch?full_index=1"; + hash = "sha256-Bwu/GjsaoS1VqpXmijBuZcJFUf6kRYWYWpGxm40AWyc="; }) ]; - cargoHash = "sha256-kXcnD98ZaqRAA3jQvIoWSRC37Uq8l5PUYEzubxfMuUI="; + cargoHash = "sha256-orfK5pwWv91hA7Ra3Kk+isFTR+qMHSZ0EYZTVbf0fO0="; nativeBuildInputs = [ pkg-config @@ -57,13 +65,7 @@ rustPlatform.buildRustPackage rec { mv "$out/lib/libxrizer.so" "$out/lib/xrizer/$platformPath/vrclient.so" ''; - platformPath = - { - "aarch64-linux" = "bin/linuxarm64"; - "i686-linux" = "bin"; - "x86_64-linux" = "bin/linux64"; - } - ."${stdenv.hostPlatform.system}"; + platformPath = platformPaths."${stdenv.hostPlatform.system}"; passthru.updateScript = nix-update-script { }; @@ -72,10 +74,6 @@ rustPlatform.buildRustPackage rec { homepage = "https://github.com/Supreeeme/xrizer"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ Scrumplex ]; - platforms = [ - "x86_64-linux" - "i686-linux" - "aarch64-linux" - ]; + platforms = builtins.attrNames platformPaths; }; } diff --git a/pkgs/by-name/yc/ycwd/package.nix b/pkgs/by-name/yc/ycwd/package.nix new file mode 100644 index 000000000000..34fbe73dd2ff --- /dev/null +++ b/pkgs/by-name/yc/ycwd/package.nix @@ -0,0 +1,28 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, +}: + +rustPlatform.buildRustPackage { + pname = "ycwd"; + version = "0-unstable-2025-07-09"; + + src = fetchFromGitHub { + owner = "blinry"; + repo = "ycwd"; + rev = "5676dafe3700ac76e071424a47407186a08d1c77"; + hash = "sha256-HFRS+cNHKloASKXB/Tlrvpsmbg78V4lrNx9WehyzMxE="; + }; + + cargoHash = "sha256-HTlIcrn/QtyY2vLxfeC2RXD1mniWYE7m/rV1QBI4PZc="; + + meta = { + description = "Helps replace xcwd on Wayland compositors"; + homepage = "https://github.com/blinry/ycwd"; + license = lib.licenses.gpl3Plus; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ lenny ]; + mainProgram = "ycwd"; + }; +} diff --git a/pkgs/by-name/ye/yek/package.nix b/pkgs/by-name/ye/yek/package.nix index d4df6f721c16..86f1532e1779 100644 --- a/pkgs/by-name/ye/yek/package.nix +++ b/pkgs/by-name/ye/yek/package.nix @@ -8,7 +8,7 @@ versionCheckHook, }: let - version = "0.25.0"; + version = "0.25.2"; in rustPlatform.buildRustPackage { pname = "yek"; @@ -18,10 +18,10 @@ rustPlatform.buildRustPackage { owner = "bodo-run"; repo = "yek"; tag = "v${version}"; - hash = "sha256-6yHQyl4UnRQlmWkBbAvUEBZnrHW3GsrrFZyOU+p3mjE="; + hash = "sha256-2gt/leOEhdvj5IXp0Kl3ooUk8eclsMkt6JCIvPsKhMI="; }; - cargoHash = "sha256-WheN8rk/LwKTVg0mDorbXGBvojISSu1KtknFkWmpLMk="; + cargoHash = "sha256-gjDcw8mMZgoy7kjXlBYHhOgYXOV+XoMgflkZoggz42Q="; nativeBuildInputs = [ pkg-config ]; buildInputs = [ openssl ]; diff --git a/pkgs/desktops/lomiri/applications/morph-browser/default.nix b/pkgs/desktops/lomiri/applications/morph-browser/default.nix index e9be5b8ce1dd..2d596f2f2dcc 100644 --- a/pkgs/desktops/lomiri/applications/morph-browser/default.nix +++ b/pkgs/desktops/lomiri/applications/morph-browser/default.nix @@ -31,13 +31,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "morph-browser"; - version = "1.99.1"; + version = "1.99.2"; src = fetchFromGitLab { owner = "ubports"; repo = "development/core/morph-browser"; tag = finalAttrs.version; - hash = "sha256-RCyauz7qBNzq7Aqr22NBSAgVSBsFpXpNb+aVo73CBQU="; + hash = "sha256-pi9tot6F9Kfpv4AN2kDnkVZRo310w/iEWJ5f7aJl1iE="; }; outputs = [ diff --git a/pkgs/desktops/lomiri/data/lomiri-schemas/default.nix b/pkgs/desktops/lomiri/data/lomiri-schemas/default.nix index 90f2cd1dd65a..9b59367ade0e 100644 --- a/pkgs/desktops/lomiri/data/lomiri-schemas/default.nix +++ b/pkgs/desktops/lomiri/data/lomiri-schemas/default.nix @@ -14,13 +14,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "lomiri-schemas"; - version = "0.1.9"; + version = "0.1.10"; src = fetchFromGitLab { owner = "ubports"; repo = "development/core/lomiri-schemas"; tag = finalAttrs.version; - hash = "sha256-qdkKQpKIad7bEMaN6q79byVTipuvUFSdCZQKdMtOERo="; + hash = "sha256-QZZTsVKu/6hyHhbBXZOYp4uVuih0nIBPocDsxBtbvyQ="; }; strictDeps = true; diff --git a/pkgs/development/libraries/libwpe/default.nix b/pkgs/development/libraries/libwpe/default.nix index efdc54ef69cd..a2b1af8024e3 100644 --- a/pkgs/development/libraries/libwpe/default.nix +++ b/pkgs/development/libraries/libwpe/default.nix @@ -12,11 +12,11 @@ stdenv.mkDerivation rec { pname = "libwpe"; - version = "1.16.2"; + version = "1.16.3"; src = fetchurl { url = "https://wpewebkit.org/releases/libwpe-${version}.tar.xz"; - sha256 = "sha256-lgvdEcPyz1vZFWlgPtbSqkL9QADtfKyTCoBOrDZ4iNc="; + sha256 = "sha256-yID6jWB7Kqbq3efW1jArE5brw4No/iMy+iDhk8fuFCA="; }; nativeBuildInputs = [ diff --git a/pkgs/development/libraries/libwpe/fdo.nix b/pkgs/development/libraries/libwpe/fdo.nix index 2ee2866f70cf..1552e5caaee2 100644 --- a/pkgs/development/libraries/libwpe/fdo.nix +++ b/pkgs/development/libraries/libwpe/fdo.nix @@ -17,11 +17,11 @@ stdenv.mkDerivation rec { pname = "wpebackend-fdo"; - version = "1.16.0"; + version = "1.16.1"; src = fetchurl { url = "https://wpewebkit.org/releases/wpebackend-fdo-${version}.tar.xz"; - sha256 = "sha256-vt3zISMtW9CBBsF528YA+M6I6zYgtKWaYykGO3j2RjU="; + sha256 = "sha256-VErhQBL45+QmuMtSLrCqqsgxrXw1YB0c8x03Zw4Ouzs="; }; depsBuildBuild = [ diff --git a/pkgs/development/lua-modules/generated-packages.nix b/pkgs/development/lua-modules/generated-packages.nix index 0e820b93bcff..cb1189466280 100644 --- a/pkgs/development/lua-modules/generated-packages.nix +++ b/pkgs/development/lua-modules/generated-packages.nix @@ -814,15 +814,15 @@ final: prev: { }: buildLuarocksPackage { pname = "fzf-lua"; - version = "0.0.2410-1"; + version = "0.0.2415-1"; knownRockspec = (fetchurl { - url = "mirror://luarocks/fzf-lua-0.0.2410-1.rockspec"; - sha256 = "0krnaazp7026l835qcidixq637a353r17zc1rg0ql954nv9rq9y0"; + url = "mirror://luarocks/fzf-lua-0.0.2415-1.rockspec"; + sha256 = "1f6sldmq34d40zf646v9xbff1ndlj7cg63wnis19w1bkr5s1a8kx"; }).outPath; src = fetchzip { - url = "https://github.com/ibhagwan/fzf-lua/archive/e7773d0c863a31bfc8ab72dd1adbec4611a35409.zip"; - sha256 = "17dhn1xjq33xqxg4v5z072qliz3ykjfq2qhq51s4j5rz5czypv7q"; + url = "https://github.com/ibhagwan/fzf-lua/archive/abe5ecafebb4e24feb162384d5f492431036e791.zip"; + sha256 = "1qjxbj44ryvxxz10i07d70y8m6cqg85v336mjbdiarwmscg1ns12"; }; disabled = luaOlder "5.1"; @@ -2013,17 +2013,17 @@ final: prev: { }: buildLuarocksPackage { pname = "lua-resty-openssl"; - version = "1.7.0-1"; + version = "1.7.1-1"; knownRockspec = (fetchurl { - url = "mirror://luarocks/lua-resty-openssl-1.7.0-1.rockspec"; - sha256 = "0p4i14ypbw39ap3dvxhfnnb221909z2lqlk16nbqx33brawydl64"; + url = "mirror://luarocks/lua-resty-openssl-1.7.1-1.rockspec"; + sha256 = "1gvgz0p9j90grqjx501r1h6d3z866j550b3jlfjrcr1qb1xy5b6l"; }).outPath; src = fetchFromGitHub { owner = "fffonion"; repo = "lua-resty-openssl"; - rev = "1.7.0"; - hash = "sha256-xcEnic0aQCgzIlgU/Z6dxH7WTyTK+g5UKo4BiKcvNxQ="; + rev = "1.7.1"; + hash = "sha256-Zj4neqIptfg8Qckj6BOoHpnVlxCNmJuIgg1kcuqt6pw="; }; meta = { @@ -3938,15 +3938,15 @@ final: prev: { }: buildLuarocksPackage { pname = "neorg"; - version = "9.3.0-1"; + version = "9.4.0-1"; knownRockspec = (fetchurl { - url = "mirror://luarocks/neorg-9.3.0-1.rockspec"; - sha256 = "14w4hbk2hhcg1va2lgvfzzfp67lprnfar56swl29ixnzlf82a9bi"; + url = "mirror://luarocks/neorg-9.4.0-1.rockspec"; + sha256 = "0gm91iv0a5lpch6n92cnrcbpn525gxl735cgqwlldbrdfjwxv4y2"; }).outPath; src = fetchzip { - url = "https://github.com/nvim-neorg/neorg/archive/v9.3.0.zip"; - sha256 = "0ifl5n8sq8bafzx72ghfrmxsylhhlqvqmxzb5258jm76qj113cd9"; + url = "https://github.com/nvim-neorg/neorg/archive/d4e6b3665504baa88685c9d2e79446d336dc0594.zip"; + sha256 = "0gjyn9csw3rngnjxq6hyh7zl20ks6ibqvb5kggmkr9qhi3a8kiaj"; }; disabled = luaOlder "5.1"; @@ -4678,21 +4678,21 @@ final: prev: { }: buildLuarocksPackage { pname = "rustaceanvim"; - version = "7.1.0-2"; + version = "7.1.1-2"; knownRockspec = (fetchurl { - url = "mirror://luarocks/rustaceanvim-7.1.0-2.rockspec"; - sha256 = "1djp3zzxwma240yfsxkqai6znk34qh3j4j5zl28hx5wd157j75j1"; + url = "mirror://luarocks/rustaceanvim-7.1.1-2.rockspec"; + sha256 = "1fzcf262v25315r777g76a18dhfhjm3xrrlx5v4s6z4z40xfxrq5"; }).outPath; src = fetchzip { - url = "https://github.com/mrcjkb/rustaceanvim/archive/refs/tags/v7.1.0.zip"; - sha256 = "09ai6ymw9gizbybqgfnzsjl6ap3giw4hsy9iwc1pva2rdnbzql9w"; + url = "https://github.com/mrcjkb/rustaceanvim/archive/refs/tags/v7.1.1.zip"; + sha256 = "0pnnzgqg9i89px6ikqqmqpskl4v5ri7f95cd23q99k2mlhzhz0ml"; }; disabled = lua.luaversion != "5.1"; meta = { - homepage = "https://github.com/mrcjkb/rustaceanvim/archive/refs/tags/v7.1.0.zip"; + homepage = "https://github.com/mrcjkb/rustaceanvim/archive/refs/tags/v7.1.1.zip"; description = "🦀 Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim"; maintainers = with lib.maintainers; [ mrcjkb ]; license.fullName = "GPL-2.0-only"; diff --git a/pkgs/development/lua-modules/overrides.nix b/pkgs/development/lua-modules/overrides.nix index 4b9398c296ae..ef7b75482bec 100644 --- a/pkgs/development/lua-modules/overrides.nix +++ b/pkgs/development/lua-modules/overrides.nix @@ -830,7 +830,8 @@ in substituteInPlace ''${rockspecFilename} \ --replace-fail "'nvim-nio ~> 1.7'," "'nvim-nio >= 1.7'," \ --replace-fail "'plenary.nvim == 0.1.4'," "'plenary.nvim'," \ - --replace-fail "'nui.nvim == 0.3.0'," "'nui.nvim'," + --replace-fail "'nui.nvim == 0.3.0'," "'nui.nvim'," \ + --replace-fail ", 'nvim-treesitter-legacy-api == 0.9.2'" "" ''; }; diff --git a/pkgs/development/ocaml-modules/eigen/default.nix b/pkgs/development/ocaml-modules/eigen/default.nix index b861f555fca2..d8375b4695c2 100644 --- a/pkgs/development/ocaml-modules/eigen/default.nix +++ b/pkgs/development/ocaml-modules/eigen/default.nix @@ -7,30 +7,27 @@ dune-configurator, }: -buildDunePackage rec { +(buildDunePackage.override { inherit stdenv; }) (finalAttrs: { pname = "eigen"; - version = "0.3.3"; + version = "0.4.0"; src = fetchFromGitHub { owner = "owlbarn"; - repo = pname; - tag = version; - hash = "sha256-8V4DQ+b2rzy58NTenK1BsJEJiJKYV6hIp2fJWqczHRY="; + repo = "eigen"; + tag = finalAttrs.version; + hash = "sha256-bi+7T9qXByVPIy86lBMiJ2LTKCoNesrKZPa3VEDyINA="; }; - minimalOCamlVersion = "4.02"; - - env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-I${lib.getInclude stdenv.cc.libcxx}/include/c++/v1"; - propagatedBuildInputs = [ ctypes ]; buildInputs = [ dune-configurator ]; meta = { - inherit (src.meta) homepage; + homepage = "https://github.com/owlbarn/eigen"; description = "Minimal/incomplete Ocaml interface to Eigen3, mostly for Owl"; platforms = lib.platforms.x86_64; maintainers = with lib.maintainers; [ bcdarwin ]; license = lib.licenses.mit; + broken = stdenv.hostPlatform.isDarwin; }; -} +}) diff --git a/pkgs/development/ocaml-modules/happy-eyeballs/miou-unix.nix b/pkgs/development/ocaml-modules/happy-eyeballs/miou-unix.nix new file mode 100644 index 000000000000..de396a05174e --- /dev/null +++ b/pkgs/development/ocaml-modules/happy-eyeballs/miou-unix.nix @@ -0,0 +1,38 @@ +{ + buildDunePackage, + happy-eyeballs, + cmdliner, + duration, + domain-name, + fmt, + ipaddr, + logs, + miou, + mtime, +}: + +buildDunePackage { + pname = "happy-eyeballs-miou-unix"; + inherit (happy-eyeballs) src version; + + buildInputs = [ + cmdliner + duration + domain-name + fmt + ipaddr + mtime + ]; + + propagatedBuildInputs = [ + happy-eyeballs + logs + miou + ]; + + doCheck = true; + + meta = happy-eyeballs.meta // { + description = "Connecting to a remote host via IP version 4 or 6 using Miou"; + }; +} diff --git a/pkgs/development/ocaml-modules/mlx/default.nix b/pkgs/development/ocaml-modules/mlx/default.nix index c2cf06545993..fab39d7d2b27 100644 --- a/pkgs/development/ocaml-modules/mlx/default.nix +++ b/pkgs/development/ocaml-modules/mlx/default.nix @@ -6,17 +6,17 @@ menhir, }: -buildDunePackage rec { +buildDunePackage (finalAttrs: { pname = "mlx"; - version = "0.10"; + version = "0.11"; minimalOCamlVersion = "4.14"; src = fetchFromGitHub { owner = "ocaml-mlx"; repo = "mlx"; - rev = version; - hash = "sha256-g2v6U4lubYIVKUkU0j+OwtPxK9tKvleuX+vA4ljJ1bA="; + tag = finalAttrs.version; + hash = "sha256-6cz/nbFGSxE1minncJujZi14TmM8ctDygJP4rmewYgo="; }; buildInputs = [ @@ -30,4 +30,4 @@ buildDunePackage rec { license = lib.licenses.lgpl21Plus; maintainers = with lib.maintainers; [ Denommus ]; }; -} +}) diff --git a/pkgs/development/python-modules/abjad/default.nix b/pkgs/development/python-modules/abjad/default.nix index 4f89767c1b7a..495db053a0d8 100644 --- a/pkgs/development/python-modules/abjad/default.nix +++ b/pkgs/development/python-modules/abjad/default.nix @@ -5,7 +5,6 @@ ply, roman, uqbar, - pythonOlder, pythonAtLeast, pytestCheckHook, lilypond, @@ -19,7 +18,7 @@ buildPythonPackage rec { # see issue upstream indicating Python 3.12 support will come # with version 3.20: https://github.com/Abjad/abjad/issues/1574 - disabled = pythonOlder "3.10" || pythonAtLeast "3.12"; + disabled = pythonAtLeast "3.12"; src = fetchPypi { inherit pname version; diff --git a/pkgs/development/python-modules/aioitertools/default.nix b/pkgs/development/python-modules/aioitertools/default.nix index 175a715b8c8e..df08341f81bf 100644 --- a/pkgs/development/python-modules/aioitertools/default.nix +++ b/pkgs/development/python-modules/aioitertools/default.nix @@ -2,14 +2,10 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, # native flit-core, - # propagates - typing-extensions, - # tests unittestCheckHook, }: @@ -26,8 +22,6 @@ buildPythonPackage rec { build-system = [ flit-core ]; - dependencies = lib.optionals (pythonOlder "3.10") [ typing-extensions ]; - nativeCheckInputs = [ unittestCheckHook ]; pythonImportsCheck = [ "aioitertools" ]; diff --git a/pkgs/development/python-modules/aiosmtpd/default.nix b/pkgs/development/python-modules/aiosmtpd/default.nix index 9b7b0254bb5d..908c50cdaf1f 100644 --- a/pkgs/development/python-modules/aiosmtpd/default.nix +++ b/pkgs/development/python-modules/aiosmtpd/default.nix @@ -6,7 +6,6 @@ fetchFromGitHub, pytest-mock, pytestCheckHook, - pythonOlder, setuptools, # for passthru.tests @@ -38,8 +37,8 @@ buildPythonPackage rec { pytestCheckHook ]; - # Fixes for Python 3.10 can't be applied easily, https://github.com/aio-libs/aiosmtpd/pull/294 - doCheck = pythonOlder "3.10"; + # Fixes can't be applied easily, https://github.com/aio-libs/aiosmtpd/pull/294 + doCheck = false; disabledTests = [ # Requires git diff --git a/pkgs/development/python-modules/annotated-types/default.nix b/pkgs/development/python-modules/annotated-types/default.nix index 2b64feac5ce9..c04c80bb2f8b 100644 --- a/pkgs/development/python-modules/annotated-types/default.nix +++ b/pkgs/development/python-modules/annotated-types/default.nix @@ -3,9 +3,7 @@ buildPythonPackage, fetchFromGitHub, hatchling, - typing-extensions, pytestCheckHook, - pythonOlder, }: buildPythonPackage rec { @@ -22,8 +20,6 @@ buildPythonPackage rec { nativeBuildInputs = [ hatchling ]; - propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [ typing-extensions ]; - pythonImportsCheck = [ "annotated_types" ]; nativeCheckInputs = [ pytestCheckHook ]; diff --git a/pkgs/development/python-modules/ansible-runner/default.nix b/pkgs/development/python-modules/ansible-runner/default.nix index cb6bcffb7f5d..346907d999b6 100644 --- a/pkgs/development/python-modules/ansible-runner/default.nix +++ b/pkgs/development/python-modules/ansible-runner/default.nix @@ -13,8 +13,6 @@ pexpect, python-daemon, pyyaml, - pythonOlder, - importlib-metadata, # tests addBinToPathHook, @@ -58,8 +56,7 @@ buildPythonPackage rec { pexpect python-daemon pyyaml - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; nativeCheckInputs = [ addBinToPathHook diff --git a/pkgs/development/python-modules/apache-beam/default.nix b/pkgs/development/python-modules/apache-beam/default.nix index ff12480ceb25..9b2de4e56237 100644 --- a/pkgs/development/python-modules/apache-beam/default.nix +++ b/pkgs/development/python-modules/apache-beam/default.nix @@ -59,19 +59,20 @@ sqlalchemy, tenacity, testcontainers, + which, pythonAtLeast, }: buildPythonPackage rec { pname = "apache-beam"; - version = "2.69.0"; + version = "2.70.0"; pyproject = true; src = fetchFromGitHub { owner = "apache"; repo = "beam"; tag = "v${version}"; - hash = "sha256-7trrdGQ9jkzG+5/PyBMvHXjR0B4HjOxBhUuxXEcKkLg="; + hash = "sha256-sySHoknK2FmiAEOpRdF9i3vA6NvnDrZyBCghVoyEzLw="; }; sourceRoot = "${src.name}/sdks/python"; @@ -86,8 +87,10 @@ buildPythonPackage rec { ''; pythonRelaxDeps = [ + "beartype" "grpcio" "jsonpickle" + "objsize" # As of apache-beam v2.55.1, the requirement is cloudpickle~=2.2.1, but # the current (2024-04-20) nixpkgs's pydot version is 3.0.0. @@ -170,6 +173,7 @@ buildPythonPackage rec { sqlalchemy tenacity testcontainers + which ]; # Make sure we're running the tests for the actually installed @@ -197,6 +201,9 @@ buildPythonPackage rec { # "apache_beam/io/external/xlang_jdbcio_it_test.py" + # AttributeError: '_TruncatingFileHandle' object has no attribute 'close'. + "apache_beam/ml/rag/ingestion/milvus_search_it_test.py" + # These tests depend on the availability of specific servers backends. "apache_beam/runners/portability/flink_runner_test.py" "apache_beam/runners/portability/samza_runner_test.py" diff --git a/pkgs/development/python-modules/approvaltests/default.nix b/pkgs/development/python-modules/approvaltests/default.nix index b3ef2bb3dc65..b45c8fa98226 100644 --- a/pkgs/development/python-modules/approvaltests/default.nix +++ b/pkgs/development/python-modules/approvaltests/default.nix @@ -20,14 +20,14 @@ buildPythonPackage rec { pname = "approvaltests"; - version = "16.2.2"; + version = "16.3.0"; pyproject = true; src = fetchFromGitHub { owner = "approvals"; repo = "ApprovalTests.Python"; tag = "v${version}"; - hash = "sha256-QIEuAgsBXLTFRQG6cwjePuXBS0JOJIRfmGRW8OK46zg="; + hash = "sha256-t/+o1qFGIkb1BfNKNvh1CvuqezKGPyhPbEvKod2UyC4="; }; postPatch = '' diff --git a/pkgs/development/python-modules/arelle/default.nix b/pkgs/development/python-modules/arelle/default.nix index 38991163e868..8be34e9c8af6 100644 --- a/pkgs/development/python-modules/arelle/default.nix +++ b/pkgs/development/python-modules/arelle/default.nix @@ -50,7 +50,7 @@ boto3, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "arelle${lib.optionalString (!gui) "-headless"}"; version = "2.38.4"; pyproject = true; @@ -58,7 +58,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "Arelle"; repo = "Arelle"; - tag = version; + tag = finalAttrs.version; hash = "sha256-ngFhY6yngr2OVQ6gsdpk5UAhzIpIrwiw+S+HK3oqfec="; }; @@ -145,7 +145,7 @@ buildPythonPackage rec { pytestCheckHook boto3 ] - ++ lib.concatAttrValues optional-dependencies; + ++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies; disabledTestPaths = [ "tests/integration_tests" @@ -171,4 +171,4 @@ buildPythonPackage rec { roberth ]; }; -} +}) diff --git a/pkgs/development/python-modules/auditwheel/default.nix b/pkgs/development/python-modules/auditwheel/default.nix index 5961559774f3..bc897e98f084 100644 --- a/pkgs/development/python-modules/auditwheel/default.nix +++ b/pkgs/development/python-modules/auditwheel/default.nix @@ -16,12 +16,12 @@ buildPythonPackage rec { pname = "auditwheel"; - version = "6.5.1"; + version = "6.6.0"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-EeYR9wkLbPQHVTW4j0NkgZuEnYJwLauwlHz3ycXVh6A="; + hash = "sha256-J387MVrQsE3wor4tEmw/05kwvCZd8PlYnXjJcP8G9Ss="; }; build-system = [ setuptools-scm ]; diff --git a/pkgs/development/python-modules/awscrt/default.nix b/pkgs/development/python-modules/awscrt/default.nix index 1750159e29a6..1b904a24ea14 100644 --- a/pkgs/development/python-modules/awscrt/default.nix +++ b/pkgs/development/python-modules/awscrt/default.nix @@ -10,12 +10,12 @@ buildPythonPackage (finalAttrs: { pname = "awscrt"; - version = "0.31.0"; + version = "0.31.1"; pyproject = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-3sYhdPC5viwybu2gYudE67+qi27HKH9SaHt61DARW78="; + hash = "sha256-q7ZHaNJb9WPajiFl1Hekkcuhi8IsTsjbesva6U5Z68Q="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/babelfish/default.nix b/pkgs/development/python-modules/babelfish/default.nix index f7840ec533f4..50f310f47ee3 100644 --- a/pkgs/development/python-modules/babelfish/default.nix +++ b/pkgs/development/python-modules/babelfish/default.nix @@ -2,9 +2,7 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, poetry-core, - importlib-metadata, }: buildPythonPackage rec { @@ -19,8 +17,6 @@ buildPythonPackage rec { build-system = [ poetry-core ]; - dependencies = lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; - # no tests executed doCheck = false; diff --git a/pkgs/development/python-modules/bacpypes/default.nix b/pkgs/development/python-modules/bacpypes/default.nix index 81ad8dc1a345..d82049c7c549 100644 --- a/pkgs/development/python-modules/bacpypes/default.nix +++ b/pkgs/development/python-modules/bacpypes/default.nix @@ -5,7 +5,6 @@ wheel, pytestCheckHook, pythonAtLeast, - pythonOlder, }: buildPythonPackage rec { @@ -14,7 +13,7 @@ buildPythonPackage rec { format = "setuptools"; # uses the removed asyncore module - disabled = pythonOlder "3.9" || pythonAtLeast "3.12"; + disabled = pythonAtLeast "3.12"; src = fetchFromGitHub { owner = "JoelBender"; diff --git a/pkgs/development/python-modules/badsecrets/default.nix b/pkgs/development/python-modules/badsecrets/default.nix index e7c4c48115fa..d2eed4774527 100644 --- a/pkgs/development/python-modules/badsecrets/default.nix +++ b/pkgs/development/python-modules/badsecrets/default.nix @@ -13,7 +13,7 @@ viewstate, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "badsecrets"; version = "0.13.47"; pyproject = true; @@ -21,10 +21,15 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "blacklanternsecurity"; repo = "badsecrets"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-Yvd9AGbVDOfXep8y+XzwYP2EpTvy+rwyz5hRIe7v4oc="; }; + pythonRelaxDeps = [ + "django" + "viewstate" + ]; + build-system = [ poetry-core poetry-dynamic-versioning @@ -40,18 +45,16 @@ buildPythonPackage rec { viewstate ]; - pythonRelaxDeps = [ "viewstate" ]; - pythonImportsCheck = [ "badsecrets" ]; meta = { description = "Module for detecting known secrets across many web frameworks"; homepage = "https://github.com/blacklanternsecurity/badsecrets"; - changelog = "https://github.com/blacklanternsecurity/badsecrets/releases/tag/${src.tag}"; + changelog = "https://github.com/blacklanternsecurity/badsecrets/releases/tag/${finalAttrs.src.tag}"; license = with lib.licenses; [ agpl3Only gpl3Only ]; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/bandit/default.nix b/pkgs/development/python-modules/bandit/default.nix index b4045b47fc48..97b691c7e2a6 100644 --- a/pkgs/development/python-modules/bandit/default.nix +++ b/pkgs/development/python-modules/bandit/default.nix @@ -11,12 +11,12 @@ buildPythonPackage rec { pname = "bandit"; - version = "1.9.2"; + version = "1.9.3"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-MkEEFc2Tv5yLkZchWdXPHn8GOpFG1wNFZBzTh33jSM4="; + hash = "sha256-reS5t3hvie9vxzRKUrNFWMrsXadMuQNzrtAd6IRy93Q="; }; build-system = [ pbr ]; diff --git a/pkgs/development/python-modules/beartype/default.nix b/pkgs/development/python-modules/beartype/default.nix index a8a1149930d6..9a131990a677 100644 --- a/pkgs/development/python-modules/beartype/default.nix +++ b/pkgs/development/python-modules/beartype/default.nix @@ -4,30 +4,21 @@ fetchFromGitHub, hatchling, pytestCheckHook, - pythonAtLeast, typing-extensions, }: buildPythonPackage rec { pname = "beartype"; - version = "0.21.0"; + version = "0.22.9"; pyproject = true; src = fetchFromGitHub { owner = "beartype"; repo = "beartype"; tag = "v${version}"; - hash = "sha256-oD7LS+c+mZ8W4YnAaAYxQkbUlmO8E2TPxy0PBI7Jr7A="; + hash = "sha256-F9x2qvzll1nUcTQZjaky+0ukP1RXoW35crzfS/pmvTs="; }; - # Several tests fail with: - # - beartype.roar.BeartypeDecorHintNonpepException - # - RuntimeError: There is no current event loop in thread 'MainThread' - # - Failed: DID NOT RAISE - # - AssertionError - # - ... - disabled = pythonAtLeast "3.14"; - build-system = [ hatchling ]; nativeCheckInputs = [ @@ -37,15 +28,6 @@ buildPythonPackage rec { pythonImportsCheck = [ "beartype" ]; - disabledTests = [ - # No warnings of type (,) were emitted. - "test_is_hint_pep593_beartype" - ] - ++ lib.optionals (pythonAtLeast "3.13") [ - # this test is not run upstream, and broke in 3.13 (_nparams removed) - "test_door_is_subhint" - ]; - meta = { description = "Fast runtime type checking for Python"; homepage = "https://github.com/beartype/beartype"; diff --git a/pkgs/development/python-modules/betterproto/default.nix b/pkgs/development/python-modules/betterproto/default.nix index 20b08f490367..d968849c4b95 100644 --- a/pkgs/development/python-modules/betterproto/default.nix +++ b/pkgs/development/python-modules/betterproto/default.nix @@ -109,6 +109,5 @@ buildPythonPackage (finalAttrs: { homepage = "https://github.com/danielgtaylor/python-betterproto"; changelog = "https://github.com/danielgtaylor/python-betterproto/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ nikstur ]; }; }) diff --git a/pkgs/development/python-modules/biocutils/default.nix b/pkgs/development/python-modules/biocutils/default.nix index eaa860c8522d..5d65eb9100ae 100644 --- a/pkgs/development/python-modules/biocutils/default.nix +++ b/pkgs/development/python-modules/biocutils/default.nix @@ -13,14 +13,14 @@ buildPythonPackage rec { pname = "biocutils"; - version = "0.3.3"; + version = "0.3.4"; pyproject = true; src = fetchFromGitHub { owner = "BiocPy"; repo = "BiocUtils"; tag = version; - hash = "sha256-ziKVF2cxOIRt8cEMOsbf5HAgBGG2vLp+DSMpL+hH6JM="; + hash = "sha256-G7g+jjXoKtnp+d7a5NoEtVBEN5Di1P/pWjgiJJv6fHA="; }; build-system = [ diff --git a/pkgs/development/python-modules/biom-format/default.nix b/pkgs/development/python-modules/biom-format/default.nix index ed8986c1ef74..cb608eeb1d95 100644 --- a/pkgs/development/python-modules/biom-format/default.nix +++ b/pkgs/development/python-modules/biom-format/default.nix @@ -12,7 +12,7 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "biom-format"; version = "2.1.17"; pyproject = true; @@ -20,7 +20,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "biocore"; repo = "biom-format"; - tag = version; + tag = finalAttrs.version; hash = "sha256-FjIC21LoqltixBstbbANByjTNxVm/3YCxdWaD9KbOQ0="; }; @@ -58,4 +58,4 @@ buildPythonPackage rec { license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/bork/default.nix b/pkgs/development/python-modules/bork/default.nix index bbc47f0f3a89..a56dd1481871 100644 --- a/pkgs/development/python-modules/bork/default.nix +++ b/pkgs/development/python-modules/bork/default.nix @@ -9,7 +9,6 @@ setuptools, build, coloredlogs, - importlib-metadata, packaging, pip, toml, @@ -45,8 +44,7 @@ buildPythonPackage rec { pip urllib3 ] - ++ lib.optionals (pythonOlder "3.11") [ toml ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ++ lib.optionals (pythonOlder "3.11") [ toml ]; pythonImportsCheck = [ "bork" diff --git a/pkgs/development/python-modules/botocore-stubs/default.nix b/pkgs/development/python-modules/botocore-stubs/default.nix index faa5bbbc67e3..7f568655bc4b 100644 --- a/pkgs/development/python-modules/botocore-stubs/default.nix +++ b/pkgs/development/python-modules/botocore-stubs/default.nix @@ -9,13 +9,13 @@ buildPythonPackage (finalAttrs: { pname = "botocore-stubs"; - version = "1.42.29"; + version = "1.42.30"; pyproject = true; src = fetchPypi { pname = "botocore_stubs"; inherit (finalAttrs) version; - hash = "sha256-8vbtyp1TexhlmSqTkqGBTN95PWAxl4uxZJhgWodYJmo="; + hash = "sha256-xNEWeOsXImP+sd6AVFLDdtnBHlTxkDp8+hMrp2XVe30="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/catppuccin/default.nix b/pkgs/development/python-modules/catppuccin/default.nix index 2e588e3bbb8a..87a1e7b6f592 100644 --- a/pkgs/development/python-modules/catppuccin/default.nix +++ b/pkgs/development/python-modules/catppuccin/default.nix @@ -9,7 +9,7 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "catppuccin"; version = "2.5.0"; @@ -18,7 +18,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "catppuccin"; repo = "python"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-wumJ8kpr+C2pdw8jYf+IqYTdSB6Iy37yZqPKycYmOSs="; }; @@ -30,7 +30,10 @@ buildPythonPackage rec { rich = [ rich ]; }; - nativeCheckInputs = [ pytestCheckHook ] ++ lib.concatAttrValues optional-dependencies; + nativeCheckInputs = [ + pytestCheckHook + ] + ++ lib.concatAttrValues finalAttrs.passthru.optional-dependencies; pythonImportsCheck = [ "catppuccin" ]; @@ -43,4 +46,4 @@ buildPythonPackage rec { ]; license = lib.licenses.mit; }; -} +}) diff --git a/pkgs/development/python-modules/certipy-ad/default.nix b/pkgs/development/python-modules/certipy-ad/default.nix index ce11aba66c94..3b40d72e20dc 100644 --- a/pkgs/development/python-modules/certipy-ad/default.nix +++ b/pkgs/development/python-modules/certipy-ad/default.nix @@ -19,7 +19,7 @@ unicrypto, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "certipy-ad"; version = "5.0.4"; pyproject = true; @@ -27,12 +27,13 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "ly4k"; repo = "Certipy"; - tag = version; + tag = finalAttrs.version; hash = "sha256-5STwBpX+8EsgRYMEirvqEhu4oMDs4hf4lDge1ShpKf4="; }; pythonRelaxDeps = [ "argcomplete" + "beautifulsoup4" "cryptography" "dnspython" "ldap3" @@ -40,8 +41,6 @@ buildPythonPackage rec { "pyopenssl" ]; - pythonRemoveDeps = [ "bs4" ]; - build-system = [ setuptools ]; dependencies = [ @@ -70,9 +69,9 @@ buildPythonPackage rec { meta = { description = "Library and CLI tool to enumerate and abuse misconfigurations in Active Directory Certificate Services"; homepage = "https://github.com/ly4k/Certipy"; - changelog = "https://github.com/ly4k/Certipy/releases/tag/${src.tag}"; + changelog = "https://github.com/ly4k/Certipy/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ fab ]; mainProgram = "certipy"; }; -} +}) diff --git a/pkgs/development/python-modules/click-odoo-contrib/default.nix b/pkgs/development/python-modules/click-odoo-contrib/default.nix index 06bc06102438..eeae9cb6f47c 100644 --- a/pkgs/development/python-modules/click-odoo-contrib/default.nix +++ b/pkgs/development/python-modules/click-odoo-contrib/default.nix @@ -2,11 +2,9 @@ buildPythonPackage, click-odoo, fetchPypi, - importlib-resources, lib, manifestoo-core, nix-update-script, - pythonOlder, setuptools-scm, }: @@ -26,8 +24,7 @@ buildPythonPackage rec { propagatedBuildInputs = [ click-odoo manifestoo-core - ] - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ]; passthru.updateScript = nix-update-script { }; diff --git a/pkgs/development/python-modules/cloup/default.nix b/pkgs/development/python-modules/cloup/default.nix index 33654ac55899..cecf149c6463 100644 --- a/pkgs/development/python-modules/cloup/default.nix +++ b/pkgs/development/python-modules/cloup/default.nix @@ -5,8 +5,6 @@ pytestCheckHook, click, setuptools-scm, - pythonOlder, - typing-extensions, }: buildPythonPackage rec { @@ -21,7 +19,7 @@ buildPythonPackage rec { nativeBuildInputs = [ setuptools-scm ]; - propagatedBuildInputs = [ click ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]; + propagatedBuildInputs = [ click ]; nativeCheckInputs = [ pytestCheckHook ]; diff --git a/pkgs/development/python-modules/cmdstanpy/default.nix b/pkgs/development/python-modules/cmdstanpy/default.nix index 2ac12e0e0196..feda60658931 100644 --- a/pkgs/development/python-modules/cmdstanpy/default.nix +++ b/pkgs/development/python-modules/cmdstanpy/default.nix @@ -14,7 +14,7 @@ stdenv, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "cmdstanpy"; version = "1.3.0"; pyproject = true; @@ -22,7 +22,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "stan-dev"; repo = "cmdstanpy"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-XVviGdJ41mcjCscL3jvcpHi6zMREHsuShGHpnMQX6V8="; }; @@ -58,7 +58,7 @@ buildPythonPackage rec { export HOME=$(mktemp -d) ''; - nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.all; + nativeCheckInputs = [ pytestCheckHook ] ++ finalAttrs.passthru.optional-dependencies.all; disabledTestPaths = [ # No need to test these when using Nix @@ -84,8 +84,8 @@ buildPythonPackage rec { meta = { homepage = "https://github.com/stan-dev/cmdstanpy"; description = "Lightweight interface to Stan for Python users"; - changelog = "https://github.com/stan-dev/cmdstanpy/releases/tag/v${version}"; + changelog = "https://github.com/stan-dev/cmdstanpy/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/coiled/default.nix b/pkgs/development/python-modules/coiled/default.nix index 6a397353df1c..748775bcd6d9 100644 --- a/pkgs/development/python-modules/coiled/default.nix +++ b/pkgs/development/python-modules/coiled/default.nix @@ -39,12 +39,12 @@ buildPythonPackage (finalAttrs: { pname = "coiled"; - version = "1.130.1"; + version = "1.130.2"; pyproject = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-v9tPbuxGyBmxx8V9MQfOTAlP5mXxJW7005plgCP/Szw="; + hash = "sha256-tkCDmbtsKOahSeIaPeN3twHWC4yQfAL9EHsYgHhPb24="; }; build-system = [ diff --git a/pkgs/development/python-modules/coinmetrics-api-client/default.nix b/pkgs/development/python-modules/coinmetrics-api-client/default.nix index 56846c9d8723..c05fdb581bdb 100644 --- a/pkgs/development/python-modules/coinmetrics-api-client/default.nix +++ b/pkgs/development/python-modules/coinmetrics-api-client/default.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "coinmetrics-api-client"; - version = "2026.1.5.19"; + version = "2026.1.14.15"; pyproject = true; __darwinAllowLocalNetworking = true; @@ -26,7 +26,7 @@ buildPythonPackage rec { src = fetchPypi { inherit version; pname = "coinmetrics_api_client"; - hash = "sha256-q8uimYYpoEJ2503SLMAROFg4ZwqPpmQJSff7W6D5R6Y="; + hash = "sha256-0gNZ1A9BO/LebOvYLbUmQmMnBi4H5QeX7GdU6SVUWNs="; }; pythonRelaxDeps = [ "typer" ]; diff --git a/pkgs/development/python-modules/cssutils/default.nix b/pkgs/development/python-modules/cssutils/default.nix index 5ee348f77dd1..1cc7266a5e85 100644 --- a/pkgs/development/python-modules/cssutils/default.nix +++ b/pkgs/development/python-modules/cssutils/default.nix @@ -1,7 +1,6 @@ { lib, buildPythonPackage, - pythonOlder, fetchFromGitHub, setuptools-scm, more-itertools, @@ -10,7 +9,6 @@ lxml, mock, pytestCheckHook, - importlib-resources, }: buildPythonPackage rec { @@ -35,8 +33,7 @@ buildPythonPackage rec { lxml mock pytestCheckHook - ] - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ]; disabledTests = [ # access network diff --git a/pkgs/development/python-modules/dash/default.nix b/pkgs/development/python-modules/dash/default.nix index 44bc845ce39a..cdf1c244e160 100644 --- a/pkgs/development/python-modules/dash/default.nix +++ b/pkgs/development/python-modules/dash/default.nix @@ -37,7 +37,7 @@ pyyaml, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "dash"; version = "3.3.0"; pyproject = true; @@ -45,7 +45,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "plotly"; repo = "dash"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-8Vt109x4T+DhBXfQf7MKoexmWFc23uuU0Nn3Ia/Xm5I="; }; @@ -55,7 +55,7 @@ buildPythonPackage rec { ]; yarnOfflineCache = fetchYarnDeps { - yarnLock = "${src}/@plotly/dash-jupyterlab/yarn.lock"; + yarnLock = "${finalAttrs.src}/@plotly/dash-jupyterlab/yarn.lock"; hash = "sha256-Nvm9BS55q/HW9ArpHD01F5Rmx8PLS3yqaz1yDK8Sg68="; }; @@ -134,7 +134,7 @@ buildPythonPackage rec { pythonImportsCheck = [ "dash" ]; meta = { - changelog = "https://github.com/plotly/dash/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/plotly/dash/blob/${finalAttrs.src.rev}/CHANGELOG.md"; description = "Python framework for building analytical web applications"; homepage = "https://dash.plot.ly/"; license = lib.licenses.mit; @@ -143,4 +143,4 @@ buildPythonPackage rec { tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/datalad/default.nix b/pkgs/development/python-modules/datalad/default.nix index c6fdcc61b5f8..864870560936 100644 --- a/pkgs/development/python-modules/datalad/default.nix +++ b/pkgs/development/python-modules/datalad/default.nix @@ -39,7 +39,6 @@ colorama, # python-version-dependent pythonOlder, - importlib-metadata, typing-extensions, # tests pytest-xdist, @@ -94,7 +93,6 @@ buildPythonPackage rec { looseversion ] ++ lib.optionals stdenv.hostPlatform.isWindows [ colorama ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ] ++ lib.optionals (pythonOlder "3.11") [ typing-extensions ]; downloaders = [ boto3 diff --git a/pkgs/development/python-modules/dbt-protos/default.nix b/pkgs/development/python-modules/dbt-protos/default.nix index 97dab4809897..c85ccb7d58c3 100644 --- a/pkgs/development/python-modules/dbt-protos/default.nix +++ b/pkgs/development/python-modules/dbt-protos/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "dbt-protos"; - version = "1.0.415"; + version = "1.0.421"; pyproject = true; src = fetchFromGitHub { owner = "dbt-labs"; repo = "proto-python-public"; tag = "v${version}"; - hash = "sha256-mCvds8tfBmiGjQlSTX4JFyLniCk5E3aIsDnkhie9QmU="; + hash = "sha256-FBbsAP9nvUZnFg2xY6Z1on9sazB0FlG5yKcovw2fBMA="; }; build-system = [ diff --git a/pkgs/development/python-modules/dep-logic/default.nix b/pkgs/development/python-modules/dep-logic/default.nix index 9be6c5355512..19d26cc62795 100644 --- a/pkgs/development/python-modules/dep-logic/default.nix +++ b/pkgs/development/python-modules/dep-logic/default.nix @@ -7,7 +7,7 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "dep-logic"; version = "0.5.2"; pyproject = true; @@ -15,7 +15,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "pdm-project"; repo = "dep-logic"; - tag = version; + tag = finalAttrs.version; hash = "sha256-BjqPtfYsHSDQoaYs+hB0r/mRuONqBHOb6goi1dxkFWo="; }; @@ -28,7 +28,7 @@ buildPythonPackage rec { pythonImportsCheck = [ "dep_logic" ]; meta = { - changelog = "https://github.com/pdm-project/dep-logic/releases/tag/${src.tag}"; + changelog = "https://github.com/pdm-project/dep-logic/releases/tag/${finalAttrs.src.tag}"; description = "Python dependency specifications supporting logical operations"; homepage = "https://github.com/pdm-project/dep-logic"; license = lib.licenses.asl20; @@ -37,4 +37,4 @@ buildPythonPackage rec { misilelab ]; }; -} +}) diff --git a/pkgs/development/python-modules/django-filer/default.nix b/pkgs/development/python-modules/django-filer/default.nix index 35723823656f..5aaab801e51b 100644 --- a/pkgs/development/python-modules/django-filer/default.nix +++ b/pkgs/development/python-modules/django-filer/default.nix @@ -15,14 +15,14 @@ buildPythonPackage rec { pname = "django-filer"; - version = "3.4.1"; + version = "3.4.3"; pyproject = true; src = fetchFromGitHub { owner = "django-cms"; repo = "django-filer"; tag = version; - hash = "sha256-lbt7Tk+BJX9sesIPjZ0bIpE0RzO4nH/TAdimowfYtkA="; + hash = "sha256-Zy1CkQL3FEJ4YDv0VGuRKS8XlqvFT6HjnGGZFSgOPew="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/dns-lexicon/default.nix b/pkgs/development/python-modules/dns-lexicon/default.nix index 5cf56ac43e41..f5a5b212f380 100644 --- a/pkgs/development/python-modules/dns-lexicon/default.nix +++ b/pkgs/development/python-modules/dns-lexicon/default.nix @@ -6,14 +6,12 @@ cryptography, dnspython, fetchFromGitHub, - importlib-metadata, localzone, oci, poetry-core, pyotp, pytest-vcr, pytestCheckHook, - pythonOlder, pyyaml, requests, softlayer, @@ -50,8 +48,7 @@ buildPythonPackage rec { pyyaml requests tldextract - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; optional-dependencies = { route53 = [ boto3 ]; diff --git a/pkgs/development/python-modules/dtschema/default.nix b/pkgs/development/python-modules/dtschema/default.nix index eddcadc8dd56..a4a3037ad2cb 100644 --- a/pkgs/development/python-modules/dtschema/default.nix +++ b/pkgs/development/python-modules/dtschema/default.nix @@ -8,51 +8,51 @@ ruamel-yaml, setuptools-scm, libfdt, + pytestCheckHook, + dtc, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "dtschema"; - version = "2025.08"; + version = "2025.12"; pyproject = true; src = fetchFromGitHub { owner = "devicetree-org"; repo = "dt-schema"; - tag = "v${version}"; - sha256 = "sha256-SW2WAVB7ZSgKRjIyFdMqe8tRIuM97ZVBg4d0BJC6SBI="; + tag = "v${finalAttrs.version}"; + hash = "sha256-DCkZDI0/W/4IkMzaa769vKJxlSMWoEsLIdlyChYd+Mk="; }; - nativeBuildInputs = [ setuptools-scm ]; + build-system = [ setuptools-scm ]; - propagatedBuildInputs = [ + dependencies = [ jsonschema rfc3987 ruamel-yaml libfdt ]; - # Module has no tests - doCheck = false; - pythonImportsCheck = [ "dtschema" ]; + nativeCheckInputs = [ + pytestCheckHook + dtc + ]; + + enabledTestPaths = [ "test/test-dt-validate.py" ]; + meta = { description = "Tooling for devicetree validation using YAML and jsonschema"; homepage = "https://github.com/devicetree-org/dt-schema/"; - changelog = "https://github.com/devicetree-org/dt-schema/releases/tag/v${version}"; + changelog = "https://github.com/devicetree-org/dt-schema/releases/tag/v${finalAttrs.version}"; license = with lib.licenses; [ bsd2 # or gpl2Only ]; maintainers = with lib.maintainers; [ sorki ]; - broken = ( - # Library not loaded: @rpath/libfdt.1.dylib - stdenv.hostPlatform.isDarwin - || - - # see https://github.com/devicetree-org/dt-schema/issues/108 - lib.versionAtLeast jsonschema.version "4.18" - ); + # Library not loaded: @rpath/libfdt.1.dylib + broken = stdenv.hostPlatform.isDarwin; }; -} +}) diff --git a/pkgs/development/python-modules/echo/default.nix b/pkgs/development/python-modules/echo/default.nix index be1b4d4501cc..3bbb575671e3 100644 --- a/pkgs/development/python-modules/echo/default.nix +++ b/pkgs/development/python-modules/echo/default.nix @@ -3,10 +3,8 @@ stdenv, buildPythonPackage, fetchFromGitHub, - pythonOlder, setuptools, setuptools-scm, - libxcrypt, numpy, qt6, qtpy, @@ -37,8 +35,6 @@ buildPythonPackage rec { qt6.wrapQtAppsHook ]; - buildInputs = lib.optionals (pythonOlder "3.9") [ libxcrypt ]; - dependencies = [ qt6.qtconnectivity qt6.qtbase diff --git a/pkgs/development/python-modules/elevenlabs/default.nix b/pkgs/development/python-modules/elevenlabs/default.nix index e4b47be7f76b..4b499060c14d 100644 --- a/pkgs/development/python-modules/elevenlabs/default.nix +++ b/pkgs/development/python-modules/elevenlabs/default.nix @@ -14,14 +14,14 @@ buildPythonPackage (finalAttrs: { pname = "elevenlabs"; - version = "2.29.0"; + version = "2.30.0"; pyproject = true; src = fetchFromGitHub { owner = "elevenlabs"; repo = "elevenlabs-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-TtlC9puEOgH2I8zKMM0mXK67LZGN13JIkKpXJJKuVqw="; + hash = "sha256-UxH7I/6Y1umMYnSVlZN81kn0jkwR4hwLxmlD2EhrF88="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/fake-useragent/default.nix b/pkgs/development/python-modules/fake-useragent/default.nix index 83aa273913f4..01ac7b15e79d 100644 --- a/pkgs/development/python-modules/fake-useragent/default.nix +++ b/pkgs/development/python-modules/fake-useragent/default.nix @@ -2,7 +2,6 @@ lib, fetchFromGitHub, buildPythonPackage, - importlib-resources, setuptools, pythonOlder, pytestCheckHook, @@ -26,8 +25,6 @@ buildPythonPackage rec { build-system = [ setuptools ]; - dependencies = lib.optionals (pythonOlder "3.10") [ importlib-resources ]; - nativeCheckInputs = [ pytestCheckHook ]; pythonImportsCheck = [ "fake_useragent" ]; diff --git a/pkgs/development/python-modules/falcon/default.nix b/pkgs/development/python-modules/falcon/default.nix index 80e7609f4e15..8b9a2898cd73 100644 --- a/pkgs/development/python-modules/falcon/default.nix +++ b/pkgs/development/python-modules/falcon/default.nix @@ -2,7 +2,6 @@ lib, buildPythonPackage, pythonAtLeast, - pythonOlder, isPyPy, fetchFromGitHub, @@ -21,7 +20,6 @@ pyyaml, rapidjson, requests, - testtools, ujson, uvicorn, websockets, @@ -72,8 +70,7 @@ buildPythonPackage rec { msgpack mujson ujson - ] - ++ lib.optionals (pythonOlder "3.10") [ testtools ]; + ]; enabledTestPaths = [ "tests" ]; diff --git a/pkgs/development/python-modules/ghapi/default.nix b/pkgs/development/python-modules/ghapi/default.nix index fe650ff60b04..6b618e177384 100644 --- a/pkgs/development/python-modules/ghapi/default.nix +++ b/pkgs/development/python-modules/ghapi/default.nix @@ -7,16 +7,16 @@ setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "ghapi"; - version = "1.0.8"; + version = "1.0.9"; pyproject = true; src = fetchFromGitHub { owner = "fastai"; repo = "ghapi"; - tag = version; - hash = "sha256-ZfOo5Icusj8Fm5i/HWGjjXtNWEB1wgYNzqeLeWbBJ/4="; + tag = finalAttrs.version; + hash = "sha256-gBwOxWHjGyTrAKpG7BVoO7eQJw3fcLMXaF7CbAwMOj8="; }; build-system = [ setuptools ]; @@ -34,8 +34,8 @@ buildPythonPackage rec { meta = { description = "Python interface to GitHub's API"; homepage = "https://github.com/fastai/ghapi"; - changelog = "https://github.com/fastai/ghapi/releases/tag/${version}"; - license = with lib.licenses; [ asl20 ]; + changelog = "https://github.com/fastai/ghapi/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.asl20; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/globus-sdk/default.nix b/pkgs/development/python-modules/globus-sdk/default.nix index c44cbf1ddf9a..40d92d6f04f4 100644 --- a/pkgs/development/python-modules/globus-sdk/default.nix +++ b/pkgs/development/python-modules/globus-sdk/default.nix @@ -6,11 +6,9 @@ flaky, pyjwt, pytestCheckHook, - pythonOlder, requests, responses, setuptools, - typing-extensions, }: buildPythonPackage rec { @@ -35,8 +33,7 @@ buildPythonPackage rec { cryptography requests pyjwt - ] - ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]; + ]; nativeCheckInputs = [ pytestCheckHook ]; diff --git a/pkgs/development/python-modules/glymur/default.nix b/pkgs/development/python-modules/glymur/default.nix index f4d69e81d46d..10dac7a8050a 100644 --- a/pkgs/development/python-modules/glymur/default.nix +++ b/pkgs/development/python-modules/glymur/default.nix @@ -15,7 +15,7 @@ replaceVars, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "glymur"; version = "0.13.6"; pyproject = true; @@ -23,7 +23,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "quintusdias"; repo = "glymur"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-tIvDhlFPpDxC3CgBDT0RN9MM8ycY+J1hjcLXzx14Zhs="; }; @@ -74,8 +74,8 @@ buildPythonPackage rec { meta = { description = "Tools for accessing JPEG2000 files"; homepage = "https://github.com/quintusdias/glymur"; - changelog = "https://github.com/quintusdias/glymur/blob/${src.rev}/CHANGES.txt"; + changelog = "https://github.com/quintusdias/glymur/blob/${finalAttrs.src.rev}/CHANGES.txt"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/gmpy2/default.nix b/pkgs/development/python-modules/gmpy2/default.nix index 33712b519afc..bf1e2ee92f78 100644 --- a/pkgs/development/python-modules/gmpy2/default.nix +++ b/pkgs/development/python-modules/gmpy2/default.nix @@ -17,7 +17,7 @@ sage, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "gmpy2"; version = "2.2.1"; pyproject = true; @@ -27,7 +27,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "aleaxit"; repo = "gmpy"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-wrMN3kqLnjItoybKYeo4Pp2M0uma7Kg0JEQM8lr6OI0="; }; @@ -66,10 +66,10 @@ buildPythonPackage rec { }; meta = { - changelog = "https://github.com/aleaxit/gmpy/blob/${src.rev}/docs/history.rst"; + changelog = "https://github.com/aleaxit/gmpy/blob/${finalAttrs.src.rev}/docs/history.rst"; description = "Interface to GMP, MPFR, and MPC for Python 3.7+"; homepage = "https://github.com/aleaxit/gmpy/"; license = lib.licenses.lgpl3Plus; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/google-auth-httplib2/default.nix b/pkgs/development/python-modules/google-auth-httplib2/default.nix index 10df29e76d5c..16aa508c60e0 100644 --- a/pkgs/development/python-modules/google-auth-httplib2/default.nix +++ b/pkgs/development/python-modules/google-auth-httplib2/default.nix @@ -13,14 +13,14 @@ buildPythonPackage rec { pname = "google-auth-httplib2"; - version = "0.2.0"; + version = "0.3.0"; pyproject = true; src = fetchFromGitHub { owner = "googleapis"; repo = "google-auth-library-python-httplib2"; tag = "v${version}"; - sha256 = "sha256-qY00u1srwAw68VXewZDOsWZrtHpi5UoRZfesSY7mTk8="; + sha256 = "sha256-NXz2oqbNVGTWOECH+Ly9v/CMxbhygFZhlHRHrnYLhCg="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/grpclib/default.nix b/pkgs/development/python-modules/grpclib/default.nix index fcf657b3a6b5..58802844660c 100644 --- a/pkgs/development/python-modules/grpclib/default.nix +++ b/pkgs/development/python-modules/grpclib/default.nix @@ -50,6 +50,5 @@ buildPythonPackage rec { homepage = "https://github.com/vmagamedov/grpclib"; changelog = "https://github.com/vmagamedov/grpclib/blob/v${version}/docs/changelog/index.rst"; license = lib.licenses.bsd3; - maintainers = with lib.maintainers; [ nikstur ]; }; } diff --git a/pkgs/development/python-modules/guessit/default.nix b/pkgs/development/python-modules/guessit/default.nix index a906e9da95f4..06f40858636b 100644 --- a/pkgs/development/python-modules/guessit/default.nix +++ b/pkgs/development/python-modules/guessit/default.nix @@ -5,8 +5,6 @@ python-dateutil, babelfish, rebulk, - pythonOlder, - importlib-resources, py, pytestCheckHook, pytest-mock, @@ -28,8 +26,7 @@ buildPythonPackage rec { rebulk babelfish python-dateutil - ] - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ]; nativeCheckInputs = [ py diff --git a/pkgs/development/python-modules/gymnasium/default.nix b/pkgs/development/python-modules/gymnasium/default.nix index 77e936f2face..89b8ba72f766 100644 --- a/pkgs/development/python-modules/gymnasium/default.nix +++ b/pkgs/development/python-modules/gymnasium/default.nix @@ -12,8 +12,6 @@ farama-notifications, numpy, typing-extensions, - pythonOlder, - importlib-metadata, # optional-dependencies # atari @@ -56,8 +54,7 @@ buildPythonPackage rec { farama-notifications numpy typing-extensions - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; optional-dependencies = { atari = [ diff --git a/pkgs/development/python-modules/hcloud/default.nix b/pkgs/development/python-modules/hcloud/default.nix index cfaa7b083694..b8865de91dbd 100644 --- a/pkgs/development/python-modules/hcloud/default.nix +++ b/pkgs/development/python-modules/hcloud/default.nix @@ -8,14 +8,14 @@ setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "hcloud"; - version = "2.14.0"; + version = "2.15.0"; pyproject = true; src = fetchPypi { - inherit pname version; - hash = "sha256-BMaVHZBkfh4KYVqDnB+JDJChTgTPy/llAB0qzl0hvQk="; + inherit (finalAttrs) pname version; + hash = "sha256-/Y5mjersmXo/6t5e3Te+BZpT5MvBT7AGCXZnUC737U0="; }; build-system = [ setuptools ]; @@ -32,8 +32,8 @@ buildPythonPackage rec { meta = { description = "Library for the Hetzner Cloud API"; homepage = "https://github.com/hetznercloud/hcloud-python"; - changelog = "https://github.com/hetznercloud/hcloud-python/releases/tag/v${version}"; + changelog = "https://github.com/hetznercloud/hcloud-python/releases/tag/v${finalAttrs.version}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ liff ]; }; -} +}) diff --git a/pkgs/development/python-modules/hypothesis/default.nix b/pkgs/development/python-modules/hypothesis/default.nix index 4d717c1bde13..25c4db7fb3eb 100644 --- a/pkgs/development/python-modules/hypothesis/default.nix +++ b/pkgs/development/python-modules/hypothesis/default.nix @@ -102,13 +102,6 @@ buildPythonPackage rec { # calls script with the naked interpreter "test_constants_from_running_file" ] - ++ lib.optionals (pythonOlder "3.10") [ - # not sure why these tests fail with only 3.9 - # FileNotFoundError: [Errno 2] No such file or directory: 'git' - "test_observability" - "test_assume_has_status_reason" - "test_observability_captures_stateful_reprs" - ] ++ lib.optionals (pythonAtLeast "3.12") [ # AssertionError: assert [b'def \... f(): pass'] == [b'def\\', b' f(): pass'] # https://github.com/HypothesisWorks/hypothesis/issues/4355 diff --git a/pkgs/development/python-modules/iamdata/default.nix b/pkgs/development/python-modules/iamdata/default.nix index 2c9537c5daa0..6eacd4a5f831 100644 --- a/pkgs/development/python-modules/iamdata/default.nix +++ b/pkgs/development/python-modules/iamdata/default.nix @@ -8,14 +8,14 @@ buildPythonPackage (finalAttrs: { pname = "iamdata"; - version = "0.1.202601171"; + version = "0.1.202601191"; pyproject = true; src = fetchFromGitHub { owner = "cloud-copilot"; repo = "iam-data-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-psxnDxWzt1IeQQ+gppkBwE7X2gEtYQdAdiHoXOKPn5w="; + hash = "sha256-fdHOXm+FJcHHSb01z6e01zHQmt0ZRl2/gs9wrtTR468="; }; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/icdiff/default.nix b/pkgs/development/python-modules/icdiff/default.nix index e9f804078807..89587e1f8749 100644 --- a/pkgs/development/python-modules/icdiff/default.nix +++ b/pkgs/development/python-modules/icdiff/default.nix @@ -16,27 +16,19 @@ in buildPythonPackage rec { pname = "icdiff"; - version = "2.0.8-unstable-2025-11-11"; + version = "2.0.9"; pyproject = true; src = fetchFromGitHub { owner = "jeffkaufman"; repo = "icdiff"; - rev = "ee4643ae3976ca023dab534eb59b911f16f762ac"; - hash = "sha256-XV88WjZDc2NSQ5CEahr8KXLXrBACvIWOavMUPeoPGOw="; - leaveDotGit = true; + tag = "release-${version}"; + hash = "sha256-ykQLF2b47RZSlrJXYpZ03evhpcGfVyTYwpO2UbmWqrY="; + deepClone = true; }; patches = [ ./0001-Don-t-test-black-or-flake8.patch ]; - postPatch = '' - substituteInPlace test.sh \ - --replace-fail "check_gold 1 gold-exclude.txt" "# check_gold 1 gold-exclude.txt" \ - --replace-fail "check_gold 1 gold-strip-cr-off.txt" "# check_gold 1 gold-strip-cr-off.txt" \ - --replace-fail "check_gold 1 gold-strip-cr-on.txt" "# check_gold 1 gold-strip-cr-on.txt" \ - --replace-fail "check_gold 1 gold-no-cr-indent" "# check_gold 1 gold-no-cr-indent" - ''; - build-system = [ setuptools ]; pythonImportsCheck = [ "icdiff" ]; @@ -48,13 +40,17 @@ buildPythonPackage rec { writableTmpDirAsHomeHook ]; + # Before the wheel gets created, fix up the shebangs. + preBuild = '' + patchShebangs test.sh icdiff git-icdiff + ''; + # Odd behavior in the sandbox doCheck = !stdenv.hostPlatform.isDarwin; checkPhase = '' runHook preCheck - patchShebangs test.sh ./test.sh ${python.interpreter} runHook postCheck diff --git a/pkgs/development/python-modules/ignite/default.nix b/pkgs/development/python-modules/ignite/default.nix index 017f94b1a01a..0f498a60ef9f 100644 --- a/pkgs/development/python-modules/ignite/default.nix +++ b/pkgs/development/python-modules/ignite/default.nix @@ -1,9 +1,7 @@ { lib, - stdenv, buildPythonPackage, fetchFromGitHub, - pythonOlder, setuptools, pytestCheckHook, pytest-xdist, @@ -41,8 +39,8 @@ buildPythonPackage rec { torchvision ]; - # runs successfully in 3.9, however, async isn't correctly closed so it will fail after test suite. - doCheck = pythonOlder "3.9"; + # async isn't correctly closed so it will fail after test suite. + doCheck = false; enabledTestPaths = [ "tests/" diff --git a/pkgs/development/python-modules/imapclient/default.nix b/pkgs/development/python-modules/imapclient/default.nix index f46f0b2f34a4..5e3aa2bc0635 100644 --- a/pkgs/development/python-modules/imapclient/default.nix +++ b/pkgs/development/python-modules/imapclient/default.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { pname = "imapclient"; - version = "3.0.1"; + version = "3.1.0"; format = "setuptools"; @@ -16,7 +16,7 @@ buildPythonPackage rec { owner = "mjs"; repo = "imapclient"; tag = version; - hash = "sha256-WY3OLPUwixrL2NSLfNBSSNMXJEoYBL+O6KoglU3Cz9g="; + hash = "sha256-J+pB+jXAoZItvaR8o+97sETFYxWj+uslmvsAe/Q0Gzc="; }; propagatedBuildInputs = [ six ]; diff --git a/pkgs/development/python-modules/injector/default.nix b/pkgs/development/python-modules/injector/default.nix index 0eda9e9e6bde..0d33da935af4 100644 --- a/pkgs/development/python-modules/injector/default.nix +++ b/pkgs/development/python-modules/injector/default.nix @@ -1,9 +1,7 @@ { lib, buildPythonPackage, - pythonOlder, fetchFromGitHub, - typing-extensions, pytestCheckHook, pytest-cov-stub, }: @@ -20,8 +18,6 @@ buildPythonPackage rec { hash = "sha256-FRO/stQDTa4W1f6mLPDCJslYFfIvgS0EgoEhuh0rxwA="; }; - propagatedBuildInputs = lib.optionals (pythonOlder "3.9") [ typing-extensions ]; - nativeCheckInputs = [ pytestCheckHook pytest-cov-stub diff --git a/pkgs/development/python-modules/internetarchive/default.nix b/pkgs/development/python-modules/internetarchive/default.nix index ebb9b436802d..9b4170f3045c 100644 --- a/pkgs/development/python-modules/internetarchive/default.nix +++ b/pkgs/development/python-modules/internetarchive/default.nix @@ -10,8 +10,6 @@ setuptools, tqdm, urllib3, - pythonOlder, - importlib-metadata, }: buildPythonPackage rec { @@ -34,8 +32,7 @@ buildPythonPackage rec { jsonpatch schema urllib3 - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; nativeCheckInputs = [ responses diff --git a/pkgs/development/python-modules/ipyparallel/default.nix b/pkgs/development/python-modules/ipyparallel/default.nix index 7febe8a32ea3..23c79b1faa3b 100644 --- a/pkgs/development/python-modules/ipyparallel/default.nix +++ b/pkgs/development/python-modules/ipyparallel/default.nix @@ -4,13 +4,11 @@ decorator, fetchPypi, hatchling, - importlib-metadata, ipykernel, ipython, jupyter-client, psutil, python-dateutil, - pythonOlder, pyzmq, tornado, tqdm, @@ -48,8 +46,7 @@ buildPythonPackage rec { tornado tqdm traitlets - ] - ++ lib.optional (pythonOlder "3.10") importlib-metadata; + ]; # Requires access to cluster doCheck = false; diff --git a/pkgs/development/python-modules/islpy/default.nix b/pkgs/development/python-modules/islpy/default.nix index c748d527a554..2ab11955dceb 100644 --- a/pkgs/development/python-modules/islpy/default.nix +++ b/pkgs/development/python-modules/islpy/default.nix @@ -18,7 +18,7 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "islpy"; version = "2025.2.5"; pyproject = true; @@ -26,7 +26,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "inducer"; repo = "islpy"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-E3DRj1WpMr79BVFUeJftp1JZafP2+Zn6yyf9ClfdWqI="; }; @@ -64,8 +64,8 @@ buildPythonPackage rec { meta = { description = "Python wrapper around isl, an integer set library"; homepage = "https://github.com/inducer/islpy"; - changelog = "https://github.com/inducer/islpy/releases/tag/v${version}"; + changelog = "https://github.com/inducer/islpy/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/iso4217/default.nix b/pkgs/development/python-modules/iso4217/default.nix index 92f1ec0d685d..1750ab27d75d 100644 --- a/pkgs/development/python-modules/iso4217/default.nix +++ b/pkgs/development/python-modules/iso4217/default.nix @@ -3,10 +3,8 @@ buildPythonPackage, fetchFromGitHub, fetchurl, - importlib-resources, pytestCheckHook, python, - pythonOlder, setuptools, }: let @@ -30,8 +28,6 @@ buildPythonPackage rec { build-system = [ setuptools ]; - dependencies = lib.optionals (pythonOlder "3.9") [ importlib-resources ]; - nativeCheckInputs = [ pytestCheckHook ]; preBuild = '' diff --git a/pkgs/development/python-modules/jaraco-text/default.nix b/pkgs/development/python-modules/jaraco-text/default.nix index fab4bd8da48d..18ba86c68b5f 100644 --- a/pkgs/development/python-modules/jaraco-text/default.nix +++ b/pkgs/development/python-modules/jaraco-text/default.nix @@ -2,13 +2,10 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, autocommand, - importlib-resources, jaraco-functools, jaraco-context, inflect, - pathlib2, pytestCheckHook, setuptools-scm, }: @@ -33,10 +30,9 @@ buildPythonPackage rec { jaraco-context jaraco-functools inflect - ] - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ]; - nativeCheckInputs = [ pytestCheckHook ] ++ lib.optionals (pythonOlder "3.10") [ pathlib2 ]; + nativeCheckInputs = [ pytestCheckHook ]; pythonImportsCheck = [ "jaraco.text" ]; diff --git a/pkgs/development/python-modules/jq/default.nix b/pkgs/development/python-modules/jq/default.nix index e73dce818dbf..01c93b61a9fe 100644 --- a/pkgs/development/python-modules/jq/default.nix +++ b/pkgs/development/python-modules/jq/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "jq"; - version = "1.10.2"; + version = "1.11.0"; format = "setuptools"; src = fetchFromGitHub { owner = "mwilliamson"; repo = "jq.py"; tag = version; - hash = "sha256-1BhRX9OWCfHnelktsrje4ejFxMTpSaGbYuocQ2H4pAI="; + hash = "sha256-v5Hi3SkLKX7KrCHiXDuEThSLghDU5VVhNGt1KpMEqC4="; }; env.JQPY_USE_SYSTEM_LIBS = 1; diff --git a/pkgs/development/python-modules/jsonschema-specifications/default.nix b/pkgs/development/python-modules/jsonschema-specifications/default.nix index 288229dbaf5e..74af572a77d5 100644 --- a/pkgs/development/python-modules/jsonschema-specifications/default.nix +++ b/pkgs/development/python-modules/jsonschema-specifications/default.nix @@ -4,9 +4,7 @@ fetchPypi, hatch-vcs, hatchling, - importlib-resources, pytestCheckHook, - pythonOlder, referencing, }: @@ -28,8 +26,7 @@ buildPythonPackage rec { propagatedBuildInputs = [ referencing - ] - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ]; nativeCheckInputs = [ pytestCheckHook ]; diff --git a/pkgs/development/python-modules/jupyter-client/default.nix b/pkgs/development/python-modules/jupyter-client/default.nix index 83d941cbdba6..4066a9f80b34 100644 --- a/pkgs/development/python-modules/jupyter-client/default.nix +++ b/pkgs/development/python-modules/jupyter-client/default.nix @@ -8,8 +8,6 @@ pyzmq, tornado, traitlets, - pythonOlder, - importlib-metadata, }: buildPythonPackage rec { @@ -31,8 +29,7 @@ buildPythonPackage rec { pyzmq tornado traitlets - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; pythonImportsCheck = [ "jupyter_client" ]; diff --git a/pkgs/development/python-modules/jupyterlab-server/default.nix b/pkgs/development/python-modules/jupyterlab-server/default.nix index bfc56ab748d5..a87b821b54aa 100644 --- a/pkgs/development/python-modules/jupyterlab-server/default.nix +++ b/pkgs/development/python-modules/jupyterlab-server/default.nix @@ -2,10 +2,8 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, hatchling, babel, - importlib-metadata, jinja2, json5, jsonschema, @@ -45,8 +43,7 @@ buildPythonPackage rec { jupyter-server packaging requests - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; optional-dependencies = { openapi = [ diff --git a/pkgs/development/python-modules/jupyterlab/default.nix b/pkgs/development/python-modules/jupyterlab/default.nix index 0ea72b1cac0c..f97b5c86cd1d 100644 --- a/pkgs/development/python-modules/jupyterlab/default.nix +++ b/pkgs/development/python-modules/jupyterlab/default.nix @@ -8,7 +8,6 @@ hatchling, async-lru, httpx, - importlib-metadata, ipykernel, jinja2, jupyter-core, @@ -75,8 +74,7 @@ buildPythonPackage rec { tornado traitlets ] - ++ lib.optionals (pythonOlder "3.11") [ tomli ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ++ lib.optionals (pythonOlder "3.11") [ tomli ]; makeWrapperArgs = [ "--set" diff --git a/pkgs/development/python-modules/kanalizer/default.nix b/pkgs/development/python-modules/kanalizer/default.nix index 06965e2120ab..5c2a696f3b1c 100644 --- a/pkgs/development/python-modules/kanalizer/default.nix +++ b/pkgs/development/python-modules/kanalizer/default.nix @@ -7,7 +7,7 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "kanalizer"; version = "0.1.1"; pyproject = true; @@ -15,11 +15,11 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "VOICEVOX"; repo = "kanalizer"; - tag = version; + tag = finalAttrs.version; hash = "sha256-6GxTVlc0Ec80LYQoGgLVRVoi05u6vwt5WGkd4UYX2Lg="; }; - sourceRoot = "${src.name}/infer"; + sourceRoot = "${finalAttrs.src.name}/infer"; model = let @@ -32,13 +32,13 @@ buildPythonPackage rec { prePatch = '' substituteInPlace Cargo.toml \ - --replace-fail 'version = "0.0.0"' 'version = "${version}"' + --replace-fail 'version = "0.0.0"' 'version = "${finalAttrs.version}"' ln -s "$model" crates/kanalizer-rs/models/model-c2k.safetensors ''; cargoDeps = rustPlatform.fetchCargoVendor { - inherit + inherit (finalAttrs) pname version src @@ -68,4 +68,4 @@ buildPythonPackage rec { binaryNativeCode # the model file ]; }; -} +}) diff --git a/pkgs/development/python-modules/lacuscore/default.nix b/pkgs/development/python-modules/lacuscore/default.nix index af4307afed9d..1ed8f6bb91cf 100644 --- a/pkgs/development/python-modules/lacuscore/default.nix +++ b/pkgs/development/python-modules/lacuscore/default.nix @@ -4,7 +4,6 @@ buildPythonPackage, defang, dnspython, - eval-type-backport, fetchFromGitHub, orjson, playwrightcapture, @@ -51,8 +50,7 @@ buildPythonPackage rec { ++ playwrightcapture.optional-dependencies.recaptcha ++ redis.optional-dependencies.hiredis ++ ua-parser.optional-dependencies.regex - ++ lib.optionals (pythonOlder "3.11") [ async-timeout ] - ++ lib.optionals (pythonOlder "3.10") [ eval-type-backport ]; + ++ lib.optionals (pythonOlder "3.11") [ async-timeout ]; # Module has no tests doCheck = false; diff --git a/pkgs/development/python-modules/loopy/default.nix b/pkgs/development/python-modules/loopy/default.nix index 0714ff2f3f24..e8b93f150d03 100644 --- a/pkgs/development/python-modules/loopy/default.nix +++ b/pkgs/development/python-modules/loopy/default.nix @@ -27,7 +27,7 @@ ply, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "loopy"; version = "2025.2"; pyproject = true; @@ -35,7 +35,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "inducer"; repo = "loopy"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-VgsUOMCIg61mYNDMcGpMs5I1CkobhUFVjoQFdD8Vchs="; fetchSubmodules = true; # submodule at `loopy/target/c/compyte` }; @@ -76,8 +76,8 @@ buildPythonPackage rec { meta = { description = "Code generator for array-based code on CPUs and GPUs"; homepage = "https://github.com/inducer/loopy"; - changelog = "https://github.com/inducer/loopy/releases/tag/${src.tag}"; + changelog = "https://github.com/inducer/loopy/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/marshmallow-dataclass/default.nix b/pkgs/development/python-modules/marshmallow-dataclass/default.nix index 41dfa037a406..8a725de16474 100644 --- a/pkgs/development/python-modules/marshmallow-dataclass/default.nix +++ b/pkgs/development/python-modules/marshmallow-dataclass/default.nix @@ -5,10 +5,8 @@ marshmallow, pytestCheckHook, pythonAtLeast, - pythonOlder, setuptools, typeguard, - typing-extensions, typing-inspect, }: @@ -29,8 +27,7 @@ buildPythonPackage rec { dependencies = [ marshmallow typing-inspect - ] - ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]; + ]; nativeCheckInputs = [ pytestCheckHook diff --git a/pkgs/development/python-modules/materialyoucolor/default.nix b/pkgs/development/python-modules/materialyoucolor/default.nix index 0e2fea505303..77ce6e11ab5c 100644 --- a/pkgs/development/python-modules/materialyoucolor/default.nix +++ b/pkgs/development/python-modules/materialyoucolor/default.nix @@ -17,14 +17,14 @@ let hash = "sha256-shGNdgOOydgGBtl/JCbTJ0AYgl+2xWvCgHBL+bEoTaE="; }; in -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "materialyoucolor"; version = "2.0.10"; pyproject = true; # PyPI sources contain additional vendored sources src = fetchPypi { - inherit pname version; + inherit (finalAttrs) pname version; hash = "sha256-MbTUB7mk/UtUswVZsNAxP21tofnRm3VUbtZdpSZx6nY="; }; @@ -56,4 +56,4 @@ buildPythonPackage rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/mcdreforged/default.nix b/pkgs/development/python-modules/mcdreforged/default.nix index 9fe3395d6079..30991c13c275 100644 --- a/pkgs/development/python-modules/mcdreforged/default.nix +++ b/pkgs/development/python-modules/mcdreforged/default.nix @@ -21,14 +21,14 @@ buildPythonPackage rec { pname = "mcdreforged"; - version = "2.15.6"; + version = "2.15.7"; pyproject = true; src = fetchFromGitHub { owner = "MCDReforged"; repo = "MCDReforged"; tag = "v${version}"; - hash = "sha256-k5Mn1GepLoCIiKV8Ys2SZI7hX0rqZKgI6r1l0sM2ty8="; + hash = "sha256-e1JrDh8Zio+TCVCVvH8tBE/tY5ja3Nr3dCQRJwRqYh4="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/meilisearch/default.nix b/pkgs/development/python-modules/meilisearch/default.nix index 1374887798b7..fec556a7d413 100644 --- a/pkgs/development/python-modules/meilisearch/default.nix +++ b/pkgs/development/python-modules/meilisearch/default.nix @@ -7,16 +7,16 @@ requests, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "meilisearch"; - version = "0.39.0"; + version = "0.40.0"; pyproject = true; src = fetchFromGitHub { owner = "meilisearch"; repo = "meilisearch-python"; - tag = "v${version}"; - hash = "sha256-+BhoJjYpvRSMK8P6coHYH0KFTDUKOeeEmyogYpAMWeE="; + tag = "v${finalAttrs.version}"; + hash = "sha256-mxIE2/gZhV8geE0UJ2ModGKs0TPjJLyp38Wvcs59wz8="; }; build-system = [ setuptools ]; @@ -35,8 +35,8 @@ buildPythonPackage rec { meta = { description = "Client for the Meilisearch API"; homepage = "https://github.com/meilisearch/meilisearch-python"; - changelog = "https://github.com/meilisearch/meilisearch-python/releases/tag/${src.tag}"; + changelog = "https://github.com/meilisearch/meilisearch-python/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/metaflow/default.nix b/pkgs/development/python-modules/metaflow/default.nix index 251c24c6e4c6..c7e1c0845e3a 100644 --- a/pkgs/development/python-modules/metaflow/default.nix +++ b/pkgs/development/python-modules/metaflow/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "metaflow"; - version = "2.19.15"; + version = "2.19.16"; pyproject = true; src = fetchFromGitHub { owner = "Netflix"; repo = "metaflow"; tag = version; - hash = "sha256-cVC0rHgRHla93x/2tZA6XBMLfWw6ZmEJvjeq1PhQv6M="; + hash = "sha256-A3r93vmWwpbdVXsaiY4Oo+LRjlkXCT8wpOTlNgQNxL0="; }; build-system = [ diff --git a/pkgs/development/python-modules/mkdocs/default.nix b/pkgs/development/python-modules/mkdocs/default.nix index d1606ce9e596..c82a0e7e3f88 100644 --- a/pkgs/development/python-modules/mkdocs/default.nix +++ b/pkgs/development/python-modules/mkdocs/default.nix @@ -4,7 +4,6 @@ buildPythonPackage, fetchFromGitHub, pythonAtLeast, - pythonOlder, # buildtime hatchling, @@ -12,7 +11,6 @@ # runtime deps click, ghp-import, - importlib-metadata, jinja2, markdown, markupsafe, @@ -72,8 +70,7 @@ buildPythonPackage rec { pyyaml pyyaml-env-tag watchdog - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; optional-dependencies = { i18n = [ babel ]; diff --git a/pkgs/development/python-modules/mkdocstrings/default.nix b/pkgs/development/python-modules/mkdocstrings/default.nix index 3c9741a699b3..d79454834553 100644 --- a/pkgs/development/python-modules/mkdocstrings/default.nix +++ b/pkgs/development/python-modules/mkdocstrings/default.nix @@ -2,7 +2,6 @@ lib, buildPythonPackage, fetchFromGitHub, - importlib-metadata, jinja2, markdown, markupsafe, @@ -11,7 +10,6 @@ pdm-backend, pymdown-extensions, pytestCheckHook, - pythonOlder, dirty-equals, }: @@ -41,9 +39,6 @@ buildPythonPackage rec { mkdocs mkdocs-autorefs pymdown-extensions - ] - ++ lib.optionals (pythonOlder "3.10") [ - importlib-metadata ]; nativeCheckInputs = [ diff --git a/pkgs/development/python-modules/mockupdb/default.nix b/pkgs/development/python-modules/mockupdb/default.nix index 1ef0a68ee826..2bed1610c14e 100644 --- a/pkgs/development/python-modules/mockupdb/default.nix +++ b/pkgs/development/python-modules/mockupdb/default.nix @@ -4,7 +4,6 @@ fetchPypi, pymongo, pythonAtLeast, - pythonOlder, pytestCheckHook, }: @@ -14,7 +13,7 @@ buildPythonPackage rec { format = "setuptools"; # use the removed ssl.wrap_socket function - disabled = pythonOlder "3.9" || pythonAtLeast "3.12"; + disabled = pythonAtLeast "3.12"; src = fetchPypi { inherit pname version; diff --git a/pkgs/development/python-modules/modeled/default.nix b/pkgs/development/python-modules/modeled/default.nix deleted file mode 100644 index 6b1c05e79f25..000000000000 --- a/pkgs/development/python-modules/modeled/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - stdenv, - lib, - buildPythonPackage, - fetchPypi, - zetup, - six, - moretools, - path, - pytestCheckHook, -}: - -buildPythonPackage rec { - pname = "modeled"; - version = "0.1.8"; - format = "setuptools"; - - src = fetchPypi { - extension = "zip"; - inherit pname version; - sha256 = "1wcl3r02q10gxy4xw7g8x2wg2sx4sbawzbfcl7a5xdydrxl4r4v4"; - }; - - buildInputs = [ zetup ]; - - propagatedBuildInputs = [ - six - moretools - path - ]; - - nativeCheckInputs = [ pytestCheckHook ]; - - pythonImportsCheck = [ "modeled" ]; - - meta = { - broken = - (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || stdenv.hostPlatform.isDarwin; - description = "Universal data modeling for Python"; - homepage = "https://github.com/modeled/modeled"; - license = lib.licenses.lgpl3Only; - maintainers = [ ]; - }; -} diff --git a/pkgs/development/python-modules/moretools/default.nix b/pkgs/development/python-modules/moretools/default.nix deleted file mode 100644 index 091964aabf74..000000000000 --- a/pkgs/development/python-modules/moretools/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - six, - path, - zetup, - pytest, - decorator, -}: - -buildPythonPackage rec { - pname = "moretools"; - version = "0.1.12"; - format = "setuptools"; - - src = fetchPypi { - inherit pname version; - sha256 = "73b0469d4f1df6d967508103473f0b1524708adbff71f8f90ef71d9a44226b22"; - }; - - checkPhase = '' - py.test test - ''; - - nativeBuildInputs = [ zetup ]; - nativeCheckInputs = [ - six - path - pytest - ]; - propagatedBuildInputs = [ decorator ]; - - meta = { - description = '' - Many more basic tools for python 2/3 extending itertools, functools, operator and collections - ''; - homepage = "https://bitbucket.org/userzimmermann/python-moretools"; - license = lib.licenses.gpl3Plus; - platforms = lib.platforms.unix; - }; -} diff --git a/pkgs/development/python-modules/mpegdash/default.nix b/pkgs/development/python-modules/mpegdash/default.nix index 3480c4dcafd8..956dd5287c7b 100644 --- a/pkgs/development/python-modules/mpegdash/default.nix +++ b/pkgs/development/python-modules/mpegdash/default.nix @@ -7,14 +7,14 @@ }: buildPythonPackage rec { pname = "mpegdash"; - version = "0.4.0"; + version = "0.4.1"; pyproject = true; src = fetchFromGitHub { owner = "sangwonl"; repo = "python-mpegdash"; rev = version; - hash = "sha256-eKtJ+QzeoMog5X1r1ix9vrmGTi/9KzdJiu80vrTX14I="; + hash = "sha256-WrsTxI6zdPCvzU4bW41kuPpR6B1DcDRUFDbAb9JZnK8="; }; nativeBuildInputs = [ setuptools ]; diff --git a/pkgs/development/python-modules/nbdime/default.nix b/pkgs/development/python-modules/nbdime/default.nix index aa3fd2008932..c43652d4d1fa 100644 --- a/pkgs/development/python-modules/nbdime/default.nix +++ b/pkgs/development/python-modules/nbdime/default.nix @@ -29,12 +29,12 @@ buildPythonPackage rec { pname = "nbdime"; - version = "4.0.2"; + version = "4.0.3"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-2Cefj0sjbAslOyDWDEgxu2eEPtjb1uCfI06wEdNvG/I="; + hash = "sha256-YqtQp1goJSPEUBFEufMUIh27rtBAPBL9cPak/MUy7CQ="; }; build-system = [ diff --git a/pkgs/development/python-modules/numpy/1.nix b/pkgs/development/python-modules/numpy/1.nix index 9e3b3a60d2e8..ca33bdca1994 100644 --- a/pkgs/development/python-modules/numpy/1.nix +++ b/pkgs/development/python-modules/numpy/1.nix @@ -5,7 +5,6 @@ python, numpy_1, pythonAtLeast, - pythonOlder, buildPythonPackage, writeTextFile, @@ -61,7 +60,7 @@ buildPythonPackage rec { pname = "numpy"; version = "1.26.4"; pyproject = true; - disabled = pythonOlder "3.9" || pythonAtLeast "3.13"; + disabled = pythonAtLeast "3.13"; src = fetchPypi { inherit pname version; diff --git a/pkgs/development/python-modules/nutils-poly/default.nix b/pkgs/development/python-modules/nutils-poly/default.nix index f1ea044e2f85..839fdc90fec8 100644 --- a/pkgs/development/python-modules/nutils-poly/default.nix +++ b/pkgs/development/python-modules/nutils-poly/default.nix @@ -9,7 +9,7 @@ unittestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "nutils-poly"; version = "1.0.1"; pyproject = true; @@ -17,12 +17,12 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "nutils"; repo = "poly-py"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-dxFv4Az3uz6Du5dk5KZJ+unVbt3aZjxXliAQZhmBWDM="; }; cargoDeps = rustPlatform.fetchCargoVendor { - inherit pname version src; + inherit (finalAttrs) pname version src; hash = "sha256-3UBQJfMPVo37V7mJnN9loF1+vKh3JxFJWgynwsOnAg4="; }; @@ -44,4 +44,4 @@ buildPythonPackage rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/objsize/default.nix b/pkgs/development/python-modules/objsize/default.nix index 64fac77b1179..a962d81f559e 100644 --- a/pkgs/development/python-modules/objsize/default.nix +++ b/pkgs/development/python-modules/objsize/default.nix @@ -4,24 +4,22 @@ fetchFromGitHub, pytestCheckHook, setuptools, - wheel, }: buildPythonPackage rec { pname = "objsize"; - version = "0.7.1"; + version = "0.8.0"; pyproject = true; src = fetchFromGitHub { owner = "liran-funaro"; repo = "objsize"; tag = version; - hash = "sha256-l0l80dMVWZqWBK4z53NCU+rKOQl6jRZ1zb2SmMnhs1k="; + hash = "sha256-u4PTUk3K3ZCNZ87xM+PoCabsw+EjOoDgNySDWWB7yho="; }; - nativeBuildInputs = [ + build-system = [ setuptools - wheel ]; nativeCheckInputs = [ pytestCheckHook ]; diff --git a/pkgs/development/python-modules/onnx-ir/default.nix b/pkgs/development/python-modules/onnx-ir/default.nix new file mode 100644 index 000000000000..fd2dc9033d38 --- /dev/null +++ b/pkgs/development/python-modules/onnx-ir/default.nix @@ -0,0 +1,87 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + + # build-system + setuptools, + + # dependencies + ml-dtypes, + numpy, + onnx, + typing-extensions, + + # tests + onnxruntime, + parameterized, + pytestCheckHook, + torch, + tqdm, +}: + +buildPythonPackage (finalAttrs: { + pname = "onnx-ir"; + version = "0.1.14_1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "onnx"; + repo = "ir-py"; + tag = "v${finalAttrs.version}"; + hash = "sha256-mlUz5LGMtW4q78lBcbjo96V7k6NL+mt1lSvOU/6GEOY="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + ml-dtypes + numpy + onnx + typing-extensions + ]; + + pythonImportsCheck = [ "onnx_ir" ]; + + nativeCheckInputs = [ + onnxruntime + parameterized + pytestCheckHook + torch + tqdm + ]; + + disabledTests = [ + # fixture 'model_info' not found + "test_model" + + # Flaky: + # onnx.onnx_cpp2py_export.checker.ValidationError: No Op registered for LabelEncoder with domain_version of 4 + # ==> Context: Bad node spec for node. Name: OpType: LabelEncoder + "SerdeTest" + + # Circular dependency with onnxscript + "test_correct_module_name" + ]; + + disabledTestPaths = [ + # Circular dependency with onnxscript + "src/onnx_ir/passes/common/common_subexpression_elimination_test.py" + ]; + + # Importing onnxruntime in the sandbox crashes on aarch64-linux: + # Fatal Python error: Aborted + # See https://github.com/NixOS/nixpkgs/pull/481039 + doCheck = !(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64); + + meta = { + description = "Efficient in-memory representation for ONNX, in Python"; + homepage = "https://github.com/onnx/ir-py"; + changelog = "https://github.com/onnx/ir-py/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/onnxscript/default.nix b/pkgs/development/python-modules/onnxscript/default.nix new file mode 100644 index 000000000000..9b91b2c636d2 --- /dev/null +++ b/pkgs/development/python-modules/onnxscript/default.nix @@ -0,0 +1,322 @@ +{ + lib, + stdenv, + config, + buildPythonPackage, + fetchFromGitHub, + pythonAtLeast, + + # build-system + setuptools, + + # dependencies + ml-dtypes, + numpy, + onnx, + onnx-ir, + packaging, + typing-extensions, + pynvml, + + # tests + onnxruntime, + parameterized, + pytestCheckHook, + torch, + torchvision, + tqdm, + + cudaSupport ? config.cudaSupport, + onnxscript, +}: + +let + # The following tests are disabled in both + # - the main derivation (running without GPU access) + # - passthru.gpuCheck (running with GPU passthrough) + disabledTests = [ + # fixture 'model_info' not found + "test_model" + + # RuntimeError: ONNX Runtime failed to evaluate + # onnxruntime.capi.onnxruntime_pybind11_state.NotImplemented: [ONNXRuntimeError] : 9 : + # NOT_IMPLEMENTED : Could not find an implementation for SplitToSequence(11) node with name '_inlfunc_aten_split_n0' + "test_output_match_opinfo__split_cpu_bool" + "test_output_match_opinfo__split_list_args_cpu_bool" + + # RuntimeError: ONNX Runtime failed to evaluate + # onnxruntime.capi.onnxruntime_pybind11_state.NotImplemented: [ONNXRuntimeError] : 9 : + # NOT_IMPLEMENTED : Could not find an implementation for SplitToSequence(11) node with name '_inlfunc_aten_split_with_sizes_n0' + "test_output_match_opinfo__split_with_sizes_cpu_bool" + ] + ++ lib.optionals (pythonAtLeast "3.14") [ + # TypeError: Expecting a type not f for typeinfo. + "test_function_has_op_schema_073_div_mode" + "test_function_has_op_schema_076_einsum" + "test_function_has_op_schema_116_linalg_vector_norm" + "test_function_has_op_schema_172_nn_functional_pad" + "test_function_has_op_schema_208_repeat_interleave" + "test_function_has_op_schema_209_repeat_interleave" + "test_function_has_op_schema_268_argmax" + "test_function_has_op_schema_269_argmin" + "test_function_has_op_schema_288_logit" + "test_function_has_op_schema_302_nn_functional_avg_pool2d" + "test_function_has_op_schema_303_nn_functional_avg_pool3d" + "test_function_has_op_schema_318_nn_functional_scaled_dot_product_attention" + "test_function_has_op_schema_319_ops_aten__scaled_dot_product_flash_attention" + "test_function_has_op_schema_320_ops_aten__scaled_dot_product_efficient_attention" + "test_function_has_op_schema_321_ops_aten_upsample_bilinear2d_default" + "test_function_has_op_schema_322_ops_aten__upsample_bilinear2d_aa" + "test_function_has_op_schema_323_ops_aten_upsample_bilinear2d_vec" + "test_function_has_op_schema_324_ops_aten_upsample_bicubic2d_default" + "test_function_has_op_schema_325_ops_aten__upsample_bicubic2d_aa" + "test_function_has_op_schema_326_ops_aten_upsample_bicubic2d_vec" + "test_function_has_op_schema_327_ops_aten_upsample_linear1d" + "test_function_has_op_schema_328_ops_aten_upsample_nearest1d" + "test_function_has_op_schema_329_ops_aten_upsample_nearest1d_vec" + "test_function_has_op_schema_330_ops_aten_upsample_nearest2d" + "test_function_has_op_schema_331_ops_aten_upsample_nearest2d_vec" + "test_function_has_op_schema_332_ops_aten_upsample_nearest3d" + "test_function_has_op_schema_333_ops_aten_upsample_nearest3d_vec" + "test_function_has_op_schema_334_ops_aten_upsample_trilinear3d_default" + "test_function_has_op_schema_335_ops_aten_upsample_trilinear3d_vec" + "test_function_has_op_schema_345_ops_aten_stft" + "test_function_has_op_schema_356_ops_prims_var_default" + "test_output_match_opinfo__argmax_cpu_float16" + "test_output_match_opinfo__argmax_cpu_float32" + "test_output_match_opinfo__argmax_cpu_int32" + "test_output_match_opinfo__argmax_cpu_int64" + "test_output_match_opinfo__argmin_cpu_float16" + "test_output_match_opinfo__argmin_cpu_float32" + "test_output_match_opinfo__argmin_cpu_int32" + "test_output_match_opinfo__argmin_cpu_int64" + "test_output_match_opinfo__div_mode_floor_rounding_cpu_float16" + "test_output_match_opinfo__div_mode_floor_rounding_cpu_float32" + "test_output_match_opinfo__div_mode_floor_rounding_cpu_int32" + "test_output_match_opinfo__div_mode_floor_rounding_cpu_int64" + "test_output_match_opinfo__div_mode_trunc_rounding_cpu_float32" + "test_output_match_opinfo__div_mode_trunc_rounding_cpu_int32" + "test_output_match_opinfo__div_mode_trunc_rounding_cpu_int64" + "test_output_match_opinfo__einsum_cpu_float16" + "test_output_match_opinfo__einsum_cpu_float32" + "test_output_match_opinfo__einsum_cpu_int64" + "test_output_match_opinfo__linalg_vector_norm_cpu_float16" + "test_output_match_opinfo__linalg_vector_norm_cpu_float32" + "test_output_match_opinfo__logit_cpu_bool" + "test_output_match_opinfo__logit_cpu_float16" + "test_output_match_opinfo__logit_cpu_float32" + "test_output_match_opinfo__logit_cpu_int32" + "test_output_match_opinfo__logit_cpu_int64" + "test_output_match_opinfo__nn_functional_avg_pool2d_cpu_float16" + "test_output_match_opinfo__nn_functional_avg_pool2d_cpu_float32" + "test_output_match_opinfo__nn_functional_avg_pool2d_cpu_int64" + "test_output_match_opinfo__nn_functional_avg_pool3d_cpu_float32" + "test_output_match_opinfo__nn_functional_avg_pool3d_cpu_int64" + "test_output_match_opinfo__nn_functional_pad_constant_cpu_bool" + "test_output_match_opinfo__nn_functional_pad_constant_cpu_float16" + "test_output_match_opinfo__nn_functional_pad_constant_cpu_float32" + "test_output_match_opinfo__nn_functional_pad_constant_cpu_int32" + "test_output_match_opinfo__nn_functional_pad_constant_cpu_int64" + "test_output_match_opinfo__nn_functional_pad_reflect_cpu_float16" + "test_output_match_opinfo__nn_functional_pad_reflect_cpu_float32" + "test_output_match_opinfo__nn_functional_pad_reflect_cpu_int32" + "test_output_match_opinfo__nn_functional_pad_reflect_cpu_int64" + "test_output_match_opinfo__nn_functional_pad_replicate_cpu_float16" + "test_output_match_opinfo__nn_functional_pad_replicate_cpu_float32" + "test_output_match_opinfo__nn_functional_pad_replicate_cpu_int32" + "test_output_match_opinfo__nn_functional_pad_replicate_cpu_int64" + "test_output_match_opinfo__nn_functional_scaled_dot_product_attention_cpu_float32" + "test_output_match_opinfo__ops_aten__upsample_bicubic2d_aa_cpu_float32" + "test_output_match_opinfo__ops_aten__upsample_bilinear2d_aa_cpu_float32" + "test_output_match_opinfo__ops_aten_stft_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_bicubic2d_default_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_bicubic2d_vec_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_bilinear2d_default_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_bilinear2d_vec_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_linear1d_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_nearest1d_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_nearest1d_vec_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_nearest2d_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_nearest2d_vec_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_nearest3d_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_nearest3d_vec_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_trilinear3d_default_cpu_float32" + "test_output_match_opinfo__ops_aten_upsample_trilinear3d_vec_cpu_float32" + "test_output_match_opinfo__ops_prims_var_default_cpu_float16" + "test_output_match_opinfo__ops_prims_var_default_cpu_float32" + "test_output_match_opinfo__repeat_interleave_cpu_float16" + "test_output_match_opinfo__repeat_interleave_cpu_float32" + "test_output_match_opinfo__repeat_interleave_cpu_int32" + "test_output_match_opinfo__repeat_interleave_cpu_int64" + ]; + + # The following tests require access to a physical GPU to work, otherwise the interpreter crashes: + # Fatal Python error: Aborted + # File "/nix/store/..onnxruntime/capi/onnxruntime_inference_collection.py", line 561 in _create_inference_session + testsRequiringGpu = [ + "test_affine_conv_fusion_without_pad" + "test_conv_affine_fusion" + "test_flatten_to_reshape_dynamic_input" + "test_flatten_to_reshape_rule" + "test_fuse_batchnorm_conv" + "test_fuse_batchnorm_gemm" + "test_fuse_pad_into_conv" + "test_hardsigmoid_fusion" + "test_hardswish_fusion" + "test_layer_norm_fusion_with_bias" + "test_layer_norm_fusion_without_bias" + "test_matmul_add_to_gemm" + "test_normalize_pad_format" + "test_reshape_dynamic_reshape_rule" + "test_reshape_reshape_dynamic_rule" + "test_reshape_reshape_rule" + "test_slice_is_redundant_when_ends_is_greater_than_input_shape" + "test_slice_is_redundant_when_ends_reaches_int64_max" + "test_successful_full_chain_fusion" + "test_successful_fuse_successive_clips" + "test_successful_fuse_successive_min_or_max" + "test_successful_fuse_successive_relu_clip" + "test_successful_fuse_successive_relus" + "test_successful_max_min_to_clip" + "test_successful_min_max_to_clip" + "test_successful_remove_optional_bias_conv" + "test_successful_remove_optional_bias_gemm" + "test_successful_remove_optional_bias_qlinear_conv" + "test_transpose_a_matmul_add_to_gemm" + "test_transpose_ab_matmul_add_to_gemm" + "test_transpose_b_matmul_add_to_gemm" + ]; +in +buildPythonPackage (finalAttrs: { + pname = "onnxscript"; + version = "0.5.7"; + pyproject = true; + + src = fetchFromGitHub { + owner = "microsoft"; + repo = "onnxscript"; + tag = "v${finalAttrs.version}"; + hash = "sha256-8QnVfdI5sfPXF72fbbowbGxVRAnNQr55YEi/QEmXbCw="; + }; + + # Fails with python>=3.14 + # TypeError: descriptor '__getitem__' requires a 'typing.Union' object but received a 'tuple' + postPatch = '' + substituteInPlace onnxscript/type_annotation.py \ + --replace-fail \ + "return pytype_to_type_strings(Union.__getitem__(constraints))" \ + "return pytype_to_type_strings(Union[constraints])" + ''; + + env = { + ONNX_SCRIPT_RELEASE = "1"; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + ml-dtypes + numpy + onnx + onnx-ir + packaging + typing-extensions + ] + ++ lib.optionals cudaSupport [ + pynvml + ]; + + pythonImportsCheck = [ "onnxscript" ]; + + nativeCheckInputs = [ + onnxruntime + parameterized + pytestCheckHook + torch + torchvision + tqdm + ]; + + disabledTests = disabledTests ++ lib.optionals cudaSupport testsRequiringGpu; + + disabledTestPaths = [ + # google.protobuf.message.DecodeError: Error parsing message with type 'onnx.ModelProto' + "tests/ir/graph_view_test.py" + "tests/ir/serde_roundtrip_test.py" + "tests/optimizer/test_models.py" + ]; + + # Importing onnxruntime in the sandbox crashes on aarch64-linux: + # Fatal Python error: Aborted + # See https://github.com/NixOS/nixpkgs/pull/481039 + doCheck = !(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64); + + passthru.gpuCheck = onnxscript.overridePythonAttrs { + requiredSystemFeatures = [ "cuda" ]; + + # Skip all tests that are failing independantly of the GPU availability + disabledTests = disabledTests ++ [ + # AssertionError: Tensor-likes are not close! + "test_output_match_opinfo__cumsum_cuda_float16" + "test_output_match_opinfo__nn_functional_conv1d_cuda_float32" + "test_output_match_opinfo__nn_functional_embedding_cuda_float16" + "test_output_match_opinfo__nn_functional_embedding_cuda_float32" + "test_output_match_opinfo__ops_aten_conv3d_cuda_float32" + "test_output_match_opinfo__ops_aten_convolution_cuda_float32" + "test_output_match_opinfo__ops_aten_embedding_bag_cuda_float32" + "test_output_match_opinfo__ops_aten_embedding_renorm_cuda_float16" + "test_output_match_opinfo__ops_aten_embedding_renorm_cuda_float32" + + # AssertionError: Scalars are not equal! + "test_output_match_opinfo__equal_cuda_bool" + "test_output_match_opinfo__ops_aten_embedding_bag_padding_idx_cuda_float16" + "test_output_match_opinfo__ops_aten_embedding_bag_padding_idx_cuda_float32" + + # TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first. + "test_output_match_opinfo__index_put_cuda_float16" + "test_output_match_opinfo__index_put_cuda_float32" + "test_output_match_opinfo__index_put_cuda_int32" + "test_output_match_opinfo__index_put_cuda_int64" + + # RuntimeError: ONNX Runtime failed to evaluate + # onnxruntime.capi.onnxruntime_pybind11_state.InvalidArgument: [ONNXRuntimeError] : 2 : + # INVALID_ARGUMENT : Non-zero status code returned while running LayerNormalization node. + # Name:'node_LayerNormalization_0' Status Message: Size of X.shape[axis:] must be larger than 1, got 1 + "test_output_match_opinfo__native_layer_norm_cuda_float16" + # onnxruntime.capi.onnxruntime_pybind11_state.NotImplemented: [ONNXRuntimeError] : 9 : + # NOT_IMPLEMENTED : Could not find an implementation for SplitToSequence(11) node with name '_inlfunc_aten_split_n0' + "test_output_match_opinfo__split_cuda_bool" + "test_output_match_opinfo__split_list_args_cuda_bool" + # onnxruntime.capi.onnxruntime_pybind11_state.NotImplemented: [ONNXRuntimeError] : 9 : + # NOT_IMPLEMENTED : Could not find an implementation for SplitToSequence(11) node with name '_inlfunc_aten_split_with_sizes_n0' + "test_output_match_opinfo__split_with_sizes_cuda_bool" + + # AssertionError: ONNX model is invalid + # onnx.onnx_cpp2py_export.shape_inference.InferenceError: [ShapeInferenceError] Inference error(s): + # (op_type:ConstantOfShape, node name: node_ConstantOfShape_67): + # [TypeInferenceError] Inferred elem type differs from existing elem type: (FLOAT) vs (INT64) + "test_output_match_opinfo__ops_aten__scaled_dot_product_efficient_attention_cuda_float32" + + # RuntimeError: FlashAttention only support fp16 and bf16 data type + "test_output_match_opinfo__ops_aten__scaled_dot_product_flash_attention_cuda_float32" + + # Unexpected success + "test_output_match_opinfo__ops_aten_col2im_cuda_float16" + "test_output_match_opinfo__sort_cuda_float16" + + # RuntimeError: expected scalar type Int but found Float + "test_output_match_opinfo__ops_aten_fake_quantize_per_tensor_affine_cuda_float16" + "test_output_match_opinfo__ops_aten_fake_quantize_per_tensor_affine_cuda_float32" + ]; + }; + + meta = { + description = "Naturally author ONNX functions and models using a subset of Python"; + homepage = "https://github.com/microsoft/onnxscript"; + changelog = "https://github.com/microsoft/onnxscript/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/openapi-spec-validator/default.nix b/pkgs/development/python-modules/openapi-spec-validator/default.nix index 5b875a0571bb..10d82f26212c 100644 --- a/pkgs/development/python-modules/openapi-spec-validator/default.nix +++ b/pkgs/development/python-modules/openapi-spec-validator/default.nix @@ -1,14 +1,12 @@ { lib, buildPythonPackage, - pythonOlder, fetchFromGitHub, # build-system poetry-core, # propagates - importlib-resources, jsonschema, jsonschema-path, lazy-object-proxy, @@ -39,8 +37,7 @@ buildPythonPackage rec { jsonschema-path lazy-object-proxy openapi-schema-validator - ] - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ]; nativeCheckInputs = [ pytestCheckHook diff --git a/pkgs/development/python-modules/openstacksdk/default.nix b/pkgs/development/python-modules/openstacksdk/default.nix index 7f071ed81004..fcf87f7d71cb 100644 --- a/pkgs/development/python-modules/openstacksdk/default.nix +++ b/pkgs/development/python-modules/openstacksdk/default.nix @@ -22,7 +22,7 @@ buildPythonPackage rec { pname = "openstacksdk"; - version = "4.8.0"; + version = "4.9.0"; pyproject = true; outputs = [ @@ -32,7 +32,7 @@ buildPythonPackage rec { src = fetchPypi { inherit pname version; - hash = "sha256-TcA44cF9iTAF86ColRRWr9nRSPP2XUSPlK3M6yeNfzE="; + hash = "sha256-soRZx8tkBfnW/Fc2iepcXjV0JIKPbHb3srDXY8gPtuo="; }; postPatch = '' diff --git a/pkgs/development/python-modules/openstacksdk/tests.nix b/pkgs/development/python-modules/openstacksdk/tests.nix index 4e7031b0ff96..8881cfbc51c8 100644 --- a/pkgs/development/python-modules/openstacksdk/tests.nix +++ b/pkgs/development/python-modules/openstacksdk/tests.nix @@ -37,36 +37,28 @@ buildPythonPackage { checkPhase = '' stestr run -e <(echo " - '' - + lib.optionalString stdenv.hostPlatform.isAarch64 '' - openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_node_set_provision_state_with_retries - openstack.tests.unit.cloud.test_role_assignment.TestRoleAssignment.test_grant_role_user_domain_exists - openstack.tests.unit.cloud.test_volume_backups.TestVolumeBackups.test_delete_volume_backup_force - openstack.tests.unit.object_store.v1.test_proxy.TestTempURLBytesPathAndKey.test_set_account_temp_url_key_second - openstack.tests.unit.cloud.test_security_groups.TestSecurityGroups.test_delete_security_group_neutron_not_found - '' - + '' - openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_wait_for_baremetal_node_lock_locked - openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_inspect_failed openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_available_wait + openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_inspect_failed openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_inspect_machine_wait - openstack.tests.unit.cloud.test_image.TestImage.test_create_image_task - openstack.tests.unit.image.v2.test_proxy.TestImageProxy.test_wait_for_task_error_396 - openstack.tests.unit.image.v2.test_proxy.TestImageProxy.test_wait_for_task_wait + openstack.tests.unit.cloud.test_baremetal_node.TestBaremetalNode.test_wait_for_baremetal_node_lock_locked + openstack.tests.unit.cloud.test_volume_backups.TestVolumeBackups.test_delete_volume_backup_force + openstack.tests.unit.cloud.test_volume_backups.TestVolumeBackups.test_delete_volume_backup_wait openstack.tests.unit.image.v2.test_proxy.TestTask.test_wait_for_task_error_396 openstack.tests.unit.image.v2.test_proxy.TestTask.test_wait_for_task_wait openstack.tests.unit.test_resource.TestWaitForDelete.test_callback - openstack.tests.unit.test_resource.TestWaitForDelete.test_callback_without_progress openstack.tests.unit.test_resource.TestWaitForDelete.test_status openstack.tests.unit.test_resource.TestWaitForDelete.test_success_not_found openstack.tests.unit.test_resource.TestWaitForStatus.test_callback + openstack.tests.unit.test_resource.TestWaitForStatus.test_callback_without_progress openstack.tests.unit.test_resource.TestWaitForStatus.test_status_fails openstack.tests.unit.test_resource.TestWaitForStatus.test_status_fails_different_attribute openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match - openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match_with_none + openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match_different_attribute + openstack.tests.unit.test_resource.TestWaitForStatus.test_status_match_none openstack.tests.unit.test_stats.TestStats.test_list_projects openstack.tests.unit.test_stats.TestStats.test_projects openstack.tests.unit.test_stats.TestStats.test_servers + openstack.tests.unit.test_stats.TestStats.test_servers_error openstack.tests.unit.test_stats.TestStats.test_servers_no_detail openstack.tests.unit.test_stats.TestStats.test_timeout ") diff --git a/pkgs/development/python-modules/opower/default.nix b/pkgs/development/python-modules/opower/default.nix index cb8ff61bab36..117ac904cf18 100644 --- a/pkgs/development/python-modules/opower/default.nix +++ b/pkgs/development/python-modules/opower/default.nix @@ -15,14 +15,14 @@ buildPythonPackage (finalAttrs: { pname = "opower"; - version = "0.16.3"; + version = "0.16.4"; pyproject = true; src = fetchFromGitHub { owner = "tronikos"; repo = "opower"; tag = "v${finalAttrs.version}"; - hash = "sha256-+LkLbIJR6v4icoQFIsipR+PfrF5ZgcEh5d1nAwVTldU="; + hash = "sha256-r1evfPKvuMXlOvpwqqOSyC80TpZWphYhDVQCi9IiI+8="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/paddle-bfloat/default.nix b/pkgs/development/python-modules/paddle-bfloat/default.nix index 07b1eaf62686..506330be24f7 100644 --- a/pkgs/development/python-modules/paddle-bfloat/default.nix +++ b/pkgs/development/python-modules/paddle-bfloat/default.nix @@ -2,7 +2,6 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, pythonAtLeast, numpy, }: @@ -27,7 +26,7 @@ buildPythonPackage { --replace "Py_TYPE(&NPyBfloat16_Descr) = &PyArrayDescr_Type" "Py_SET_TYPE(&NPyBfloat16_Descr, &PyArrayDescr_Type)" ''; - disabled = pythonOlder "3.9" || pythonAtLeast "3.12"; + disabled = pythonAtLeast "3.12"; propagatedBuildInputs = [ numpy ]; diff --git a/pkgs/development/python-modules/parver/default.nix b/pkgs/development/python-modules/parver/default.nix index 50c6b4fa5766..c530c4527099 100644 --- a/pkgs/development/python-modules/parver/default.nix +++ b/pkgs/development/python-modules/parver/default.nix @@ -2,14 +2,12 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, setuptools, attrs, pytestCheckHook, hypothesis, pretend, arpeggio, - typing-extensions, }: buildPythonPackage rec { @@ -27,8 +25,7 @@ buildPythonPackage rec { propagatedBuildInputs = [ attrs arpeggio - ] - ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]; + ]; nativeCheckInputs = [ pytestCheckHook diff --git a/pkgs/development/python-modules/pbs-installer/default.nix b/pkgs/development/python-modules/pbs-installer/default.nix index ccb782c23b7c..686b1c8172b9 100644 --- a/pkgs/development/python-modules/pbs-installer/default.nix +++ b/pkgs/development/python-modules/pbs-installer/default.nix @@ -9,14 +9,14 @@ buildPythonPackage rec { pname = "pbs-installer"; - version = "2026.01.13"; + version = "2026.01.14"; pyproject = true; src = fetchFromGitHub { owner = "frostming"; repo = "pbs-installer"; tag = version; - hash = "sha256-wyO5Knjo/FmWl/SMC6K2wPwQI2tVz7bfyD7Pl1yeFkk="; + hash = "sha256-u7RdzRQRweEjCu8Rp+PkaUZg1FxpM7UssbhD0BonOtY="; }; build-system = [ pdm-backend ]; diff --git a/pkgs/development/python-modules/pcapy-ng/default.nix b/pkgs/development/python-modules/pcapy-ng/default.nix index 719e2baf7856..27c97d004948 100644 --- a/pkgs/development/python-modules/pcapy-ng/default.nix +++ b/pkgs/development/python-modules/pcapy-ng/default.nix @@ -6,7 +6,6 @@ libpcap, pkgconfig, pytestCheckHook, - pythonOlder, }: buildPythonPackage rec { @@ -36,7 +35,7 @@ buildPythonPackage rec { pythonImportsCheck = [ "pcapy" ]; - doCheck = pythonOlder "3.10"; + doCheck = false; enabledTestPaths = [ "pcapytests.py" ]; diff --git a/pkgs/development/python-modules/pendulum/default.nix b/pkgs/development/python-modules/pendulum/default.nix index b6472c24528d..2a30200bf269 100644 --- a/pkgs/development/python-modules/pendulum/default.nix +++ b/pkgs/development/python-modules/pendulum/default.nix @@ -3,8 +3,6 @@ stdenv, buildPythonPackage, fetchFromGitHub, - fetchpatch, - pythonOlder, isPyPy, # build-system @@ -15,7 +13,6 @@ iconv, # dependencies - importlib-resources, python-dateutil, time-machine, tzdata, @@ -58,9 +55,6 @@ buildPythonPackage rec { ] ++ lib.optionals (!isPyPy) [ time-machine - ] - ++ lib.optionals (pythonOlder "3.9") [ - importlib-resources ]; pythonImportsCheck = [ "pendulum" ]; diff --git a/pkgs/development/python-modules/phe/default.nix b/pkgs/development/python-modules/phe/default.nix index aea25b378ea3..5c3e4e2a345d 100644 --- a/pkgs/development/python-modules/phe/default.nix +++ b/pkgs/development/python-modules/phe/default.nix @@ -11,7 +11,7 @@ numpy, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "phe"; version = "1.5.1"; pyproject = true; @@ -22,7 +22,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "data61"; repo = "python-paillier"; - tag = version; + tag = finalAttrs.version; hash = "sha256-P//4ZL4+2zcB5sWvujs2N0CHFz+EBLERWrPGLLHj6CY="; }; @@ -45,4 +45,4 @@ buildPythonPackage rec { license = lib.licenses.gpl3; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/pillow/default.nix b/pkgs/development/python-modules/pillow/default.nix index 04a1ef8b6369..7e7fef0ee281 100644 --- a/pkgs/development/python-modules/pillow/default.nix +++ b/pkgs/development/python-modules/pillow/default.nix @@ -2,7 +2,6 @@ lib, stdenv, buildPythonPackage, - pythonOlder, fetchFromGitHub, # build-system @@ -26,7 +25,6 @@ # optional dependencies defusedxml, olefile, - typing-extensions, # tests numpy, @@ -100,7 +98,6 @@ buildPythonPackage rec { optional-dependencies = { fpx = [ olefile ]; mic = [ olefile ]; - typing = lib.optionals (pythonOlder "3.10") [ typing-extensions ]; xmp = [ defusedxml ]; }; diff --git a/pkgs/development/python-modules/plantuml-markdown/default.nix b/pkgs/development/python-modules/plantuml-markdown/default.nix index e5998caeb092..3f203385238a 100644 --- a/pkgs/development/python-modules/plantuml-markdown/default.nix +++ b/pkgs/development/python-modules/plantuml-markdown/default.nix @@ -65,6 +65,5 @@ buildPythonPackage rec { homepage = "https://github.com/mikitex70/plantuml-markdown"; changelog = "https://github.com/mikitex70/plantuml-markdown/releases/tag/${src.tag}"; license = lib.licenses.bsd2; - maintainers = with lib.maintainers; [ nikstur ]; }; } diff --git a/pkgs/development/python-modules/plantuml/default.nix b/pkgs/development/python-modules/plantuml/default.nix index 29d89e69935e..e2c46cf32417 100644 --- a/pkgs/development/python-modules/plantuml/default.nix +++ b/pkgs/development/python-modules/plantuml/default.nix @@ -33,6 +33,5 @@ buildPythonPackage { description = "Python interface to a plantuml web service instead of having to run java locally"; homepage = "https://github.com/dougn/python-plantuml"; license = lib.licenses.bsd2; - maintainers = with lib.maintainers; [ nikstur ]; }; } diff --git a/pkgs/development/python-modules/pluthon/default.nix b/pkgs/development/python-modules/pluthon/default.nix index aae077325b35..328d6272f3ad 100644 --- a/pkgs/development/python-modules/pluthon/default.nix +++ b/pkgs/development/python-modules/pluthon/default.nix @@ -3,10 +3,8 @@ fetchFromGitHub, buildPythonPackage, setuptools, - pythonOlder, # Python deps uplc, - graphlib-backport, ordered-set, }: @@ -27,8 +25,7 @@ buildPythonPackage rec { setuptools uplc ordered-set - ] - ++ lib.optional (pythonOlder "3.9") graphlib-backport; + ]; pythonImportsCheck = [ "pluthon" ]; diff --git a/pkgs/development/python-modules/plyara/default.nix b/pkgs/development/python-modules/plyara/default.nix index c6b3616286b0..337000b71da2 100644 --- a/pkgs/development/python-modules/plyara/default.nix +++ b/pkgs/development/python-modules/plyara/default.nix @@ -1,7 +1,6 @@ { lib, buildPythonPackage, - pythonOlder, fetchFromGitHub, setuptools, ply, @@ -18,8 +17,6 @@ buildPythonPackage rec { version = "2.2.8"; pyproject = true; - disabled = pythonOlder "3.10"; # https://github.com/plyara/plyara: "Plyara requires Python 3.10+" - src = fetchFromGitHub { owner = "plyara"; repo = "plyara"; diff --git a/pkgs/development/python-modules/prophet/default.nix b/pkgs/development/python-modules/prophet/default.nix index 269dfb8a122f..e557f03774ed 100644 --- a/pkgs/development/python-modules/prophet/default.nix +++ b/pkgs/development/python-modules/prophet/default.nix @@ -18,7 +18,7 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "prophet"; version = "1.2.1"; pyproject = true; @@ -26,11 +26,11 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "facebook"; repo = "prophet"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-rG21Q4V0XQjReIHd7vV/aFOUvnLEw/dm8AobXRDUfuA="; }; - sourceRoot = "${src.name}/python"; + sourceRoot = "${finalAttrs.src.name}/python"; env.PROPHET_REPACKAGE_CMDSTAN = "false"; @@ -63,10 +63,10 @@ buildPythonPackage rec { pythonImportsCheck = [ "prophet" ]; meta = { - changelog = "https://github.com/facebook/prophet/releases/tag/${src.tag}"; + changelog = "https://github.com/facebook/prophet/releases/tag/${finalAttrs.src.tag}"; description = "Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth"; homepage = "https://facebook.github.io/prophet/"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/publicsuffixlist/default.nix b/pkgs/development/python-modules/publicsuffixlist/default.nix index 8badd59781da..6d7128a5a390 100644 --- a/pkgs/development/python-modules/publicsuffixlist/default.nix +++ b/pkgs/development/python-modules/publicsuffixlist/default.nix @@ -11,12 +11,12 @@ buildPythonPackage (finalAttrs: { pname = "publicsuffixlist"; - version = "1.0.2.20260114"; + version = "1.0.2.20260117"; pyproject = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-PO+kopKEHUBqbFoHvGVQQVbssb4d2ZzXMLmLYzLx1S0="; + hash = "sha256-JOESMNtP5Nfmi7QyA/gL9Sf2FMBiWn3CdJ17BETYWOU="; }; postPatch = '' diff --git a/pkgs/development/python-modules/pure-python-adb/default.nix b/pkgs/development/python-modules/pure-python-adb/default.nix index de63caf83b6f..f920e1dc5260 100644 --- a/pkgs/development/python-modules/pure-python-adb/default.nix +++ b/pkgs/development/python-modules/pure-python-adb/default.nix @@ -3,7 +3,6 @@ buildPythonPackage, fetchPypi, lib, - pythonOlder, pytestCheckHook, }: @@ -21,7 +20,7 @@ buildPythonPackage rec { async = [ aiofiles ]; }; - doCheck = pythonOlder "3.10"; # all tests result in RuntimeError on 3.10 + doCheck = false; # all tests result in RuntimeError nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.async; diff --git a/pkgs/development/python-modules/pwntools/default.nix b/pkgs/development/python-modules/pwntools/default.nix index f095c11f4896..5f7d03a377de 100644 --- a/pkgs/development/python-modules/pwntools/default.nix +++ b/pkgs/development/python-modules/pwntools/default.nix @@ -33,12 +33,12 @@ let in buildPythonPackage rec { pname = "pwntools"; - version = "4.14.1"; + version = "4.15.0"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-YPBJdtFyISDRi51QVTQIoCRmS1z4iPNvJYr8pL8DXKw="; + hash = "sha256-2ZqRcpjBynJBtRu6mtIhLyr0Qe9mSIBZskJlCOmip3Y="; }; postPatch = '' diff --git a/pkgs/development/python-modules/py65/default.nix b/pkgs/development/python-modules/py65/default.nix index a6dc3e89fbb8..b6da376554b1 100644 --- a/pkgs/development/python-modules/py65/default.nix +++ b/pkgs/development/python-modules/py65/default.nix @@ -6,7 +6,7 @@ unittestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "py65"; version = "1.2.0"; pyproject = true; @@ -14,7 +14,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "mnaberez"; repo = "py65"; - tag = version; + tag = finalAttrs.version; hash = "sha256-BMX+sMPx/YBFA4NFkaY0rl0EPicGHgb6xXVvLEIdllA="; }; @@ -31,11 +31,11 @@ buildPythonPackage rec { debugger. Py65Mon provides a command line with many convenient commands for interacting with the simulated 6502-based system. ''; - changelog = "https://github.com/mnaberez/py65/blob/${src.rev}/CHANGES.txt"; + changelog = "https://github.com/mnaberez/py65/blob/${finalAttrs.src.rev}/CHANGES.txt"; license = lib.licenses.bsd3; mainProgram = "py65mon"; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/pybigwig/default.nix b/pkgs/development/python-modules/pybigwig/default.nix index 0a3efb9bd326..7b82f2ecea42 100644 --- a/pkgs/development/python-modules/pybigwig/default.nix +++ b/pkgs/development/python-modules/pybigwig/default.nix @@ -9,14 +9,14 @@ buildPythonPackage rec { pname = "pybigwig"; - version = "0.3.24"; + version = "0.3.25"; format = "setuptools"; src = fetchFromGitHub { owner = "deeptools"; repo = "pyBigWig"; tag = version; - hash = "sha256-gK3cOwbvQtf+g1H/4x69swqCFdkBwpV7ZOrbE0eANh0="; + hash = "sha256-Vq/QdJg2qObJ49lHZ4RjULfI0f7pScLRWGW8NBZoMAw="; }; buildInputs = [ zlib ]; diff --git a/pkgs/development/python-modules/pycairo/default.nix b/pkgs/development/python-modules/pycairo/default.nix index f763019b1020..1575b0275583 100644 --- a/pkgs/development/python-modules/pycairo/default.nix +++ b/pkgs/development/python-modules/pycairo/default.nix @@ -1,6 +1,5 @@ { lib, - pythonOlder, fetchFromGitHub, meson, ninja, @@ -8,7 +7,6 @@ pytestCheckHook, pkg-config, cairo, - libxcrypt, python, }: @@ -31,7 +29,7 @@ buildPythonPackage rec { pkg-config ]; - buildInputs = [ cairo ] ++ lib.optionals (pythonOlder "3.9") [ libxcrypt ]; + buildInputs = [ cairo ]; nativeCheckInputs = [ pytestCheckHook ]; diff --git a/pkgs/development/python-modules/pydal/default.nix b/pkgs/development/python-modules/pydal/default.nix index 214bf99f93b9..dce483024e0c 100644 --- a/pkgs/development/python-modules/pydal/default.nix +++ b/pkgs/development/python-modules/pydal/default.nix @@ -10,12 +10,12 @@ buildPythonPackage rec { pname = "pydal"; - version = "20260110.1"; + version = "20260118.1"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-YBcZB9q54pphCDObUgRqPe6LUO99ojLTK4Gqwuv0RaA="; + hash = "sha256-bJ9/pnip0IKzI/nmTXcNfv1QpGVDEH+1eQi2zMr/u88="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/pykakasi/default.nix b/pkgs/development/python-modules/pykakasi/default.nix index 3ea76b573612..cbb3d467ec26 100644 --- a/pkgs/development/python-modules/pykakasi/default.nix +++ b/pkgs/development/python-modules/pykakasi/default.nix @@ -3,12 +3,10 @@ buildPythonPackage, deprecated, fetchFromGitea, - importlib-resources, jaconv, py-cpuinfo, pytest-benchmark, pytestCheckHook, - pythonOlder, setuptools-scm, }: @@ -30,8 +28,7 @@ buildPythonPackage rec { dependencies = [ jaconv deprecated - ] - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ]; nativeCheckInputs = [ py-cpuinfo diff --git a/pkgs/development/python-modules/pylint/default.nix b/pkgs/development/python-modules/pylint/default.nix index af8be3288dc7..6a899b5a7926 100644 --- a/pkgs/development/python-modules/pylint/default.nix +++ b/pkgs/development/python-modules/pylint/default.nix @@ -44,8 +44,7 @@ buildPythonPackage rec { platformdirs tomlkit ] - ++ lib.optionals (pythonOlder "3.11") [ tomli ] - ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]; + ++ lib.optionals (pythonOlder "3.11") [ tomli ]; nativeCheckInputs = [ gitpython diff --git a/pkgs/development/python-modules/pymupdf/default.nix b/pkgs/development/python-modules/pymupdf/default.nix index c7eb2afb2c1d..589b57f819a3 100644 --- a/pkgs/development/python-modules/pymupdf/default.nix +++ b/pkgs/development/python-modules/pymupdf/default.nix @@ -44,14 +44,14 @@ let in buildPythonPackage rec { pname = "pymupdf"; - version = "1.26.6"; + version = "1.26.7"; pyproject = true; src = fetchFromGitHub { owner = "pymupdf"; repo = "PyMuPDF"; tag = version; - hash = "sha256-CYDgMhsOqqm9AscJxVcjU72P63gpJafj+2cj03RFGaw="; + hash = "sha256-7OidTOG3KAx7EaQ3Bu4i1Fw007oXVAipBHeYNkmbIcA="; }; patches = [ diff --git a/pkgs/development/python-modules/pyopenjtalk/default.nix b/pkgs/development/python-modules/pyopenjtalk/default.nix index efc59b4b952e..a6397785966b 100644 --- a/pkgs/development/python-modules/pyopenjtalk/default.nix +++ b/pkgs/development/python-modules/pyopenjtalk/default.nix @@ -24,7 +24,7 @@ let hash = "sha256-+6cHKujNEzmJbpN9Uan6kZKsPdwxRRzT3ZazDnCNi3s="; }; in -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "pyopenjtalk"; version = "0.4.1"; pyproject = true; @@ -32,7 +32,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "r9y9"; repo = "pyopenjtalk"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-f0JNiMCeKpTY+jH3/9LuCkX2DRb9U8sN0SezT6OTm/E="; fetchSubmodules = true; }; @@ -70,10 +70,10 @@ buildPythonPackage rec { pythonImportsCheck = [ "pyopenjtalk" ]; meta = { - changelog = "https://github.com/r9y9/pyopenjtalk/releases/tag/${src.tag}"; + changelog = "https://github.com/r9y9/pyopenjtalk/releases/tag/${finalAttrs.src.tag}"; description = "Python wrapper for OpenJTalk"; homepage = "https://github.com/r9y9/pyopenjtalk"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/pypdf2/default.nix b/pkgs/development/python-modules/pypdf2/default.nix index 3dd1a8166818..1fbf80ad74c6 100644 --- a/pkgs/development/python-modules/pypdf2/default.nix +++ b/pkgs/development/python-modules/pypdf2/default.nix @@ -3,8 +3,6 @@ fetchPypi, flit-core, lib, - pythonOlder, - typing-extensions, }: buildPythonPackage rec { @@ -21,8 +19,6 @@ buildPythonPackage rec { nativeBuildInputs = [ flit-core ]; - dependencies = lib.optionals (pythonOlder "3.10") [ typing-extensions ]; - # no test doCheck = false; diff --git a/pkgs/development/python-modules/pyrtlsdr/default.nix b/pkgs/development/python-modules/pyrtlsdr/default.nix index a82317688d5e..ec22db642180 100644 --- a/pkgs/development/python-modules/pyrtlsdr/default.nix +++ b/pkgs/development/python-modules/pyrtlsdr/default.nix @@ -19,7 +19,7 @@ buildPythonPackage rec { propagatedBuildInputs = [ setuptools ]; postPatch = '' - sed "s|driver_files =.*|driver_files = ['${rtl-sdr}/lib/librtlsdr.so']|" -i rtlsdr/librtlsdr.py + sed "s|driver_files =.*|driver_files = ['${lib.getLib rtl-sdr}/lib/librtlsdr.so']|" -i rtlsdr/librtlsdr.py ''; # No tests that can be used. diff --git a/pkgs/development/python-modules/pyside2/default.nix b/pkgs/development/python-modules/pyside2/default.nix index 069f927dc3cc..4a0215fe59da 100644 --- a/pkgs/development/python-modules/pyside2/default.nix +++ b/pkgs/development/python-modules/pyside2/default.nix @@ -4,7 +4,6 @@ lib, stdenv, cmake, - libxcrypt, ninja, qt5, shiboken2, @@ -85,12 +84,7 @@ stdenv.mkDerivation rec { ++ lib.optionals withWebengine [ qt5.qtwebengine ] - ++ (with python.pkgs; [ setuptools ]) - ++ (lib.optionals (python.pythonOlder "3.9") [ - # see similar issue: 202262 - # libxcrypt is required for crypt.h for building older python modules - libxcrypt - ]); + ++ (with python.pkgs; [ setuptools ]); propagatedBuildInputs = [ shiboken2 ]; diff --git a/pkgs/development/python-modules/pystache/default.nix b/pkgs/development/python-modules/pystache/default.nix index 529cee0c0ba5..3aa24b34ceaa 100644 --- a/pkgs/development/python-modules/pystache/default.nix +++ b/pkgs/development/python-modules/pystache/default.nix @@ -2,10 +2,8 @@ lib, fetchFromGitHub, buildPythonPackage, - pythonOlder, setuptools, setuptools-scm, - importlib-metadata, pytestCheckHook, }: @@ -26,10 +24,6 @@ buildPythonPackage rec { setuptools-scm ]; - dependencies = lib.optionals (pythonOlder "3.10") [ - importlib-metadata - ]; - nativeCheckInputs = [ pytestCheckHook ]; pythonImportsCheck = [ "pystache" ]; diff --git a/pkgs/development/python-modules/pytest-spec/default.nix b/pkgs/development/python-modules/pytest-spec/default.nix index 950449d1c652..6167d0d40974 100644 --- a/pkgs/development/python-modules/pytest-spec/default.nix +++ b/pkgs/development/python-modules/pytest-spec/default.nix @@ -9,7 +9,7 @@ pytest-describe, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "pytest-spec"; version = "5.2.0"; pyproject = true; @@ -17,7 +17,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "pchomik"; repo = "pytest-spec"; - tag = version; + tag = finalAttrs.version; hash = "sha256-nKBzQrosgTKHoID43u6G31fphsDyCVZhsNQuYIHiLfA="; }; @@ -36,10 +36,10 @@ buildPythonPackage rec { pythonImportsCheck = [ "pytest_spec" ]; meta = { - changelog = "https://github.com/pchomik/pytest-spec/blob/${src.tag}/CHANGES.txt"; + changelog = "https://github.com/pchomik/pytest-spec/blob/${finalAttrs.src.rev}/CHANGES.txt"; description = "Pytest plugin to display test execution output like a SPECIFICATION"; homepage = "https://github.com/pchomik/pytest-spec"; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/python-escpos/default.nix b/pkgs/development/python-modules/python-escpos/default.nix index 257870f5b6aa..a22e446e8f95 100644 --- a/pkgs/development/python-modules/python-escpos/default.nix +++ b/pkgs/development/python-modules/python-escpos/default.nix @@ -28,7 +28,7 @@ hypothesis, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "python-escpos"; version = "3.1"; pyproject = true; @@ -36,7 +36,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "python-escpos"; repo = "python-escpos"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-f7qA1+8PwnXS526jjULEoyn0ejnvsneuWDt863p4J2g="; fetchSubmodules = true; }; @@ -85,16 +85,16 @@ buildPythonPackage rec { mock hypothesis ] - ++ optional-dependencies.all; + ++ finalAttrs.passthru.optional-dependencies.all; pythonImportsCheck = [ "escpos" ]; meta = { - changelog = "https://github.com/python-escpos/python-escpos/blob/${src.rev}/CHANGELOG.rst"; + changelog = "https://github.com/python-escpos/python-escpos/blob/${finalAttrs.src.rev}/CHANGELOG.rst"; description = "Python library to manipulate ESC/POS printers"; homepage = "https://python-escpos.readthedocs.io/"; license = lib.licenses.mit; mainProgram = "python-escpos"; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/pyvizio/default.nix b/pkgs/development/python-modules/pyvizio/default.nix index 765d24bf70cb..1ec483044d8b 100644 --- a/pkgs/development/python-modules/pyvizio/default.nix +++ b/pkgs/development/python-modules/pyvizio/default.nix @@ -14,12 +14,12 @@ buildPythonPackage (finalAttrs: { pname = "pyvizio"; - version = "0.1.63"; + version = "0.1.64"; pyproject = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-bRdxIqU3euzrtMvD00nPxOD69VWP2vkGZHxUe3O/YP8="; + hash = "sha256-P31vxmpaaPYxpKZPXoXDmNi4iNycTJdlXLGa7XjRLeY="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/quart-cors/default.nix b/pkgs/development/python-modules/quart-cors/default.nix index 65a4f298b730..05097965ad07 100644 --- a/pkgs/development/python-modules/quart-cors/default.nix +++ b/pkgs/development/python-modules/quart-cors/default.nix @@ -2,14 +2,12 @@ lib, buildPythonPackage, fetchFromGitHub, - pythonOlder, # build-system pdm-backend, # propagates quart, - typing-extensions, # tests pytestCheckHook, @@ -31,7 +29,7 @@ buildPythonPackage rec { build-system = [ pdm-backend ]; - dependencies = [ quart ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]; + dependencies = [ quart ]; pythonImportsCheck = [ "quart_cors" ]; diff --git a/pkgs/development/python-modules/quart/default.nix b/pkgs/development/python-modules/quart/default.nix index 4867a891647f..8a5b5a650421 100644 --- a/pkgs/development/python-modules/quart/default.nix +++ b/pkgs/development/python-modules/quart/default.nix @@ -2,7 +2,6 @@ lib, buildPythonPackage, fetchFromGitHub, - pythonOlder, # build-system flit-core, @@ -13,13 +12,11 @@ click, flask, hypercorn, - importlib-metadata, itsdangerous, jinja2, markupsafe, pydata-sphinx-theme, python-dotenv, - typing-extensions, werkzeug, # tests @@ -57,10 +54,6 @@ buildPythonPackage rec { pydata-sphinx-theme python-dotenv werkzeug - ] - ++ lib.optionals (pythonOlder "3.10") [ - importlib-metadata - typing-extensions ]; pythonImportsCheck = [ "quart" ]; diff --git a/pkgs/development/python-modules/ray/default.nix b/pkgs/development/python-modules/ray/default.nix index 247015bd3269..964f00238393 100644 --- a/pkgs/development/python-modules/ray/default.nix +++ b/pkgs/development/python-modules/ray/default.nix @@ -2,7 +2,6 @@ lib, stdenv, buildPythonPackage, - pythonOlder, pythonAtLeast, python, fetchPypi, @@ -80,7 +79,7 @@ buildPythonPackage rec { inherit pname version; format = "wheel"; - disabled = pythonOlder "3.9" || pythonAtLeast "3.14"; + disabled = pythonAtLeast "3.14"; src = let diff --git a/pkgs/development/python-modules/rns/default.nix b/pkgs/development/python-modules/rns/default.nix index 696144d28392..607b3d515fef 100644 --- a/pkgs/development/python-modules/rns/default.nix +++ b/pkgs/development/python-modules/rns/default.nix @@ -14,14 +14,14 @@ buildPythonPackage (finalAttrs: { pname = "rns"; - version = "1.1.2"; + version = "1.1.3"; pyproject = true; src = fetchFromGitHub { owner = "markqvist"; repo = "Reticulum"; tag = finalAttrs.version; - hash = "sha256-KX6g9RGPHg3W/gzVaVoPBMpmPQs2jEJaDFDlA6D9Ql8="; + hash = "sha256-Iz/1mSCww/v6wsRTG5j55IRTOjQ6y2eOlBda/CcwsOE="; }; patches = [ diff --git a/pkgs/development/python-modules/robotframework-tools/default.nix b/pkgs/development/python-modules/robotframework-tools/default.nix deleted file mode 100644 index 8bd613595a24..000000000000 --- a/pkgs/development/python-modules/robotframework-tools/default.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - robotframework, - moretools, - path, - six, - zetup, - modeled, - pytestCheckHook, -}: - -buildPythonPackage rec { - version = "0.1rc4"; - format = "setuptools"; - pname = "robotframework-tools"; - - src = fetchPypi { - inherit pname version; - sha256 = "0377ikajf6c3zcy3lc0kh4w9zmlqyplk2c2hb0yyc7h3jnfnya96"; - }; - - nativeBuildInputs = [ zetup ]; - - propagatedBuildInputs = [ - robotframework - moretools - path - six - modeled - ]; - - postPatch = '' - # Remove upstream's selfmade approach to collect the dependencies - # https://github.com/userzimmermann/robotframework-tools/issues/1 - substituteInPlace setup.py --replace \ - "setup_requires=SETUP_REQUIRES + (zfg.SETUP_REQUIRES or [])," "" - ''; - - nativeCheckInputs = [ pytestCheckHook ]; - enabledTestPaths = [ "test" ]; - pythonImportsCheck = [ "robottools" ]; - - meta = { - description = "Python Tools for Robot Framework and Test Libraries"; - homepage = "https://github.com/userzimmermann/robotframework-tools"; - license = lib.licenses.gpl3Plus; - maintainers = [ ]; - }; -} diff --git a/pkgs/development/python-modules/rocketchat-api/default.nix b/pkgs/development/python-modules/rocketchat-api/default.nix index 340e71a418e1..0fee7f4214a6 100644 --- a/pkgs/development/python-modules/rocketchat-api/default.nix +++ b/pkgs/development/python-modules/rocketchat-api/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "rocketchat-api"; - version = "2.0.0"; + version = "2.1.0"; pyproject = true; src = fetchFromGitHub { owner = "jadolg"; repo = "rocketchat_API"; tag = version; - hash = "sha256-CIC2pVFN+cN9HCdIHX1VFXJ5eqIgdNXBSmzt/9LH1JE="; + hash = "sha256-rkjo2DdWGOekr0VICH6+08wQxI8XkLKtznfjFDkeK04="; }; build-system = [ diff --git a/pkgs/development/python-modules/scancode-toolkit/default.nix b/pkgs/development/python-modules/scancode-toolkit/default.nix index d0aa69df593f..bfde86cd69ab 100644 --- a/pkgs/development/python-modules/scancode-toolkit/default.nix +++ b/pkgs/development/python-modules/scancode-toolkit/default.nix @@ -45,7 +45,6 @@ pygments, pymaven-patch, pytestCheckHook, - pythonOlder, requests, saneyaml, setuptools, @@ -57,7 +56,6 @@ urlpy, writableTmpDirAsHomeHook, xmltodict, - zipp, }: buildPythonPackage rec { @@ -126,8 +124,7 @@ buildPythonPackage rec { typecode-libmagic urlpy xmltodict - ] - ++ lib.optionals (pythonOlder "3.9") [ zipp ]; + ]; nativeBuildInputs = [ writableTmpDirAsHomeHook diff --git a/pkgs/development/python-modules/schema-salad/default.nix b/pkgs/development/python-modules/schema-salad/default.nix index 2b70f76f7612..b092a4202141 100644 --- a/pkgs/development/python-modules/schema-salad/default.nix +++ b/pkgs/development/python-modules/schema-salad/default.nix @@ -4,12 +4,10 @@ buildPythonPackage, cachecontrol, fetchFromGitHub, - importlib-resources, mistune, mypy, mypy-extensions, pytestCheckHook, - pythonOlder, rdflib, requests, ruamel-yaml, @@ -56,8 +54,7 @@ buildPythonPackage rec { types-requests types-setuptools ] - ++ cachecontrol.optional-dependencies.filecache - ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + ++ cachecontrol.optional-dependencies.filecache; nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.pycodegen; diff --git a/pkgs/development/python-modules/scikit-bio/default.nix b/pkgs/development/python-modules/scikit-bio/default.nix index 151ae1f21f42..c8e1cba068b1 100644 --- a/pkgs/development/python-modules/scikit-bio/default.nix +++ b/pkgs/development/python-modules/scikit-bio/default.nix @@ -27,7 +27,7 @@ python, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "scikit-bio"; version = "0.7.0"; pyproject = true; @@ -35,7 +35,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "scikit-bio"; repo = "scikit-bio"; - tag = version; + tag = finalAttrs.version; hash = "sha256-M0P5DUAMlRTkaIPbxSvO99N3y5eTrkg4NMlkIpGr4/g="; }; @@ -76,8 +76,8 @@ buildPythonPackage rec { description = "Data structures, algorithms and educational resources for bioinformatics"; homepage = "http://scikit-bio.org/"; downloadPage = "https://github.com/scikit-bio/scikit-bio"; - changelog = "https://github.com/scikit-bio/scikit-bio/blob/${version}/CHANGELOG.md"; + changelog = "https://github.com/scikit-bio/scikit-bio/blob/${finalAttrs.src.rev}/CHANGELOG.md"; license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/segno/default.nix b/pkgs/development/python-modules/segno/default.nix index 58b621416aff..d88eb41203eb 100644 --- a/pkgs/development/python-modules/segno/default.nix +++ b/pkgs/development/python-modules/segno/default.nix @@ -2,14 +2,10 @@ lib, buildPythonPackage, fetchFromGitHub, - pythonOlder, # build-system flit-core, - # dependencies - importlib-metadata, - # tests pytestCheckHook, pypng, @@ -30,8 +26,6 @@ buildPythonPackage rec { nativeBuildInputs = [ flit-core ]; - propagatedBuildInputs = lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; - nativeCheckInputs = [ pytestCheckHook pypng diff --git a/pkgs/development/python-modules/setuptools-gettext/default.nix b/pkgs/development/python-modules/setuptools-gettext/default.nix index 14af007c4045..40b7d7b00c52 100644 --- a/pkgs/development/python-modules/setuptools-gettext/default.nix +++ b/pkgs/development/python-modules/setuptools-gettext/default.nix @@ -7,7 +7,7 @@ setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "setuptools-gettext"; version = "0.1.16"; pyproject = true; @@ -15,7 +15,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "breezy-team"; repo = "setuptools-gettext"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-N59Hx6CyOzAin8KcMTAD++HFLDdJnJbql/U3fO2F3DU="; }; @@ -31,10 +31,10 @@ buildPythonPackage rec { ]; meta = { - changelog = "https://github.com/breezy-team/setuptools-gettext/releases/tag/${src.tag}"; + changelog = "https://github.com/breezy-team/setuptools-gettext/releases/tag/${finalAttrs.src.tag}"; description = "Setuptools plugin for building mo files"; homepage = "https://github.com/breezy-team/setuptools-gettext"; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/shiboken2/default.nix b/pkgs/development/python-modules/shiboken2/default.nix index 314c89c4da1a..998e04cc03fc 100644 --- a/pkgs/development/python-modules/shiboken2/default.nix +++ b/pkgs/development/python-modules/shiboken2/default.nix @@ -5,7 +5,6 @@ pyside2, cmake, qt5, - libxcrypt, llvmPackages, }: @@ -48,12 +47,7 @@ stdenv.mkDerivation { python.pkgs.setuptools qt5.qtbase qt5.qtxmlpatterns - ] - ++ (lib.optionals (python.pythonOlder "3.9") [ - # see similar issue: 202262 - # libxcrypt is required for crypt.h for building older python modules - libxcrypt - ]); + ]; cmakeFlags = [ "-DBUILD_TESTS=OFF" ]; diff --git a/pkgs/development/python-modules/shiny/default.nix b/pkgs/development/python-modules/shiny/default.nix index 8e8d3a676574..107e6a17233f 100644 --- a/pkgs/development/python-modules/shiny/default.nix +++ b/pkgs/development/python-modules/shiny/default.nix @@ -48,14 +48,14 @@ buildPythonPackage (finalAttrs: { pname = "shiny"; - version = "1.5.0"; + version = "1.5.1"; pyproject = true; src = fetchFromGitHub { owner = "posit-dev"; repo = "py-shiny"; tag = "v${finalAttrs.version}"; - hash = "sha256-zRKfSY0rE+jzwYUcrRTIFW3OVmavhMDbAQEpry46zCI="; + hash = "sha256-8iqnm1SQ4h0GuwqKDzL6qEdbw0gJ2a5Aqg5WJgbaKBI="; }; build-system = [ @@ -127,6 +127,15 @@ buildPythonPackage (finalAttrs: { "test_theme_from_brand_base_case_compiles" # ValueError: A tokenizer is required to impose `token_limits` on messages "test_chat_message_trimming" + + # Snapshot tests fail with AssertionError + "test_toast_header_icon_renders_in_header" + "test_toast_header_icon_with_status_and_title" + "test_toast_icon_renders_in_body_with_header" + "test_toast_icon_renders_in_body_without_header" + "test_toast_icon_works_with_closable_button_in_body" + "test_toast_with_both_header_icon_and_body_icon" + "test_toast_with_custom_tag_header" ]; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/skorch/default.nix b/pkgs/development/python-modules/skorch/default.nix index 1b88c9a8ed46..bae7550aefa2 100644 --- a/pkgs/development/python-modules/skorch/default.nix +++ b/pkgs/development/python-modules/skorch/default.nix @@ -3,7 +3,6 @@ stdenv, buildPythonPackage, fetchFromGitHub, - pythonOlder, numpy, scikit-learn, scipy, @@ -35,7 +34,7 @@ buildPythonPackage rec { # AttributeError: 'NoneType' object has no attribute 'span' with Python 3.13 # https://github.com/skorch-dev/skorch/issues/1080 - disabled = pythonOlder "3.9" || pythonAtLeast "3.13"; + disabled = pythonAtLeast "3.13"; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix b/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix index c840f7744058..469f9b1587aa 100644 --- a/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix +++ b/pkgs/development/python-modules/skytemple-ssb-debugger/default.nix @@ -6,7 +6,6 @@ gobject-introspection, gtk3, gtksourceview4, - importlib-metadata, lib, ndspy, nest-asyncio, @@ -14,7 +13,6 @@ pycairo, pygobject3, pygtkspellcheck, - pythonOlder, range-typed-integers, skytemple-files, skytemple-icons, @@ -56,8 +54,7 @@ buildPythonPackage rec { skytemple-files skytemple-icons skytemple-ssb-emulator - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; doCheck = false; # requires Pokémon Mystery Dungeon ROM pythonImportsCheck = [ "skytemple_ssb_debugger" ]; diff --git a/pkgs/development/python-modules/snscrape/default.nix b/pkgs/development/python-modules/snscrape/default.nix index b0640323c5ed..5c8ea1fb30fb 100644 --- a/pkgs/development/python-modules/snscrape/default.nix +++ b/pkgs/development/python-modules/snscrape/default.nix @@ -6,8 +6,6 @@ fetchpatch, filelock, lxml, - pythonOlder, - pytz, requests, setuptools-scm, }: @@ -41,8 +39,7 @@ buildPythonPackage rec { lxml requests ] - ++ requests.optional-dependencies.socks - ++ lib.optionals (pythonOlder "3.9") [ pytz ]; + ++ requests.optional-dependencies.socks; # There are no tests; make sure the executable works. checkPhase = '' diff --git a/pkgs/development/python-modules/sphinx-autoapi/default.nix b/pkgs/development/python-modules/sphinx-autoapi/default.nix index 25162f419839..d1b8e9d288e6 100644 --- a/pkgs/development/python-modules/sphinx-autoapi/default.nix +++ b/pkgs/development/python-modules/sphinx-autoapi/default.nix @@ -2,7 +2,6 @@ lib, buildPythonPackage, fetchFromGitHub, - pythonOlder, # build-system flit-core, @@ -12,7 +11,6 @@ jinja2, pyyaml, sphinx, - stdlib-list, # tests beautifulsoup4, @@ -38,9 +36,6 @@ buildPythonPackage rec { jinja2 pyyaml sphinx - ] - ++ lib.optionals (pythonOlder "3.10") [ - stdlib-list ]; nativeCheckInputs = [ diff --git a/pkgs/development/python-modules/sphinx-autodoc2/default.nix b/pkgs/development/python-modules/sphinx-autodoc2/default.nix index 05745a31b13e..a0cf4db57cab 100644 --- a/pkgs/development/python-modules/sphinx-autodoc2/default.nix +++ b/pkgs/development/python-modules/sphinx-autodoc2/default.nix @@ -16,7 +16,7 @@ defusedxml, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "sphinx-autodoc2"; version = "0.5.0"; pyproject = true; @@ -24,7 +24,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "sphinx-extensions2"; repo = "sphinx-autodoc2"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-Wu079THK1mHVilD2Fx9dIzuIOOYOXpo/EMxVczNutCI="; }; @@ -32,7 +32,7 @@ buildPythonPackage rec { # compatibility with astroid 4, see: https://github.com/sphinx-extensions2/sphinx-autodoc2/pull/93 (fetchDebianPatch { pname = "python-sphinx-autodoc2"; - inherit version; + inherit (finalAttrs) version; debianRevision = "9"; patch = "astroid-4.patch"; hash = "sha256-tRWDee30GSQ+AobCAHdtw65B6YyRpzn7kW5rzK7/QOk="; @@ -72,11 +72,11 @@ buildPythonPackage rec { pythonImportsCheck = [ "autodoc2" ]; meta = { - changelog = "https://github.com/sphinx-extensions2/sphinx-autodoc2/releases/tag/v${version}"; + changelog = "https://github.com/sphinx-extensions2/sphinx-autodoc2/releases/tag/${finalAttrs.src.tag}"; homepage = "https://github.com/sphinx-extensions2/sphinx-autodoc2"; description = "Sphinx extension that automatically generates API documentation for your Python packages"; license = lib.licenses.mit; mainProgram = "autodoc2"; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/sphinx/default.nix b/pkgs/development/python-modules/sphinx/default.nix index 99dc8cc3bb06..655b36b081bd 100644 --- a/pkgs/development/python-modules/sphinx/default.nix +++ b/pkgs/development/python-modules/sphinx/default.nix @@ -14,7 +14,6 @@ alabaster, docutils, imagesize, - importlib-metadata, jinja2, packaging, pygments, @@ -86,8 +85,7 @@ buildPythonPackage rec { # extra[docs] sphinxcontrib-websupport ] - ++ lib.optionals (pythonOlder "3.11") [ tomli ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ++ lib.optionals (pythonOlder "3.11") [ tomli ]; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix b/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix index c81efcfeb52a..97d6939c7185 100644 --- a/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix +++ b/pkgs/development/python-modules/sphinxcontrib-bibtex/default.nix @@ -2,10 +2,8 @@ lib, buildPythonPackage, fetchFromGitHub, - pythonOlder, setuptools, docutils, - importlib-metadata, oset, pybtex, pybtex-docutils, @@ -34,9 +32,6 @@ buildPythonPackage rec { pybtex pybtex-docutils sphinx - ] - ++ lib.optionals (pythonOlder "3.10") [ - importlib-metadata ]; nativeCheckInputs = [ diff --git a/pkgs/development/python-modules/starlette/default.nix b/pkgs/development/python-modules/starlette/default.nix index eefb85904013..af9c1a98e96a 100644 --- a/pkgs/development/python-modules/starlette/default.nix +++ b/pkgs/development/python-modules/starlette/default.nix @@ -19,7 +19,6 @@ # tests pytestCheckHook, - pythonOlder, trio, # reverse dependencies @@ -40,7 +39,7 @@ buildPythonPackage rec { build-system = [ hatchling ]; - dependencies = [ anyio ] ++ lib.optionals (pythonOlder "3.10") [ typing-extensions ]; + dependencies = [ anyio ]; optional-dependencies.full = [ itsdangerous diff --git a/pkgs/development/python-modules/streamz/default.nix b/pkgs/development/python-modules/streamz/default.nix index ab03d9ad560e..b9385fe20d10 100644 --- a/pkgs/development/python-modules/streamz/default.nix +++ b/pkgs/development/python-modules/streamz/default.nix @@ -7,7 +7,6 @@ setuptools, # dependencies - six, toolz, tornado, zict, @@ -18,25 +17,25 @@ flaky, pandas, pyarrow, + pytest-asyncio, pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "streamz"; - version = "0.6.4"; + version = "0.6.5"; pyproject = true; src = fetchFromGitHub { owner = "python-streamz"; repo = "streamz"; - tag = version; - hash = "sha256-lSb3gl+TSIzz4BZzxH8zXu74HvzSntOAoVQUUJKIEvA="; + tag = finalAttrs.version; + hash = "sha256-OoWFOACrJ8zXJJ1bmRukj04zx+s1Zgg9KqlJooLDRW0="; }; build-system = [ setuptools ]; dependencies = [ - six toolz tornado zict @@ -48,6 +47,7 @@ buildPythonPackage rec { flaky pandas pyarrow + pytest-asyncio pytestCheckHook ]; @@ -74,4 +74,4 @@ buildPythonPackage rec { license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ GaetanLepage ]; }; -} +}) diff --git a/pkgs/development/python-modules/swagger-ui-bundle/default.nix b/pkgs/development/python-modules/swagger-ui-bundle/default.nix index 928006bb548a..c24b66bdfdce 100644 --- a/pkgs/development/python-modules/swagger-ui-bundle/default.nix +++ b/pkgs/development/python-modules/swagger-ui-bundle/default.nix @@ -2,13 +2,11 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, # build-system poetry-core, # dependencies - importlib-resources, jinja2, }: @@ -26,7 +24,7 @@ buildPythonPackage rec { nativeBuildInputs = [ poetry-core ]; - propagatedBuildInputs = [ jinja2 ] ++ lib.optionals (pythonOlder "3.9") [ importlib-resources ]; + propagatedBuildInputs = [ jinja2 ]; # package contains no tests doCheck = false; diff --git a/pkgs/development/python-modules/testrail-api/default.nix b/pkgs/development/python-modules/testrail-api/default.nix index 45e7a2b32bda..1af94a75f124 100644 --- a/pkgs/development/python-modules/testrail-api/default.nix +++ b/pkgs/development/python-modules/testrail-api/default.nix @@ -11,14 +11,14 @@ buildPythonPackage rec { pname = "testrail-api"; - version = "1.13.5"; + version = "1.13.6"; pyproject = true; src = fetchFromGitHub { owner = "tolstislon"; repo = "testrail-api"; tag = version; - hash = "sha256-eGKQ32+VOt7T66SVKcbxyAAyN7kVspfTbukv/mldZ8Q="; + hash = "sha256-xCarEmJM+liyh8T8qG8sqSLXMnFN49yZapbktIElSF0="; }; build-system = [ diff --git a/pkgs/development/python-modules/textual/default.nix b/pkgs/development/python-modules/textual/default.nix index 2e7b2d7f13fb..903c4fa097af 100644 --- a/pkgs/development/python-modules/textual/default.nix +++ b/pkgs/development/python-modules/textual/default.nix @@ -37,14 +37,14 @@ buildPythonPackage rec { pname = "textual"; - version = "7.2.0"; + version = "7.3.0"; pyproject = true; src = fetchFromGitHub { owner = "Textualize"; repo = "textual"; tag = "v${version}"; - hash = "sha256-/BVrglVfGW2InkC0IKHOKZTP33tfqxGuXYQXWJVHmxw="; + hash = "sha256-IT/U1RpepeXx9x7WZ2v3MUCGOnB/MsSyukiO8iRCKeA="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/torchsummary/default.nix b/pkgs/development/python-modules/torchsummary/default.nix index 8805e8fa2117..a3465370d5e2 100644 --- a/pkgs/development/python-modules/torchsummary/default.nix +++ b/pkgs/development/python-modules/torchsummary/default.nix @@ -6,13 +6,13 @@ torch, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "torchsummary"; version = "1.5.1"; pyproject = true; src = fetchPypi { - inherit pname version; + inherit (finalAttrs) pname version; hash = "sha256-mBv2ieIuDPf5XHRgAvIKJK0mqmudhhE0oUvGzpIjBZA="; }; @@ -31,4 +31,4 @@ buildPythonPackage rec { license = lib.licenses.mit; maintainers = with lib.maintainers; [ tomasajt ]; }; -} +}) diff --git a/pkgs/development/python-modules/towncrier/default.nix b/pkgs/development/python-modules/towncrier/default.nix index 40f83604ecba..dccb5ba0ecf3 100644 --- a/pkgs/development/python-modules/towncrier/default.nix +++ b/pkgs/development/python-modules/towncrier/default.nix @@ -5,7 +5,6 @@ fetchPypi, git, # shells out to git hatchling, - importlib-resources, incremental, jinja2, mock, @@ -32,7 +31,6 @@ buildPythonPackage rec { incremental jinja2 ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-resources ] ++ lib.optionals (pythonOlder "3.11") [ tomli ]; preCheck = '' diff --git a/pkgs/development/python-modules/twine/default.nix b/pkgs/development/python-modules/twine/default.nix index bbaa42453f02..72ecb51b2cdf 100644 --- a/pkgs/development/python-modules/twine/default.nix +++ b/pkgs/development/python-modules/twine/default.nix @@ -2,9 +2,7 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, id, - importlib-metadata, keyring, packaging, pkginfo, @@ -48,9 +46,6 @@ buildPythonPackage rec { rfc3986 rich urllib3 - ] - ++ lib.optionals (pythonOlder "3.10") [ - importlib-metadata ]; nativeCheckInputs = [ diff --git a/pkgs/development/python-modules/typeguard/default.nix b/pkgs/development/python-modules/typeguard/default.nix index cdb7515681ae..81a5310ec78b 100644 --- a/pkgs/development/python-modules/typeguard/default.nix +++ b/pkgs/development/python-modules/typeguard/default.nix @@ -2,12 +2,10 @@ lib, buildPythonPackage, fetchPypi, - pythonOlder, setuptools, setuptools-scm, pytestCheckHook, typing-extensions, - importlib-metadata, mypy, sphinxHook, sphinx-autodoc-typehints, @@ -41,8 +39,7 @@ buildPythonPackage rec { dependencies = [ typing-extensions - ] - ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ]; + ]; env.LC_ALL = "en_US.utf-8"; diff --git a/pkgs/development/python-modules/types-protobuf/default.nix b/pkgs/development/python-modules/types-protobuf/default.nix index 97c4ebd0b809..2a50446c1342 100644 --- a/pkgs/development/python-modules/types-protobuf/default.nix +++ b/pkgs/development/python-modules/types-protobuf/default.nix @@ -7,13 +7,13 @@ buildPythonPackage rec { pname = "types-protobuf"; - version = "6.32.1.20251105"; + version = "6.32.1.20251210"; format = "setuptools"; src = fetchPypi { pname = "types_protobuf"; inherit version; - hash = "sha256-ZBACYR/4fdn+3DijminKy5kHrlzmFIm1PpnKIHS+92Q="; + hash = "sha256-xpi7PwICdLGieYrgncdzcozj91IJo1GHvRGRbr/eZ2M="; }; propagatedBuildInputs = [ types-futures ]; diff --git a/pkgs/development/python-modules/types-regex/default.nix b/pkgs/development/python-modules/types-regex/default.nix index fd6ddb3c846f..31474f561da8 100644 --- a/pkgs/development/python-modules/types-regex/default.nix +++ b/pkgs/development/python-modules/types-regex/default.nix @@ -5,24 +5,23 @@ setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "types-regex"; - version = "2025.11.3.20251106"; + version = "2026.1.15.20260116"; pyproject = true; src = fetchPypi { pname = "types_regex"; - inherit version; - hash = "sha256-X5go7TmlpScntjf5P38PkJ1W+iIRYE7MIT/Ou1CbnVA="; + inherit (finalAttrs) version; + hash = "sha256-cVGpvMW7+ez8z4M1xFGsqCBPWgmS4GIqr69IKHbO5Pc="; }; - build-system = [ - setuptools - ]; + build-system = [ setuptools ]; - pythonImportsCheck = [ - "regex-stubs" - ]; + pythonImportsCheck = [ "regex-stubs" ]; + + # Module has no tests + doCheck = false; meta = { description = "Typing stubs for regex"; @@ -30,4 +29,4 @@ buildPythonPackage rec { license = lib.licenses.asl20; maintainers = with lib.maintainers; [ dwoffinden ]; }; -} +}) diff --git a/pkgs/development/python-modules/ultralytics/default.nix b/pkgs/development/python-modules/ultralytics/default.nix index 7e9e98048e7a..dba583b0a608 100644 --- a/pkgs/development/python-modules/ultralytics/default.nix +++ b/pkgs/development/python-modules/ultralytics/default.nix @@ -32,16 +32,16 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "ultralytics"; - version = "8.3.221"; + version = "8.4.6"; pyproject = true; src = fetchFromGitHub { owner = "ultralytics"; repo = "ultralytics"; - tag = "v${version}"; - hash = "sha256-oQuiAq1QJlgrEDk26/+pcIifFBO/ckH1qG7niEXbMIo="; + tag = "v${finalAttrs.version}"; + hash = "sha256-kNOldJvJlyBkV7VeETtxQJdtToJyGID2dEIq1z0Fg1c="; }; build-system = [ setuptools ]; @@ -86,6 +86,7 @@ buildPythonPackage rec { disabledTests = [ # also remove the individual tests that require internet + "test_predict_gray_and_4ch" "test_all_model_yamls" "test_data_annotator" "test_labels_and_crops" @@ -129,10 +130,10 @@ buildPythonPackage rec { meta = { homepage = "https://github.com/ultralytics/ultralytics"; - changelog = "https://github.com/ultralytics/ultralytics/releases/tag/${src.tag}"; + changelog = "https://github.com/ultralytics/ultralytics/releases/tag/${finalAttrs.src.tag}"; description = "Train YOLO models for computer vision tasks"; mainProgram = "yolo"; license = lib.licenses.agpl3Only; maintainers = with lib.maintainers; [ osbm ]; }; -} +}) diff --git a/pkgs/development/python-modules/unify/default.nix b/pkgs/development/python-modules/unify/default.nix index daad747a52d9..556725bebd2b 100644 --- a/pkgs/development/python-modules/unify/default.nix +++ b/pkgs/development/python-modules/unify/default.nix @@ -3,7 +3,6 @@ buildPythonPackage, fetchFromGitHub, pythonAtLeast, - pythonOlder, setuptools, pytestCheckHook, untokenize, @@ -15,7 +14,7 @@ buildPythonPackage rec { pyproject = true; # lib2to3 usage and unmaintained since 2019 - disabled = pythonOlder "3.9" || pythonAtLeast "3.13"; + disabled = pythonAtLeast "3.13"; src = fetchFromGitHub { owner = "myint"; diff --git a/pkgs/development/python-modules/vivisect/default.nix b/pkgs/development/python-modules/vivisect/default.nix index c612fc146903..b229576a0a7c 100644 --- a/pkgs/development/python-modules/vivisect/default.nix +++ b/pkgs/development/python-modules/vivisect/default.nix @@ -16,12 +16,12 @@ buildPythonPackage rec { pname = "vivisect"; - version = "1.2.1"; + version = "1.3.0"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-zBWrVBub48rYBg7k9CDmgCWPpPz3R38/mtUCM1P3Mpk="; + hash = "sha256-sI/xlbodbud5GJ3s9atmDS1KOD7VYs7B3OdYCx1NgE4="; }; pythonRelaxDeps = [ diff --git a/pkgs/development/python-modules/walrus/default.nix b/pkgs/development/python-modules/walrus/default.nix index 20c1702276c5..b343e955d171 100644 --- a/pkgs/development/python-modules/walrus/default.nix +++ b/pkgs/development/python-modules/walrus/default.nix @@ -10,14 +10,14 @@ buildPythonPackage (finalAttrs: { pname = "walrus"; - version = "0.9.7"; + version = "0.9.8"; pyproject = true; src = fetchFromGitHub { owner = "coleifer"; repo = "walrus"; tag = finalAttrs.version; - hash = "sha256-CXy6jjGIG8nuqnF39DqDLvYDGq7N1VL2yitVQrNMEzI="; + hash = "sha256-AgaqDZHjUX/oLjzisWjZcrGL9QXQf73WW+hfK2WMQJ8="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/wandb/default.nix b/pkgs/development/python-modules/wandb/default.nix index 0cf349f2f859..e7b2ef517b11 100644 --- a/pkgs/development/python-modules/wandb/default.nix +++ b/pkgs/development/python-modules/wandb/default.nix @@ -32,7 +32,6 @@ setproctitle, setuptools, pythonOlder, - eval-type-backport, typing-extensions, # tests @@ -207,9 +206,6 @@ buildPythonPackage rec { # setuptools is necessary since pkg_resources is required at runtime. setuptools ] - ++ lib.optionals (pythonOlder "3.10") [ - eval-type-backport - ] ++ lib.optionals (pythonOlder "3.12") [ typing-extensions ]; diff --git a/pkgs/development/python-modules/yourdfpy/default.nix b/pkgs/development/python-modules/yourdfpy/default.nix index 5647a170f037..fa770f6a243e 100644 --- a/pkgs/development/python-modules/yourdfpy/default.nix +++ b/pkgs/development/python-modules/yourdfpy/default.nix @@ -21,14 +21,14 @@ buildPythonPackage rec { pname = "yourdfpy"; - version = "0.0.58"; + version = "0.0.59"; pyproject = true; src = fetchFromGitHub { owner = "clemense"; repo = "yourdfpy"; tag = "v${version}"; - hash = "sha256-Wi4QcgTOf/1nXWssFtlyRxql8Jg1nNKjEGkWuP+w73g="; + hash = "sha256-9GSDD/RjLGlmuncyH97TqKZrPU8WpmbSKGT7sDKy9FA="; }; build-system = [ diff --git a/pkgs/development/python-modules/zetup/default.nix b/pkgs/development/python-modules/zetup/default.nix deleted file mode 100644 index 56e672f29aa9..000000000000 --- a/pkgs/development/python-modules/zetup/default.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - nbconvert, - path, - pytestCheckHook, - setuptools-scm, - pythonAtLeast, -}: - -buildPythonPackage rec { - pname = "zetup"; - version = "0.2.64"; - format = "setuptools"; - - # https://github.com/zimmermanncode/zetup/issues/4 - disabled = pythonAtLeast "3.10"; - - src = fetchPypi { - inherit pname version; - sha256 = "b8a9bdcfa4b705d72b55b218658bc9403c157db7b57a14158253c98d03ab713d"; - }; - - # Python > 3.7 compatibility - postPatch = '' - substituteInPlace zetup/zetup_config.py \ - --replace "'3.7']" "'3.7', '3.8', '3.9', '3.10']" - ''; - - checkPhase = '' - py.test test -k "not TestObject" --deselect=test/test_zetup_config.py::test_classifiers - ''; - - propagatedBuildInputs = [ setuptools-scm ]; - - nativeCheckInputs = [ - path - nbconvert - pytestCheckHook - ]; - - pythonImportsCheck = [ "zetup" ]; - - meta = { - description = "Zimmermann's Extensible Tools for Unified Project setups"; - homepage = "https://github.com/zimmermanncode/zetup"; - license = lib.licenses.gpl3Plus; - platforms = lib.platforms.unix; - }; -} diff --git a/pkgs/development/ruby-modules/gem-config/default.nix b/pkgs/development/ruby-modules/gem-config/default.nix index 410482616aea..78885df50405 100644 --- a/pkgs/development/ruby-modules/gem-config/default.nix +++ b/pkgs/development/ruby-modules/gem-config/default.nix @@ -90,6 +90,7 @@ fribidi, harfbuzz, bison, + h3_3, flex, pango, python3, @@ -638,6 +639,21 @@ in ''; }; + h3 = attrs: { + # This gem attempts to build h3 using cmake, but fails because that is not in the path + # Use h3 from nixpkgs instead, and reduce closure size by deleting the h3 source code + dontBuild = false; # allow applying patches + postPatch = '' + substituteInPlace ext/h3/Makefile \ + --replace-fail 'cd src; cmake . -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DBUILD_SHARED_LIBS=true -DBUILD_FILTERS=OFF -DBUILD_BENCHMARKS=OFF -DENABLE_LINTING=OFF; make' ':' + substituteInPlace lib/h3/bindings/base.rb \ + --replace-fail '__dir__ + "/../../../ext/h3/src/lib"' '"${h3_3}/lib"' + ''; + postInstall = '' + rm -rf $out/${ruby.gemPath}/gems/h3-${attrs.version}/ext/h3/src + ''; + }; + hiredis-client = attrs: { buildInputs = [ openssl diff --git a/pkgs/development/tools/build-managers/gradle/default.nix b/pkgs/development/tools/build-managers/gradle/default.nix index c6b337734e08..892f559e0b45 100644 --- a/pkgs/development/tools/build-managers/gradle/default.nix +++ b/pkgs/development/tools/build-managers/gradle/default.nix @@ -364,8 +364,8 @@ rec { # https://docs.gradle.org/current/userguide/compatibility.html gradle_9 = mkGradle { - version = "9.2.1"; - hash = "sha256-cvRMn468sa9Dg49F7lxKqcVESJizRoqz9K97YHbFvD8="; + version = "9.3.0"; + hash = "sha256-DVhfadoJH8Wyvs7Yd/6rVaMGTUO4odRq6weZawkV4OA="; defaultJava = jdk21; }; gradle_8 = mkGradle { diff --git a/pkgs/development/web/nodejs/v25.nix b/pkgs/development/web/nodejs/v25.nix index 714c8e686f62..43d53542c98a 100644 --- a/pkgs/development/web/nodejs/v25.nix +++ b/pkgs/development/web/nodejs/v25.nix @@ -25,8 +25,8 @@ let in buildNodejs { inherit enableNpm; - version = "25.3.0"; - sha256 = "97939099edd035a0c1a2d1fc849cac018ec2a38c0c28dd8e8246fd883cdb9e9e"; + version = "25.4.0"; + sha256 = "04e365aadcd7bf4cf1a6001723ea41035bfb118d78f8a8ee2054b37fc5cb67d6"; patches = ( if (stdenv.hostPlatform.emulatorAvailable buildPackages) then diff --git a/pkgs/games/openloco/default.nix b/pkgs/games/openloco/default.nix index f6eea70832b1..e64c6f6aa978 100644 --- a/pkgs/games/openloco/default.nix +++ b/pkgs/games/openloco/default.nix @@ -78,5 +78,6 @@ stdenv.mkDerivation rec { license = lib.licenses.mit; platforms = lib.platforms.linux; maintainers = with lib.maintainers; [ icewind1991 ]; + mainProgram = "OpenLoco"; }; } diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix deleted file mode 100644 index a41ae39b7eac..000000000000 --- a/pkgs/os-specific/linux/kernel/manual-config.nix +++ /dev/null @@ -1,604 +0,0 @@ -{ - lib, - stdenv, - buildPackages, - bc, - bison, - flex, - perl, - rsync, - gmp, - libmpc, - mpfr, - openssl, - cpio, - elfutils, - hexdump, - zstd, - python3Minimal, - zlib, - pahole, - kmod, - ubootTools, - fetchpatch, - rustc-unwrapped, - rust-bindgen-unwrapped, - rustPlatform, -}: - -let - lib_ = lib; - stdenv_ = stdenv; - - readConfig = - configfile: - let - matchLine = - line: - let - match = lib.match "(CONFIG_[^=]+)=([ym])" line; - in - lib.optional (match != null) { - name = lib.elemAt match 0; - value = lib.elemAt match 1; - }; - in - lib.listToAttrs (lib.concatMap matchLine (lib.splitString "\n" (builtins.readFile configfile))); -in -lib.makeOverridable ( - { - # The kernel version - version, - # The kernel pname (should be set for variants) - pname ? "linux", - # Position of the Linux build expression - pos ? null, - # Additional kernel make flags - extraMakeFlags ? [ ], - # The name of the kernel module directory - # Needs to be X.Y.Z[-extra], so pad with zeros if needed. - modDirVersion ? null, # derive from version - # The kernel source (tarball, git checkout, etc.) - src, - # a list of { name=..., patch=..., extraConfig=...} patches - kernelPatches ? [ ], - # The kernel .config file - configfile, - # Manually specified nixexpr representing the config - # If unspecified, this will be autodetected from the .config - config ? lib.optionalAttrs (builtins.isPath configfile || allowImportFromDerivation) ( - readConfig configfile - ), - # Custom seed used for CONFIG_GCC_PLUGIN_RANDSTRUCT if enabled. This is - # automatically extended with extra per-version and per-config values. - randstructSeed ? "", - # Extra meta attributes - extraMeta ? { }, - - # for module compatibility - isZen ? false, - isLibre ? false, - isHardened ? false, - - # Whether to utilize the controversial import-from-derivation feature to parse the config - allowImportFromDerivation ? false, - # ignored - features ? null, - lib ? lib_, - stdenv ? stdenv_, - }: - - let - # Provide defaults. Note that we support `null` so that callers don't need to use optionalAttrs, - # which can lead to unnecessary strictness and infinite recursions. - modDirVersion_ = if modDirVersion == null then lib.versions.pad 3 version else modDirVersion; - in - let - # Shadow the un-defaulted parameter; don't want null. - modDirVersion = modDirVersion_; - inherit (lib) - hasAttr - getAttr - optional - optionals - optionalString - optionalAttrs - maintainers - teams - platforms - ; - - drvAttrs = - config_: kernelConf: kernelPatches: configfile: - let - # Folding in `ubootTools` in the default nativeBuildInputs is problematic, as - # it makes updating U-Boot cumbersome, since it will go above the current - # threshold of rebuilds - # - # To prevent these needless rounds of staging for U-Boot builds, we can - # limit the inclusion of ubootTools to target platforms where uImage *may* - # be produced. - # - # This command lists those (kernel-named) platforms: - # .../linux $ grep -l uImage ./arch/*/Makefile | cut -d'/' -f3 | sort - # - # This is still a guesstimation, but since none of our cached platforms - # coincide in that list, this gives us "perfect" decoupling here. - linuxPlatformsUsingUImage = [ - "arc" - "arm" - "csky" - "mips" - "powerpc" - "sh" - "sparc" - "xtensa" - ]; - needsUbootTools = lib.elem stdenv.hostPlatform.linuxArch linuxPlatformsUsingUImage; - - config = - let - attrName = attr: "CONFIG_" + attr; - in - { - isSet = attr: hasAttr (attrName attr) config; - - getValue = attr: if config.isSet attr then getAttr (attrName attr) config else null; - - isYes = attr: (config.getValue attr) == "y"; - - isNo = attr: (config.getValue attr) == "n"; - - isModule = attr: (config.getValue attr) == "m"; - - isEnabled = attr: (config.isModule attr) || (config.isYes attr); - - isDisabled = attr: (!(config.isSet attr)) || (config.isNo attr); - } - // config_; - - isModular = config.isYes "MODULES"; - withRust = config.isYes "RUST"; - - target = kernelConf.target or "vmlinux"; - - buildDTBs = kernelConf.DTB or false; - - # Dependencies that are required to build kernel modules - moduleBuildDependencies = [ - pahole - perl - elfutils - # module makefiles often run uname commands to find out the kernel version - (buildPackages.deterministic-uname.override { inherit modDirVersion; }) - ] - ++ optional (lib.versionAtLeast version "5.13") zstd - ++ optionals withRust [ - rustc-unwrapped - rust-bindgen-unwrapped - ]; - - in - (optionalAttrs isModular { - outputs = [ - "out" - "dev" - "modules" - ]; - }) - // { - __structuredAttrs = true; - - passthru = rec { - inherit - version - modDirVersion - config - kernelPatches - configfile - moduleBuildDependencies - stdenv - ; - inherit - isZen - isHardened - isLibre - withRust - ; - isXen = lib.warn "The isXen attribute is deprecated. All Nixpkgs kernels that support it now have Xen enabled." true; - baseVersion = lib.head (lib.splitString "-rc" version); - kernelOlder = lib.versionOlder baseVersion; - kernelAtLeast = lib.versionAtLeast baseVersion; - }; - - inherit src; - - depsBuildBuild = [ buildPackages.stdenv.cc ]; - nativeBuildInputs = [ - bison - flex - perl - bc - openssl - rsync - gmp - libmpc - mpfr - elfutils - zstd - python3Minimal - kmod - hexdump - ] - ++ optional needsUbootTools ubootTools - ++ optionals (lib.versionAtLeast version "5.2") [ - cpio - pahole - zlib - ] - ++ optionals withRust [ - rustc-unwrapped - rust-bindgen-unwrapped - ]; - - env = { - RUST_LIB_SRC = lib.optionalString withRust rustPlatform.rustLibSrc; - - # avoid leaking Rust source file names into the final binary, which adds - # a false dependency on rust-lib-src on targets with uncompressed kernels - KRUSTFLAGS = lib.optionalString withRust "--remap-path-prefix ${rustPlatform.rustLibSrc}=/"; - }; - - patches = - # kernelPatches can contain config changes and no actual patch - lib.filter (p: p != null) (map (p: p.patch) kernelPatches) - # Required for deterministic builds along with some postPatch magic. - ++ optional (lib.versionOlder version "5.19") ./randstruct-provide-seed.patch - ++ optional (lib.versionAtLeast version "5.19") ./randstruct-provide-seed-5.19.patch - # Linux 5.12 marked certain PowerPC-only symbols as GPL, which breaks - # OpenZFS; this was fixed in Linux 5.19 so we backport the fix - # https://github.com/openzfs/zfs/pull/13367 - ++ - optional - ( - lib.versionAtLeast version "5.12" && lib.versionOlder version "5.19" && stdenv.hostPlatform.isPower - ) - (fetchpatch { - url = "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/patch/?id=d9e5c3e9e75162f845880535957b7fd0b4637d23"; - hash = "sha256-bBOyJcP6jUvozFJU0SPTOf3cmnTQ6ZZ4PlHjiniHXLU="; - }); - - postPatch = '' - # Ensure that depmod gets resolved through PATH - sed -i Makefile -e 's|= /sbin/depmod|= depmod|' - - # Some linux-hardened patches now remove certain files in the scripts directory, so the file may not exist. - [[ -f scripts/ld-version.sh ]] && patchShebangs scripts/ld-version.sh - - # Set randstruct seed to a deterministic but diversified value. Note: - # we could have instead patched gen-random-seed.sh to take input from - # the buildFlags, but that would require also patching the kernel's - # toplevel Makefile to add a variable export. This would be likely to - # cause future patch conflicts. - for file in scripts/gen-randstruct-seed.sh scripts/gcc-plugins/gen-random-seed.sh; do - if [ -f "$file" ]; then - substituteInPlace "$file" \ - --replace NIXOS_RANDSTRUCT_SEED \ - $(echo ${randstructSeed}${src} ${placeholder "configfile"} | sha256sum | cut -d ' ' -f 1 | tr -d '\n') - break - fi - done - - patchShebangs scripts - - # also patch arch-specific install scripts - for i in $(find arch -name install.sh); do - patchShebangs "$i" - done - - # unset $src because the build system tries to use it and spams a bunch of warnings - # see: https://github.com/torvalds/linux/commit/b1992c3772e69a6fd0e3fc81cd4d2820c8b6eca0 - unset src - ''; - - configurePhase = '' - runHook preConfigure - - mkdir build - export buildRoot="$(pwd)/build" - - echo "manual-config configurePhase buildRoot=$buildRoot pwd=$PWD" - - if [ -f "$buildRoot/.config" ]; then - echo "Could not link $buildRoot/.config : file exists" - exit 1 - fi - ln -sv ${configfile} $buildRoot/.config - - # reads the existing .config file and prompts the user for options in - # the current kernel source that are not found in the file. - make "''${makeFlags[@]}" oldconfig - runHook postConfigure - - make "''${makeFlags[@]}" prepare - actualModDirVersion="$(cat $buildRoot/include/config/kernel.release)" - if [ "$actualModDirVersion" != "${modDirVersion}" ]; then - echo "Error: modDirVersion ${modDirVersion} specified in the Nix expression is wrong, it should be: $actualModDirVersion" - exit 1 - fi - - buildFlags+=("KBUILD_BUILD_TIMESTAMP=$(date -u -d @$SOURCE_DATE_EPOCH)") - - cd $buildRoot - ''; - - buildFlags = [ - "KBUILD_BUILD_VERSION=1-NixOS" - target - "vmlinux" # for "perf" and things like that - "scripts_gdb" - ] - ++ optional isModular "modules" - ++ optionals buildDTBs [ - "dtbs" - "DTC_FLAGS=-@" - ] - ++ extraMakeFlags; - - installFlags = [ - "INSTALL_PATH=${placeholder "out"}" - ] - ++ (optional isModular "INSTALL_MOD_PATH=${placeholder "modules"}") - ++ optionals buildDTBs [ - "dtbs_install" - "INSTALL_DTBS_PATH=${placeholder "out"}/dtbs" - ]; - - preInstall = - let - # All we really need to do here is copy the final image and System.map to $out, - # and use the kernel's modules_install, firmware_install, dtbs_install, etc. targets - # for the rest. Easy, right? - # - # Unfortunately for us, the obvious way of getting the built image path, - # make -s image_name, does not work correctly, because some architectures - # (*cough* aarch64 *cough*) change KBUILD_IMAGE on the fly in their install targets, - # so we end up attempting to install the thing we didn't actually build. - # - # Thankfully, there's a way out that doesn't involve just hardcoding everything. - # - # The kernel has an install target, which runs a pretty simple shell script - # (located at scripts/install.sh or arch/$arch/boot/install.sh, depending on - # which kernel version you're looking at) that tries to do something sensible. - # - # (it would be great to hijack this script immediately, as it has all the - # information we need passed to it and we don't need it to try and be smart, - # but unfortunately, the exact location of the scripts differs between kernel - # versions, and they're seemingly not considered to be public API at all) - # - # One of the ways it tries to discover what "something sensible" actually is - # is by delegating to what's supposed to be a user-provided install script - # located at ~/bin/installkernel. - # - # (the other options are: - # - a distribution-specific script at /sbin/installkernel, - # which we can't really create in the sandbox easily - # - an architecture-specific script at arch/$arch/boot/install.sh, - # which attempts to guess _something_ and usually guesses very wrong) - # - # More specifically, the install script exec's into ~/bin/installkernel, if one - # exists, with the following arguments: - # - # $1: $KERNELRELEASE - full kernel version string - # $2: $KBUILD_IMAGE - the final image path - # $3: System.map - path to System.map file, seemingly hardcoded everywhere - # $4: $INSTALL_PATH - path to the destination directory as specified in installFlags - # - # $2 is exactly what we want, so hijack the script and use the knowledge given to it - # by the makefile overlords for our own nefarious ends. - # - # Note that the makefiles specifically look in ~/bin/installkernel, and - # writeShellScriptBin writes the script to /bin/installkernel, - # so HOME needs to be set to just the store path. - # - # FIXME: figure out a less roundabout way of doing this. - installkernel = buildPackages.writeShellScriptBin "installkernel" '' - cp -av $2 $4 - cp -av $3 $4 - ''; - in - '' - installFlags+=("-j$NIX_BUILD_CORES") - export HOME=${installkernel} - ''; - - # Some image types need special install targets (e.g. uImage is installed with make uinstall on arm) - installTargets = [ - (kernelConf.installTarget or ( - if target == "uImage" && stdenv.hostPlatform.linuxArch == "arm" then - "uinstall" - else if - (target == "zImage" || target == "Image.gz" || target == "vmlinuz.efi") - && builtins.elem stdenv.hostPlatform.linuxArch [ - "arm" - "arm64" - "parisc" - "riscv" - ] - then - "zinstall" - else - "install" - ) - ) - ]; - - # We remove a bunch of stuff that is symlinked from other places to save space, - # which trips the broken symlink check. So, just skip it. We'll know if it explodes. - dontCheckForBrokenSymlinks = true; - - postInstall = optionalString isModular '' - mkdir -p $dev - cp vmlinux $dev/ - - mkdir -p $dev/lib/modules/${modDirVersion}/build/scripts - cp -rL ../scripts/gdb/ $dev/lib/modules/${modDirVersion}/build/scripts - - if [ -z "''${dontStrip-}" ]; then - installFlags+=("INSTALL_MOD_STRIP=1") - fi - make modules_install "''${makeFlags[@]}" "''${installFlags[@]}" - unlink $modules/lib/modules/${modDirVersion}/build - - mkdir -p $dev/lib/modules/${modDirVersion}/{build,source} - - # To save space, exclude a bunch of unneeded stuff when copying. - (cd .. && rsync --archive --prune-empty-dirs \ - --exclude='/build/' \ - * $dev/lib/modules/${modDirVersion}/source/) - - cd $dev/lib/modules/${modDirVersion}/source - - cp $buildRoot/{.config,Module.symvers} $dev/lib/modules/${modDirVersion}/build - make modules_prepare "''${makeFlags[@]}" O=$dev/lib/modules/${modDirVersion}/build - - # For reproducibility, removes accidental leftovers from a `cc1` call - # from a `try-run` call from the Makefile - rm -f $dev/lib/modules/${modDirVersion}/build/.[0-9]*.d - - # Keep some extra files on some arches (powerpc, aarch64) - for f in arch/powerpc/lib/crtsavres.o arch/arm64/kernel/ftrace-mod.o; do - if [ -f "$buildRoot/$f" ]; then - mkdir -p "$(dirname $dev/lib/modules/${modDirVersion}/build/$f)" - cp $buildRoot/$f $dev/lib/modules/${modDirVersion}/build/$f - fi - done - - # !!! No documentation on how much of the source tree must be kept - # If/when kernel builds fail due to missing files, you can add - # them here. Note that we may see packages requiring headers - # from drivers/ in the future; it adds 50M to keep all of its - # headers on 3.10 though. - - chmod u+w -R .. - buildArchDir="$dev/lib/modules/${modDirVersion}/build/arch" - - # Remove unused arches - for d in $(cd arch/; ls); do - if [ -d "$buildArchDir/$d" ]; then continue; fi - if [ -d "$buildArchDir/arm64" ] && [ "$d" = arm ]; then continue; fi - rm -rf arch/$d - done - - # Remove all driver-specific code (50M of which is headers) - rm -fR drivers - - # Keep all headers - find . -type f -name '*.h' -print0 | xargs -0 -r chmod u-w - - # Keep linker scripts (they are required for out-of-tree modules on aarch64) - find . -type f -name '*.lds' -print0 | xargs -0 -r chmod u-w - - # Keep root and arch-specific Makefiles - chmod u-w Makefile arch/*/Makefile* - - # Keep whole scripts dir - chmod u-w -R scripts - - # Delete everything not kept - find . -type f -perm -u=w -print0 | xargs -0 -r rm - - # Delete empty directories - find -empty -type d -delete - ''; - - requiredSystemFeatures = [ "big-parallel" ]; - - meta = { - # https://github.com/NixOS/nixpkgs/pull/345534#issuecomment-2391238381 - broken = withRust && lib.versionOlder version "6.12"; - - description = - "The Linux kernel" - + ( - if kernelPatches == [ ] then - "" - else - " (with patches: " + lib.concatStringsSep ", " (map (x: x.name) kernelPatches) + ")" - ); - license = lib.licenses.gpl2Only; - homepage = "https://www.kernel.org/"; - maintainers = [ maintainers.thoughtpolice ]; - teams = [ teams.linux-kernel ]; - platforms = platforms.linux; - badPlatforms = - lib.optionals (lib.versionOlder version "4.15") [ - "riscv32-linux" - "riscv64-linux" - ] - ++ lib.optional (lib.versionOlder version "5.19") "loongarch64-linux"; - timeout = 14400; # 4 hours - identifiers.cpeParts = { - part = "o"; - vendor = "linux"; - product = "linux_kernel"; - inherit version; - update = "*"; - }; - } - // extraMeta; - }; - - commonMakeFlags = import ./common-flags.nix { - inherit - lib - stdenv - buildPackages - extraMakeFlags - ; - }; - in - - stdenv.mkDerivation ( - builtins.foldl' lib.recursiveUpdate { } [ - (drvAttrs config stdenv.hostPlatform.linux-kernel kernelPatches configfile) - { - inherit pname version; - - enableParallelBuilding = true; - - hardeningDisable = [ - "bindnow" - "format" - "fortify" - "stackprotector" - "pic" - ]; - - makeFlags = [ - "O=$(buildRoot)" - - # We have a `modules` variable in the environment for our - # split output, but the kernel Makefiles also define their - # own `modules` variable. Their definition wins, but Make - # remembers that the variable was originally from the - # environment and exports it to all the build recipes. This - # breaks the build with an “Argument list too long” error due - # to passing the huge list of every module object file in the - # environment of every process invoked by every build recipe. - # - # We use `--eval` here to undefine the inherited environment - # variable before any Makefiles are read, ensuring that the - # kernel’s definition creates a new, unexported variable. - "--eval=undefine modules" - ] - ++ commonMakeFlags; - - passthru = { inherit commonMakeFlags; }; - - karch = stdenv.hostPlatform.linuxArch; - } - (optionalAttrs (pos != null) { inherit pos; }) - ] - ) -) diff --git a/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix b/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix index 36639b8bdd23..35911b8be66d 100644 --- a/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix +++ b/pkgs/servers/home-assistant/custom-components/frigidaire/package.nix @@ -7,13 +7,13 @@ buildHomeAssistantComponent rec { owner = "bm1549"; domain = "frigidaire"; - version = "0.1.5"; + version = "0.1.6"; src = fetchFromGitHub { inherit owner; repo = "home-assistant-frigidaire"; tag = version; - hash = "sha256-b8/szaZGiM1/LZFJK0gi6oStCzXcH1BN5FqjRJBY7cA="; + hash = "sha256-KAg/DvDtUKA8GdapXlONC5zs8LLFdtZJZDeGrXNdcLQ="; }; dependencies = [ frigidaire ]; diff --git a/pkgs/servers/home-assistant/custom-components/prometheus_sensor/package.nix b/pkgs/servers/home-assistant/custom-components/prometheus_sensor/package.nix index fb2da022a49a..fc61d6cdd648 100644 --- a/pkgs/servers/home-assistant/custom-components/prometheus_sensor/package.nix +++ b/pkgs/servers/home-assistant/custom-components/prometheus_sensor/package.nix @@ -7,13 +7,13 @@ buildHomeAssistantComponent rec { owner = "mweinelt"; domain = "prometheus_sensor"; - version = "1.1.3"; + version = "1.2.0"; src = fetchFromGitHub { owner = "mweinelt"; repo = "ha-prometheus-sensor"; tag = version; - hash = "sha256-d13KJXgRPWrR2ilpEgZbVS/a6/y7DBRdEiGLpBaBsPc="; + hash = "sha256-ju63ptI1fXycbsE/26LxF/9Dxn93JixvDwb+hTXX/O4="; }; meta = { diff --git a/pkgs/servers/monitoring/grafana/plugins/yesoreyeram-infinity-datasource/default.nix b/pkgs/servers/monitoring/grafana/plugins/yesoreyeram-infinity-datasource/default.nix index ef8b96ea7e74..4537d26941cd 100644 --- a/pkgs/servers/monitoring/grafana/plugins/yesoreyeram-infinity-datasource/default.nix +++ b/pkgs/servers/monitoring/grafana/plugins/yesoreyeram-infinity-datasource/default.nix @@ -2,8 +2,8 @@ grafanaPlugin { pname = "yesoreyeram-infinity-datasource"; - version = "3.6.0"; - zipHash = "sha256-9skliIZ/Ezb6GOMNRhO4DUEvS+b89qlYCZDyAL/FXUE="; + version = "3.7.0"; + zipHash = "sha256-GHA4kHqzfa8bdldL/Bk+7oBa3lIraLz9dqwOJ1LsRlE="; meta = { description = "Visualize data from JSON, CSV, XML, GraphQL and HTML endpoints in Grafana"; license = lib.licenses.asl20; diff --git a/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix b/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix index df908dcb6b6d..ca7971ea9779 100644 --- a/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix +++ b/pkgs/servers/web-apps/discourse/plugins/all-plugins.nix @@ -5,6 +5,7 @@ in { discourse-bbcode-color = callPackage ./discourse-bbcode-color { }; discourse-docs = callPackage ./discourse-docs { }; + discourse-events = callPackage ./discourse-events { }; discourse-ldap-auth = callPackage ./discourse-ldap-auth { }; discourse-prometheus = callPackage ./discourse-prometheus { }; discourse-saved-searches = callPackage ./discourse-saved-searches { }; diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-events/Gemfile b/pkgs/servers/web-apps/discourse/plugins/discourse-events/Gemfile new file mode 100644 index 000000000000..abd2e7688bb7 --- /dev/null +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-events/Gemfile @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +# gem "rails" +gem "discourse_subscription_client", "0.1.11" +gem "iso-639", "0.3.5" +gem "ice_cube", "0.16.4" +gem "icalendar", "2.8.0" +gem "icalendar-recurrence", "1.1.3" diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-events/Gemfile.lock b/pkgs/servers/web-apps/discourse/plugins/discourse-events/Gemfile.lock new file mode 100644 index 000000000000..bfe659db2b0b --- /dev/null +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-events/Gemfile.lock @@ -0,0 +1,24 @@ +GEM + remote: https://rubygems.org/ + specs: + discourse_subscription_client (0.1.11) + icalendar (2.8.0) + ice_cube (~> 0.16) + icalendar-recurrence (1.1.3) + icalendar (~> 2.0) + ice_cube (~> 0.16) + ice_cube (0.16.4) + iso-639 (0.3.5) + +PLATFORMS + ruby + +DEPENDENCIES + discourse_subscription_client (= 0.1.11) + icalendar (= 2.8.0) + icalendar-recurrence (= 1.1.3) + ice_cube (= 0.16.4) + iso-639 (= 0.3.5) + +BUNDLED WITH + 2.5.22 diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-events/default.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-events/default.nix new file mode 100644 index 000000000000..2c7b8f8ec870 --- /dev/null +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-events/default.nix @@ -0,0 +1,22 @@ +{ + lib, + mkDiscoursePlugin, + fetchFromGitHub, +}: + +mkDiscoursePlugin { + name = "discourse-events"; + bundlerEnvArgs.gemdir = ./.; + src = fetchFromGitHub { + owner = "angusmcleod"; + repo = "discourse-events"; + rev = "83a6ee2c36a83bdb21fc58e3ec4bbd5fd5953e2e"; + sha256 = "sha256-QNcP32JYaon7phv3sFi1vlWZNwuL+LDzRWe6vi2FwTE="; + }; + meta = { + homepage = "https://github.com/angusmcleod/discourse-events"; + maintainers = [ lib.maintainers.leona ]; + license = lib.licenses.gpl2Plus; + description = "Discourse plugin to manage events"; + }; +} diff --git a/pkgs/servers/web-apps/discourse/plugins/discourse-events/gemset.nix b/pkgs/servers/web-apps/discourse/plugins/discourse-events/gemset.nix new file mode 100644 index 000000000000..f783f52d2ee9 --- /dev/null +++ b/pkgs/servers/web-apps/discourse/plugins/discourse-events/gemset.nix @@ -0,0 +1,57 @@ +{ + discourse_subscription_client = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "13vmi645ilsqjalz04738d8ng9zxhw5nd5s80lwcdd87dpzmkk3v"; + type = "gem"; + }; + version = "0.1.11"; + }; + icalendar = { + dependencies = [ "ice_cube" ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "11zfs0l8y2a6gpf0krm91d0ap2mnf04qky89dyzxwaspqxqgj174"; + type = "gem"; + }; + version = "2.8.0"; + }; + icalendar-recurrence = { + dependencies = [ + "icalendar" + "ice_cube" + ]; + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "06li3cdbwkd9y2sadjlbwj54blqdaa056yx338s4ddfxywrngigh"; + type = "gem"; + }; + version = "1.1.3"; + }; + ice_cube = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1dri4mcya1fwzrr9nzic8hj1jr28a2szjag63f9k7p2bw9fpw4fs"; + type = "gem"; + }; + version = "0.16.4"; + }; + iso-639 = { + groups = [ "default" ]; + platforms = [ ]; + source = { + remotes = [ "https://rubygems.org" ]; + sha256 = "1k1r8wgk6syvpsl3j5qfh5az5w4zdvk0pvpjl7qspznfdbp2mn71"; + type = "gem"; + }; + version = "0.3.5"; + }; +} diff --git a/pkgs/servers/web-apps/discourse/update.py b/pkgs/servers/web-apps/discourse/update.py index fd774b902274..4db0e88fe970 100755 --- a/pkgs/servers/web-apps/discourse/update.py +++ b/pkgs/servers/web-apps/discourse/update.py @@ -282,6 +282,7 @@ def update_plugins(): plugins = [ {'name': 'discourse-bbcode-color'}, {'name': 'discourse-docs'}, + {'name': 'discourse-events', 'owner': 'angusmcleod'}, {'name': 'discourse-ldap-auth', 'owner': 'jonmbake'}, {'name': 'discourse-prometheus'}, {'name': 'discourse-saved-searches'}, @@ -402,7 +403,7 @@ def update_plugins(): plugin_file = plugin_file.replace(",\n", ", ") # fix split lines for line in plugin_file.splitlines(): if 'gem ' in line: - line = ','.join(filter(lambda x: ":require_name" not in x, line.split(','))) + line = ','.join(filter(lambda x: ":require_name" not in x and "require_name:" not in x, line.split(','))) gemfile_text = gemfile_text + line + os.linesep version_file_match = version_file_regex.match(line) diff --git a/pkgs/tools/networking/maubot/default.nix b/pkgs/tools/networking/maubot/default.nix index 3288379b6025..a030049f5b3a 100644 --- a/pkgs/tools/networking/maubot/default.nix +++ b/pkgs/tools/networking/maubot/default.nix @@ -44,7 +44,6 @@ let pname = "maubot"; version = "0.5.1"; format = "setuptools"; - disabled = python.pythonOlder "3.10"; src = fetchPypi { inherit pname version; diff --git a/pkgs/tools/package-management/lix/default.nix b/pkgs/tools/package-management/lix/default.nix index 814bd457e050..747b76175641 100644 --- a/pkgs/tools/package-management/lix/default.nix +++ b/pkgs/tools/package-management/lix/default.nix @@ -64,24 +64,10 @@ let confDir ; - boehmgc = - # TODO: Why is this called `boehmgc-nix_2_3`? - let - boehmgc-nix_2_3 = boehmgc.override { - enableLargeConfig = true; - initialMarkStackSize = 1048576; - }; - in - # Since Lix 2.91 does not use boost coroutines, it does not need boehmgc patches either. - if lib.versionOlder lix-args.version "2.91" then - boehmgc-nix_2_3.overrideAttrs (drv: { - patches = (drv.patches or [ ]) ++ [ - # Part of the GC solution in https://github.com/NixOS/nix/pull/4944 - ../nix/patches/boehmgc-coroutine-sp-fallback.patch - ]; - }) - else - boehmgc-nix_2_3; + boehmgc = boehmgc.override { + enableLargeConfig = true; + initialMarkStackSize = 1048576; + }; aws-sdk-cpp = (aws-sdk-cpp.override { diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 6a7315cd589d..0228748f724e 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -122,8 +122,15 @@ let teams = [ lib.teams.nix ]; - # FIXME: https://github.com/NixOS/nixpkgs/issues/476794 - patches_common = lib.optional (stdenv.system == "aarch64-darwin") ./patches/skip-nix-shell.patch; + # Disables tests that have been flaky due to the darwin sandbox and fork safety + # with missing shebangs. + # See: + # - https://github.com/NixOS/nix/pull/14778 + # - https://github.com/NixOS/nixpkgs/issues/476794 + # - https://github.com/NixOS/nix/issues/13106 + patches_common = lib.optional ( + stdenv.system == "aarch64-darwin" + ) ./patches/skip-flaky-darwin-tests.patch; in lib.makeExtensible ( self: @@ -136,8 +143,8 @@ lib.makeExtensible ( patches = patches_common ++ [ (fetchpatch2 { name = "nix-2.28-14764-mdbook-0.5-support.patch"; - url = "https://github.com/NixOS/nix/commit/5a64138e862fe364e751c5c286e8db8c466aaee7.patch"; - hash = "sha256-K5TNroqSRH9j7vSzWw/6/b19mu7q+J5XPTDvJ3xVWlE="; + url = "https://github.com/NixOS/nix/commit/5a64138e862fe364e751c5c286e8db8c466aaee7.patch?full_index=1"; + hash = "sha256-vFv/D08x9urtoIE9wiC7Lln4Eq3sgNBwU7TBE1iyrfI="; }) ]; }; @@ -159,8 +166,8 @@ lib.makeExtensible ( ++ [ (fetchpatch2 { name = "nix-2.30-14695-mdbook-0.5-support.patch"; - url = "https://github.com/NixOS/nix/commit/5cbd7856de0a9c13351f98e32a1e26d0854d87fd.patch"; - hash = "sha256-w8WQfWxMtprDLoZUhrCm4zr6xZXKhoIirq3la0Y7/wU="; + url = "https://github.com/NixOS/nix/commit/5cbd7856de0a9c13351f98e32a1e26d0854d87fd.patch?full_index=1"; + hash = "sha256-r2ZF1zBZDKMvyX6X4VsaTMrg0zdjn59Jf6Hqg56r29E="; }) ] ); @@ -197,31 +204,44 @@ lib.makeExtensible ( nix_2_32 = addTests "nix_2_32" self.nixComponents_2_32.nix-everything; - nixComponents_2_33 = nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.33.1"; - inherit (self.nix_2_32.meta) teams; - otherSplices = generateSplicesForNixComponents "nixComponents_2_33"; - src = fetchFromGitHub { - owner = "NixOS"; - repo = "nix"; - tag = version; - hash = "sha256-TVKn52SoKq8mMyW/x3NPPskGVurFdnGGV0DGvnL0gak="; - }; - }; + nixComponents_2_33 = + (nixDependencies.callPackage ./modular/packages.nix rec { + version = "2.33.1"; + inherit (self.nix_2_32.meta) teams; + otherSplices = generateSplicesForNixComponents "nixComponents_2_33"; + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + tag = version; + hash = "sha256-TVKn52SoKq8mMyW/x3NPPskGVurFdnGGV0DGvnL0gak="; + }; + }).appendPatches + ( + patches_common + ++ [ + (fetchpatch2 { + name = "nix-2.33-15012-missing-include-glibc-2.42.patch"; + url = "https://github.com/NixOS/nix/commit/c0c13d73233c740b7d278c71b161da7b16217564.patch?full_index=1"; + hash = "sha256-iRMg36UMs5WmUfNxz4zoZq6mM3dwo2NiR8s1cM/uooU="; + }) + ] + ); nix_2_33 = addTests "nix_2_33" self.nixComponents_2_33.nix-everything; - nixComponents_git = nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.34pre20251217_${lib.substring 0 8 src.rev}"; - inherit teams; - otherSplices = generateSplicesForNixComponents "nixComponents_git"; - src = fetchFromGitHub { - owner = "NixOS"; - repo = "nix"; - rev = "b6add8dcc6f4f6feb1ce83aaffe4d7e660e6f616"; - hash = "sha256-2au7PdQ4HXSuktTPCtOJoD/LNjqMwbHIJmuzEYW1b7I="; - }; - }; + nixComponents_git = + (nixDependencies.callPackage ./modular/packages.nix rec { + version = "2.34pre20251217_${lib.substring 0 8 src.rev}"; + inherit teams; + otherSplices = generateSplicesForNixComponents "nixComponents_git"; + src = fetchFromGitHub { + owner = "NixOS"; + repo = "nix"; + rev = "b6add8dcc6f4f6feb1ce83aaffe4d7e660e6f616"; + hash = "sha256-2au7PdQ4HXSuktTPCtOJoD/LNjqMwbHIJmuzEYW1b7I="; + }; + }).appendPatches + patches_common; git = addTests "git" self.nixComponents_git.nix-everything; diff --git a/pkgs/tools/package-management/nix/modular/src/libstore/package.nix b/pkgs/tools/package-management/nix/modular/src/libstore/package.nix index 30312d05fdba..11aee41a57cf 100644 --- a/pkgs/tools/package-management/nix/modular/src/libstore/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/libstore/package.nix @@ -8,6 +8,7 @@ nix-util, boost, curl, + aws-c-common, aws-sdk-cpp, aws-crt-cpp, libseccomp, @@ -24,7 +25,9 @@ withAWS ? # Default is this way because there have been issues building this dependency - stdenv.hostPlatform == stdenv.buildPlatform && (stdenv.isLinux || stdenv.isDarwin), + stdenv.hostPlatform == stdenv.buildPlatform + && (stdenv.isLinux || stdenv.isDarwin) + && lib.meta.availableOn stdenv.hostPlatform aws-c-common, }: mkMesonLibrary (finalAttrs: { diff --git a/pkgs/tools/package-management/nix/patches/boehmgc-coroutine-sp-fallback.patch b/pkgs/tools/package-management/nix/patches/boehmgc-coroutine-sp-fallback.patch deleted file mode 100644 index 2fef8185aea2..000000000000 --- a/pkgs/tools/package-management/nix/patches/boehmgc-coroutine-sp-fallback.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff --git a/pthread_stop_world.c b/pthread_stop_world.c -index 2b45489..0e6d8ef 100644 ---- a/pthread_stop_world.c -+++ b/pthread_stop_world.c -@@ -776,6 +776,8 @@ - /* world is stopped. Should not fail if it isn't. */ - GC_INNER void GC_push_all_stacks(void) - { -+ size_t stack_limit; -+ pthread_attr_t pattr; - GC_bool found_me = FALSE; - size_t nthreads = 0; - int i; -@@ -868,6 +870,45 @@ - hi = p->altstack + p->altstack_size; - # endif - /* FIXME: Need to scan the normal stack too, but how ? */ -+ } else { -+ #if defined(HAVE_PTHREAD_ATTR_GET_NP) -+ if (pthread_attr_init(&pattr) != 0) { -+ ABORT("GC_push_all_stacks: pthread_attr_init failed!"); -+ } -+ if (pthread_attr_get_np(p->id, &pattr) != 0) { -+ ABORT("GC_push_all_stacks: pthread_attr_get_np failed!"); -+ } -+ #elif defined(HAVE_PTHREAD_GETATTR_NP) -+ if (pthread_getattr_np(p->id, &pattr)) { -+ ABORT("GC_push_all_stacks: pthread_getattr_np failed!"); -+ } -+ #else -+ /* assume default */ -+ if (pthread_attr_init(&pattr) != 0) { -+ ABORT("GC_push_all_stacks: pthread_attr_init failed!"); -+ } -+ #endif -+ if (pthread_attr_getstacksize(&pattr, &stack_limit)) { -+ ABORT("GC_push_all_stacks: pthread_attr_getstacksize failed!"); -+ } -+ if (pthread_attr_destroy(&pattr)) { -+ ABORT("GC_push_all_stacks: pthread_attr_destroy failed!"); -+ } -+ // When a thread goes into a coroutine, we lose its original sp until -+ // control flow returns to the thread. -+ // While in the coroutine, the sp points outside the thread stack, -+ // so we can detect this and push the entire thread stack instead, -+ // as an approximation. -+ // We assume that the coroutine has similarly added its entire stack. -+ // This could be made accurate by cooperating with the application -+ // via new functions and/or callbacks. -+ #ifndef STACK_GROWS_UP -+ if (lo >= hi || lo < hi - stack_limit) { // sp outside stack -+ lo = hi - stack_limit; -+ } -+ #else -+ #error "STACK_GROWS_UP not supported in boost_coroutine2 (as of june 2021), so we don't support it in Nix." -+ #endif - } - # ifdef STACKPTR_CORRECTOR_AVAILABLE - if (GC_sp_corrector != 0) diff --git a/pkgs/tools/package-management/nix/patches/skip-flaky-darwin-tests.patch b/pkgs/tools/package-management/nix/patches/skip-flaky-darwin-tests.patch new file mode 100644 index 000000000000..60d1a4ac78d7 --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/skip-flaky-darwin-tests.patch @@ -0,0 +1,18 @@ +--- a/tests/functional/ca/meson.build ++++ b/tests/functional/ca/meson.build +@@ -27 +27 @@ suites += { +- 'nix-shell.sh', ++ # 'nix-shell.sh', +--- a/tests/functional/flakes/meson.build ++++ b/tests/functional/flakes/meson.build +@@ -27 +27 @@ suites += { +- 'shebang.sh', ++ # 'shebang.sh', +--- a/tests/functional/meson.build ++++ b/tests/functional/meson.build +@@ -65 +65 @@ suites = [ +- 'user-envs.sh', ++ # 'user-envs.sh', +@@ -92 +92 @@ suites = [ +- 'nix-shell.sh', ++ # 'nix-shell.sh', diff --git a/pkgs/tools/package-management/nix/patches/skip-nix-shell.patch b/pkgs/tools/package-management/nix/patches/skip-nix-shell.patch deleted file mode 100644 index 1a54a291bf35..000000000000 --- a/pkgs/tools/package-management/nix/patches/skip-nix-shell.patch +++ /dev/null @@ -1,5 +0,0 @@ ---- a/tests/functional/meson.build -+++ b/tests/functional/meson.build -@@ -90 +90 @@ suites = [ -- 'nix-shell.sh', -+ #'nix-shell.sh', diff --git a/pkgs/tools/package-management/packagekit/default.nix b/pkgs/tools/package-management/packagekit/default.nix index 25c3a64abaca..8839deada685 100644 --- a/pkgs/tools/package-management/packagekit/default.nix +++ b/pkgs/tools/package-management/packagekit/default.nix @@ -28,9 +28,9 @@ nixosTests, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "packagekit"; - version = "1.3.2"; + version = "1.3.3"; outputs = [ "out" @@ -41,8 +41,8 @@ stdenv.mkDerivation rec { src = fetchFromGitHub { owner = "PackageKit"; repo = "PackageKit"; - rev = "v${version}"; - hash = "sha256-oQuJpn9G/V8CrrEs2agbKVS9xZnS1MgHa8B8P1nFmiw="; + rev = "v${finalAttrs.version}"; + hash = "sha256-BgVfM2EtuvV9qTFSy+WW5Ny1QrHIj3t2Royrn7ZHAA8="; }; buildInputs = [ @@ -94,9 +94,9 @@ stdenv.mkDerivation rec { # those files in $out/etc ; we just override the runtime paths here # same for /var & $out/var substituteInPlace etc/meson.build \ - --replace "install_dir: join_paths(get_option('sysconfdir'), 'PackageKit')" "install_dir: join_paths('$out', 'etc', 'PackageKit')" + --replace-fail "install_dir: join_paths(get_option('sysconfdir'), 'PackageKit')" "install_dir: join_paths('$out', 'etc', 'PackageKit')" substituteInPlace data/meson.build \ - --replace "install_dir: join_paths(get_option('localstatedir'), 'lib', 'PackageKit')," "install_dir: join_paths('$out', 'var', 'lib', 'PackageKit')," + --replace-fail "install_dir: join_paths(get_option('localstatedir'), 'lib', 'PackageKit')," "install_dir: join_paths('$out', 'var', 'lib', 'PackageKit')," ''; passthru.tests = { @@ -120,4 +120,4 @@ stdenv.mkDerivation rec { platforms = lib.platforms.unix; maintainers = [ ]; }; -} +}) diff --git a/pkgs/tools/security/ghidra/extensions/findcrypt/default.nix b/pkgs/tools/security/ghidra/extensions/findcrypt/default.nix index d60d51fe0142..4b61442abfe8 100644 --- a/pkgs/tools/security/ghidra/extensions/findcrypt/default.nix +++ b/pkgs/tools/security/ghidra/extensions/findcrypt/default.nix @@ -5,13 +5,13 @@ }: buildGhidraExtension (finalAttrs: { pname = "findcrypt"; - version = "3.1.3"; + version = "3.1.4"; src = fetchFromGitHub { owner = "antoniovazquezblanco"; repo = "GhidraFindcrypt"; rev = "v${finalAttrs.version}"; - hash = "sha256-c+7WQ7EeZm/9IyqGthTKBtm7EnNp0o7BmIM6GskTo6Y="; + hash = "sha256-ZrPLAjdfqHVjnOSBMTrXWK9DDHyIwaUt0ZYCwGiGLBg="; }; meta = { diff --git a/pkgs/tools/security/ghidra/extensions/kaiju/default.nix b/pkgs/tools/security/ghidra/extensions/kaiju/default.nix index b03bfc71571a..f46c07cac596 100644 --- a/pkgs/tools/security/ghidra/extensions/kaiju/default.nix +++ b/pkgs/tools/security/ghidra/extensions/kaiju/default.nix @@ -26,13 +26,13 @@ let self = buildGhidraExtension (finalAttrs: { pname = "kaiju"; - version = "251218"; + version = "260116"; src = fetchFromGitHub { owner = "CERTCC"; repo = "kaiju"; rev = finalAttrs.version; - hash = "sha256-oSbYinEysFHMdFUQCA60wVDCTCIDvEDzW76ZFa0ANbg="; + hash = "sha256-cEGBBVuXUcacPzfc1cWGjDPWt8IfGNakDvfzoDCaBAI="; }; buildInputs = [ diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index d279f6c5672c..479af8a8f89e 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -279,6 +279,7 @@ mapAliases { akkoma-emoji = throw "'akkoma-emoji' has been renamed to/replaced by 'blobs_gg'"; # Converted to throw 2025-10-27 akkoma-frontends.admin-fe = throw "'akkoma-frontends.admin-fe' has been renamed to/replaced by 'akkoma-admin-fe'"; # Converted to throw 2025-10-27 akkoma-frontends.akkoma-fe = throw "'akkoma-frontends.akkoma-fe' has been renamed to/replaced by 'akkoma-fe'"; # Converted to throw 2025-10-27 + amazon-ecs-cli = throw "'amazon-ecs-cli' has been removed due to being unmaintained upstream"; # Added 2026-01-19 amazon-qldb-shell = throw "'amazon-qldb-shell' has been removed due to being unmaintained upstream"; # Added 2025-07-30 amdvlk = throw "'amdvlk' has been removed since it was deprecated by AMD. Its replacement, RADV, is enabled by default."; # Added 2025-09-20 ams-lv2 = throw "'ams-lv2' has been removed due to being archived upstream."; # Added 2025-10-26 @@ -337,6 +338,8 @@ mapAliases { avr-sim = throw "'avr-sim' has been removed as it was broken and unmaintained. Possible alternatives are 'simavr', SimulAVR and AVRStudio."; # Added 2025-05-31 awesome-4-0 = throw "'awesome-4-0' has been renamed to/replaced by 'awesome'"; # Converted to throw 2025-10-27 awf = throw "'awf' has been removed as the upstream project was archived in 2021"; # Added 2025-10-03 + aws-shell = throw "'aws-shell' has been removed because it is unmaintained upstream"; # Added 2026-01-18 + aws_mturk_clt = throw "'aws_mturk_clt' has been removed due to being unmaintained upstream. Use 'awscli' with 'mturk' subcommands instead."; # Added 2026-01-19 axmldec = throw "'axmldec' has been removed as it was broken and unmaintained for 8 years"; # Added 2025-05-17 backlight-auto = throw "'backlight-auto' has been removed as it relies on Zig 0.12 which has been dropped."; # Added 2025-08-22 badtouch = throw "'badtouch' has been renamed to/replaced by 'authoscope'"; # Converted to throw 2025-10-27 @@ -1223,6 +1226,7 @@ mapAliases { nfstrace = throw "nfstrace has been removed, as it was broken"; # Added 2025-08-25 nginxQuic = throw "'nginxQuic' has been removed. QUIC support is now available in the default nginx builds."; ngrid = throw "'ngrid' has been removed as it has been unmaintained upstream and broken"; # Added 2025-11-15 + nimbo = throw "'nimbo' has been removed due to being archived upstream."; # Added 2026-01-18 nix-direnv-flakes = throw "'nix-direnv-flakes' has been renamed to/replaced by 'nix-direnv'"; # Converted to throw 2025-10-27 nix-ld-rs = throw "'nix-ld-rs' has been renamed to/replaced by 'nix-ld'"; # Converted to throw 2025-10-27 nix-linter = throw "nix-linter has been removed as it was broken for 3 years and unmaintained upstream"; # Added 2025-09-06 @@ -1584,6 +1588,7 @@ mapAliases { spago = spago-legacy; # Added 2025-09-23, pkgs.spago should become spago@next which hasn't been packaged yet spark2014 = throw "'spark2014' has been renamed to/replaced by 'gnatprove'"; # Converted to throw 2025-10-27 sparkle = throw "'sparkle' has been removed because upstream repository source code has been deleted"; # Added 2025-12-29 + speed_dreams = speed-dreams; # Added 2026-01-19 spidermonkey_91 = throw "'spidermonkey_91 is EOL since 2022/09"; # Added 2025-08-26 spoof = throw "'spoof' has been removed, as it is broken with the latest MacOS versions and is unmaintained upstream"; # Added 2025-11-14 spotify-unwrapped = throw "'spotify-unwrapped' has been renamed to/replaced by 'spotify'"; # Converted to throw 2025-10-27 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3d2041c9bce2..c8b830890c9a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11534,6 +11534,7 @@ with pkgs; rke2_1_32 rke2_1_33 rke2_1_34 + rke2_1_35 rke2_stable rke2_latest ; diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 72e6b416bb44..5df8c0015013 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -521,7 +521,9 @@ let easy-format = callPackage ../development/ocaml-modules/easy-format { }; - eigen = callPackage ../development/ocaml-modules/eigen { }; + eigen = callPackage ../development/ocaml-modules/eigen { + stdenv = pkgs.gcc14Stdenv; + }; eio = callPackage ../development/ocaml-modules/eio { }; eio_linux = callPackage ../development/ocaml-modules/eio/linux.nix { }; @@ -786,6 +788,10 @@ let happy-eyeballs-lwt = callPackage ../development/ocaml-modules/happy-eyeballs/lwt.nix { }; + happy-eyeballs-miou-unix = + callPackage ../development/ocaml-modules/happy-eyeballs/miou-unix.nix + { }; + happy-eyeballs-mirage = callPackage ../development/ocaml-modules/happy-eyeballs/mirage.nix { }; hashcons = callPackage ../development/ocaml-modules/hashcons { }; diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 42dec1460948..7ab20c936134 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -277,6 +277,8 @@ mapAliases { mkdocs-macros = mkdocs-macros-plugin; # added 2025-09-02 mkdocs-minify = throw "'mkdocs-minify' has been renamed to/replaced by 'mkdocs-minify-plugin'"; # Converted to throw 2025-10-29 mne-python = throw "'mne-python' has been renamed to/replaced by 'mne'"; # Converted to throw 2025-10-29 + modeled = "'modeled' has been removed because it is unmaintained"; # Added 2026-01-19 + moretools = "'moretools' has been removed because it is unmaintained"; # Added 2026-01-19 mpris-server = throw "mpris-server was removed because it is unused"; # added 2025-10-31 msldap-bad = throw "'msldap-bad' has been renamed to/replaced by 'badldap'"; # added 2025-11-06 mullvad-closest = throw "'mullvad-closest' has been removed as it was unmaintained. Consider using 'mullvad-compass' instead."; # Added 2026-01-13 @@ -441,6 +443,7 @@ mapAliases { retry_decorator = throw "'retry_decorator' has been renamed to/replaced by 'retry-decorator'"; # Converted to throw 2025-10-29 retworkx = throw "'retworkx' has been renamed to/replaced by 'rustworkx'"; # Converted to throw 2025-10-29 rki-covid-parser = throw "rki-covid-parser has been removed because it is unmaintained and broken"; # added 2025-09-20 + robotframework-tools = "'robotframework-tools' has been removed because it is unmaintained"; # Added 2026-01-19 ROPGadget = throw "'ROPGadget' has been renamed to/replaced by 'ropgadget'"; # Converted to throw 2025-10-29 rtslib = throw "'rtslib' has been renamed to/replaced by 'rtslib-fb'"; # Converted to throw 2025-10-29 rtsp-to-webrtc = throw "rtsp-to-webrtc has been removed because it is unmaintained"; # added 2025-09-20 @@ -534,6 +537,7 @@ mapAliases { z3 = throw "'z3' has been renamed to/replaced by 'z3-solver'"; # Converted to throw 2025-10-29 zc-buildout221 = throw "'zc-buildout221' has been renamed to/replaced by 'zc-buildout'"; # Converted to throw 2025-10-29 zc_lockfile = throw "'zc_lockfile' has been renamed to/replaced by 'zc-lockfile'"; # Converted to throw 2025-10-29 + zetup = "'zetup' has been removed because it is unmaintained"; # Added 2026-01-19 zope_component = throw "'zope_component' has been renamed to/replaced by 'zope-component'"; # Converted to throw 2025-10-29 zope_configuration = throw "'zope_configuration' has been renamed to/replaced by 'zope-configuration'"; # Converted to throw 2025-10-29 zope_contenttype = throw "'zope_contenttype' has been renamed to/replaced by 'zope-contenttype'"; # Converted to throw 2025-10-29 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 23bf968e1134..44efe9f0b40f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9925,8 +9925,6 @@ self: super: with self; { modelcif = callPackage ../development/python-modules/modelcif { }; - modeled = callPackage ../development/python-modules/modeled { }; - modelscope = callPackage ../development/python-modules/modelscope { }; modern-colorthief = callPackage ../development/python-modules/modern-colorthief { }; @@ -10004,8 +10002,6 @@ self: super: with self; { moreorless = callPackage ../development/python-modules/moreorless { }; - moretools = callPackage ../development/python-modules/moretools { }; - morfessor = callPackage ../development/python-modules/morfessor { }; morphys = callPackage ../development/python-modules/morphys { }; @@ -11243,6 +11239,8 @@ self: super: with self; { }; }; + onnx-ir = callPackage ../development/python-modules/onnx-ir { }; + onnxconverter-common = callPackage ../development/python-modules/onnxconverter-common { }; onnxmltools = callPackage ../development/python-modules/onnxmltools { }; @@ -11256,6 +11254,8 @@ self: super: with self; { onnxruntime-tools = callPackage ../development/python-modules/onnxruntime-tools { }; + onnxscript = callPackage ../development/python-modules/onnxscript { }; + onnxslim = callPackage ../development/python-modules/onnxslim { }; onvif-zeep = callPackage ../development/python-modules/onvif-zeep { }; @@ -16637,8 +16637,6 @@ self: super: with self; { robotframework-sshlibrary = callPackage ../development/python-modules/robotframework-sshlibrary { }; - robotframework-tools = callPackage ../development/python-modules/robotframework-tools { }; - robotstatuschecker = callPackage ../development/python-modules/robotstatuschecker { }; robotsuite = callPackage ../development/python-modules/robotsuite { }; @@ -21124,8 +21122,6 @@ self: super: with self; { zerorpc = callPackage ../development/python-modules/zerorpc { }; - zetup = callPackage ../development/python-modules/zetup { }; - zeversolar = callPackage ../development/python-modules/zeversolar { }; zeversolarlocal = callPackage ../development/python-modules/zeversolarlocal { };