diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 64f3109dba20..441b55cf6ebe 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -288,3 +288,7 @@ b4532efe93882ae2e3fc579929a42a5a56544146 # systemd: nixfmt b1c5cd3e794cdf89daa5e4f0086274a416a1cded + +#nixos/nextcloud: remove with lib usage +b6088b0d8e13e8d18464d78935f0130052784658 +f7611cad5154a9096faa26d156a4079577bfae17 diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index d93e11fbcd7a..0392578df488 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -34,6 +34,7 @@ jobs: private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }} permission-contents: write permission-pull-requests: write + permission-workflows: write - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: diff --git a/.github/workflows/eval.yml b/.github/workflows/eval.yml index dc9889545857..53ad022a559f 100644 --- a/.github/workflows/eval.yml +++ b/.github/workflows/eval.yml @@ -11,6 +11,10 @@ on: systems: required: true type: string + testVersions: + required: false + default: false + type: boolean secrets: OWNER_APP_PRIVATE_KEY: required: false @@ -22,13 +26,49 @@ defaults: shell: bash jobs: + versions: + if: inputs.testVersions + runs-on: ubuntu-24.04-arm + outputs: + versions: ${{ steps.versions.outputs.versions }} + steps: + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + path: trusted + sparse-checkout: | + ci/supportedVersions.nix + + - name: Check out the PR at the test merge commit + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + ref: ${{ inputs.mergedSha }} + path: untrusted + sparse-checkout: | + ci/pinned.json + + - name: Install Nix + uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31 + + - name: Load supported versions + id: versions + run: | + echo "versions=$(trusted/ci/supportedVersions.nix --arg pinnedJson untrusted/ci/pinned.json)" >> "$GITHUB_OUTPUT" + eval: runs-on: ubuntu-24.04-arm + needs: versions + if: ${{ !cancelled() && !failure() }} strategy: fail-fast: false matrix: system: ${{ fromJSON(inputs.systems) }} - name: ${{ matrix.system }} + version: + - "" # Default Eval triggering rebuild labels and such. + - ${{ fromJSON(needs.versions.outputs.versions || '[]') }} # Only for ci/pinned.json updates. + # Failures for versioned Evals will be collected in a separate job below + # to not interrupt main Eval's compare step. + continue-on-error: ${{ matrix.version != '' }} + name: ${{ matrix.system }}${{ matrix.version && format(' @ {0}', matrix.version) || '' }} outputs: targetRunId: ${{ steps.targetRunId.outputs.targetRunId }} timeout-minutes: 15 @@ -60,17 +100,19 @@ jobs: - name: Evaluate the ${{ matrix.system }} output paths for all derivation attributes env: MATRIX_SYSTEM: ${{ matrix.system }} + MATRIX_VERSION: ${{ matrix.version || 'nixVersions.latest' }} run: | nix-build untrusted/ci --arg nixpkgs ./pinned -A eval.singleSystem \ --argstr evalSystem "$MATRIX_SYSTEM" \ --arg chunkSize 8000 \ + --argstr nixPath "$MATRIX_VERSION" \ --out-link merged # If it uses too much memory, slightly decrease chunkSize - name: Upload the output paths and eval stats uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: - name: merged-${{ matrix.system }} + name: ${{ matrix.version && format('{0}-', matrix.version) || '' }}merged-${{ matrix.system }} path: merged/* - name: Log current API rate limits @@ -125,7 +167,7 @@ jobs: GH_TOKEN: ${{ github.token }} run: gh api /rate_limit | jq - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 if: steps.targetRunId.outputs.targetRunId with: run-id: ${{ steps.targetRunId.outputs.targetRunId }} @@ -149,13 +191,13 @@ jobs: if: steps.targetRunId.outputs.targetRunId uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: - name: diff-${{ matrix.system }} + name: ${{ matrix.version && format('{0}-', matrix.version) || '' }}diff-${{ matrix.system }} path: diff/* compare: runs-on: ubuntu-24.04-arm needs: [eval] - if: needs.eval.outputs.targetRunId + if: needs.eval.outputs.targetRunId && !cancelled() && !failure() permissions: statuses: write timeout-minutes: 5 @@ -171,7 +213,7 @@ jobs: pinnedFrom: trusted - name: Download output paths and eval stats for all systems - uses: actions/download-artifact@de96f4613b77ec03b5cf633e7c350c32bd3c5660 # v4.1.8 + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 with: pattern: diff-* path: diff @@ -240,6 +282,91 @@ jobs: target_url }) + # Creates a matrix of Eval performance for various versions and systems. + report: + runs-on: ubuntu-24.04-arm + needs: [versions, eval] + steps: + - name: Download output paths and eval stats for all versions + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + with: + pattern: "*-diff-*" + path: versions + + - name: Add version comparison table to job summary + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + env: + SYSTEMS: ${{ inputs.systems }} + VERSIONS: ${{ needs.versions.outputs.versions }} + with: + script: | + const { readFileSync } = require('node:fs') + const path = require('node:path') + + const systems = JSON.parse(process.env.SYSTEMS) + const versions = JSON.parse(process.env.VERSIONS) + + core.summary.addHeading('Lix/Nix version comparison') + core.summary.addTable( + [].concat( + [ + [{ data: 'Version', header: true }].concat( + systems.map((system) => ({ data: system, header: true })), + ), + ], + versions.map((version) => + [{ data: version }].concat( + systems.map((system) => { + try { + const artifact = path.join('versions', `${version}-diff-${system}`) + const time = Math.round( + parseFloat( + readFileSync( + path.join(artifact, 'after', system, 'total-time'), + 'utf-8', + ), + ), + ) + const diff = JSON.parse( + readFileSync(path.join(artifact, system, 'diff.json'), 'utf-8'), + ) + const attrs = [].concat( + diff.added, + diff.removed, + diff.changed, + diff.rebuilds + ).filter(attr => + // Exceptions related to dev shells, which changed at some time between 2.18 and 2.24. + !attr.startsWith('tests.devShellTools.nixos.') && + !attr.startsWith('tests.devShellTools.unstructuredDerivationInputEnv.') + ) + if (attrs.length > 0) { + core.setFailed( + `${version} on ${system} has changed outpaths!\nNote: Please make sure to update ci/pinned.json separately from changes to other packages.`, + ) + return { data: ':x:' } + } + return { data: time } + } catch { + core.warning(`${version} on ${system} did not produce artifact.`) + return { data: ':warning:' } + } + }), + ), + ), + ), + ) + core.summary.addRaw( + '\n*Evaluation time in seconds without downloading dependencies.*', + true, + ) + core.summary.addRaw('\n*:warning: Job did not report a result.*', true) + core.summary.addRaw( + '\n*:x: Job produced different outpaths than the target branch.*', + true, + ) + core.summary.write() + misc: if: ${{ github.event_name != 'push' }} runs-on: ubuntu-24.04-arm diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 086b14268f5b..a09ea195524f 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -28,6 +28,7 @@ jobs: mergedSha: ${{ steps.get-merge-commit.outputs.mergedSha }} targetSha: ${{ steps.get-merge-commit.outputs.targetSha }} systems: ${{ steps.systems.outputs.systems }} + touched: ${{ steps.files.outputs.touched }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: @@ -64,6 +65,20 @@ jobs: core.setOutput('head', headClassification) core.info('head classification:', headClassification) + - name: Determine changed files + id: files + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const files = (await github.paginate(github.rest.pulls.listFiles, { + ...context.repo, + pull_number: context.payload.pull_request.number, + per_page: 100, + })).map(file => file.filename) + + if (files.includes('ci/pinned.json')) core.setOutput('touched', ['pinned']) + else core.setOutput('touched', []) + check: name: Check needs: [prepare] @@ -96,6 +111,7 @@ jobs: mergedSha: ${{ needs.prepare.outputs.mergedSha }} targetSha: ${{ needs.prepare.outputs.targetSha }} systems: ${{ needs.prepare.outputs.systems }} + testVersions: ${{ contains(fromJSON(needs.prepare.outputs.touched), 'pinned') && !contains(fromJSON(needs.prepare.outputs.headBranch).type, 'development') }} labels: name: Labels @@ -144,7 +160,7 @@ jobs: # Do NOT change the name of this job, otherwise the rule will not catch it anymore. # This would prevent all PRs from merging. name: no PR failures - if: ${{ failure() }} + if: ${{ cancelled() || failure() }} runs-on: ubuntu-24.04-arm steps: - run: exit 1 diff --git a/.github/workflows/reviewers.yml b/.github/workflows/reviewers.yml index 2cddb17a1018..58c201724273 100644 --- a/.github/workflows/reviewers.yml +++ b/.github/workflows/reviewers.yml @@ -96,7 +96,7 @@ jobs: run: gh api /rate_limit | jq - name: Download the comparison results - uses: actions/download-artifact@de96f4613b77ec03b5cf633e7c350c32bd3c5660 # v4.1.8 + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 with: run-id: ${{ steps.eval.outputs.run-id }} github-token: ${{ github.token }} diff --git a/ci/default.nix b/ci/default.nix index 603e11513aa7..c75de0ff2b9a 100644 --- a/ci/default.nix +++ b/ci/default.nix @@ -5,6 +5,7 @@ in system ? builtins.currentSystem, nixpkgs ? null, + nixPath ? "nixVersions.latest", }: let nixpkgs' = @@ -16,13 +17,7 @@ let else nixpkgs; - pkgs = import nixpkgs' { - inherit system; - config = { - permittedInsecurePackages = [ "nix-2.3.18" ]; - }; - overlays = [ ]; - }; + pkgs = import nixpkgs' { inherit system; }; fmt = let @@ -115,7 +110,7 @@ rec { # (nixVersions.stable and Lix) here somehow at some point to ensure we don't # have eval divergence. eval = pkgs.callPackage ./eval { - nix = pkgs.nixVersions.latest; + nix = pkgs.lib.getAttrFromPath (pkgs.lib.splitString "." nixPath) pkgs; }; # CI jobs @@ -127,8 +122,7 @@ rec { parse = pkgs.lib.recurseIntoAttrs { latest = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.latest; }; lix = pkgs.callPackage ./parse.nix { nix = pkgs.lix; }; - # TODO: Raise nixVersions.minimum to 2.24 and flip back to it. - minimum = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.nix_2_24; }; + nix_2_24 = pkgs.callPackage ./parse.nix { nix = pkgs.nixVersions.nix_2_24; }; }; shell = import ../shell.nix { inherit nixpkgs system; }; tarball = import ../pkgs/top-level/make-tarball.nix { diff --git a/ci/eval/compare/default.nix b/ci/eval/compare/default.nix index 81eebcc9adb1..9060d357d662 100644 --- a/ci/eval/compare/default.nix +++ b/ci/eval/compare/default.nix @@ -146,6 +146,12 @@ runCommand "compare" cp ${changed-paths} $out/changed-paths.json + { + echo + echo "# Packages" + echo + jq -r -f ${./generate-step-summary.jq} < ${changed-paths} + } >> $out/step-summary.md if jq -e '(.attrdiff.added | length == 0) and (.attrdiff.removed | length == 0)' "${changed-paths}" > /dev/null; then # Chunks have changed between revisions @@ -175,12 +181,5 @@ runCommand "compare" } >> $out/step-summary.md fi - { - echo - echo "# Packages" - echo - jq -r -f ${./generate-step-summary.jq} < ${changed-paths} - } >> $out/step-summary.md - cp "$maintainersPath" "$out/maintainers.json" '' diff --git a/ci/pinned.json b/ci/pinned.json index 1f1af448a2e8..14a454c2e258 100644 --- a/ci/pinned.json +++ b/ci/pinned.json @@ -9,9 +9,9 @@ }, "branch": "nixpkgs-unstable", "submodules": false, - "revision": "6a489c9482ca676ce23c0bcd7f2e1795383325fa", - "url": "https://github.com/NixOS/nixpkgs/archive/6a489c9482ca676ce23c0bcd7f2e1795383325fa.tar.gz", - "hash": "0vsvkhy3gb8yzq62vazhmpqixssmd4xinnll7w73l4vrqd611wlf" + "revision": "641d909c4a7538f1539da9240dedb1755c907e40", + "url": "https://github.com/NixOS/nixpkgs/archive/641d909c4a7538f1539da9240dedb1755c907e40.tar.gz", + "hash": "10hpb1aw884k3zzcy1mhf47dqvfagiyx7kr6hg0p5xcwg04mkx8x" }, "treefmt-nix": { "type": "Git", @@ -22,9 +22,9 @@ }, "branch": "main", "submodules": false, - "revision": "58bd4da459f0a39e506847109a2a5cfceb837796", - "url": "https://github.com/numtide/treefmt-nix/archive/58bd4da459f0a39e506847109a2a5cfceb837796.tar.gz", - "hash": "01bg9b4xzlv6s5q1q78vib6l2csw02b3rk5bm5yj4gx2sk2hvmrq" + "revision": "7d81f6fb2e19bf84f1c65135d1060d829fae2408", + "url": "https://github.com/numtide/treefmt-nix/archive/7d81f6fb2e19bf84f1c65135d1060d829fae2408.tar.gz", + "hash": "1cg20q8ja8k2nb7mzy95hgmd8whxapc3fbyndh1ip5dr6d1grxfs" } }, "version": 5 diff --git a/ci/supportedVersions.nix b/ci/supportedVersions.nix new file mode 100755 index 000000000000..77f6f7dd1475 --- /dev/null +++ b/ci/supportedVersions.nix @@ -0,0 +1,32 @@ +#!/usr/bin/env -S nix-instantiate --eval --strict --json --arg unused true +# Unused argument to trigger nix-instantiate calling this function with the default arguments. +{ + pinnedJson ? ./pinned.json, +}: +let + pinned = (builtins.fromJSON (builtins.readFile pinnedJson)).pins; + nixpkgs = fetchTarball { + inherit (pinned.nixpkgs) url; + sha256 = pinned.nixpkgs.hash; + }; + pkgs = import nixpkgs { + config.allowAliases = false; + }; + + inherit (pkgs) lib; + + lix = lib.pipe pkgs.lixPackageSets [ + (lib.filterAttrs (_: set: lib.isDerivation set.lix or null && set.lix.meta.available)) + lib.attrNames + (lib.filter (name: lib.match "lix_[0-9_]+|git" name != null)) + (map (name: "lixPackageSets.${name}.lix")) + ]; + + nix = lib.pipe pkgs.nixVersions [ + (lib.filterAttrs (_: drv: lib.isDerivation drv && drv.meta.available)) + lib.attrNames + (lib.filter (name: lib.match "nix_[0-9_]+|git" name != null)) + (map (name: "nixVersions.${name}")) + ]; +in +lix ++ nix diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 6f4dc632c8ac..1c4017dc3fa4 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -14,6 +14,10 @@ +- `nixVersions.nix_2_3` has been dropped because it was insecure and unmaintained. + +- The minimum version of Nix required to evaluate Nixpkgs has been raised from 2.3 to 2.18. + - The `offrss` package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader - `base16-builder` node package has been removed due to lack of upstream maintenance. diff --git a/lib/minver.nix b/lib/minver.nix index cb9c6ee3156f..c9fc45354d2e 100644 --- a/lib/minver.nix +++ b/lib/minver.nix @@ -1,2 +1,2 @@ # Expose the minimum required version for evaluating Nixpkgs -"2.3.17" +"2.18" diff --git a/lib/tests/release.nix b/lib/tests/release.nix index 5a1752010745..3eb62912ffc4 100644 --- a/lib/tests/release.nix +++ b/lib/tests/release.nix @@ -2,21 +2,14 @@ # The pkgs used for dependencies for the testing itself # Don't test properties of pkgs.lib, but rather the lib in the parent directory system ? builtins.currentSystem, - pkgs ? - import ../.. { - inherit system; - config = { - permittedInsecurePackages = [ "nix-2.3.18" ]; - }; - } - // { - lib = throw "pkgs.lib accessed, but the lib tests should use nixpkgs' lib path directly!"; - }, + pkgs ? import ../.. { inherit system; } // { + lib = throw "pkgs.lib accessed, but the lib tests should use nixpkgs' lib path directly!"; + }, # For testing someone may edit impure.nix to return cross pkgs, use `pkgsBuildBuild` directly so everything here works. pkgsBB ? pkgs.pkgsBuildBuild, nix ? pkgs-nixVersions.stable, nixVersions ? [ - pkgs-nixVersions.minimum + pkgs-nixVersions.nix_2_24 nix pkgs-nixVersions.latest ], diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 0af0e0272263..4323b94b5762 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -28147,6 +28147,12 @@ githubId = 908716; name = "Zach Coyle"; }; + ZachDavies = { + name = "Zach Davies"; + email = "zdmalta@proton.me"; + github = "ZachDavies"; + githubId = 131615861; + }; Zaczero = { name = "Kamil Monicz"; email = "kamil@monicz.dev"; diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix index 1a5e741c4597..86ba8683c54b 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix @@ -11,7 +11,7 @@ # Add Firefox and other tools useful for installation to the launcher favoriteAppsOverride = '' [org.gnome.shell] - favorite-apps=[ 'firefox.desktop', 'nixos-manual.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'gparted.desktop', 'io.calamares.calamares.desktop' ] + favorite-apps=[ 'firefox.desktop', 'nixos-manual.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'gparted.desktop', 'calamares.desktop' ] ''; # Override GNOME defaults to disable GNOME tour and disable suspend diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix index a8a30ca42b52..84d0ea44bb84 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix @@ -45,8 +45,8 @@ ln -sfT ${pkgs.plasma5Packages.konsole}/share/applications/org.kde.konsole.desktop ${ desktopDir + "org.kde.konsole.desktop" } - ln -sfT ${pkgs.calamares-nixos}/share/applications/io.calamares.calamares.desktop ${ - desktopDir + "io.calamares.calamares.desktop" + ln -sfT ${pkgs.calamares-nixos}/share/applications/calamares.desktop ${ + desktopDir + "calamares.desktop" } ''; diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix index 90683fa088dc..793f0cabc996 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix @@ -50,8 +50,8 @@ ln -sfT ${manualDesktopFile} ${desktopDir + "nixos-manual.desktop"} ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop ${desktopDir + "gparted.desktop"} - ln -sfT ${pkgs.calamares-nixos}/share/applications/io.calamares.calamares.desktop ${ - desktopDir + "io.calamares.calamares.desktop" + ln -sfT ${pkgs.calamares-nixos}/share/applications/calamares.desktop ${ + desktopDir + "calamares.desktop" } ''; diff --git a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix index 631342d51ea7..097a4eca51d5 100644 --- a/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix +++ b/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nix @@ -4,16 +4,18 @@ { pkgs, ... }: let calamares-nixos-autostart = pkgs.makeAutostartItem { - name = "io.calamares.calamares"; + name = "calamares"; package = pkgs.calamares-nixos; }; in { imports = [ ./installation-cd-graphical-base.nix ]; + # required for kpmcore to work correctly + programs.partition-manager.enable = true; + environment.systemPackages = with pkgs; [ # Calamares for graphical installation - libsForQt5.kpmcore calamares-nixos calamares-nixos-autostart calamares-nixos-extensions diff --git a/nixos/modules/programs/partition-manager.nix b/nixos/modules/programs/partition-manager.nix index 9a4650269e55..0f637e26d3d2 100644 --- a/nixos/modules/programs/partition-manager.nix +++ b/nixos/modules/programs/partition-manager.nix @@ -15,7 +15,7 @@ in programs.partition-manager = { enable = lib.mkEnableOption "KDE Partition Manager"; - package = lib.mkPackageOption pkgs [ "libsForQt5" "partitionmanager" ] { }; + package = lib.mkPackageOption pkgs [ "kdePackages" "partitionmanager" ] { }; }; }; diff --git a/nixos/modules/services/web-apps/nextcloud.nix b/nixos/modules/services/web-apps/nextcloud.nix index 1e9360dc1f92..658666680340 100644 --- a/nixos/modules/services/web-apps/nextcloud.nix +++ b/nixos/modules/services/web-apps/nextcloud.nix @@ -5,11 +5,6 @@ ... }: let - inherit (lib) - mkIf - mkMerge - ; - cfg = config.services.nextcloud; overridePackage = cfg.package.override { @@ -1024,543 +1019,545 @@ in }; }; - config = mkIf cfg.enable (mkMerge [ - { - warnings = - let - latest = 31; - upgradeWarning = major: nixos: '' - A legacy Nextcloud install (from before NixOS ${nixos}) may be installed. - - After nextcloud${toString major} is installed successfully, you can safely upgrade - to ${toString (major + 1)}. The latest version available is Nextcloud${toString latest}. - - Please note that Nextcloud doesn't support upgrades across multiple major versions - (i.e. an upgrade from 16 is possible to 17, but not 16 to 18). - - The package can be upgraded by explicitly declaring the service-option - `services.nextcloud.package`. - ''; - - in - (lib.optional (cfg.poolConfig != null) '' - Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release. - Please migrate your configuration to config.services.nextcloud.poolSettings. - '') - ++ (lib.optional (cfg.config.dbtableprefix != null) '' - Using `services.nextcloud.config.dbtableprefix` is deprecated. Fresh installations with this - option set are not allowed anymore since v20. - - If you have an existing installation with a custom table prefix, make sure it is - set correctly in `config.php` and remove the option from your NixOS config. - '') - ++ (lib.optional (lib.versionOlder overridePackage.version "26") (upgradeWarning 25 "23.05")) - ++ (lib.optional (lib.versionOlder overridePackage.version "27") (upgradeWarning 26 "23.11")) - ++ (lib.optional (lib.versionOlder overridePackage.version "28") (upgradeWarning 27 "24.05")) - ++ (lib.optional (lib.versionOlder overridePackage.version "29") (upgradeWarning 28 "24.11")) - ++ (lib.optional (lib.versionOlder overridePackage.version "30") (upgradeWarning 29 "24.11")) - ++ (lib.optional (lib.versionOlder overridePackage.version "31") (upgradeWarning 30 "25.05")); - - services.nextcloud.package = lib.mkDefault ( - if pkgs ? nextcloud then - throw '' - The `pkgs.nextcloud`-attribute has been removed. If it's supposed to be the default - nextcloud defined in an overlay, please set `services.nextcloud.package` to - `pkgs.nextcloud`. - '' - else if lib.versionOlder stateVersion "24.05" then - pkgs.nextcloud27 - else if lib.versionOlder stateVersion "24.11" then - pkgs.nextcloud29 - else if lib.versionOlder stateVersion "25.05" then - pkgs.nextcloud30 - else - pkgs.nextcloud31 - ); - - services.nextcloud.phpOptions = mkMerge [ - (lib.mapAttrs (lib.const lib.mkOptionDefault) defaultPHPSettings) - { - upload_max_filesize = cfg.maxUploadSize; - post_max_size = cfg.maxUploadSize; - memory_limit = cfg.maxUploadSize; - } - (mkIf cfg.caching.apcu { - "apc.enable_cli" = "1"; - }) - ]; - } - - { - assertions = [ - { - assertion = cfg.database.createLocally -> cfg.config.dbpassFile == null; - message = '' - Using `services.nextcloud.database.createLocally` with database - password authentication is no longer supported. - - If you use an external database (or want to use password auth for any - other reason), set `services.nextcloud.database.createLocally` to - `false`. The database won't be managed for you (use `services.mysql` - if you want to set it up). - - If you want this module to manage your nextcloud database for you, - unset `services.nextcloud.config.dbpassFile` and - `services.nextcloud.config.dbhost` to use socket authentication - instead of password. - ''; - } - { - assertion = cfg.config.dbtype != null; - message = '' - `services.nextcloud.config.dbtype` must be set explicitly (pgsql, mysql, or sqlite) - - Before 25.05, it used to default to sqlite but that is not recommended by upstream. - Either set it to sqlite as it used to be, or convert to another type as described - in the official db conversion page: - https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/db_conversion.html - ''; - } - ]; - } - - { - systemd.timers.nextcloud-cron = { - wantedBy = [ "timers.target" ]; - after = [ "nextcloud-setup.service" ]; - timerConfig = { - OnBootSec = "5m"; - OnUnitActiveSec = "5m"; - Unit = "nextcloud-cron.service"; - }; - }; - - systemd.tmpfiles.rules = - map (dir: "d ${dir} 0750 nextcloud nextcloud - -") [ - "${cfg.home}" - "${datadir}/config" - "${datadir}/data" - "${cfg.home}/store-apps" - ] - ++ [ - "L+ ${datadir}/config/override.config.php - - - - ${overrideConfig}" - ]; - - services.nextcloud.finalPackage = webroot; - - systemd.services = { - nextcloud-setup = + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + warnings = let - c = cfg.config; - occInstallCmd = - let - mkExport = - { arg, value }: - '' - ${arg}=${value}; - export ${arg}; - ''; - dbpass = { - arg = "DBPASS"; - value = if c.dbpassFile != null then ''"$(<"$CREDENTIALS_DIRECTORY/dbpass")"'' else ''""''; - }; - adminpass = { - arg = "ADMINPASS"; - value = ''"$(<"$CREDENTIALS_DIRECTORY/adminpass")"''; - }; - installFlags = lib.concatStringsSep " \\\n " ( - lib.mapAttrsToList (k: v: "${k} ${toString v}") { - "--database" = ''"${c.dbtype}"''; - # The following attributes are optional depending on the type of - # database. Those that evaluate to null on the left hand side - # will be omitted. - ${if c.dbname != null then "--database-name" else null} = ''"${c.dbname}"''; - ${if c.dbhost != null then "--database-host" else null} = ''"${c.dbhost}"''; - ${if c.dbuser != null then "--database-user" else null} = ''"${c.dbuser}"''; - "--database-pass" = "\"\$${dbpass.arg}\""; - "--admin-user" = ''"${c.adminuser}"''; - "--admin-pass" = "\"\$${adminpass.arg}\""; - "--data-dir" = ''"${datadir}/data"''; - } - ); - in - '' - ${mkExport dbpass} - ${mkExport adminpass} - ${lib.getExe occ} maintenance:install \ - ${installFlags} - ''; - occSetTrustedDomainsCmd = lib.concatStringsSep "\n" ( - lib.imap0 (i: v: '' - ${lib.getExe occ} config:system:set trusted_domains \ - ${toString i} --value="${toString v}" - '') (lib.unique ([ cfg.hostName ] ++ cfg.settings.trusted_domains)) - ); + latest = 31; + upgradeWarning = major: nixos: '' + A legacy Nextcloud install (from before NixOS ${nixos}) may be installed. + + After nextcloud${toString major} is installed successfully, you can safely upgrade + to ${toString (major + 1)}. The latest version available is Nextcloud${toString latest}. + + Please note that Nextcloud doesn't support upgrades across multiple major versions + (i.e. an upgrade from 16 is possible to 17, but not 16 to 18). + + The package can be upgraded by explicitly declaring the service-option + `services.nextcloud.package`. + ''; in + (lib.optional (cfg.poolConfig != null) '' + Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release. + Please migrate your configuration to config.services.nextcloud.poolSettings. + '') + ++ (lib.optional (cfg.config.dbtableprefix != null) '' + Using `services.nextcloud.config.dbtableprefix` is deprecated. Fresh installations with this + option set are not allowed anymore since v20. + + If you have an existing installation with a custom table prefix, make sure it is + set correctly in `config.php` and remove the option from your NixOS config. + '') + ++ (lib.optional (lib.versionOlder overridePackage.version "26") (upgradeWarning 25 "23.05")) + ++ (lib.optional (lib.versionOlder overridePackage.version "27") (upgradeWarning 26 "23.11")) + ++ (lib.optional (lib.versionOlder overridePackage.version "28") (upgradeWarning 27 "24.05")) + ++ (lib.optional (lib.versionOlder overridePackage.version "29") (upgradeWarning 28 "24.11")) + ++ (lib.optional (lib.versionOlder overridePackage.version "30") (upgradeWarning 29 "24.11")) + ++ (lib.optional (lib.versionOlder overridePackage.version "31") (upgradeWarning 30 "25.05")); + + services.nextcloud.package = lib.mkDefault ( + if pkgs ? nextcloud then + throw '' + The `pkgs.nextcloud`-attribute has been removed. If it's supposed to be the default + nextcloud defined in an overlay, please set `services.nextcloud.package` to + `pkgs.nextcloud`. + '' + else if lib.versionOlder stateVersion "24.05" then + pkgs.nextcloud27 + else if lib.versionOlder stateVersion "24.11" then + pkgs.nextcloud29 + else if lib.versionOlder stateVersion "25.05" then + pkgs.nextcloud30 + else + pkgs.nextcloud31 + ); + + services.nextcloud.phpOptions = lib.mkMerge [ + (lib.mapAttrs (lib.const lib.mkOptionDefault) defaultPHPSettings) { - wantedBy = [ "multi-user.target" ]; - wants = [ "nextcloud-update-db.service" ]; - before = [ "phpfpm-nextcloud.service" ]; - after = lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.target"; - requires = lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.target"; - path = [ occ ]; - restartTriggers = [ overrideConfig ]; - script = '' - ${lib.optionalString (c.dbpassFile != null) '' - if [ -z "$(<"$CREDENTIALS_DIRECTORY/dbpass")" ]; then - echo "dbpassFile ${c.dbpassFile} is empty!" - exit 1 - fi - ''} - if [ -z "$(<"$CREDENTIALS_DIRECTORY/adminpass")" ]; then - echo "adminpassFile ${c.adminpassFile} is empty!" - exit 1 - fi - - # Check if systemd-tmpfiles setup worked correctly - if [[ ! -O "${datadir}/config" ]]; then - echo "${datadir}/config is not owned by user 'nextcloud'!" - echo "Please check the logs via 'journalctl -u systemd-tmpfiles-setup'" - echo "and make sure there are no unsafe path transitions." - echo "(https://nixos.org/manual/nixos/stable/#module-services-nextcloud-pitfalls-during-upgrade)" - exit 1 - fi - - ${lib.concatMapStrings - (name: '' - if [ -d "${cfg.home}"/${name} ]; then - echo "Cleaning up ${name}; these are now bundled in the webroot store-path!" - rm -r "${cfg.home}"/${name} - fi - '') - [ - "nix-apps" - "apps" - ] - } - - # Do not install if already installed - if [[ ! -s ${datadir}/config/config.php ]]; then - ${occInstallCmd} - fi - - ${lib.getExe occ} upgrade - - ${lib.getExe occ} config:system:delete trusted_domains - - ${lib.optionalString (cfg.extraAppsEnable && cfg.extraApps != { }) '' - # Try to enable apps - ${lib.getExe occ} app:enable ${lib.concatStringsSep " " (lib.attrNames cfg.extraApps)} - ''} - - ${occSetTrustedDomainsCmd} - ''; - serviceConfig.Type = "oneshot"; - serviceConfig.User = "nextcloud"; - serviceConfig.LoadCredential = [ - "adminpass:${cfg.config.adminpassFile}" - ] - ++ runtimeSystemdCredentials; - # On Nextcloud ≥ 26, it is not necessary to patch the database files to prevent - # an automatic creation of the database user. - environment.NC_setup_create_db_user = "false"; - }; - nextcloud-cron = { - after = [ "nextcloud-setup.service" ]; - # NOTE: In contrast to the occ wrapper script running phpCli directly will not - # set NEXTCLOUD_CONFIG_DIR by itself currently. - environment.NEXTCLOUD_CONFIG_DIR = "${datadir}/config"; - script = '' - # NOTE: This early returns the script when nextcloud is in maintenance mode - # or needs `occ upgrade`. Using ExecCondition= is not possible here - # because it doesn't work with systemd credentials. - if [[ $(${lib.getExe occ} status --output=json | ${lib.getExe pkgs.jq} '. | if .maintenance or .needsDbUpgrade then "skip" else "" end' --raw-output) == "skip" ]]; then - echo "Nextcloud is in maintenance mode or needs DB upgrade, exiting." - exit 0 - fi - - ${phpCli} -f ${webroot}/cron.php - ''; - serviceConfig = { - Type = "exec"; - User = "nextcloud"; - KillMode = "process"; - LoadCredential = runtimeSystemdCredentials; - }; - }; - nextcloud-update-plugins = mkIf cfg.autoUpdateApps.enable { - after = [ "nextcloud-setup.service" ]; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${lib.getExe occ} app:update --all"; - User = "nextcloud"; - LoadCredential = runtimeSystemdCredentials; - }; - startAt = cfg.autoUpdateApps.startAt; - }; - nextcloud-update-db = { - after = [ "nextcloud-setup.service" ]; - script = '' - # NOTE: This early returns the script when nextcloud is in maintenance mode - # or needs `occ upgrade`. Using ExecCondition= is not possible here - # because it doesn't work with systemd credentials. - if [[ $(${lib.getExe occ} status --output=json | ${lib.getExe pkgs.jq} '. | if .maintenance or .needsDbUpgrade then "skip" else "" end' --raw-output) == "skip" ]]; then - echo "Nextcloud is in maintenance mode or needs DB upgrade, exiting." - exit 0 - fi - - ${lib.getExe occ} db:add-missing-columns - ${lib.getExe occ} db:add-missing-indices - ${lib.getExe occ} db:add-missing-primary-keys - ''; - serviceConfig = { - Type = "exec"; - User = "nextcloud"; - LoadCredential = runtimeSystemdCredentials; - }; - }; - - phpfpm-nextcloud = { - # When upgrading the Nextcloud package, Nextcloud can report errors such as - # "The files of the app [all apps in /var/lib/nextcloud/apps] were not replaced correctly" - # Restarting phpfpm on Nextcloud package update fixes these issues (but this is a workaround). - restartTriggers = [ - webroot - overrideConfig - ]; - } - // lib.optionalAttrs requiresRuntimeSystemdCredentials { - serviceConfig.LoadCredential = runtimeSystemdCredentials; - - # FIXME: We use a hack to make the credential files readable by the nextcloud - # user by copying them somewhere else and overriding CREDENTIALS_DIRECTORY - # for php. This is currently necessary as the unit runs as root. - serviceConfig.RuntimeDirectory = lib.mkForce "phpfpm phpfpm-nextcloud"; - preStart = '' - umask 0077 - - # NOTE: Runtime directories for this service are currently preserved - # between restarts. - rm -rf /run/phpfpm-nextcloud/credentials/ - mkdir -p /run/phpfpm-nextcloud/credentials/ - cp "$CREDENTIALS_DIRECTORY"/* /run/phpfpm-nextcloud/credentials/ - chown -R nextcloud:nextcloud /run/phpfpm-nextcloud/credentials/ - ''; - }; - }; - - services.phpfpm = { - pools.nextcloud = { - user = "nextcloud"; - group = "nextcloud"; - phpPackage = phpPackage; - phpEnv = { - CREDENTIALS_DIRECTORY = "/run/phpfpm-nextcloud/credentials/"; - NEXTCLOUD_CONFIG_DIR = "${datadir}/config"; - PATH = "/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin"; - }; - settings = - lib.mapAttrs (name: lib.mkDefault) { - "listen.owner" = config.services.nginx.user; - "listen.group" = config.services.nginx.group; - } - // cfg.poolSettings; - extraConfig = cfg.poolConfig; - }; - }; - - users.users.nextcloud = { - home = "${cfg.home}"; - group = "nextcloud"; - isSystemUser = true; - }; - users.groups.nextcloud.members = [ - "nextcloud" - config.services.nginx.user - ]; - - environment.systemPackages = [ occ ]; - - services.mysql = lib.mkIf mysqlLocal { - enable = true; - package = lib.mkDefault pkgs.mariadb; - ensureDatabases = [ cfg.config.dbname ]; - ensureUsers = [ - { - name = cfg.config.dbuser; - ensurePermissions = { - "${cfg.config.dbname}.*" = "ALL PRIVILEGES"; - }; + upload_max_filesize = cfg.maxUploadSize; + post_max_size = cfg.maxUploadSize; + memory_limit = cfg.maxUploadSize; } - ]; - }; - - services.postgresql = mkIf pgsqlLocal { - enable = true; - ensureDatabases = [ cfg.config.dbname ]; - ensureUsers = [ - { - name = cfg.config.dbuser; - ensureDBOwnership = true; - } - ]; - }; - - services.redis.servers.nextcloud = lib.mkIf cfg.configureRedis { - enable = true; - user = "nextcloud"; - }; - - services.nextcloud = { - caching.redis = lib.mkIf cfg.configureRedis true; - settings = mkMerge [ - { - datadirectory = lib.mkDefault "${datadir}/data"; - trusted_domains = [ cfg.hostName ]; - "upgrade.disable-web" = true; - # NixOS already provides its own integrity check and the nix store is read-only, therefore Nextcloud does not need to do its own integrity checks. - "integrity.check.disabled" = true; - } - (lib.mkIf cfg.configureRedis { - "memcache.distributed" = ''\OC\Memcache\Redis''; - "memcache.locking" = ''\OC\Memcache\Redis''; - redis = { - host = config.services.redis.servers.nextcloud.unixSocket; - port = 0; - }; + (lib.mkIf cfg.caching.apcu { + "apc.enable_cli" = "1"; }) ]; - }; + } - services.nginx.enable = lib.mkDefault true; + { + assertions = [ + { + assertion = cfg.database.createLocally -> cfg.config.dbpassFile == null; + message = '' + Using `services.nextcloud.database.createLocally` with database + password authentication is no longer supported. - services.nginx.virtualHosts.${cfg.hostName} = { - root = webroot; - locations = { - "= /robots.txt" = { - priority = 100; - extraConfig = '' - allow all; - access_log off; + If you use an external database (or want to use password auth for any + other reason), set `services.nextcloud.database.createLocally` to + `false`. The database won't be managed for you (use `services.mysql` + if you want to set it up). + + If you want this module to manage your nextcloud database for you, + unset `services.nextcloud.config.dbpassFile` and + `services.nextcloud.config.dbhost` to use socket authentication + instead of password. ''; + } + { + assertion = cfg.config.dbtype != null; + message = '' + `services.nextcloud.config.dbtype` must be set explicitly (pgsql, mysql, or sqlite) + + Before 25.05, it used to default to sqlite but that is not recommended by upstream. + Either set it to sqlite as it used to be, or convert to another type as described + in the official db conversion page: + https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/db_conversion.html + ''; + } + ]; + } + + { + systemd.timers.nextcloud-cron = { + wantedBy = [ "timers.target" ]; + after = [ "nextcloud-setup.service" ]; + timerConfig = { + OnBootSec = "5m"; + OnUnitActiveSec = "5m"; + Unit = "nextcloud-cron.service"; }; - "= /" = { - priority = 100; - extraConfig = '' - if ( $http_user_agent ~ ^DavClnt ) { - return 302 /remote.php/webdav/$is_args$args; - } + }; + + systemd.tmpfiles.rules = + map (dir: "d ${dir} 0750 nextcloud nextcloud - -") [ + "${cfg.home}" + "${datadir}/config" + "${datadir}/data" + "${cfg.home}/store-apps" + ] + ++ [ + "L+ ${datadir}/config/override.config.php - - - - ${overrideConfig}" + ]; + + services.nextcloud.finalPackage = webroot; + + systemd.services = { + nextcloud-setup = + let + c = cfg.config; + occInstallCmd = + let + mkExport = + { arg, value }: + '' + ${arg}=${value}; + export ${arg}; + ''; + dbpass = { + arg = "DBPASS"; + value = if c.dbpassFile != null then ''"$(<"$CREDENTIALS_DIRECTORY/dbpass")"'' else ''""''; + }; + adminpass = { + arg = "ADMINPASS"; + value = ''"$(<"$CREDENTIALS_DIRECTORY/adminpass")"''; + }; + installFlags = lib.concatStringsSep " \\\n " ( + lib.mapAttrsToList (k: v: "${k} ${toString v}") { + "--database" = ''"${c.dbtype}"''; + # The following attributes are optional depending on the type of + # database. Those that evaluate to null on the left hand side + # will be omitted. + ${if c.dbname != null then "--database-name" else null} = ''"${c.dbname}"''; + ${if c.dbhost != null then "--database-host" else null} = ''"${c.dbhost}"''; + ${if c.dbuser != null then "--database-user" else null} = ''"${c.dbuser}"''; + "--database-pass" = "\"\$${dbpass.arg}\""; + "--admin-user" = ''"${c.adminuser}"''; + "--admin-pass" = "\"\$${adminpass.arg}\""; + "--data-dir" = ''"${datadir}/data"''; + } + ); + in + '' + ${mkExport dbpass} + ${mkExport adminpass} + ${lib.getExe occ} maintenance:install \ + ${installFlags} + ''; + occSetTrustedDomainsCmd = lib.concatStringsSep "\n" ( + lib.imap0 (i: v: '' + ${lib.getExe occ} config:system:set trusted_domains \ + ${toString i} --value="${toString v}" + '') (lib.unique ([ cfg.hostName ] ++ cfg.settings.trusted_domains)) + ); + + in + { + wantedBy = [ "multi-user.target" ]; + wants = [ "nextcloud-update-db.service" ]; + before = [ "phpfpm-nextcloud.service" ]; + after = lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.target"; + requires = lib.optional mysqlLocal "mysql.service" ++ lib.optional pgsqlLocal "postgresql.target"; + path = [ occ ]; + restartTriggers = [ overrideConfig ]; + script = '' + ${lib.optionalString (c.dbpassFile != null) '' + if [ -z "$(<"$CREDENTIALS_DIRECTORY/dbpass")" ]; then + echo "dbpassFile ${c.dbpassFile} is empty!" + exit 1 + fi + ''} + if [ -z "$(<"$CREDENTIALS_DIRECTORY/adminpass")" ]; then + echo "adminpassFile ${c.adminpassFile} is empty!" + exit 1 + fi + + # Check if systemd-tmpfiles setup worked correctly + if [[ ! -O "${datadir}/config" ]]; then + echo "${datadir}/config is not owned by user 'nextcloud'!" + echo "Please check the logs via 'journalctl -u systemd-tmpfiles-setup'" + echo "and make sure there are no unsafe path transitions." + echo "(https://nixos.org/manual/nixos/stable/#module-services-nextcloud-pitfalls-during-upgrade)" + exit 1 + fi + + ${lib.concatMapStrings + (name: '' + if [ -d "${cfg.home}"/${name} ]; then + echo "Cleaning up ${name}; these are now bundled in the webroot store-path!" + rm -r "${cfg.home}"/${name} + fi + '') + [ + "nix-apps" + "apps" + ] + } + + # Do not install if already installed + if [[ ! -s ${datadir}/config/config.php ]]; then + ${occInstallCmd} + fi + + ${lib.getExe occ} upgrade + + ${lib.getExe occ} config:system:delete trusted_domains + + ${lib.optionalString (cfg.extraAppsEnable && cfg.extraApps != { }) '' + # Try to enable apps + ${lib.getExe occ} app:enable ${lib.concatStringsSep " " (lib.attrNames cfg.extraApps)} + ''} + + ${occSetTrustedDomainsCmd} + ''; + serviceConfig.Type = "oneshot"; + serviceConfig.User = "nextcloud"; + serviceConfig.LoadCredential = [ + "adminpass:${cfg.config.adminpassFile}" + ] + ++ runtimeSystemdCredentials; + # On Nextcloud ≥ 26, it is not necessary to patch the database files to prevent + # an automatic creation of the database user. + environment.NC_setup_create_db_user = "false"; + }; + nextcloud-cron = { + after = [ "nextcloud-setup.service" ]; + # NOTE: In contrast to the occ wrapper script running phpCli directly will not + # set NEXTCLOUD_CONFIG_DIR by itself currently. + environment.NEXTCLOUD_CONFIG_DIR = "${datadir}/config"; + script = '' + # NOTE: This early returns the script when nextcloud is in maintenance mode + # or needs `occ upgrade`. Using ExecCondition= is not possible here + # because it doesn't work with systemd credentials. + if [[ $(${lib.getExe occ} status --output=json | ${lib.getExe pkgs.jq} '. | if .maintenance or .needsDbUpgrade then "skip" else "" end' --raw-output) == "skip" ]]; then + echo "Nextcloud is in maintenance mode or needs DB upgrade, exiting." + exit 0 + fi + + ${phpCli} -f ${webroot}/cron.php ''; + serviceConfig = { + Type = "exec"; + User = "nextcloud"; + KillMode = "process"; + LoadCredential = runtimeSystemdCredentials; + }; }; - "^~ /.well-known" = { - priority = 210; - extraConfig = '' - absolute_redirect off; - location = /.well-known/carddav { - return 301 /remote.php/dav/; - } - location = /.well-known/caldav { - return 301 /remote.php/dav/; - } - location ~ ^/\.well-known/(?!acme-challenge|pki-validation) { - return 301 /index.php$request_uri; - } - try_files $uri $uri/ =404; - ''; + nextcloud-update-plugins = lib.mkIf cfg.autoUpdateApps.enable { + after = [ "nextcloud-setup.service" ]; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${lib.getExe occ} app:update --all"; + User = "nextcloud"; + LoadCredential = runtimeSystemdCredentials; + }; + startAt = cfg.autoUpdateApps.startAt; }; - "~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/)" = { - priority = 450; - extraConfig = '' - return 404; + nextcloud-update-db = { + after = [ "nextcloud-setup.service" ]; + script = '' + # NOTE: This early returns the script when nextcloud is in maintenance mode + # or needs `occ upgrade`. Using ExecCondition= is not possible here + # because it doesn't work with systemd credentials. + if [[ $(${lib.getExe occ} status --output=json | ${lib.getExe pkgs.jq} '. | if .maintenance or .needsDbUpgrade then "skip" else "" end' --raw-output) == "skip" ]]; then + echo "Nextcloud is in maintenance mode or needs DB upgrade, exiting." + exit 0 + fi + + ${lib.getExe occ} db:add-missing-columns + ${lib.getExe occ} db:add-missing-indices + ${lib.getExe occ} db:add-missing-primary-keys ''; + serviceConfig = { + Type = "exec"; + User = "nextcloud"; + LoadCredential = runtimeSystemdCredentials; + }; }; - "~ ^/(?:\\.|autotest|occ|issue|indie|db_|console)" = { - priority = 450; - extraConfig = '' - return 404; - ''; - }; - "~ \\.php(?:$|/)" = { - priority = 500; - extraConfig = '' - # legacy support (i.e. static files and directories in cfg.package) - rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri; - include ${config.services.nginx.package}/conf/fastcgi.conf; - fastcgi_split_path_info ^(.+?\.php)(\\/.*)$; - set $path_info $fastcgi_path_info; - try_files $fastcgi_script_name =404; - fastcgi_param PATH_INFO $path_info; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param HTTPS ${if cfg.https then "on" else "off"}; - fastcgi_param modHeadersAvailable true; - fastcgi_param front_controller_active true; - fastcgi_pass unix:${fpm.socket}; - fastcgi_intercept_errors on; - fastcgi_request_buffering ${if cfg.nginx.enableFastcgiRequestBuffering then "on" else "off"}; - fastcgi_read_timeout ${builtins.toString cfg.fastcgiTimeout}s; - ''; - }; - "~ \\.(?:css|js|mjs|svg|gif|ico|jpg|jpeg|png|webp|wasm|tflite|map|html|ttf|bcmap|mp4|webm|ogg|flac)$".extraConfig = - '' - try_files $uri /index.php$request_uri; - expires 6M; - access_log off; - location ~ \.mjs$ { - default_type text/javascript; - } - location ~ \.wasm$ { - default_type application/wasm; - } - ''; - "~ ^\\/(?:updater|ocs-provider)(?:$|\\/)".extraConfig = '' - try_files $uri/ =404; - index index.php; - ''; - "/remote" = { - priority = 1500; - extraConfig = '' - return 301 /remote.php$request_uri; - ''; - }; - "/" = { - priority = 1600; - extraConfig = '' - try_files $uri $uri/ /index.php$request_uri; + + phpfpm-nextcloud = { + # When upgrading the Nextcloud package, Nextcloud can report errors such as + # "The files of the app [all apps in /var/lib/nextcloud/apps] were not replaced correctly" + # Restarting phpfpm on Nextcloud package update fixes these issues (but this is a workaround). + restartTriggers = [ + webroot + overrideConfig + ]; + } + // lib.optionalAttrs requiresRuntimeSystemdCredentials { + serviceConfig.LoadCredential = runtimeSystemdCredentials; + + # FIXME: We use a hack to make the credential files readable by the nextcloud + # user by copying them somewhere else and overriding CREDENTIALS_DIRECTORY + # for php. This is currently necessary as the unit runs as root. + serviceConfig.RuntimeDirectory = lib.mkForce "phpfpm phpfpm-nextcloud"; + preStart = '' + umask 0077 + + # NOTE: Runtime directories for this service are currently preserved + # between restarts. + rm -rf /run/phpfpm-nextcloud/credentials/ + mkdir -p /run/phpfpm-nextcloud/credentials/ + cp "$CREDENTIALS_DIRECTORY"/* /run/phpfpm-nextcloud/credentials/ + chown -R nextcloud:nextcloud /run/phpfpm-nextcloud/credentials/ ''; }; }; - extraConfig = '' - index index.php index.html /index.php$request_uri; - ${lib.optionalString (cfg.nginx.recommendedHttpHeaders) '' - add_header X-Content-Type-Options nosniff; - add_header X-XSS-Protection "1; mode=block"; - add_header X-Robots-Tag "noindex, nofollow"; - add_header X-Permitted-Cross-Domain-Policies none; - add_header X-Frame-Options sameorigin; - add_header Referrer-Policy no-referrer; - ''} - ${lib.optionalString (cfg.https) '' - add_header Strict-Transport-Security "max-age=${toString cfg.nginx.hstsMaxAge}; includeSubDomains" always; - ''} - client_max_body_size ${cfg.maxUploadSize}; - fastcgi_buffers 64 4K; - fastcgi_hide_header X-Powered-By; - gzip on; - gzip_vary on; - gzip_comp_level 4; - gzip_min_length 256; - gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; - gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; - ${lib.optionalString cfg.webfinger '' - rewrite ^/.well-known/host-meta /public.php?service=host-meta last; - rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; - ''} - ''; - }; - } - ]); + services.phpfpm = { + pools.nextcloud = { + user = "nextcloud"; + group = "nextcloud"; + phpPackage = phpPackage; + phpEnv = { + CREDENTIALS_DIRECTORY = "/run/phpfpm-nextcloud/credentials/"; + NEXTCLOUD_CONFIG_DIR = "${datadir}/config"; + PATH = "/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin"; + }; + settings = + lib.mapAttrs (name: lib.mkDefault) { + "listen.owner" = config.services.nginx.user; + "listen.group" = config.services.nginx.group; + } + // cfg.poolSettings; + extraConfig = cfg.poolConfig; + }; + }; + + users.users.nextcloud = { + home = "${cfg.home}"; + group = "nextcloud"; + isSystemUser = true; + }; + users.groups.nextcloud.members = [ + "nextcloud" + config.services.nginx.user + ]; + + environment.systemPackages = [ occ ]; + + services.mysql = lib.mkIf mysqlLocal { + enable = true; + package = lib.mkDefault pkgs.mariadb; + ensureDatabases = [ cfg.config.dbname ]; + ensureUsers = [ + { + name = cfg.config.dbuser; + ensurePermissions = { + "${cfg.config.dbname}.*" = "ALL PRIVILEGES"; + }; + } + ]; + }; + + services.postgresql = lib.mkIf pgsqlLocal { + enable = true; + ensureDatabases = [ cfg.config.dbname ]; + ensureUsers = [ + { + name = cfg.config.dbuser; + ensureDBOwnership = true; + } + ]; + }; + + services.redis.servers.nextcloud = lib.mkIf cfg.configureRedis { + enable = true; + user = "nextcloud"; + }; + + services.nextcloud = { + caching.redis = lib.mkIf cfg.configureRedis true; + settings = lib.mkMerge [ + { + datadirectory = lib.mkDefault "${datadir}/data"; + trusted_domains = [ cfg.hostName ]; + "upgrade.disable-web" = true; + # NixOS already provides its own integrity check and the nix store is read-only, therefore Nextcloud does not need to do its own integrity checks. + "integrity.check.disabled" = true; + } + (lib.mkIf cfg.configureRedis { + "memcache.distributed" = ''\OC\Memcache\Redis''; + "memcache.locking" = ''\OC\Memcache\Redis''; + redis = { + host = config.services.redis.servers.nextcloud.unixSocket; + port = 0; + }; + }) + ]; + }; + + services.nginx.enable = lib.mkDefault true; + + services.nginx.virtualHosts.${cfg.hostName} = { + root = webroot; + locations = { + "= /robots.txt" = { + priority = 100; + extraConfig = '' + allow all; + access_log off; + ''; + }; + "= /" = { + priority = 100; + extraConfig = '' + if ( $http_user_agent ~ ^DavClnt ) { + return 302 /remote.php/webdav/$is_args$args; + } + ''; + }; + "^~ /.well-known" = { + priority = 210; + extraConfig = '' + absolute_redirect off; + location = /.well-known/carddav { + return 301 /remote.php/dav/; + } + location = /.well-known/caldav { + return 301 /remote.php/dav/; + } + location ~ ^/\.well-known/(?!acme-challenge|pki-validation) { + return 301 /index.php$request_uri; + } + try_files $uri $uri/ =404; + ''; + }; + "~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/)" = { + priority = 450; + extraConfig = '' + return 404; + ''; + }; + "~ ^/(?:\\.|autotest|occ|issue|indie|db_|console)" = { + priority = 450; + extraConfig = '' + return 404; + ''; + }; + "~ \\.php(?:$|/)" = { + priority = 500; + extraConfig = '' + # legacy support (i.e. static files and directories in cfg.package) + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri; + include ${config.services.nginx.package}/conf/fastcgi.conf; + fastcgi_split_path_info ^(.+?\.php)(\\/.*)$; + set $path_info $fastcgi_path_info; + try_files $fastcgi_script_name =404; + fastcgi_param PATH_INFO $path_info; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS ${if cfg.https then "on" else "off"}; + fastcgi_param modHeadersAvailable true; + fastcgi_param front_controller_active true; + fastcgi_pass unix:${fpm.socket}; + fastcgi_intercept_errors on; + fastcgi_request_buffering ${if cfg.nginx.enableFastcgiRequestBuffering then "on" else "off"}; + fastcgi_read_timeout ${builtins.toString cfg.fastcgiTimeout}s; + ''; + }; + "~ \\.(?:css|js|mjs|svg|gif|ico|jpg|jpeg|png|webp|wasm|tflite|map|html|ttf|bcmap|mp4|webm|ogg|flac)$".extraConfig = + '' + try_files $uri /index.php$request_uri; + expires 6M; + access_log off; + location ~ \.mjs$ { + default_type text/javascript; + } + location ~ \.wasm$ { + default_type application/wasm; + } + ''; + "~ ^\\/(?:updater|ocs-provider)(?:$|\\/)".extraConfig = '' + try_files $uri/ =404; + index index.php; + ''; + "/remote" = { + priority = 1500; + extraConfig = '' + return 301 /remote.php$request_uri; + ''; + }; + "/" = { + priority = 1600; + extraConfig = '' + try_files $uri $uri/ /index.php$request_uri; + ''; + }; + }; + extraConfig = '' + index index.php index.html /index.php$request_uri; + ${lib.optionalString (cfg.nginx.recommendedHttpHeaders) '' + add_header X-Content-Type-Options nosniff; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Robots-Tag "noindex, nofollow"; + add_header X-Permitted-Cross-Domain-Policies none; + add_header X-Frame-Options sameorigin; + add_header Referrer-Policy no-referrer; + ''} + ${lib.optionalString (cfg.https) '' + add_header Strict-Transport-Security "max-age=${toString cfg.nginx.hstsMaxAge}; includeSubDomains" always; + ''} + client_max_body_size ${cfg.maxUploadSize}; + fastcgi_buffers 64 4K; + fastcgi_hide_header X-Powered-By; + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + ${lib.optionalString cfg.webfinger '' + rewrite ^/.well-known/host-meta /public.php?service=host-meta last; + rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last; + ''} + ''; + }; + } + ] + ); meta.doc = ./nextcloud.md; meta.maintainers = lib.teams.nextcloud.members; diff --git a/nixos/modules/virtualisation/oci-containers.nix b/nixos/modules/virtualisation/oci-containers.nix index be1ab80b7390..24337cb6f8d7 100644 --- a/nixos/modules/virtualisation/oci-containers.nix +++ b/nixos/modules/virtualisation/oci-containers.nix @@ -494,7 +494,7 @@ let filterAttrs (_: v: v == false) container.capabilities ) ++ map (d: "--device=${escapeShellArg d}") container.devices - ++ map (n: "--network=${escapeShellArg n}") container.networks + ++ map (n: "--network=${escapeShellArg n}") (lib.lists.unique container.networks) ++ [ "--pull ${escapeShellArg container.pull}" ] ++ map escapeShellArg container.extraOptions ++ [ container.image ] diff --git a/nixos/tests/all-terminfo.nix b/nixos/tests/all-terminfo.nix index dad52834cb8b..fce2b8a0dd5b 100644 --- a/nixos/tests/all-terminfo.nix +++ b/nixos/tests/all-terminfo.nix @@ -13,6 +13,10 @@ ... }: let + # Use derivations instead of attr names to avoid listing missing packages + maskedTerminfos = with pkgs; [ + alacritty-graphics # would clobber alacritty terminfo + ]; infoFilter = name: drv: let @@ -23,7 +27,8 @@ && o.value ? outputs && builtins.elem "terminfo" o.value.outputs && !o.value.meta.broken - && lib.meta.availableOn pkgs.stdenv.hostPlatform o.value; + && lib.meta.availableOn pkgs.stdenv.hostPlatform o.value + && !(builtins.elem o.value maskedTerminfos); terminfos = lib.filterAttrs infoFilter pkgs; excludedTerminfos = lib.filterAttrs ( _: drv: !(builtins.elem drv.terminfo config.environment.systemPackages) diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 2bc5297fa4b8..142ec9d30805 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1123,6 +1123,7 @@ in osquery = handleTestOn [ "x86_64-linux" ] ./osquery.nix { }; osrm-backend = runTest ./osrm-backend.nix; overlayfs = runTest ./overlayfs.nix; + oxidized = handleTest ./oxidized.nix { }; pacemaker = runTest ./pacemaker.nix; packagekit = runTest ./packagekit.nix; paisa = runTest ./paisa.nix; diff --git a/nixos/tests/oxidized.nix b/nixos/tests/oxidized.nix new file mode 100644 index 000000000000..88aadce7a8f4 --- /dev/null +++ b/nixos/tests/oxidized.nix @@ -0,0 +1,104 @@ +{ + system ? builtins.currentSystem, + pkgs ? import ../.. { + inherit system; + config = { }; + }, +}: + +let + inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest; +in +makeTest { + name = "oxidized"; + + nodes.server = + { config, pkgs, ... }: + { + security.pam.services.sshd.allowNullPassword = true; # the default `UsePam yes` makes this necessary + services = { + sshd.enable = true; + openssh = { + settings.PermitRootLogin = "yes"; + settings.PermitEmptyPasswords = "yes"; + }; + oxidized = { + enable = true; + package = pkgs.oxidized; + routerDB = pkgs.writeText "oxidized-router.db" '' + localhost:linuxgeneric:root + ''; + configFile = pkgs.writeText "oxidized-config.yml" '' + # vi: ft=yaml + --- + extensions: + oxidized-web: + load: true + listen: 127.0.0.1 + port: 8888 + vhosts: + - localhost + - 127.0.0.1 + - oxidized + - oxidized.example.com + interval: 3600 + retries: 3 + model: linuxgeneric + username: root + source: + default: csv + csv: + file: "/var/lib/oxidized/.config/oxidized/router.db" + delimiter: !ruby/regexp /:/ + map: + name: 0 + model: 1 + username: 2 + password: 3 + vars_map: + enable: 4 + input: + default: ssh + utf8_encoded: true + output: + default: git + git: + single_repo: true + user: oxidized + email: oxidized@example.com + repo: /var/lib/oxidized/git + ''; + }; + }; + systemd.services.oxidized = { + stopIfChanged = false; + environment.HOME = "/var/lib/oxidized"; + environment.APP_ENV = "production"; + serviceConfig = { + StateDirectory = "oxidized"; + MemoryDenyWriteExecute = false; + + PrivateNetwork = false; + SystemCallFilter = "@system-service"; + }; + + path = [ config.programs.ssh.package ]; + }; + + }; + + testScript = + { nodes, ... }: + '' + start_all() + + server.wait_for_unit("oxidized.service") + + with subtest("Check if oxidized reports the correct version"): + server.wait_until_succeeds(("curl --silent --fail --location http://127.0.0.1:8888/ | grep '${nodes.server.services.oxidized.package.version}' >&2")) + with subtest("Check if oxidized can be accessed with a vhost and reports the correct version"): + server.wait_until_succeeds(("curl --silent --fail --resolve oxidized:8888:127.0.0.1 --location http://oxidized:8888/ | grep '${nodes.server.services.oxidized.package.version}' >&2")) + with subtest("Check if oxidized can connect to linuxgeneric model"): + server.wait_until_succeeds("journalctl -b --grep 'Oxidized::Worker -- Configuration updated for /localhost' -t oxidized") + ''; +} diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix index ce220482389e..f9c68c458182 100644 --- a/pkgs/applications/editors/android-studio/default.nix +++ b/pkgs/applications/editors/android-studio/default.nix @@ -24,8 +24,8 @@ let sha256Hash = "sha256-qA7iu4nK+29aHKsUmyQWuwV0SFnv5cYQvFq5CAMKyKw="; }; latestVersion = { - version = "2025.1.3.3"; # "Android Studio Narwhal Feature Drop | 2025.1.3 Canary 3" - sha256Hash = "sha256-0BdbAJMQi9qgss1IJTMxjQpOjynLFuiY0Vlw5VYCY+c="; + version = "2025.1.3.4"; # "Android Studio Narwhal 3 Feature Drop | 2025.1.3 Canary 4" + sha256Hash = "sha256-SAdmuuentJZGtjcFAgAedPa9MLAS9vNtWoOI1pPvDhA="; }; in { diff --git a/pkgs/applications/emulators/libretro/cores/ppsspp.nix b/pkgs/applications/emulators/libretro/cores/ppsspp.nix index c631eb7c86ff..eeaedc0caabd 100644 --- a/pkgs/applications/emulators/libretro/cores/ppsspp.nix +++ b/pkgs/applications/emulators/libretro/cores/ppsspp.nix @@ -13,13 +13,13 @@ }: mkLibretroCore { core = "ppsspp"; - version = "0-unstable-2025-07-16"; + version = "0-unstable-2025-08-11"; src = fetchFromGitHub { owner = "hrydgard"; repo = "ppsspp"; - rev = "e68cec63d0d5d89442ddfab5b425c73e2bb5eb35"; - hash = "sha256-xNh+McD/oGBKTcnhQgM3zCZhX4Q7IOf9CcdIJJvqM4g="; + rev = "9912aa5c8d3b95165c56e29ffaa50069aeae0860"; + hash = "sha256-5snyC0hk1VqYH4aqz4E7ukPyOLrDVZwDsw3LPdHDSzM="; fetchSubmodules = true; }; diff --git a/pkgs/applications/networking/maestral-qt/default.nix b/pkgs/applications/networking/maestral-qt/default.nix index 467e03ca16e8..2be6ae59feb1 100644 --- a/pkgs/applications/networking/maestral-qt/default.nix +++ b/pkgs/applications/networking/maestral-qt/default.nix @@ -52,6 +52,10 @@ python3.pkgs.buildPythonApplication rec { "--prefix PYTHONPATH : ${makePythonPath [ maestral ]}" ]; + postInstall = '' + install -Dm444 -t $out/share/icons/hicolor/512x512/apps src/maestral_qt/resources/maestral.png + ''; + # no tests doCheck = false; diff --git a/pkgs/applications/science/math/cemu-ti/default.nix b/pkgs/applications/science/math/cemu-ti/default.nix index 896cb8d9c84b..594ec4f600aa 100644 --- a/pkgs/applications/science/math/cemu-ti/default.nix +++ b/pkgs/applications/science/math/cemu-ti/default.nix @@ -46,11 +46,6 @@ stdenv.mkDerivation (finalAttrs: { homepage = "https://ce-programming.github.io/CEmu"; license = licenses.gpl3Plus; maintainers = with maintainers; [ ]; - platforms = [ - "x86_64-linux" - "x86_64-darwin" - "aarch64-linux" - ]; - broken = stdenv.hostPlatform.isDarwin || (stdenv.system == "x86_64-linux"); + platforms = lib.platforms.unix; }; }) diff --git a/pkgs/by-name/an/analyze-build/package.nix b/pkgs/by-name/an/analyze-build/package.nix new file mode 100644 index 000000000000..7d4ec5845407 --- /dev/null +++ b/pkgs/by-name/an/analyze-build/package.nix @@ -0,0 +1,46 @@ +{ + lib, + llvmPackages, + python3, +}: +let + inherit (llvmPackages) clang-unwrapped; +in +python3.pkgs.buildPythonApplication rec { + pname = "analyze-build"; + inherit (clang-unwrapped) version; + + format = "other"; + + src = clang-unwrapped + "/bin"; + + dontUnpack = true; + + dependencies = with python3.pkgs; [ + libscanbuild + ]; + + installPhase = '' + mkdir -p "$out/bin" + install "$src/analyze-build" "$out/bin/" + ''; + + makeWrapperArgs = [ + "--prefix" + "PATH" + ":" + (lib.makeBinPath [ clang-unwrapped ]) + ]; + + meta = { + description = "run Clang static analyzer against a project with compilation database"; + homepage = "https://github.com/llvm/llvm-project/tree/llvmorg-${version}/clang/tools/scan-build-py/"; + mainProgram = "scan-build"; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; + maintainers = with lib.maintainers; [ RossSmyth ]; + platforms = lib.intersectLists python3.meta.platforms clang-unwrapped.meta.platforms; + }; +} diff --git a/pkgs/by-name/as/asn/package.nix b/pkgs/by-name/as/asn/package.nix index 58800a0d87bd..023ef0cbbff5 100644 --- a/pkgs/by-name/as/asn/package.nix +++ b/pkgs/by-name/as/asn/package.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation rec { pname = "asn"; - version = "0.78.3"; + version = "0.78.6"; src = fetchFromGitHub { owner = "nitefood"; repo = "asn"; tag = "v${version}"; - hash = "sha256-ydCpCmW6NK3LM05YLw6KtJWo7UtMcsxQt2RH/Xl+bFw="; + hash = "sha256-IcAXcsmzxzDUPJp2ieouxfkpdwpOZP6IBTPdm3C5/k4="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/as/ast-grep/package.nix b/pkgs/by-name/as/ast-grep/package.nix index 9b970ad74afb..e513a7efa42b 100644 --- a/pkgs/by-name/as/ast-grep/package.nix +++ b/pkgs/by-name/as/ast-grep/package.nix @@ -11,13 +11,13 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "ast-grep"; - version = "0.39.2"; + version = "0.39.3"; src = fetchFromGitHub { owner = "ast-grep"; repo = "ast-grep"; tag = finalAttrs.version; - hash = "sha256-RfsBgxxb9Kd28hzDXNBNFEwpRchxt+VmSMwc2wRDuig="; + hash = "sha256-oUVsfR5azu4i6irCQL1CXCWA8ygIHK+dpWC/grbkSyk="; }; # error: linker `aarch64-linux-gnu-gcc` not found @@ -25,7 +25,7 @@ rustPlatform.buildRustPackage (finalAttrs: { rm .cargo/config.toml ''; - cargoHash = "sha256-5SDGkOeByG8SUQJH/89TLuEJeKcu9lu/ZKbudwCAM0o="; + cargoHash = "sha256-BX5OAwIZzl9dm7ebw/zyJ2ICVpzCcHUVRTyUDMY4fH0="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/au/autobase/package.nix b/pkgs/by-name/au/autobase/package.nix index c21307276fc1..8b3272781cf6 100644 --- a/pkgs/by-name/au/autobase/package.nix +++ b/pkgs/by-name/au/autobase/package.nix @@ -7,13 +7,13 @@ buildNpmPackage (finalAttrs: { pname = "autobase"; - version = "7.17.0"; + version = "7.17.3"; src = fetchFromGitHub { owner = "holepunchto"; repo = "autobase"; tag = "v${finalAttrs.version}"; - hash = "sha256-KSx9zOnoJouH2sAByG0947uxgqPu9cx3fTbA2MDiMt4="; + hash = "sha256-RTbK1U63gNuUN81ceJVjFzqNtg0kfvfq8DiLEpDXJq0="; }; npmDepsHash = "sha256-H9Xy1VD7WQvi0+86v6CMcmc0L3mB6KuSCtgQSF4AlkY="; diff --git a/pkgs/by-name/be/beszel/package.nix b/pkgs/by-name/be/beszel/package.nix index 5148f1ac0e52..628592190f4d 100644 --- a/pkgs/by-name/be/beszel/package.nix +++ b/pkgs/by-name/be/beszel/package.nix @@ -5,16 +5,15 @@ nix-update-script, buildNpmPackage, }: - buildGoModule rec { pname = "beszel"; - version = "0.11.1"; + version = "0.12.3"; src = fetchFromGitHub { owner = "henrygd"; repo = "beszel"; tag = "v${version}"; - hash = "sha256-tAi48PAHDGIZn/HMsnCq0mLpvFSqUOMocq47hooiFT8="; + hash = "sha256-rthaufUL0JX3sE2hdrcJ8J73DLK4/2wMR+uOs8GoX2A="; }; webui = buildNpmPackage { @@ -48,12 +47,12 @@ buildGoModule rec { sourceRoot = "${src.name}/beszel/site"; - npmDepsHash = "sha256-27NUV23dNHFSwOHiB/wGSAWkp6eZMnw/6Pd3Fwn98+s="; + npmDepsHash = "sha256-6J1LwRzwbQyXVBHNgG7k8CQ67JZIDqYreDbgfm6B4w4="; }; sourceRoot = "${src.name}/beszel"; - vendorHash = "sha256-B6mOqOgcrRn0jV9wnDgRmBvfw7I/Qy5MNYvTiaCgjBE="; + vendorHash = "sha256-Nd2jDlq+tdGrgxU6ZNgj9awAb+G/yDqY1J15dpMcjtw="; preBuild = '' mkdir -p site/dist diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/package.nix b/pkgs/by-name/ca/calamares-nixos-extensions/package.nix index c6bd7665ac09..5dcf4ace066e 100644 --- a/pkgs/by-name/ca/calamares-nixos-extensions/package.nix +++ b/pkgs/by-name/ca/calamares-nixos-extensions/package.nix @@ -1,26 +1,25 @@ { stdenv, - fetchFromGitHub, lib, + glibcLocales, }: stdenv.mkDerivation (finalAttrs: { pname = "calamares-nixos-extensions"; version = "0.3.23"; - src = fetchFromGitHub { - owner = "NixOS"; - repo = "calamares-nixos-extensions"; - rev = finalAttrs.version; - hash = "sha256-KNRztajU7sTLNDwCwP4WOdR2IRMqfbeapdko58LcrjM="; - }; + src = ./src; installPhase = '' runHook preInstall - mkdir -p $out/{lib,share}/calamares + mkdir -p $out/{etc,lib,share}/calamares cp -r modules $out/lib/calamares/ - cp -r config/* $out/share/calamares/ + cp -r config/* $out/etc/calamares/ cp -r branding $out/share/calamares/ + + substituteInPlace $out/etc/calamares/settings.conf --replace-fail @out@ $out + substituteInPlace $out/etc/calamares/modules/locale.conf --replace-fail @glibcLocales@ ${glibcLocales} + runHook postInstall ''; @@ -28,11 +27,10 @@ stdenv.mkDerivation (finalAttrs: { description = "Calamares modules for NixOS"; homepage = "https://github.com/NixOS/calamares-nixos-extensions"; license = with licenses; [ - gpl3Plus - bsd2 + mit + # assets cc-by-40 cc-by-sa-40 - cc0 ]; maintainers = with maintainers; [ vlinkz ]; platforms = platforms.linux; diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/branding.desc b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/branding.desc new file mode 100644 index 000000000000..60ae1d18ef67 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/branding.desc @@ -0,0 +1,233 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# +--- +componentName: nixos + + +### WELCOME / OVERALL WORDING +# +# These settings affect some overall phrasing and looks, +# which are most visible in the welcome page. + +# This selects between different welcome texts. When false, uses +# the traditional "Welcome to the %1 installer.", and when true, +# uses "Welcome to the Calamares installer for %1." This allows +# to distinguish this installer from other installers for the +# same distribution. +welcomeStyleCalamares: false + +# Should the welcome image (productWelcome, below) be scaled +# up beyond its natural size? If false, the image does not grow +# with the window but remains the same size throughout (this +# may have surprising effects on HiDPI monitors). +welcomeExpandingLogo: true + +### WINDOW CONFIGURATION +# +# The settings here affect the placement of the Calamares +# window through hints to the window manager and initial +# sizing of the Calamares window. + +# Size and expansion policy for Calamares. +# - "normal" or unset, expand as needed, use *windowSize* +# - "fullscreen", start as large as possible, ignore *windowSize* +# - "noexpand", don't expand automatically, use *windowSize* +windowExpanding: normal + +# Size of Calamares window, expressed as w,h. Both w and h +# may be either pixels (suffix px) or font-units (suffix em). +# e.g. "800px,600px" +# "60em,480px" +# This setting is ignored if "fullscreen" is selected for +# *windowExpanding*, above. If not set, use constants defined +# in CalamaresUtilsGui, 800x520. +windowSize: 800px,520px + +# Placement of Calamares window. Either "center" or "free". +# Whether "center" actually works does depend on the window +# manager in use (and only makes sense if you're not using +# *windowExpanding* set to "fullscreen"). +windowPlacement: center + +### PANELS CONFIGURATION +# +# Calamares has a main content area, and two panels (navigation +# and progress / sidebar). The panels can be controlled individually, +# or switched off. If both panels are switched off, the layout of +# the main content area loses its margins, on the assumption that +# you're doing something special. + +# Kind of sidebar (panel on the left, showing progress). +# - "widget" or unset, use traditional sidebar (logo, items) +# - "none", hide it entirely +# - "qml", use calamares-sidebar.qml from branding folder +# In addition, you **may** specify a side, separated by a comma, +# from the kind. Valid sides are: +# - "left" (if not specified, uses this) +# - "right" +# - "top" +# - "bottom" +# For instance, "widget,right" is valid; so is "qml", which defaults +# to putting the sidebar on the left. Also valid is "qml,top". +# While "widget,top" is valid, the widgets code is **not** flexible +# and results will be terrible. +sidebar: widget + +# Kind of navigation (button panel on the bottom). +# - "widget" or unset, use traditional navigation +# - "none", hide it entirely +# - "qml", use calamares-navigation.qml from branding folder +# In addition, you **may** specify a side, separated by a comma, +# from the kind. The same sides are valid as for *sidebar*, +# except the default is *bottom*. +navigation: widget + + +### STRINGS, IMAGES AND COLORS +# +# This section contains the "branding proper" of names +# and images, rather than global-look settings. + +# These are strings shown to the user in the user interface. +# There is no provision for translating them -- since they +# are names, the string is included as-is. +# +# The four Url strings are the Urls used by the buttons in +# the welcome screen, and are not shown to the user. Clicking +# on the "Support" button, for instance, opens the link supportUrl. +# If a Url is empty, the corresponding button is not shown. +# +# bootloaderEntryName is how this installation / distro is named +# in the boot loader (e.g. in the GRUB menu). +# +# These strings support substitution from /etc/os-release +# if KDE Frameworks 5.58 are available at build-time. When +# enabled, ${varname} is replaced by the equivalent value +# from os-release. All the supported var-names are in all-caps, +# and are listed on the FreeDesktop.org site, +# https://www.freedesktop.org/software/systemd/man/os-release.html +# Note that ANSI_COLOR and CPE_NAME don't make sense here, and +# are not supported (the rest are). Remember to quote the string +# if it contains substitutions, or you'll get YAML exceptions. +# +# The *Url* entries are used on the welcome page, and they +# are visible as buttons there if the corresponding *show* keys +# are set to "true" (they can also be overridden). +strings: + productName: "${NAME}" + shortProductName: NixOS + version: + shortVersion: + versionedName: NixOS + shortVersionedName: NixOS + bootloaderEntryName: NixOS + productUrl: https://nixos.org/ + supportUrl: https://nixos.org/manual/nixos + knownIssuesUrl: https://github.com/NixOS/nixpkgs/issues + releaseNotesUrl: https://nixos.org/manual/nixos/stable/release-notes.html + donateUrl: https://nixos.org/donate.html + +# These images are loaded from the branding module directory. +# +# productBanner is an optional image, which if present, will be shown +# on the welcome page of the application, above the welcome text. +# It is intended to have a width much greater than height. +# It is displayed at 64px height (also on HiDPI). +# Recommended size is 64px tall, and up to 460px wide. +# productIcon is used as the window icon, and will (usually) be used +# by the window manager to represent the application. This image +# should be square, and may be displayed by the window manager +# as small as 16x16 (but possibly larger). +# productLogo is used as the logo at the top of the left-hand column +# which shows the steps to be taken. The image should be square, +# and is displayed at 80x80 pixels (also on HiDPI). +# productWallpaper is an optional image, which if present, will replace +# the normal solid background on every page of the application. +# It can be any size and proportion, +# and will be tiled to fit the entire window. +# For a non-tiled wallpaper, the size should be the same as +# the overall window, see *windowSize* above (800x520). +# productWelcome is shown on the welcome page of the application in +# the middle of the window, below the welcome text. It can be +# any size and proportion, and will be scaled to fit inside +# the window. Use `welcomeExpandingLogo` to make it non-scaled. +# Recommended size is 320x150. +# +# These filenames can also use substitutions from os-release (see above). +images: + # productBanner: "banner.png" + productIcon: "nix-snowflake.svg" + productLogo: "white.png" + # productWallpaper: "wallpaper.png" + productWelcome: "nix-snowflake.svg" + +# Colors for text and background components. +# +# - SidebarBackground is the background of the sidebar +# - SidebarText is the (foreground) text color +# - SidebarBackgroundCurrent sets the background of the current step. +# Optional, and defaults to the application palette. +# - SidebarTextCurrent is the text color of the current step. +# +# These colors can **also** be set through the stylesheet, if the +# branding component also ships a stylesheet.qss. Then they are +# the corresponding CSS attributes of #sidebarApp. +style: + SidebarBackground: "#5277C3" + SidebarText: "#FFFFFF" + SidebarTextCurrent: "#292F34" + SidebarBackgroundCurrent: "#7EBAE4" + +### SLIDESHOW +# +# The slideshow is displayed during execution steps (e.g. when the +# installer is actually writing to disk and doing other slow things). + +# The slideshow can be a QML file (recommended) which can display +# arbitrary things -- text, images, animations, or even play a game -- +# during the execution step. The QML **is** abruptly stopped when the +# execution step is done, though, so maybe a game isn't a great idea. +# +# The slideshow can also be a sequence of images (not recommended unless +# you don't want QML at all in your Calamares). The images are displayed +# at a rate of 1 every 2 seconds during the execution step. +# +# To configure a QML file, list a single filename: +# slideshow: "show.qml" +# To configure images, like the filenames (here, as an inline list): +# slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ] +slideshow: "show.qml" + +# There are two available APIs for a QML slideshow: +# - 1 (the default) loads the entire slideshow when the installation- +# slideshow page is shown and starts the QML then. The QML +# is never stopped (after installation is done, times etc. +# continue to fire). +# - 2 loads the slideshow on startup and calls onActivate() and +# onLeave() in the root object. After the installation is done, +# the show is stopped (first by calling onLeave(), then destroying +# the QML components). +# +# An image slideshow does not need to have the API defined. +slideshowAPI: 2 + + +# These options are to customize online uploading of logs to pastebins: +# - type : Defines the kind of pastebin service to be used. Currently +# it accepts two values: +# - none : disables the pastebin functionality +# - fiche : use fiche pastebin server +# - url : Defines the address of pastebin service to be used. +# Takes string as input. Important bits are the host and port, +# the scheme is not used. +# - sizeLimit : Defines maximum size limit (in KiB) of log file to be pasted. +# The option must be set, to have the log option work. +# Takes integer as input. If < 0, no limit will be forced, +# else only last (approximately) 'n' KiB of log file will be pasted. +# Please note that upload size may be slightly over the limit (due +# to last minute logging), so provide a suitable value. +uploadServer : + type : "fiche" + url : "http://termbin.com:9999" + sizeLimit : -1 diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-declarative.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-declarative.png new file mode 100644 index 000000000000..02c4d4e3fb62 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-declarative.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reliable.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reliable.png new file mode 100644 index 000000000000..6b733954532c Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reliable.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reproducible.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reproducible.png new file mode 100644 index 000000000000..c4c36c81be2d Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/gfx-landing-reproducible.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/budgie.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/budgie.png new file mode 100644 index 000000000000..8812907cb110 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/budgie.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/cinnamon.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/cinnamon.png new file mode 100644 index 000000000000..f85074dc65c5 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/cinnamon.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/deepin.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/deepin.png new file mode 100644 index 000000000000..2ebb07d5ea31 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/deepin.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/enlightenment.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/enlightenment.png new file mode 100644 index 000000000000..7fabdd25c5cb Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/enlightenment.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/gnome.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/gnome.png new file mode 100644 index 000000000000..6e0478c2292b Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/gnome.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/lumina.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/lumina.png new file mode 100644 index 000000000000..09c8579c86b1 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/lumina.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/lxqt.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/lxqt.png new file mode 100644 index 000000000000..0e86e02e0a94 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/lxqt.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/mate.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/mate.png new file mode 100644 index 000000000000..0f3a2bb58262 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/mate.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/nodesktop.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/nodesktop.png new file mode 100644 index 000000000000..28dfaf2b82b5 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/nodesktop.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/pantheon.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/pantheon.png new file mode 100644 index 000000000000..5e17ee436360 Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/pantheon.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/plasma6.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/plasma6.png new file mode 100644 index 000000000000..627f8763e56e Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/plasma6.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/xfce.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/xfce.png new file mode 100644 index 000000000000..32720d4d982a Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/images/xfce.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/nix-snowflake.svg b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/nix-snowflake.svg new file mode 100644 index 000000000000..9a70a1473953 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/nix-snowflake.svg @@ -0,0 +1,513 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/notesqml@unfree.qml b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/notesqml@unfree.qml new file mode 100644 index 000000000000..4407d167c3bc --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/notesqml@unfree.qml @@ -0,0 +1,34 @@ +import io.calamares.core + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import org.kde.kirigami as Kirigami + +Page { + width: parent.width + height: parent.height + + ColumnLayout { + width: parent.width + spacing: Kirigami.Units.smallSpacing + + Column { + Layout.fillWidth: true + + Text { + text: qsTr("NixOS is fully open source, but it also provides optional software packages that do not respect users' freedom to run, copy, distribute, study, change and improve the software, and are commonly not open source. By default such \"unfree\" packages are not allowed, but you can enable it here. If you check this box, you agree that unfree software may be installed which might have additional End User License Agreements (EULAs) that you need to agree to. If not enabled, some hardware (notably Nvidia GPUs and some WiFi chips) might not work or not work optimally.
") + width: parent.width + wrapMode: Text.WordWrap + } + + CheckBox { + text: qsTr("Allow unfree software") + + onCheckedChanged: { + Global.insert("nixos_allow_unfree", checked) + } + } + } + } +} diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/show.qml b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/show.qml new file mode 100644 index 000000000000..70d87e8542a3 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/show.qml @@ -0,0 +1,122 @@ +import QtQuick 2.0; +import calamares.slideshow 1.0; + +Presentation +{ + id: presentation + + function nextSlide() { + presentation.goToNextSlide(); + } + + Timer { + id: advanceTimer + interval: 20000 + running: presentation.activatedInCalamares + repeat: true + onTriggered: nextSlide() + } + + Slide { + Text { + id: text1 + anchors.centerIn: parent + text: "Reproducible" + font.pixelSize: 30 + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + color: "#6586C8" + } + Image { + id: background1 + source: "gfx-landing-reproducible.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.bottom: text1.top + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + anchors.horizontalCenter: background1.horizontalCenter + anchors.top: text1.bottom + text: "Nix builds packages in isolation from each other.
"+ + "This ensures that they are reproducible and don't
"+ + "have undeclared dependencies, so if a package
"+ + "works on one machine, it will also work on another.
" + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + } + } + + Slide { + Text { + id: text2 + anchors.centerIn: parent + text: "Declarative" + font.pixelSize: 30 + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + color: "#6586C8" + } + Image { + id: background2 + source: "gfx-landing-declarative.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.bottom: text2.top + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + anchors.horizontalCenter: background2.horizontalCenter + anchors.top: text2.bottom + text: "Nix makes it trivial to share development and build
"+ + "environments
for your projects, regardless of what
"+ + "programming languages and tools you’re using." + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + } + } + + Slide { + Text { + id: text3 + anchors.centerIn: parent + text: "Reliable" + font.pixelSize: 30 + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + color: "#6586C8" + } + Image { + id: background3 + source: "gfx-landing-reliable.png" + width: 200; height: 200 + fillMode: Image.PreserveAspectFit + anchors.bottom: text3.top + anchors.horizontalCenter: parent.horizontalCenter + } + Text { + anchors.horizontalCenter: background3.horizontalCenter + anchors.top: text3.bottom + text: "Nix ensures that installing or upgrading one package
"+ + "cannot break other packages. It allows you to roll
"+ + "back to previous versions,
and ensures that no
"+ + "package is in an inconsistent state during an
"+ + "upgrade." + wrapMode: Text.WordWrap + width: presentation.width + horizontalAlignment: Text.Center + } + } + + function onActivate() { + presentation.currentSlide = 0; + } + + function onLeave() { + } +} diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/white.png b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/white.png new file mode 100644 index 000000000000..086544a06c3c Binary files /dev/null and b/pkgs/by-name/ca/calamares-nixos-extensions/src/branding/nixos/white.png differ diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/finished.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/finished.conf new file mode 100644 index 000000000000..f8cb2febd2b7 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/finished.conf @@ -0,0 +1,4 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/finished/finished.conf +restartNowMode: user-unchecked +restartNowCommand: "systemctl -i reboot" +notifyOnFinished: true diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/keyboard.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/keyboard.conf new file mode 100644 index 000000000000..964a5cb93443 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/keyboard.conf @@ -0,0 +1,7 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/keyboard/keyboard.conf +xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf" +writeEtcDefaultKeyboard: false + +# Use special code path to configure GNOME keyboard settings +configure: + gnome: true diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/locale.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/locale.conf new file mode 100644 index 000000000000..aaa68181bd6e --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/locale.conf @@ -0,0 +1,11 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/locale/locale.conf +useSystemTimezone: true + +# Isn't supported on NixOS +adjustLiveTimezone: false + +localeGenPath: @glibcLocales@/share/i18n/SUPPORTED + +geoip: + style: "json" + url: "https://geoip.kde.org/v1/calamares" diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/mount.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/mount.conf new file mode 100644 index 000000000000..dad6c229df2b --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/mount.conf @@ -0,0 +1,27 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/mount/mount.conf +extraMounts: + - device: proc + fs: proc + mountPoint: /proc + - device: sys + fs: sysfs + mountPoint: /sys + - device: /dev + mountPoint: /dev + options: [ bind ] + - device: tmpfs + fs: tmpfs + mountPoint: /run + - device: /run/udev + mountPoint: /run/udev + options: [ bind ] + - device: efivarfs + fs: efivarfs + mountPoint: /sys/firmware/efi/efivars + efi: true + +# Ensure the right fmask/dmask is set on the ESP, as it will be +# picked up by nixos-generate-config later +mountOptions: + - filesystem: efi + options: [ fmask=0077, dmask=0077 ] diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/packagechooser.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/packagechooser.conf new file mode 100644 index 000000000000..343023a9af54 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/packagechooser.conf @@ -0,0 +1,105 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/packagechooser/packagechooser.conf +mode: required + +# FIXME: what's the correct way of doing this now? +method: legacy + +labels: + step: "Desktop" + +default: gnome + +items: + - id: gnome + packages: [ gnome ] + name: GNOME + description: "Every part of GNOME has been designed to make it simple and easy to use. It provides a focused working environment that helps you get things done. GNOME is a popular choice and well tested on NixOS.
+
+ Learn more at gnome.org" + screenshot: "images/gnome.png" + + - id: plasma6 + packages: [ plasma6 ] + name: Plasma + description: "Plasma is made to stay out of the way as it helps you get things done. But under its light and intuitive surface, it's a highly customizable. So you're free to choose ways of usage right as you need them and when you need them. Plasma is a popular choice and well tested on NixOS.
+
+ Learn more at kde.org/plasma-desktop" + screenshot: "images/plasma6.png" + + - id: xfce + packages: [ xfce ] + name: Xfce + description: "Xfce is a lightweight desktop environment. It aims to be fast and low on system resources, while still being visually appealing and user friendly.
+
+ Learn more at xfce.org" + screenshot: "images/xfce.png" + + - id: pantheon + packages: [ pantheon ] + name: Pantheon + description: "Pantheon is the default desktop of Elementary OS. It provides a productive and intuitive user experience while also being visually appealing.
+
+ Learn more at elementary.io/docs/learning-the-basics" + screenshot: "images/pantheon.png" + + - id: cinnamon + packages: [ cinnamon ] + name: Cinnamon + description: "Cinnamon is a desktop which provides advanced innovative features and a traditional user experience. The emphasis is put on making users feel at home and providing them with an easy to use and comfortable desktop experience.
+
+ Learn more at projects.linuxmint.com/cinnamon" + screenshot: "images/cinnamon.png" + + - id: mate + packages: [ mate ] + name: MATE + description: "The MATE Desktop Environment is the continuation of GNOME 2. It provides an intuitive and attractive desktop environment.
+
+ Learn more at mate-desktop.org" + screenshot: "images/mate.png" + + - id: enlightenment + packages: [ enlightenment ] + name: Enlightenment + description: "Enlightenment is a Window Manager, Compositor and Minimal Desktop. Enlightenment is classed as a desktop shell as it provides everything you need to operate your desktop or laptop, but it is not a full application suite.
+
+ Learn more at enlightenment.org" + screenshot: "images/enlightenment.png" + + - id: lxqt + packages: [ lxqt ] + name: LXQt + description: "LXQt is a lightweight Qt desktop environment. It will not get in your way. It will not hang or slow down your system. It is focused on being a classic desktop with a modern look and feel.
+
+ Learn more at lxqt-project.org" + screenshot: "images/lxqt.png" + + # Lumina is not yet stable enough, once it is, simply uncommenting the lines below is all that's needed to enable it as an option + #- id: lumina + # packages: [ lumina ] + # name: Lumina + # description: "Lumina is designed to have a small footprint, giving your system the best performance possible. It is built to flow seamlessly between computer tasks and offers several integrated utilities in one convenient package.
+ # - Learn more at lumina-desktop.org" + # screenshot: "images/lumina.png" + + - id: budgie + packages: [ budgie ] + name: Budgie + description: "The Budgie Desktop is a feature-rich, modern desktop designed to keep out the way of the user.
+
+ Learn more at buddiesofbudgie.org" + screenshot: "images/budgie.png" + + - id: deepin + packages: [ deepin ] + name: Deepin + description: "The Deepin Desktop Environment is an elegant, easy to use and reliable desktop environment.
+
+ Learn more at deepin.org" + screenshot: "images/deepin.png" + + - id: "" + packages: [] + name: "No desktop" + screenshot: "images/nodesktop.png" + description: "A minimal system without a graphical user interface will be installed. This is great for servers or custom setups with window managers. The configuration can be changed after installation." diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/partition.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/partition.conf new file mode 100644 index 000000000000..3e067e8d2343 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/partition.conf @@ -0,0 +1,22 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/partition/partition.conf +efi: + mountPoint: "/boot" + recommendedSize: 1GiB + minimumSize: 32MiB + label: "EFI" + +userSwapChoices: + - none + - small + - suspend + +luksGeneration: luks2 + +showNotEncryptedBootMessage: false + +partitionLayout: + - name: "root" + filesystem: "ext4" + noEncrypt: false + mountPoint: "/" + size: 100% diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/unfree.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/unfree.conf new file mode 100644 index 000000000000..7229116dc8d0 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/unfree.conf @@ -0,0 +1,5 @@ +--- +qmlSearch: branding + +qmlLabel: + notes: "Unfree software" diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/users.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/users.conf new file mode 100644 index 000000000000..8145a0f749b9 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/users.conf @@ -0,0 +1,32 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/users/users.conf +defaultGroups: + - users + - networkmanager + - wheel + +setRootPassword: true +doReusePassword: false +doAutologin: false + +# Recommended libpwquality settings from upstream +passwordRequirements: + minLength: 8 + maxLength: 64 + libpwquality: + - minlen=8 + - maxrepeat=3 + - maxsequence=3 + - usersubstr=4 + - badwords=linux + +allowWeakPasswords: true +allowWeakPasswordsDefault: false + +user: + shell: /run/current-system/sw/bin/bash + forbidden_names: [ root ] + +hostname: + location: None + writeHostsFile: false + forbidden_names: [ localhost ] diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/welcome.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/welcome.conf new file mode 100644 index 000000000000..024e3041e6eb --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/modules/welcome.conf @@ -0,0 +1,20 @@ +# https://codeberg.org/Calamares/calamares/src/branch/calamares/src/modules/welcome/welcome.conf +showReleaseNotesUrl: true + +requirements: + requiredStorage: 10 + requiredRam: 3.0 + + internetCheckUrl: [ https://geoip.kde.org/v1/calamares, https://cache.nixos.org/ ] + + check: + - storage + - ram + - power + - internet + - screen + + required: + - storage + - ram + - internet diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/config/settings.conf b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/settings.conf new file mode 100644 index 000000000000..6a16f17a5754 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/config/settings.conf @@ -0,0 +1,208 @@ +# Configuration file for Calamares +# +# This is the top-level configuration file for Calamares. +# It specifies what modules will be used, as well as some +# overall characteristics -- is this a setup program, or +# an installer. More specific configuration is devolved +# to the branding file (for the UI) and the individual +# module configuration files (for functionality). +--- +# Modules can be job modules (with different interfaces) and QtWidgets view +# modules. They could all be placed in a number of different paths. +# "modules-search" is a list of strings, each of these can either be a full +# path to a directory or the keyword "local". +# +# "local" means: +# - modules in $LIBDIR/calamares/modules, with +# - settings in SHARE/calamares/modules or /etc/calamares/modules. +# In debug-mode (e.g. calamares -d) "local" also adds some paths +# that make sense from inside the build-directory, so that you +# can build-and-run with the latest modules immediately. +# +# Strings other than "local" are taken as paths and interpreted +# relative to wherever Calamares is started. It is therefore **strongly** +# recommended to use only absolute paths here. This is mostly useful +# if your distro has forks of standard Calamares modules, but also +# uses some form of upstream packaging which might overwrite those +# forked modules -- then you can keep modules somewhere outside of +# the "regular" module tree. +# +# +# YAML: list of strings. +modules-search: [ local, @out@/lib/calamares/modules ] + +# Instances section. This section is optional, and it defines custom instances +# for modules of any kind. An instance entry has these keys: +# - *module* name, which matches the module name from the module descriptor +# (usually the name of the directory under `src/modules/`, but third- +# party modules may diverge. +# - *id* (optional) an identifier to distinguish this instance from +# all the others. If none is given, the name of the module is used. +# Together, the module and id form an instance key (see below). +# - *config* (optional) a filename for the configuration. If none is +# given, *module*`.conf` is used (e.g. `welcome.conf` for the welcome +# module) +# - *weight* (optional) In the *exec* phase of the sequence, progress +# is reported as jobs are completed. The jobs from a single module +# together contribute the full weight of that module. The overall +# progress (0 .. 100%) is divided up according to the weight of each +# module. Give modules that take a lot of time to complete, a larger +# weight to keep the overall progress moving along steadily. This +# weight overrides a weight given in the module descriptor. If no weight +# is given, uses the value from the module descriptor, or 1 if there +# isn't one there either. +# +# The primary goal of this mechanism is to allow loading multiple instances +# of the same module, with different configuration. If you don't need this, +# the instances section can safely be left empty. +# +# Module name plus instance name makes an instance key, e.g. +# "webview@owncloud", where "webview" is the module name (for the webview +# viewmodule) and "owncloud" is the instance name. In the *sequence* +# section below, use instance-keys to name instances (instead of just +# a module name, for modules which have only a single instance). +# +# Every module implicitly has an instance with the instance name equal +# to its module name, e.g. "welcome@welcome". In the *sequence* section, +# mentioning a module without a full instance key (e.g. "welcome") +# means that implicit module. +# +# An instance may specify its configuration file (e.g. `webview-home.conf`). +# The implicit instances all have configuration files named `.conf`. +# This (implict) way matches the source examples, where the welcome +# module contains an example `welcome.conf`. Specify a *config* for +# any module (also implicit instances) to change which file is used. +# +# For more information on running module instances, run Calamares in debug +# mode and check the Modules page in the Debug information interface. +# +# A module that is often used with instances is shellprocess, which will +# run shell commands specified in the configuration file. By configuring +# more than one instance of the module, multiple shell sessions can be run +# during install. +# +# YAML: list of maps of string:string key-value pairs. +instances: +- id: unfree + module: notesqml + config: unfree.conf + +# Sequence section. This section describes the sequence of modules, both +# viewmodules and jobmodules, as they should appear and/or run. +# +# A jobmodule instance key (or name) can only appear in an exec phase, whereas +# a viewmodule instance key (or name) can appear in both exec and show phases. +# There is no limit to the number of show or exec phases. However, the same +# module instance key should not appear more than once per phase, and +# deployers should take notice that the global storage structure is persistent +# throughout the application lifetime, possibly influencing behavior across +# phases. A show phase defines a sequence of viewmodules (and therefore +# pages). These viewmodules can offer up jobs for the execution queue. +# +# An exec phase displays a progress page (with brandable slideshow). This +# progress page iterates over the modules listed in the *immediately +# preceding* show phase, and enqueues their jobs, as well as any other jobs +# from jobmodules, in the order defined in the current exec phase. +# +# It then executes the job queue and clears it. If a viewmodule offers up a +# job for execution, but the module name (or instance key) isn't listed in the +# immediately following exec phase, this job will not be executed. +# +# YAML: list of lists of strings. +sequence: +- show: + - welcome + - locale + - keyboard + - users + - packagechooser + - notesqml@unfree + - partition + - summary +- exec: + - partition + - mount + - nixos + - users + - umount +- show: + - finished + +# A branding component is a directory, either in SHARE/calamares/branding or +# in /etc/calamares/branding (the latter takes precedence). The directory must +# contain a YAML file branding.desc which may reference additional resources +# (such as images) as paths relative to the current directory. +# +# A branding component can also ship a QML slideshow for execution pages, +# along with translation files. +# +# Only the name of the branding component (directory) should be specified +# here, Calamares then takes care of finding it and loading the contents. +# +# YAML: string. +branding: nixos + +# If this is set to true, Calamares will show an "Are you sure?" prompt right +# before each execution phase, i.e. at points of no return. If this is set to +# false, no prompt is shown. Default is false, but Calamares will complain if +# this is not explicitly set. +# +# YAML: boolean. +prompt-install: false + +# If this is set to true, Calamares will execute all target environment +# commands in the current environment, without chroot. This setting should +# only be used when setting up Calamares as a post-install configuration tool, +# as opposed to a full operating system installer. +# +# Some official Calamares modules are not expected to function with this +# setting. (e.g. partitioning seems like a bad idea, since that is expected to +# have been done already) +# +# Default is false (for a normal installer), but Calamares will complain if +# this is not explicitly set. +# +# YAML: boolean. +dont-chroot: false + +# If this is set to true, Calamares refers to itself as a "setup program" +# rather than an "installer". Defaults to the value of dont-chroot, but +# Calamares will complain if this is not explicitly set. +oem-setup: false + +# If this is set to true, the "Cancel" button will be disabled entirely. +# The button is also hidden from view. +# +# This can be useful if when e.g. Calamares is used as a post-install +# configuration tool and you require the user to go through all the +# configuration steps. +# +# Default is false, but Calamares will complain if this is not explicitly set. +# +# YAML: boolean. +disable-cancel: false + +# If this is set to true, the "Cancel" button will be disabled once +# you start the 'Installation', meaning there won't be a way to cancel +# the Installation until it has finished or installation has failed. +# +# Default is false, but Calamares will complain if this is not explicitly set. +# +# YAML: boolean. +disable-cancel-during-exec: false + +# If this is set to true, the "Next" and "Back" button will be hidden once +# you start the 'Installation'. +# +# Default is false, but Calamares will complain if this is not explicitly set. +# +# YAML: boolean. +hide-back-and-next-during-exec: false + +# If this is set to true, then once the end of the sequence has +# been reached, the quit (done) button is clicked automatically +# and Calamares will close. Default is false: the user will see +# that the end of installation has been reached, and that things are ok. +# +# +quit-at-end: false diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/main.py b/pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/main.py new file mode 100644 index 000000000000..017fb01b737d --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/main.py @@ -0,0 +1,835 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import configparser +import libcalamares +import os +import subprocess +import re + +import gettext + +_ = gettext.translation( + "calamares-python", + localedir=libcalamares.utils.gettext_path(), + languages=libcalamares.utils.gettext_languages(), + fallback=True, +).gettext + + +# The following strings contain pieces of a nix-configuration file. +# They are adapted from the default config generated from the nixos-generate-config command. + +cfghead = """# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + +""" +cfgbootefi = """ # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + +""" + +cfgbootbios = """ # Bootloader. + boot.loader.grub.enable = true; + boot.loader.grub.device = "@@bootdev@@"; + boot.loader.grub.useOSProber = true; + +""" + +cfgbootnone = """ # Disable bootloader. + boot.loader.grub.enable = false; + +""" + +cfgbootgrubcrypt = """ # Setup keyfile + boot.initrd.secrets = { + "/boot/crypto_keyfile.bin" = null; + }; + + boot.loader.grub.enableCryptodisk = true; + +""" + +cfgnetwork = """ networking.hostName = "@@hostname@@"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + +""" + +cfgnetworkmanager = """ # Enable networking + networking.networkmanager.enable = true; + +""" + +cfgconnman = """ # Enable networking + services.connman.enable = true; + +""" + +cfgnmapplet = """ # Enable network manager applet + programs.nm-applet.enable = true; + +""" + +cfgtime = """ # Set your time zone. + time.timeZone = "@@timezone@@"; + +""" + +cfglocale = """ # Select internationalisation properties. + i18n.defaultLocale = "@@LANG@@"; + +""" + +cfglocaleextra = """ i18n.extraLocaleSettings = { + LC_ADDRESS = "@@LC_ADDRESS@@"; + LC_IDENTIFICATION = "@@LC_IDENTIFICATION@@"; + LC_MEASUREMENT = "@@LC_MEASUREMENT@@"; + LC_MONETARY = "@@LC_MONETARY@@"; + LC_NAME = "@@LC_NAME@@"; + LC_NUMERIC = "@@LC_NUMERIC@@"; + LC_PAPER = "@@LC_PAPER@@"; + LC_TELEPHONE = "@@LC_TELEPHONE@@"; + LC_TIME = "@@LC_TIME@@"; + }; + +""" + +cfggnome = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + +""" + +cfgplasma6 = """ # Enable the X11 windowing system. + # You can disable this if you're only using the Wayland session. + services.xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + +""" + +cfgxfce = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the XFCE Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.xfce.enable = true; + +""" + +cfgpantheon = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the Pantheon Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.pantheon.enable = true; + +""" + +cfgcinnamon = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the Cinnamon Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.cinnamon.enable = true; + +""" + +cfgmate = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the MATE Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.mate.enable = true; + +""" + +cfgenlightenment = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the Enlightenment Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.enlightenment.enable = true; + + # Enable acpid + services.acpid.enable = true; + +""" + +cfglxqt = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the LXQT Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.lxqt.enable = true; + +""" + +cfglumina = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the Lumina Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.lumina.enable = true; + +""" + +cfgbudgie = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the Budgie Desktop environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.budgie.enable = true; + +""" + +cfgdeepin = """ # Enable the X11 windowing system. + services.xserver.enable = true; + + # Enable the Deepin Desktop Environment. + services.xserver.displayManager.lightdm.enable = true; + services.xserver.desktopManager.deepin.enable = true; + +""" + +cfgkeymap = """ # Configure keymap in X11 + services.xserver.xkb = { + layout = "@@kblayout@@"; + variant = "@@kbvariant@@"; + }; + +""" +cfgconsole = """ # Configure console keymap + console.keyMap = "@@vconsole@@"; + +""" + +cfgmisc = """ # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + +""" +cfgusers = """ # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.@@username@@ = { + isNormalUser = true; + description = "@@fullname@@"; + extraGroups = [ @@groups@@ ]; + packages = with pkgs; [@@pkgs@@]; + }; + +""" + +cfgfirefox = """ # Install firefox. + programs.firefox.enable = true; + +""" + +cfgautologin = """ # Enable automatic login for the user. + services.displayManager.autoLogin.enable = true; + services.displayManager.autoLogin.user = "@@username@@"; + +""" + +cfgautologingdm = """ # Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229 + systemd.services."getty@tty1".enable = false; + systemd.services."autovt@tty1".enable = false; + +""" + +cfgautologintty = """ # Enable automatic login for the user. + services.getty.autologinUser = "@@username@@"; + +""" + +cfgunfree = """ # Allow unfree packages + nixpkgs.config.allowUnfree = true; + +""" + +cfgpkgs = """ # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + # wget + ]; + +""" + +cfgtail = """ # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "@@nixosversion@@"; # Did you read the comment? + +} +""" + +cfglatestkernel = """ # Use latest kernel. + boot.kernelPackages = pkgs.linuxPackages_latest; + +""" +def env_is_set(name): + envValue = os.environ.get(name) + return not (envValue is None or envValue == "") + +def generateProxyStrings(): + proxyEnv = [] + if env_is_set('http_proxy'): + proxyEnv.append('http_proxy={}'.format(os.environ.get('http_proxy'))) + if env_is_set('https_proxy'): + proxyEnv.append('https_proxy={}'.format(os.environ.get('https_proxy'))) + if env_is_set('HTTP_PROXY'): + proxyEnv.append('HTTP_PROXY={}'.format(os.environ.get('HTTP_PROXY'))) + if env_is_set('HTTPS_PROXY'): + proxyEnv.append('HTTPS_PROXY={}'.format(os.environ.get('HTTPS_PROXY'))) + + if len(proxyEnv) > 0: + proxyEnv.insert(0, "env") + + return proxyEnv + +def pretty_name(): + return _("Installing NixOS.") + + +status = pretty_name() + + +def pretty_status_message(): + return status + + +def catenate(d, key, *values): + """ + Sets @p d[key] to the string-concatenation of @p values + if none of the values are None. + This can be used to set keys conditionally based on + the values being found. + """ + if [v for v in values if v is None]: + return + + d[key] = "".join(values) + + +def run(): + """NixOS Configuration.""" + + global status + status = _("Configuring NixOS") + libcalamares.job.setprogress(0.1) + + ngc_cfg = configparser.ConfigParser() + ngc_cfg["Defaults"] = { "Kernel": "lts" } + ngc_cfg.read("/etc/nixos-generate-config.conf") + + # Create initial config file + cfg = cfghead + gs = libcalamares.globalstorage + variables = dict() + + # Setup variables + root_mount_point = gs.value("rootMountPoint") + config = os.path.join(root_mount_point, "etc/nixos/configuration.nix") + fw_type = gs.value("firmwareType") + bootdev = ( + "nodev" + if gs.value("bootLoader") is None + else gs.value("bootLoader")["installPath"] + ) + + # Pick config parts and prepare substitution + + # Check bootloader + if fw_type == "efi": + cfg += cfgbootefi + elif bootdev != "nodev": + cfg += cfgbootbios + catenate(variables, "bootdev", bootdev) + else: + cfg += cfgbootnone + + if ngc_cfg["Defaults"]["Kernel"] == "latest": + cfg += cfglatestkernel + + # Setup encrypted swap devices. nixos-generate-config doesn't seem to notice them. + for part in gs.value("partitions"): + if ( + part["claimed"] is True + and (part["fsName"] == "luks" or part["fsName"] == "luks2") + and part["device"] is not None + and part["fs"] == "linuxswap" + ): + cfg += """ boot.initrd.luks.devices."{}".device = "/dev/disk/by-uuid/{}";\n""".format( + part["luksMapperName"], part["uuid"] + ) + + # Check partitions + root_is_encrypted = False + boot_is_encrypted = False + boot_is_partition = False + + for part in gs.value("partitions"): + if part["mountPoint"] == "/": + root_is_encrypted = part["fsName"] in ["luks", "luks2"] + elif part["mountPoint"] == "/boot": + boot_is_partition = True + boot_is_encrypted = part["fsName"] in ["luks", "luks2"] + + # Setup keys in /boot/crypto_keyfile if using BIOS and Grub cryptodisk + if fw_type != "efi" and ( + (boot_is_partition and boot_is_encrypted) + or (root_is_encrypted and not boot_is_partition) + ): + cfg += cfgbootgrubcrypt + status = _("Setting up LUKS") + libcalamares.job.setprogress(0.15) + try: + libcalamares.utils.host_env_process_output( + ["mkdir", "-p", root_mount_point + "/boot"], None + ) + libcalamares.utils.host_env_process_output( + ["chmod", "0700", root_mount_point + "/boot"], None + ) + # Create /boot/crypto_keyfile.bin + libcalamares.utils.host_env_process_output( + [ + "dd", + "bs=512", + "count=4", + "if=/dev/random", + "of=" + root_mount_point + "/boot/crypto_keyfile.bin", + "iflag=fullblock", + ], + None, + ) + libcalamares.utils.host_env_process_output( + ["chmod", "600", root_mount_point + "/boot/crypto_keyfile.bin"], None + ) + except subprocess.CalledProcessError: + libcalamares.utils.error("Failed to create /boot/crypto_keyfile.bin") + return ( + _("Failed to create /boot/crypto_keyfile.bin"), + _("Check if you have enough free space on your partition."), + ) + + for part in gs.value("partitions"): + if ( + part["claimed"] is True + and (part["fsName"] == "luks" or part["fsName"] == "luks2") + and part["device"] is not None + ): + cfg += """ boot.initrd.luks.devices."{}".keyFile = "/boot/crypto_keyfile.bin";\n""".format( + part["luksMapperName"] + ) + try: + # Grub currently only supports pbkdf2 for luks2 + libcalamares.utils.host_env_process_output( + [ + "cryptsetup", + "luksConvertKey", + "--hash", + "sha256", + "--pbkdf", + "pbkdf2", + part["device"], + ], + None, + part["luksPassphrase"], + ) + # Add luks drives to /boot/crypto_keyfile.bin + libcalamares.utils.host_env_process_output( + [ + "cryptsetup", + "luksAddKey", + "--hash", + "sha256", + "--pbkdf", + "pbkdf2", + part["device"], + root_mount_point + "/boot/crypto_keyfile.bin", + ], + None, + part["luksPassphrase"], + ) + except subprocess.CalledProcessError: + libcalamares.utils.error( + "Failed to add {} to /boot/crypto_keyfile.bin".format( + part["luksMapperName"] + ) + ) + return ( + _("cryptsetup failed"), + _( + "Failed to add {} to /boot/crypto_keyfile.bin".format( + part["luksMapperName"] + ) + ), + ) + + status = _("Configuring NixOS") + libcalamares.job.setprogress(0.18) + + cfg += cfgnetwork + if gs.value("packagechooser_packagechooser") == "enlightenment": + cfg += cfgconnman + else: + cfg += cfgnetworkmanager + + if ( + (gs.value("packagechooser_packagechooser") == "mate") + | (gs.value("packagechooser_packagechooser") == "lxqt") + | (gs.value("packagechooser_packagechooser") == "lumina") + ): + cfg += cfgnmapplet + + if gs.value("hostname") is None: + catenate(variables, "hostname", "nixos") + else: + catenate(variables, "hostname", gs.value("hostname")) + + if gs.value("locationRegion") is not None and gs.value("locationZone") is not None: + cfg += cfgtime + catenate( + variables, + "timezone", + gs.value("locationRegion"), + "/", + gs.value("locationZone"), + ) + + if gs.value("localeConf") is not None: + localeconf = gs.value("localeConf") + locale = localeconf.pop("LANG").split("/")[0] + cfg += cfglocale + catenate(variables, "LANG", locale) + if ( + len(set(localeconf.values())) != 1 + or list(set(localeconf.values()))[0] != locale + ): + cfg += cfglocaleextra + for conf in localeconf: + catenate(variables, conf, localeconf.get(conf).split("/")[0]) + + # Choose desktop environment + if gs.value("packagechooser_packagechooser") == "gnome": + cfg += cfggnome + elif gs.value("packagechooser_packagechooser") == "plasma6": + cfg += cfgplasma6 + elif gs.value("packagechooser_packagechooser") == "xfce": + cfg += cfgxfce + elif gs.value("packagechooser_packagechooser") == "pantheon": + cfg += cfgpantheon + elif gs.value("packagechooser_packagechooser") == "cinnamon": + cfg += cfgcinnamon + elif gs.value("packagechooser_packagechooser") == "mate": + cfg += cfgmate + elif gs.value("packagechooser_packagechooser") == "enlightenment": + cfg += cfgenlightenment + elif gs.value("packagechooser_packagechooser") == "lxqt": + cfg += cfglxqt + elif gs.value("packagechooser_packagechooser") == "lumina": + cfg += cfglumina + elif gs.value("packagechooser_packagechooser") == "budgie": + cfg += cfgbudgie + elif gs.value("packagechooser_packagechooser") == "deepin": + cfg += cfgdeepin + + if ( + gs.value("keyboardLayout") is not None + and gs.value("keyboardVariant") is not None + ): + cfg += cfgkeymap + catenate(variables, "kblayout", gs.value("keyboardLayout")) + catenate(variables, "kbvariant", gs.value("keyboardVariant")) + + if gs.value("keyboardVConsoleKeymap") is not None: + try: + subprocess.check_output( + ["pkexec", "loadkeys", gs.value("keyboardVConsoleKeymap").strip()], + stderr=subprocess.STDOUT, + ) + cfg += cfgconsole + catenate( + variables, "vconsole", gs.value("keyboardVConsoleKeymap").strip() + ) + except subprocess.CalledProcessError as e: + libcalamares.utils.error("loadkeys: {}".format(e.output)) + libcalamares.utils.error( + "Setting vconsole keymap to {} will fail, using default".format( + gs.value("keyboardVConsoleKeymap").strip() + ) + ) + else: + kbdmodelmap = open( + "/run/current-system/sw/share/systemd/kbd-model-map", "r" + ) + kbd = kbdmodelmap.readlines() + out = [] + for line in kbd: + if line.startswith("#"): + continue + out.append(line.split()) + # Find rows with same layout + find = [] + for row in out: + if gs.value("keyboardLayout") == row[1]: + find.append(row) + if find != []: + vconsole = find[0][0] + else: + vconsole = "" + if gs.value("keyboardVariant") is not None: + variant = gs.value("keyboardVariant") + else: + variant = "-" + # Find rows with same variant + for row in find: + if variant in row[3]: + vconsole = row[0] + break + # If none found set to "us" + if vconsole != "" and vconsole != "us" and vconsole is not None: + try: + subprocess.check_output( + ["pkexec", "loadkeys", vconsole], stderr=subprocess.STDOUT + ) + cfg += cfgconsole + catenate(variables, "vconsole", vconsole) + except subprocess.CalledProcessError as e: + libcalamares.utils.error("loadkeys: {}".format(e.output)) + libcalamares.utils.error("vconsole value: {}".format(vconsole)) + libcalamares.utils.error( + "Setting vconsole keymap to {} will fail, using default".format( + gs.value("keyboardVConsoleKeymap") + ) + ) + + if ( + gs.value("packagechooser_packagechooser") is not None + and gs.value("packagechooser_packagechooser") != "" + ): + cfg += cfgmisc + + if gs.value("username") is not None: + fullname = gs.value("fullname") + groups = ["networkmanager", "wheel"] + + cfg += cfgusers + catenate(variables, "username", gs.value("username")) + catenate(variables, "fullname", fullname) + catenate(variables, "groups", (" ").join(['"' + s + '"' for s in groups])) + if ( + gs.value("autoLoginUser") is not None + and gs.value("packagechooser_packagechooser") is not None + and gs.value("packagechooser_packagechooser") != "" + ): + cfg += cfgautologin + if gs.value("packagechooser_packagechooser") == "gnome": + cfg += cfgautologingdm + elif gs.value("autoLoginUser") is not None: + cfg += cfgautologintty + + if gs.value("packagechooser_packagechooser") != "": + cfg += cfgfirefox + + # Check if unfree packages are allowed + free = True + if gs.value("nixos_allow_unfree"): + free = False + cfg += cfgunfree + + cfg += cfgpkgs + # Use firefox as default as a graphical web browser, and add kate to plasma desktop + if gs.value("packagechooser_packagechooser") == "plasma6": + catenate( + variables, "pkgs", "\n kdePackages.kate\n # thunderbird\n " + ) + elif gs.value("packagechooser_packagechooser") != "": + catenate(variables, "pkgs", "\n # thunderbird\n ") + else: + catenate(variables, "pkgs", "") + + cfg += cfgtail + version = ".".join(subprocess.getoutput(["nixos-version"]).split(".")[:2])[:5] + catenate(variables, "nixosversion", version) + + # Check that all variables are used + for key in variables.keys(): + pattern = "@@{key}@@".format(key=key) + if pattern not in cfg: + libcalamares.utils.warning("Variable '{key}' is not used.".format(key=key)) + + # Check that all patterns exist + variable_pattern = re.compile(r"@@\w+@@") + for match in variable_pattern.finditer(cfg): + variable_name = cfg[match.start() + 2 : match.end() - 2] + if variable_name not in variables: + libcalamares.utils.warning( + "Variable '{key}' is used but not defined.".format(key=variable_name) + ) + + # Do the substitutions + for key in variables.keys(): + pattern = "@@{key}@@".format(key=key) + cfg = cfg.replace(pattern, str(variables[key])) + + status = _("Generating NixOS configuration") + libcalamares.job.setprogress(0.25) + + try: + # Generate hardware.nix with mounted swap device + subprocess.check_output( + ["pkexec", "nixos-generate-config", "--root", root_mount_point], + stderr=subprocess.STDOUT, + ) + except subprocess.CalledProcessError as e: + if e.output is not None: + libcalamares.utils.error(e.output.decode("utf8")) + return (_("nixos-generate-config failed"), _(e.output.decode("utf8"))) + + # Check for unfree stuff in hardware-configuration.nix + hf = open(root_mount_point + "/etc/nixos/hardware-configuration.nix", "r") + htxt = hf.read() + search = re.search(r"boot\.extraModulePackages = \[ (.*) \];", htxt) + + # Check if any extraModulePackages are defined, and remove if only free packages are allowed + if search is not None and free: + expkgs = search.group(1).split(" ") + for pkg in expkgs: + p = ".".join(pkg.split(".")[3:]) + # Check package p is unfree + isunfree = subprocess.check_output( + [ + "nix-instantiate", + "--eval", + "--strict", + "-E", + "with import {{}}; pkgs.linuxKernel.packageAliases.linux_default.{}.meta.unfree".format( + p + ), + "--json", + ], + stderr=subprocess.STDOUT, + ) + if isunfree == b"true": + libcalamares.utils.warning( + "{} is marked as unfree, removing from hardware-configuration.nix".format( + p + ) + ) + expkgs.remove(pkg) + hardwareout = re.sub( + r"boot\.extraModulePackages = \[ (.*) \];", + "boot.extraModulePackages = [ {}];".format( + "".join(map(lambda x: x + " ", expkgs)) + ), + htxt, + ) + # Write the hardware-configuration.nix file + libcalamares.utils.host_env_process_output( + [ + "cp", + "/dev/stdin", + root_mount_point + "/etc/nixos/hardware-configuration.nix", + ], + None, + hardwareout, + ) + + # Write the configuration.nix file + libcalamares.utils.host_env_process_output(["cp", "/dev/stdin", config], None, cfg) + + status = _("Installing NixOS") + libcalamares.job.setprogress(0.3) + + # build nixos-install command + nixosInstallCmd = [ "pkexec" ] + nixosInstallCmd.extend(generateProxyStrings()) + nixosInstallCmd.extend( + [ + "nixos-install", + "--no-root-passwd", + "--root", + root_mount_point + ] + ) + + # Install customizations + try: + output = "" + proc = subprocess.Popen( + nixosInstallCmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT + ) + while True: + line = proc.stdout.readline().decode("utf-8") + output += line + libcalamares.utils.debug("nixos-install: {}".format(line.strip())) + if not line: + break + exit = proc.wait() + if exit != 0: + return (_("nixos-install failed"), _(output)) + except: + return (_("nixos-install failed"), _("Installation failed to complete")) + + return None diff --git a/pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/module.desc b/pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/module.desc new file mode 100644 index 000000000000..3697c7224e6d --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos-extensions/src/modules/nixos/module.desc @@ -0,0 +1,5 @@ +--- +type: "job" +name: "nixos" +interface: "python" +script: "main.py" diff --git a/pkgs/by-name/ca/calamares-nixos/package.nix b/pkgs/by-name/ca/calamares-nixos/package.nix new file mode 100644 index 000000000000..fdf2363a7807 --- /dev/null +++ b/pkgs/by-name/ca/calamares-nixos/package.nix @@ -0,0 +1,30 @@ +{ + lib, + runCommand, + makeWrapper, + calamares, + calamares-nixos-extensions, +}: +runCommand "calamares-wrapped" + { + inherit (calamares) version meta; + + nativeBuildInputs = [ makeWrapper ]; + } + '' + mkdir -p $out/bin + + cd ${calamares} + + for i in *; do + if [ "$i" == "bin" ]; then + continue + fi + ln -s ${calamares}/$i $out/$i + done + + makeWrapper ${lib.getExe calamares} $out/bin/calamares \ + --prefix XDG_DATA_DIRS : ${calamares-nixos-extensions}/share \ + --prefix XDG_CONFIG_DIRS : ${calamares-nixos-extensions}/etc \ + --add-flag --xdg-config + '' diff --git a/pkgs/tools/misc/calamares/0006-Remove-options-for-unsupported-partition-types.patch b/pkgs/by-name/ca/calamares/dont-allow-manual-luks.patch similarity index 100% rename from pkgs/tools/misc/calamares/0006-Remove-options-for-unsupported-partition-types.patch rename to pkgs/by-name/ca/calamares/dont-allow-manual-luks.patch diff --git a/pkgs/tools/misc/calamares/0001-Modifies-the-users-module-to-only-set-passwords-of-u.patch b/pkgs/by-name/ca/calamares/dont-create-users.patch similarity index 64% rename from pkgs/tools/misc/calamares/0001-Modifies-the-users-module-to-only-set-passwords-of-u.patch rename to pkgs/by-name/ca/calamares/dont-create-users.patch index a03aa4180e08..4cebf072ab35 100644 --- a/pkgs/tools/misc/calamares/0001-Modifies-the-users-module-to-only-set-passwords-of-u.patch +++ b/pkgs/by-name/ca/calamares/dont-create-users.patch @@ -1,20 +1,8 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Fuentes -Date: Thu, 1 Aug 2024 15:53:16 -0400 -Subject: [PATCH] Modifies the users module to only set passwords of user and - root - -as the users will have already been created in the configuration.nix -file ---- - src/modules/users/Config.cpp | 15 --------------- - 1 file changed, 15 deletions(-) - diff --git a/src/modules/users/Config.cpp b/src/modules/users/Config.cpp -index cd56bc3e2..9b09b36cd 100644 +index be754774b..4b0513df0 100644 --- a/src/modules/users/Config.cpp +++ b/src/modules/users/Config.cpp -@@ -1028,12 +1028,6 @@ Config::createJobs() const +@@ -1069,12 +1069,6 @@ Config::createJobs() const Calamares::Job* j; @@ -27,7 +15,7 @@ index cd56bc3e2..9b09b36cd 100644 if ( getActiveDirectoryUsed() ) { j = new ActiveDirectoryJob( m_activeDirectoryAdminUsername, -@@ -1043,20 +1037,11 @@ Config::createJobs() const +@@ -1084,20 +1078,11 @@ Config::createJobs() const jobs.append( Calamares::job_ptr( j ) ); } diff --git a/pkgs/by-name/ca/calamares/let-qml-write-to-global-storage.patch b/pkgs/by-name/ca/calamares/let-qml-write-to-global-storage.patch new file mode 100644 index 000000000000..9afbe4ef87ff --- /dev/null +++ b/pkgs/by-name/ca/calamares/let-qml-write-to-global-storage.patch @@ -0,0 +1,33 @@ +diff --git a/src/libcalamares/GlobalStorage.h b/src/libcalamares/GlobalStorage.h +index 37ea332d2..b9e629350 100644 +--- a/src/libcalamares/GlobalStorage.h ++++ b/src/libcalamares/GlobalStorage.h +@@ -56,13 +56,6 @@ public: + */ + explicit GlobalStorage( QObject* parent = nullptr ); + +- /** @brief Insert a key and value into the store +- * +- * The @p value is added to the store with key @p key. If @p key +- * already exists in the store, its existing value is overwritten. +- * The changed() signal is emitted regardless. +- */ +- void insert( const QString& key, const QVariant& value ); + /** @brief Removes a key and its value + * + * The @p key is removed from the store. If the @p key does not +@@ -123,6 +116,14 @@ public: + QVariantMap data() const { return m; } + + public Q_SLOTS: ++ /** @brief Insert a key and value into the store ++ * ++ * The @p value is added to the store with key @p key. If @p key ++ * already exists in the store, its existing value is overwritten. ++ * The changed() signal is emitted regardless. ++ */ ++ void insert( const QString& key, const QVariant& value ); ++ + /** @brief Does the store contain the given key? + * + * This can distinguish an explicitly-inserted QVariant() from diff --git a/pkgs/by-name/ca/calamares/package.nix b/pkgs/by-name/ca/calamares/package.nix new file mode 100644 index 000000000000..682e0cbec8a2 --- /dev/null +++ b/pkgs/by-name/ca/calamares/package.nix @@ -0,0 +1,135 @@ +{ + lib, + stdenv, + + writeShellScriptBin, + xdg-utils, + + fetchFromGitea, + + cmake, + ninja, + kdePackages, + qt6, + + libpwquality, + libxcrypt, + parted, + yaml-cpp, + + tzdata, + ckbcomp, + util-linux, + os-prober, + xkeyboard_config, + + # passthru.tests + calamares-nixos, +}: + +let + # drop privileges so we can launch browsers, etc; + # force going through the portal so we get the right environment + xdg-open-nixos = writeShellScriptBin "xdg-open" '' + sudo --user $(id -nu $PKEXEC_UID) env NIXOS_XDG_OPEN_USE_PORTAL=1 ${xdg-utils}/bin/xdg-open "$@" + ''; +in +stdenv.mkDerivation (finalAttrs: { + pname = "calamares"; + version = "3.4.0"; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "Calamares"; + repo = "calamares"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Qk+GnonuEWK3hXjmwxf9awgxr6dGunShJgwmkT78qKM="; + }; + + patches = [ + # Don't allow LUKS in manual partitioning + # FIXME: this really needs to be fixed on the module end + ./dont-allow-manual-luks.patch + + # Don't create users - they're already created by the installer + # FIXME: upstream this? + ./dont-create-users.patch + + # Allow QML to write to GlobalStorage + # FIXME: upstream this + ./let-qml-write-to-global-storage.patch + ]; + + nativeBuildInputs = [ + cmake + ninja + kdePackages.extra-cmake-modules + qt6.wrapQtAppsHook + ]; + + buildInputs = [ + kdePackages.kcoreaddons + kdePackages.kcrash + kdePackages.kpackage + kdePackages.kparts + kdePackages.kpmcore + kdePackages.kservice + kdePackages.libplasma + libpwquality + libxcrypt + parted + kdePackages.polkit-qt-1 + qt6.qtbase + qt6.qttools + yaml-cpp + ]; + + postPatch = '' + # this is called via pkexec, which does not resolve symlinks, so the policy + # needs to point at the symlinked path + substituteInPlace io.calamares.calamares.policy \ + --replace-fail /usr/bin/calamares /run/current-system/sw/bin/calamares + + substituteInPlace src/modules/locale/SetTimezoneJob.cpp src/libcalamares/locale/TimeZone.cpp \ + --replace-fail /usr/share/zoneinfo ${tzdata}/share/zoneinfo + + substituteInPlace src/modules/keyboard/keyboardwidget/keyboardglobal.cpp \ + --replace-fail /usr/share/X11/xkb/rules/base.lst ${xkeyboard_config}/share/X11/xkb/rules/base.lst + + substituteInPlace CMakeLists.txt \ + --replace-fail "\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR}" "$out/share/polkit-1/actions" + ''; + + separateDebugInfo = true; + + qtWrapperArgs = [ + "--prefix PATH : ${ + lib.makeBinPath [ + ckbcomp + os-prober + util-linux + xdg-open-nixos + ] + }" + ]; + + passthru.tests = { + inherit calamares-nixos; + }; + + meta = with lib; { + description = "Distribution-independent installer framework"; + homepage = "https://calamares.io/"; + license = with licenses; [ + gpl3Plus + bsd2 + cc0 + ]; + maintainers = with maintainers; [ + manveru + vlinkz + ]; + platforms = platforms.linux; + mainProgram = "calamares"; + }; +}) diff --git a/pkgs/by-name/cl/claude-code/package-lock.json b/pkgs/by-name/cl/claude-code/package-lock.json index cb8e32a0263f..818ab1320c08 100644 --- a/pkgs/by-name/cl/claude-code/package-lock.json +++ b/pkgs/by-name/cl/claude-code/package-lock.json @@ -6,13 +6,13 @@ "packages": { "": { "dependencies": { - "@anthropic-ai/claude-code": "^1.0.72" + "@anthropic-ai/claude-code": "^1.0.73" } }, "node_modules/@anthropic-ai/claude-code": { - "version": "1.0.72", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.72.tgz", - "integrity": "sha512-nA/l/xKX4sgOE0Y6P3o6czNGQqlyqJPjs9CHFxantsmyKvOot9VlRW4AiEAn42hQrZReCXeSnt8LOMx9ev7Erg==", + "version": "1.0.73", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-1.0.73.tgz", + "integrity": "sha512-UVBkta/BWy49xR9fgi/Oy2tl7p/k+lOCinv21zSK/E9KB4JObAAZ1BAOWteu4fhv7gs3Ipfev5r6yo3OplmwNg==", "license": "SEE LICENSE IN README.md", "bin": { "claude": "cli.js" diff --git a/pkgs/by-name/cl/claude-code/package.nix b/pkgs/by-name/cl/claude-code/package.nix index b7685095154a..cc8634d6bdde 100644 --- a/pkgs/by-name/cl/claude-code/package.nix +++ b/pkgs/by-name/cl/claude-code/package.nix @@ -7,16 +7,16 @@ buildNpmPackage rec { pname = "claude-code"; - version = "1.0.72"; + version = "1.0.73"; nodejs = nodejs_20; # required for sandboxed Nix builds on Darwin src = fetchzip { url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz"; - hash = "sha256-1vIElqZ5sk62o1amdfOqhmSG4B5wzKWDLcCgvQO4a5o="; + hash = "sha256-DdNMgKiGA4NjBAqes3hsWLouvcgtDDFnBWdNGpRgSV4="; }; - npmDepsHash = "sha256-LkQf2lW6TM1zRr10H7JgtnE+dy0CE7WCxF4GhTd4GT4="; + npmDepsHash = "sha256-PYACkrv/8d4StNaM6QYaIgjrD6rL0N6cc08wagcga+A="; postPatch = '' cp ${./package-lock.json} package-lock.json diff --git a/pkgs/by-name/cr/crush/package.nix b/pkgs/by-name/cr/crush/package.nix index 771261fa1c21..d7578f1aaffc 100644 --- a/pkgs/by-name/cr/crush/package.nix +++ b/pkgs/by-name/cr/crush/package.nix @@ -9,15 +9,17 @@ buildGoModule (finalAttrs: { pname = "crush"; - version = "0.2.1"; + version = "0.5.0"; src = fetchFromGitHub { owner = "charmbracelet"; repo = "crush"; tag = "v${finalAttrs.version}"; - hash = "sha256-SjrkQFSjJrPNynARE92uKA53hkstIUBSvQbqcYSsnaM="; + hash = "sha256-u2w19Xmcm3cx/B8QRNGaP2qeg+Cif/L92RNlJav6H3w="; }; + vendorHash = "sha256-H92TgZoWdYQ863AAb2116zJtmgkKXh2hRoEBRcn5zeA="; + # rename TestMain to prevent it from running, as it panics in the sandbox. postPatch = '' substituteInPlace internal/llm/provider/openai_test.go \ @@ -26,8 +28,6 @@ buildGoModule (finalAttrs: { "func DisabledTestMain" ''; - vendorHash = "sha256-aI3MSaQYUOLJxBxwCoVg13HpxK46q6ZITrw1osx5tiE="; - ldflags = [ "-s" "-X=github.com/charmbracelet/crush/internal/version.Version=${finalAttrs.version}" diff --git a/pkgs/by-name/cu/cue/package.nix b/pkgs/by-name/cu/cue/package.nix index f70b9f9ff864..fb0909a5d2ae 100644 --- a/pkgs/by-name/cu/cue/package.nix +++ b/pkgs/by-name/cu/cue/package.nix @@ -10,13 +10,13 @@ buildGoModule (finalAttrs: { pname = "cue"; - version = "0.14.0"; + version = "0.14.1"; src = fetchFromGitHub { owner = "cue-lang"; repo = "cue"; tag = "v${finalAttrs.version}"; - hash = "sha256-rQsFMBREmXnJP1vTr+mz1720nVI0oxvDYEuQtibL79g="; + hash = "sha256-U/Cptda+2UIDIxuStNYAwZABlNdkS723TnoixVlvS4k="; }; vendorHash = "sha256-hV5LO9R854YuazzS6VkxoY64h3+JboBgEDRWAoWats8="; diff --git a/pkgs/by-name/da/dart-sass/package.nix b/pkgs/by-name/da/dart-sass/package.nix index 9f861c4ee4f3..5a24ba1e0ce3 100644 --- a/pkgs/by-name/da/dart-sass/package.nix +++ b/pkgs/by-name/da/dart-sass/package.nix @@ -23,13 +23,13 @@ let in buildDartApplication rec { pname = "dart-sass"; - version = "1.89.2"; + version = "1.90.0"; src = fetchFromGitHub { owner = "sass"; repo = "dart-sass"; tag = version; - hash = "sha256-IDR00pxEKQ5DQM+q0P/iRnsH80ZUbokZhbnBoomy2oQ="; + hash = "sha256-ChHaFjuEhDpx2MVbsNNrFIg7LQ6tY/9BsWSF3MFofN0="; }; pubspecLock = lib.importJSON ./pubspec.lock.json; diff --git a/pkgs/by-name/da/dart-sass/pubspec.lock.json b/pkgs/by-name/da/dart-sass/pubspec.lock.json index bb4aaea097e9..240f73712a1b 100644 --- a/pkgs/by-name/da/dart-sass/pubspec.lock.json +++ b/pkgs/by-name/da/dart-sass/pubspec.lock.json @@ -4,21 +4,21 @@ "dependency": "transitive", "description": { "name": "_fe_analyzer_shared", - "sha256": "e55636ed79578b9abca5fecf9437947798f5ef7456308b5cb85720b793eac92f", + "sha256": "da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f", "url": "https://pub.dev" }, "source": "hosted", - "version": "82.0.0" + "version": "85.0.0" }, "analyzer": { "dependency": "direct dev", "description": { "name": "analyzer", - "sha256": "904ae5bb474d32c38fb9482e2d925d5454cda04ddd0e55d2e6826bc72f6ba8c0", + "sha256": "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d", "url": "https://pub.dev" }, "source": "hosted", - "version": "7.4.5" + "version": "7.7.1" }, "archive": { "dependency": "direct dev", @@ -144,11 +144,11 @@ "dependency": "transitive", "description": { "name": "coverage", - "sha256": "aa07dbe5f2294c827b7edb9a87bba44a9c15a3cc81bc8da2ca19b37322d30080", + "sha256": "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.14.1" + "version": "1.15.0" }, "crypto": { "dependency": "direct dev", @@ -174,11 +174,21 @@ "dependency": "transitive", "description": { "name": "dart_mappable", - "sha256": "2255b2c00e328a65fef5a8df2dabfc0dc9c2e518c33a50051a4519b1c7a28c48", + "sha256": "15f41a35da8ee690bbfa0059fa241edeeaea73f89a2ba685b354ece07cd8ada6", "url": "https://pub.dev" }, "source": "hosted", - "version": "4.5.0" + "version": "4.6.0" + }, + "dart_style": { + "dependency": "transitive", + "description": { + "name": "dart_style", + "sha256": "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.1" }, "dartdoc": { "dependency": "direct dev", @@ -264,11 +274,11 @@ "dependency": "direct main", "description": { "name": "http", - "sha256": "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b", + "sha256": "bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.4.0" + "version": "1.5.0" }, "http_multi_server": { "dependency": "transitive", @@ -474,21 +484,21 @@ "dependency": "direct main", "description": { "name": "protobuf", - "sha256": "579fe5557eae58e3adca2e999e38f02441d8aa908703854a9e0a0f47fa857731", + "sha256": "6153efcc92a06910918f3db8231fd2cf828ac81e50ebd87adc8f8a8cb3caff0e", "url": "https://pub.dev" }, "source": "hosted", - "version": "4.1.0" + "version": "4.1.1" }, "protoc_plugin": { "dependency": "direct dev", "description": { "name": "protoc_plugin", - "sha256": "32fbf4ac1b1a7263440898c9011209c3a13c9063f326ef78da83734e6f992ff3", + "sha256": "5bf4289e0fa9eec4b0ee4e77111fa47fa2e6b54b2a7b9c2e83ec87a971542f01", "url": "https://pub.dev" }, "source": "hosted", - "version": "22.3.0" + "version": "22.5.0" }, "pub_api_client": { "dependency": "direct dev", @@ -654,31 +664,31 @@ "dependency": "direct dev", "description": { "name": "test", - "sha256": "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb", + "sha256": "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.26.2" + "version": "1.26.3" }, "test_api": { "dependency": "transitive", "description": { "name": "test_api", - "sha256": "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00", + "sha256": "ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55", "url": "https://pub.dev" }, "source": "hosted", - "version": "0.7.6" + "version": "0.7.7" }, "test_core": { "dependency": "transitive", "description": { "name": "test_core", - "sha256": "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a", + "sha256": "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0", "url": "https://pub.dev" }, "source": "hosted", - "version": "0.6.11" + "version": "0.6.12" }, "test_descriptor": { "dependency": "direct dev", diff --git a/pkgs/by-name/el/element-desktop/package.nix b/pkgs/by-name/el/element-desktop/package.nix index 4a17b35338c6..b00e4dbc3dac 100644 --- a/pkgs/by-name/el/element-desktop/package.nix +++ b/pkgs/by-name/el/element-desktop/package.nix @@ -77,6 +77,11 @@ stdenv.mkDerivation ( runHook postConfigure ''; + # Workaround for darwin sandbox build failure: "Error: listen EPERM: operation not permitted ..tsx..." + preBuild = lib.optionalString stdenv.hostPlatform.isDarwin '' + export TMPDIR="$(mktemp -d)" + ''; + buildPhase = '' runHook preBuild diff --git a/pkgs/by-name/fr/fractal/package.nix b/pkgs/by-name/fr/fractal/package.nix index 7c9121570d42..cfa580c253c1 100644 --- a/pkgs/by-name/fr/fractal/package.nix +++ b/pkgs/by-name/fr/fractal/package.nix @@ -30,19 +30,19 @@ stdenv.mkDerivation (finalAttrs: { pname = "fractal"; - version = "11.2"; + version = "12"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "World"; repo = "fractal"; tag = finalAttrs.version; - hash = "sha256-UE0TRC9DeP+fl85fzuQ8/3ioIPdeSqsJWnW1olB1gmo="; + hash = "sha256-galaFpHcWrN+jQ6uOS78EB6wjfR8KIBLZvKmH7Rb1Xs="; }; cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) src; - hash = "sha256-I+1pGZWxn9Q/CL8D6VxsaO3H4EdBek4wyykvNgCNRZI="; + hash = "sha256-DuEuCvhwulDHVCmUPXcM6PZ34nueRmKYHYffSsFCbLE="; }; patches = [ diff --git a/pkgs/by-name/hy/hypercore/package.nix b/pkgs/by-name/hy/hypercore/package.nix index b7f32a3137fa..d82f77b601ed 100644 --- a/pkgs/by-name/hy/hypercore/package.nix +++ b/pkgs/by-name/hy/hypercore/package.nix @@ -7,13 +7,13 @@ buildNpmPackage (finalAttrs: { pname = "hypercore"; - version = "11.11.2"; + version = "11.12.1"; src = fetchFromGitHub { owner = "holepunchto"; repo = "hypercore"; tag = "v${finalAttrs.version}"; - hash = "sha256-vDI1j5seR6OBp64wq9oy4eVrtlJF7OCiQb+2EEdOGXw="; + hash = "sha256-AhmOT+ehyfut8QkwbcdHITOrWKfLPsjDx9zjBv9xeB4="; }; npmDepsHash = "sha256-ZJxVmQWKgHyKkuYfGIlANXFcROjI7fibg6mxIhDZowM="; diff --git a/pkgs/by-name/im/immich/sources.json b/pkgs/by-name/im/immich/sources.json index 58ee68475040..2a87fcbc9a75 100644 --- a/pkgs/by-name/im/immich/sources.json +++ b/pkgs/by-name/im/immich/sources.json @@ -19,8 +19,8 @@ "version": "1.137.3" }, "geonames": { - "timestamp": "20250801182552", - "hash": "sha256-jfC/FgfeSz1tdtYc1EqQ/HJw5LlYQSyGntPuXv24JVY=" + "timestamp": "20250812073904", + "hash": "sha256-1ZvFkaNdG5s25YwP5CsblvIFT4rlvNrCBiPNR+lAPTQ=" } } } diff --git a/pkgs/by-name/in/intercept-build/package.nix b/pkgs/by-name/in/intercept-build/package.nix new file mode 100644 index 000000000000..0188b28aecc4 --- /dev/null +++ b/pkgs/by-name/in/intercept-build/package.nix @@ -0,0 +1,38 @@ +{ + lib, + llvmPackages, + python3, +}: +let + inherit (llvmPackages) clang-unwrapped; +in +python3.pkgs.buildPythonApplication rec { + pname = "intercept-build"; + inherit (clang-unwrapped) version; + + format = "other"; + + src = clang-unwrapped + "/bin"; + + dontUnpack = true; + + dependencies = with python3.pkgs; [ + libscanbuild + ]; + + installPhase = '' + mkdir -p "$out/bin" + install "$src/intercept-build" "$out/bin" + ''; + + meta = { + description = "intercepts the build process to generate a compilation database"; + homepage = "https://github.com/llvm/llvm-project/tree/llvmorg-${version}/clang/tools/scan-build-py/"; + mainProgram = "intercept-build"; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; + maintainers = with lib.maintainers; [ RossSmyth ]; + }; +} diff --git a/pkgs/by-name/is/istioctl/package.nix b/pkgs/by-name/is/istioctl/package.nix index ac25f85c07c1..b494dae61a2e 100644 --- a/pkgs/by-name/is/istioctl/package.nix +++ b/pkgs/by-name/is/istioctl/package.nix @@ -7,15 +7,15 @@ buildGoModule rec { pname = "istioctl"; - version = "1.26.3"; + version = "1.27.0"; src = fetchFromGitHub { owner = "istio"; repo = "istio"; rev = version; - hash = "sha256-GWhG3FV9CLhy+IBJSKjf6FOzvex0xI62+7dmZz/lASg="; + hash = "sha256-Rehzwr/6S1c3kzqyJIIvLO3jDTSSrkyb2HHcUn9Tco8="; }; - vendorHash = "sha256-P6h/cIJ3mCHJZEceEB2CDutftwh5Saie9oxmF3TXbdo="; + vendorHash = "sha256-AAWGfNRAgR/Vr3VDMphOPah8a02czsf8fpWi2aeG1Jo="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/ki/kirsch/package.nix b/pkgs/by-name/ki/kirsch/package.nix new file mode 100644 index 000000000000..294e575ddc40 --- /dev/null +++ b/pkgs/by-name/ki/kirsch/package.nix @@ -0,0 +1,42 @@ +{ + lib, + stdenvNoCC, + fetchzip, + xorg, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "kirsch"; + version = "0.6.1"; + + src = fetchzip { + url = "https://github.com/molarmanful/kirsch/releases/download/v${finalAttrs.version}/kirsch-release_v${finalAttrs.version}.zip"; + hash = "sha256-6POi3N1JX6FFWHwqOlB3mrkHMYG+TJXz9URarbSPrZw="; + }; + + nativeBuildInputs = [ xorg.mkfontscale ]; + + installPhase = '' + runHook preInstall + + misc="$out/share/fonts/misc" + install -D -m 644 *.{bdf,otb,pcf} -t "$misc" + install -D -m 644 *.ttf -t "$out/share/fonts/truetype" + + # create fonts.dir so NixOS xorg module adds to fp + mkfontdir "$misc" + + runHook postInstall + ''; + + meta = { + description = "Versatile bitmap font with an organic flair"; + homepage = "https://github.com/molarmanful/kirsch"; + changelog = "https://github.com/molarmanful/kirsch/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.ofl; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ + ejiektpobehuk + ]; + }; +}) diff --git a/pkgs/by-name/ko/koboldcpp/package.nix b/pkgs/by-name/ko/koboldcpp/package.nix index 02111ec70a3f..5764c04814ee 100644 --- a/pkgs/by-name/ko/koboldcpp/package.nix +++ b/pkgs/by-name/ko/koboldcpp/package.nix @@ -41,13 +41,13 @@ let in effectiveStdenv.mkDerivation (finalAttrs: { pname = "koboldcpp"; - version = "1.96.2"; + version = "1.97.4"; src = fetchFromGitHub { owner = "LostRuins"; repo = "koboldcpp"; tag = "v${finalAttrs.version}"; - hash = "sha256-OSAFJ2z6vSTTOovgcF/TZvug51uydmZmkjamN/xv2dc="; + hash = "sha256-z9F3q+1iq6HQV37yRjBOlJRChhnQ/cPP5sAZl5rFDUs="; }; enableParallelBuilding = true; diff --git a/pkgs/by-name/ku/kubevirt/package.nix b/pkgs/by-name/ku/kubevirt/package.nix index fb54bf98751e..57ed0ef11c40 100644 --- a/pkgs/by-name/ku/kubevirt/package.nix +++ b/pkgs/by-name/ku/kubevirt/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "kubevirt"; - version = "1.5.2"; + version = "1.6.0"; src = fetchFromGitHub { owner = "kubevirt"; repo = "kubevirt"; rev = "v${version}"; - hash = "sha256-R01kW6mS1Ce3oi3p6RFVXif/BybM9HlbL2WT9b5wJuE="; + hash = "sha256-vPlQ03AR44UVlRkZe34ZhdhBInZloOeEgjHXq7RC5Lw="; }; vendorHash = null; diff --git a/pkgs/by-name/li/libmediainfo/package.nix b/pkgs/by-name/li/libmediainfo/package.nix index dd380cad4b51..7ab7510f5069 100644 --- a/pkgs/by-name/li/libmediainfo/package.nix +++ b/pkgs/by-name/li/libmediainfo/package.nix @@ -14,11 +14,11 @@ stdenv.mkDerivation rec { pname = "libmediainfo"; - version = "25.04"; + version = "25.07.1"; src = fetchurl { url = "https://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz"; - hash = "sha256-rUXtfJ23gHqoA4RcqIutlSaqjaiDpYEn5TkKqi2Bu7E="; + hash = "sha256-jm6S8gzyynzoq6U60LWJqJovp9/T55cdOFAQms1JvtU="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ly/LycheeSlicer/package.nix b/pkgs/by-name/ly/LycheeSlicer/package.nix index 07137f72633a..1c859fd9767c 100644 --- a/pkgs/by-name/ly/LycheeSlicer/package.nix +++ b/pkgs/by-name/ly/LycheeSlicer/package.nix @@ -4,6 +4,8 @@ makeDesktopItem, lib, xorg, + wayland, + wayland-protocols, }: let pname = "LycheeSlicer"; @@ -18,7 +20,7 @@ let name = "Lychee Slicer"; genericName = "Resin Slicer"; comment = "All-in-one 3D slicer for Resin and Filament"; - desktopName = "Lychee"; + desktopName = "LycheeSlicer"; noDisplay = false; exec = "lychee"; terminal = false; @@ -39,16 +41,21 @@ appimageTools.wrapType2 { install -Dm444 -t $out/share/applications ${desktopItem}/share/applications/* ''; - extraLibraries = [ + extraPkgs = _: [ xorg.libxshmfence + wayland + wayland-protocols ]; meta = { description = "All-in-one 3D slicer for resin and FDM printers"; homepage = "https://lychee.mango3d.io/"; license = lib.licenses.unfree; - maintainers = with lib.maintainers; [ tarinaky ]; + maintainers = with lib.maintainers; [ + tarinaky + ZachDavies + ]; platforms = [ "x86_64-linux" ]; - mainProgram = "lychee"; + mainProgram = "LycheeSlicer"; }; } diff --git a/pkgs/by-name/mt/mtxclient/package.nix b/pkgs/by-name/mt/mtxclient/package.nix index 2d47a07b2645..1ce611fc08ca 100644 --- a/pkgs/by-name/mt/mtxclient/package.nix +++ b/pkgs/by-name/mt/mtxclient/package.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation rec { pname = "mtxclient"; - version = "0.10.0"; + version = "0.10.1"; src = fetchFromGitHub { owner = "Nheko-Reborn"; repo = "mtxclient"; rev = "v${version}"; - hash = "sha256-luWcbYCv5OM3aidxiO7glqD+VYnCZMElZYaPKbtvMYI="; + hash = "sha256-Y0FMCq4crSbm0tJtYq04ZFwWw+vlfxXKXBo0XUgf7hw="; }; postPatch = '' diff --git a/pkgs/by-name/n8/n8n/package.nix b/pkgs/by-name/n8/n8n/package.nix index 5cd58bfd7751..a59c7fe2b94a 100644 --- a/pkgs/by-name/n8/n8n/package.nix +++ b/pkgs/by-name/n8/n8n/package.nix @@ -17,19 +17,19 @@ stdenv.mkDerivation (finalAttrs: { pname = "n8n"; - version = "1.104.1"; + version = "1.105.3"; src = fetchFromGitHub { owner = "n8n-io"; repo = "n8n"; tag = "n8n@${finalAttrs.version}"; - hash = "sha256-/GrpcJU94NqeTAcXVGWG+NamS28cLxKDSr6M4sF6Els="; + hash = "sha256-IsAazA4DCkcOE5lNbxNMYgWAZycwjLYneSFBLAhltac="; }; pnpmDeps = pnpm_10.fetchDeps { inherit (finalAttrs) pname version src; fetcherVersion = 1; - hash = "sha256-UhCwZPthRZSF5ZLFLc5SgG5EZeFySnCRLqGRbc+3F/U="; + hash = "sha256-maKD03Gr1gGUQwvTk35kv89a9TvzsIeKqI9NjjTO1TQ="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/nh/nheko/package.nix b/pkgs/by-name/nh/nheko/package.nix index da6de4c45f93..ddf73924c487 100644 --- a/pkgs/by-name/nh/nheko/package.nix +++ b/pkgs/by-name/nh/nheko/package.nix @@ -26,13 +26,13 @@ stdenv.mkDerivation rec { pname = "nheko"; - version = "0.12.0"; + version = "0.12.1"; src = fetchFromGitHub { owner = "Nheko-Reborn"; repo = "nheko"; rev = "v${version}"; - hash = "sha256-hQb+K8ogNj/s6ZO2kgS/sZZ35y4CwMeS3lVeMYNucYQ="; + hash = "sha256-WlWxe4utRSc9Tt2FsnhBwxzQsoDML2hvm3g5zRnDEiU="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/README.md b/pkgs/by-name/ni/nixos-rebuild-ng/README.md index bcbadeee301b..3192c044e262 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/README.md +++ b/pkgs/by-name/ni/nixos-rebuild-ng/README.md @@ -89,9 +89,8 @@ not possible to fix, please open an issue and we can discuss a solution. your password wrong, it will fail during activation (this can be improved though) - When `--build-host` and `--target-host` are used together, we will use `nix - copy` (or 2 `nix-copy-closure` if you're using Nix <2.18) instead of SSH'ing - to build host and using `nix-copy-closure --to target-host`. The reason for - this is documented in PR + copy` instead of SSH'ing to build host and using + `nix-copy-closure --to target-host`. The reason for this is documented in PR [#364698](https://github.com/NixOS/nixpkgs/pull/364698). If you do need the previous behavior, you can simulate it using `ssh build-host -- nixos-rebuild-ng switch --target-host target-host`. If that is not the case, @@ -119,7 +118,7 @@ not possible to fix, please open an issue and we can discuss a solution. and there was a need to bootstrap a new version of Nix before evaluating the configuration (otherwise the new Nixpkgs version may have code that is only compatible with a newer version of Nix). Nixpkgs now has a policy to be - compatible with Nix 2.3, and even if this is bumped as long we don't do + compatible with Nix 2.18, and even if this is bumped as long we don't do drastic minimum version changes this should not be an issue. Also, the daemon itself always run with the previous version since even we can replace Nix in `PATH` (so Nix client), but we can't replace the daemon without switching to diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/nixos-rebuild.8.scd b/pkgs/by-name/ni/nixos-rebuild-ng/nixos-rebuild.8.scd index 43d1f3033419..fdb3b1382d99 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/nixos-rebuild.8.scd +++ b/pkgs/by-name/ni/nixos-rebuild-ng/nixos-rebuild.8.scd @@ -251,10 +251,10 @@ It must be one of the following: *--use-substitutes* When set, nixos-rebuild will add *--use-substitutes* to each invocation - of _nix-copy-closure_/_nix copy_. This will only affect the behavior of - nixos-rebuild if *--target-host* or *--build-host* is also set. This is - useful when the target-host connection to cache.nixos.org is faster than - the connection between hosts. + of _nix copy_. This will only affect the behavior of nixos-rebuild if + *--target-host* or *--build-host* is also set. This is useful when the + target-host connection to cache.nixos.org is faster than the connection + between hosts. *--sudo* When set, *nixos-rebuild* prefixes activation commands with sudo. diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/package.nix b/pkgs/by-name/ni/nixos-rebuild-ng/package.nix index e7aa5f3d3ff4..371d32af592f 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/package.nix +++ b/pkgs/by-name/ni/nixos-rebuild-ng/package.nix @@ -15,13 +15,6 @@ # Very long tmp dirs lead to "too long for Unix domain socket" # SSH ControlPath errors. Especially macOS sets long TMPDIR paths. withTmpdir ? if stdenv.hostPlatform.isDarwin then "/tmp" else null, - # This version is kind of arbitrary, we use some features that were - # implemented in newer versions of Nix, but not necessary 2.18. - # However, Lix is a fork of Nix 2.18, so this looks like a good version - # to cut specific functionality. - # ATTN: This currently doesn't disambiguate between Nix and Lix, so using this - # in a conditional needs careful checking against both Nix implementations. - withNix218 ? lib.versionAtLeast nix.version "2.18", # passthru.tests nixosTests, nixVersions, @@ -62,7 +55,6 @@ python3Packages.buildPythonApplication rec { postPatch = '' substituteInPlace nixos_rebuild/constants.py \ --subst-var-by executable ${executable} \ - --subst-var-by withNix218 ${lib.boolToString withNix218} \ --subst-var-by withReexec ${lib.boolToString withReexec} \ --subst-var-by withShellFiles ${lib.boolToString withShellFiles} @@ -121,9 +113,9 @@ python3Packages.buildPythonApplication rec { with_nix_stable = nixos-rebuild-ng.override { nix = nixVersions.stable; }; - with_nix_2_3 = nixos-rebuild-ng.override { - # oldest / minimum supported version in nixpkgs - nix = nixVersions.nix_2_3; + with_nix_2_24 = nixos-rebuild-ng.override { + # oldest supported version in nixpkgs + nix = nixVersions.nix_2_24; }; with_lix_latest = nixos-rebuild-ng.override { nix = lixPackageSets.latest.lix; diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py index 59ba3fd340da..78f30989ba02 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/__init__.py @@ -6,7 +6,7 @@ from subprocess import CalledProcessError, run from typing import Final, assert_never from . import nix, services -from .constants import EXECUTABLE, WITH_NIX_2_18, WITH_REEXEC, WITH_SHELL_FILES +from .constants import EXECUTABLE, WITH_REEXEC, WITH_SHELL_FILES from .models import Action, BuildAttr, Flake, Profile from .process import Remote from .utils import LogFormatter @@ -270,9 +270,6 @@ def parse_args( def execute(argv: list[str]) -> None: args, args_groups = parse_args(argv) - if not WITH_NIX_2_18: - logger.warning("you're using Nix <2.18, some features will not work correctly") - common_flags = vars(args_groups["common_flags"]) common_build_flags = common_flags | vars(args_groups["common_build_flags"]) build_flags = common_build_flags | vars(args_groups["classic_build_flags"]) diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py index ef706af7b342..a00327060765 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/constants.py @@ -6,6 +6,5 @@ from typing import Final EXECUTABLE: Final[str] = "@executable@" # Use either `== "true"` if the default (e.g.: `python -m nixos_rebuild`) is # `False` or `!= "false"` if the default is `True` -WITH_NIX_2_18: Final[bool] = "@withNix218@" != "false" WITH_REEXEC: Final[bool] = "@withReexec@" == "true" WITH_SHELL_FILES: Final[bool] = "@withShellFiles@" == "true" diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py index 9a2d6a131580..8580ddffd83a 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/nixos_rebuild/nix.py @@ -13,7 +13,6 @@ from textwrap import dedent from typing import Final, Literal from . import tmpdir -from .constants import WITH_NIX_2_18 from .models import ( Action, BuildAttr, @@ -228,18 +227,7 @@ def copy_closure( case (Remote(_) as host, None) | (None, Remote(_) as host): nix_copy_closure(host, to=bool(to_host)) case (Remote(_), Remote(_)): - if WITH_NIX_2_18: - # With newer Nix, use `nix copy` instead of `nix-copy-closure` - # since it supports `--to` and `--from` at the same time - # TODO: once we drop Nix 2.3 from nixpkgs, remove support for - # `nix-copy-closure` - nix_copy(to_host, from_host) - else: - # With older Nix, we need to copy from to local and local to - # host. This means it is slower and need additional disk space - # in local - nix_copy_closure(from_host, to=False) - nix_copy_closure(to_host, to=True) + nix_copy(to_host, from_host) def edit() -> None: diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py index c49bb43d3445..f20f35308e10 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_main.py @@ -10,7 +10,6 @@ from unittest.mock import ANY, Mock, call, patch import pytest import nixos_rebuild as nr -from nixos_rebuild.constants import WITH_NIX_2_18 from .helpers import get_qualified_name @@ -450,10 +449,6 @@ def test_execute_nix_switch_flake(mock_run: Mock, tmp_path: Path) -> None: @patch("subprocess.run", autospec=True) @patch("uuid.uuid4", autospec=True) @patch(get_qualified_name(nr.services.cleanup_ssh), autospec=True) -@pytest.mark.skipif( - not WITH_NIX_2_18, - reason="Tests internal logic based on the assumption that Nix >= 2.18", -) def test_execute_nix_switch_build_target_host( mock_cleanup_ssh: Mock, mock_uuid4: Mock, diff --git a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py index 9833aade3b99..639910e6620d 100644 --- a/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py +++ b/pkgs/by-name/ni/nixos-rebuild-ng/src/tests/test_nix.py @@ -254,7 +254,6 @@ def test_copy_closure(monkeypatch: MonkeyPatch) -> None: ) monkeypatch.setenv("NIX_SSHOPTS", "--ssh build-target-opt") - monkeypatch.setattr(n, "WITH_NIX_2_18", True) extra_env = { "NIX_SSHOPTS": " ".join([*p.SSH_DEFAULT_OPTS, "--ssh build-target-opt"]) } @@ -276,22 +275,6 @@ def test_copy_closure(monkeypatch: MonkeyPatch) -> None: extra_env=extra_env, ) - monkeypatch.setattr(n, "WITH_NIX_2_18", False) - with patch(get_qualified_name(n.run_wrapper, n), autospec=True) as mock_run: - n.copy_closure(closure, target_host, build_host) - mock_run.assert_has_calls( - [ - call( - ["nix-copy-closure", "--from", "user@build.host", closure], - extra_env=extra_env, - ), - call( - ["nix-copy-closure", "--to", "user@target.host", closure], - extra_env=extra_env, - ), - ] - ) - @patch(get_qualified_name(n.run_wrapper, n), autospec=True) def test_edit(mock_run: Mock, monkeypatch: MonkeyPatch, tmpdir: Path) -> None: diff --git a/pkgs/by-name/no/node-core-utils/package.nix b/pkgs/by-name/no/node-core-utils/package.nix index 4a4978de2084..21667d6417ae 100644 --- a/pkgs/by-name/no/node-core-utils/package.nix +++ b/pkgs/by-name/no/node-core-utils/package.nix @@ -9,16 +9,16 @@ buildNpmPackage (finalAttrs: { pname = "node-core-utils"; - version = "5.14.1"; + version = "5.15.0"; src = fetchFromGitHub { owner = "nodejs"; repo = "node-core-utils"; tag = "v${finalAttrs.version}"; - hash = "sha256-F+WMwyMw4cgGevcgi7vUkboXjZmBpPKsTUDvM6NHr0o="; + hash = "sha256-yY3EGSBdMpvUIq8UgeEcAm1RIaaNtZxCVp6TlycYjoY="; }; - npmDepsHash = "sha256-fMWb17t+ARJYsA7DgEBDY3vfbLrrCQiECRy947I90uI="; + npmDepsHash = "sha256-VIkJHEGlJqweNVkx3WfLMiDOQRSPtwpJBfJ3vKHv4YM="; dontNpmBuild = true; dontNpmPrune = true; diff --git a/pkgs/by-name/op/open-policy-agent/package.nix b/pkgs/by-name/op/open-policy-agent/package.nix index f06daaa968a3..5d64c5f081af 100644 --- a/pkgs/by-name/op/open-policy-agent/package.nix +++ b/pkgs/by-name/op/open-policy-agent/package.nix @@ -14,13 +14,13 @@ assert buildGoModule (finalAttrs: { pname = "open-policy-agent"; - version = "1.6.0"; + version = "1.7.1"; src = fetchFromGitHub { owner = "open-policy-agent"; repo = "opa"; tag = "v${finalAttrs.version}"; - hash = "sha256-p03yjLPphS4jp0dK3hlREKzAzCKRPOpvUnmGaGzrwww="; + hash = "sha256-FFJiw2OE5mTFyjOdMoau8Ix8Q+id5hIpCeQaUua1IKg="; }; vendorHash = null; diff --git a/pkgs/by-name/op/opencode/package.nix b/pkgs/by-name/op/opencode/package.nix index 90868aea81f1..deec46072b9a 100644 --- a/pkgs/by-name/op/opencode/package.nix +++ b/pkgs/by-name/op/opencode/package.nix @@ -1,9 +1,11 @@ { lib, + stdenv, stdenvNoCC, buildGoModule, bun, fetchFromGitHub, + makeBinaryWrapper, models-dev, nix-update-script, testers, @@ -12,10 +14,10 @@ let opencode-node-modules-hash = { - "aarch64-darwin" = "sha256-LNp9sLhNUUC4ujLYPvfPx423GlXuIS0Z2H512H5oY8s="; - "aarch64-linux" = "sha256-xeKZwNV4ScF9p1vAcVR+vk4BiEpUH+AOGb7DQ2vLl1I="; - "x86_64-darwin" = "sha256-4NaHXeWf57dGVV+KP3mBSIUkbIApT19BuADT0E4X+rg="; - "x86_64-linux" = "sha256-7Hc3FJcg2dA8AvGQlS082fO1ehGBMPXWPF8N+sAHh2I="; + "aarch64-darwin" = "sha256-/s6eAI1VJ0kXrxP5yTi+jwNqHBCRcoltJC86AT7nVdI="; + "aarch64-linux" = "sha256-aG5e5HMcxO9P7ciZ9cg8uY1rxDpTOKdR31z0L2d9dxY="; + "x86_64-darwin" = "sha256-jkAFmTb+cTO/B7a7MgaKqOzZI3QPkM3uW2RULnBcxSI="; + "x86_64-linux" = "sha256-ql4qcMtuaRwSVVma3OeKkc9tXhe21PWMMko3W3JgpB0="; }; bun-target = { "aarch64-darwin" = "bun-darwin-arm64"; @@ -26,12 +28,12 @@ let in stdenvNoCC.mkDerivation (finalAttrs: { pname = "opencode"; - version = "0.4.1"; + version = "0.4.26"; src = fetchFromGitHub { owner = "sst"; repo = "opencode"; tag = "v${finalAttrs.version}"; - hash = "sha256-LEFmfsqhCuGcRK7CEPZb6EZfjOHAyYpUHptXu04fjpQ="; + hash = "sha256-sQ1le6/OJb22Kehjj4glUsavHE08u0e2I7h8lW9MO9E="; }; tui = buildGoModule { @@ -40,7 +42,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { modRoot = "packages/tui"; - vendorHash = "sha256-jGaTgKyAvBMt8Js5JrPFUayhVt3QhgyclFoNatoHac4="; + vendorHash = "sha256-jINbGug/SPGBjsXNsC9X2r5TwvrOl5PJDL+lrOQP69Q="; subPackages = [ "cmd/opencode" ]; @@ -109,6 +111,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { nativeBuildInputs = [ bun + makeBinaryWrapper models-dev ]; @@ -152,6 +155,15 @@ stdenvNoCC.mkDerivation (finalAttrs: { runHook postInstall ''; + # Execution of commands using bash-tool fail on linux with + # Error [ERR_DLOPEN_FAILED]: libstdc++.so.6: cannot open shared object file: No such + # file or directory + # Thus, we add libstdc++.so.6 manually to LD_LIBRARY_PATH + postFixup = '' + wrapProgram $out/bin/opencode \ + --set LD_LIBRARY_PATH "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}" + ''; + passthru = { tests.version = testers.testVersion { package = finalAttrs.finalPackage; diff --git a/pkgs/by-name/op/openlinkhub/package.nix b/pkgs/by-name/op/openlinkhub/package.nix index 0bb65c6d3cf0..50b82019effe 100644 --- a/pkgs/by-name/op/openlinkhub/package.nix +++ b/pkgs/by-name/op/openlinkhub/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "openlinkhub"; - version = "0.6.0"; + version = "0.6.1"; src = fetchFromGitHub { owner = "jurkovic-nikola"; repo = "OpenLinkHub"; tag = version; - hash = "sha256-pCMdljBgqxfI9mVperzjAiuq5UUsqmmR+xvuywudv9o="; + hash = "sha256-kEbJwCAs2gTNs0z8A3kOl1O4HQ4L5+urTo+hLh6vOPM="; }; proxyVendor = true; diff --git a/pkgs/by-name/ox/oxidized/package.nix b/pkgs/by-name/ox/oxidized/package.nix index bfe2e7fa8cf3..9dbfd3502fa9 100644 --- a/pkgs/by-name/ox/oxidized/package.nix +++ b/pkgs/by-name/ox/oxidized/package.nix @@ -3,6 +3,7 @@ ruby, bundlerApp, bundlerUpdateScript, + nixosTests, }: bundlerApp { @@ -16,7 +17,10 @@ bundlerApp { "oxs" ]; - passthru.updateScript = bundlerUpdateScript "oxidized"; + passthru = { + tests = nixosTests.oxidized; + updateScript = bundlerUpdateScript "oxidized"; + }; meta = with lib; { description = "Network device configuration backup tool. It's a RANCID replacement"; diff --git a/pkgs/by-name/pa/parallel-launcher/package.nix b/pkgs/by-name/pa/parallel-launcher/package.nix index 15cfbc3bbab7..babe4a9c08d5 100644 --- a/pkgs/by-name/pa/parallel-launcher/package.nix +++ b/pkgs/by-name/pa/parallel-launcher/package.nix @@ -52,13 +52,13 @@ stdenv.mkDerivation ( in { pname = "parallel-launcher"; - version = "8.2.1"; # Check ./parallel-n64-next.nix for updates when updating, too + version = "8.3.0"; # Check ./parallel-n64-next.nix for updates when updating, too src = fetchFromGitLab { owner = "parallel-launcher"; repo = "parallel-launcher"; tag = reformatVersion finalAttrs.version; - hash = "sha256-1fPbgpTTfXkhVRBFnNzeNGUzEkLvurBcJQlAhL7Fp6c="; + hash = "sha256-Zp/QTPREfpOG0zgnP1Lg5FgT9u+OEhoqBgnxWMu451A="; }; patches = diff --git a/pkgs/servers/web-apps/plausible/default.nix b/pkgs/by-name/pl/plausible/package.nix similarity index 89% rename from pkgs/servers/web-apps/plausible/default.nix rename to pkgs/by-name/pl/plausible/package.nix index 3b4a01bfabc3..33ed6a68dd9b 100644 --- a/pkgs/servers/web-apps/plausible/default.nix +++ b/pkgs/by-name/pl/plausible/package.nix @@ -17,14 +17,14 @@ let pname = "plausible"; - version = "2.1.5"; + version = "3.0.1"; mixEnv = "ce"; src = fetchFromGitHub { owner = "plausible"; repo = "analytics"; rev = "v${version}"; - hash = "sha256-4gwK/AxzhsU0vgvKgIXrOyQLCgZMeZyKjj7PWbUmJ+8="; + hash = "sha256-DQIRsqkH2zgIkb3yezuJEKJ99PS031GJ+bDAeHMLNUY="; postFetch = '' ${lib.getExe npm-lockfile-fix} $out/assets/package-lock.json sed -ie ' @@ -46,7 +46,7 @@ let pname = "${pname}-assets"; inherit version; src = "${src}/assets"; - npmDepsHash = "sha256-Rf1+G9F/CMK09KEh022vHe02FADJtARKX4QEVbmvSqk="; + npmDepsHash = "sha256-hPbKEC8DE/gb483COG/ZbTuEP8Y44Fs7ppHMpXphCjg="; dontNpmBuild = true; installPhase = '' runHook preInstall @@ -59,7 +59,7 @@ let pname = "${pname}-tracker"; inherit version; src = "${src}/tracker"; - npmDepsHash = "sha256-ng0YpBZc0vcg5Bsr1LmgXtzNCtNV6hJIgLt3m3yRdh4="; + npmDepsHash = "sha256-kfqJVUw3xnMT0sOkc5O42CwBxPQXiYnOQ5WpdZwzxfE"; dontNpmBuild = true; installPhase = '' runHook preInstall @@ -75,7 +75,7 @@ let src mixEnv ; - hash = "sha256-edQ8byeV0WUaYDYMnmrstC6L2jztidR/JikGZLpX3WE="; + hash = "sha256-caCbuMEDsLcxm8xehWEJiaTfgl435crBfnQFQpzGsLY"; }; mjmlNif = rustPlatform.buildRustPackage { @@ -174,13 +174,13 @@ beamPackages.mixRelease rec { mix do deps.loadpaths --no-deps-check, phx.digest priv/static ''; - meta = with lib; { - license = licenses.agpl3Plus; + meta = { + license = lib.licenses.agpl3Plus; homepage = "https://plausible.io/"; changelog = "https://github.com/plausible/analytics/blob/${src.rev}/CHANGELOG.md"; description = "Simple, open-source, lightweight (< 1 KB) and privacy-friendly web analytics alternative to Google Analytics"; mainProgram = "plausible"; - teams = [ teams.cyberus ]; - platforms = platforms.unix; + teams = with lib.teams; [ cyberus ]; + platforms = lib.platforms.unix; }; } diff --git a/pkgs/by-name/re/remmina/package.nix b/pkgs/by-name/re/remmina/package.nix index 6909a247529f..0f32735bf018 100644 --- a/pkgs/by-name/re/remmina/package.nix +++ b/pkgs/by-name/re/remmina/package.nix @@ -96,12 +96,12 @@ stdenv.mkDerivation (finalAttrs: { libsodium harfbuzz python3 - wayland ] ++ lib.optionals stdenv.hostPlatform.isLinux [ fuse3 libappindicator-gtk3 libdbusmenu-gtk3 + wayland ] ++ lib.optionals withLibsecret [ libsecret ] ++ lib.optionals withKf5Wallet [ libsForQt5.kwallet ] diff --git a/pkgs/by-name/rs/rss-bridge/package.nix b/pkgs/by-name/rs/rss-bridge/package.nix index 93cd2e51a2d9..2155dd07b3ab 100644 --- a/pkgs/by-name/rs/rss-bridge/package.nix +++ b/pkgs/by-name/rs/rss-bridge/package.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation rec { pname = "rss-bridge"; - version = "2025-06-03"; + version = "2025-08-05"; src = fetchFromGitHub { owner = "RSS-Bridge"; repo = "rss-bridge"; rev = version; - sha256 = "sha256-S9TSTUwuScOcLbEpGgET1zzH1WlO1IMUOiwzMTsA65s="; + sha256 = "sha256-SH5iYsdvGD51j+2xqaG51VDtb35m1v9MR0+yLE1eyWo="; }; installPhase = '' diff --git a/pkgs/by-name/sc/scan-build-py/package.nix b/pkgs/by-name/sc/scan-build-py/package.nix new file mode 100644 index 000000000000..934a77f5db21 --- /dev/null +++ b/pkgs/by-name/sc/scan-build-py/package.nix @@ -0,0 +1,46 @@ +{ + lib, + llvmPackages, + python3, +}: +let + inherit (llvmPackages) clang-unwrapped; +in +python3.pkgs.buildPythonApplication rec { + pname = "scan-build-py"; + inherit (clang-unwrapped) version; + + format = "other"; + + src = clang-unwrapped + "/bin"; + + dontUnpack = true; + + dependencies = with python3.pkgs; [ + libscanbuild + ]; + + installPhase = '' + mkdir -p "$out/bin" + install "$src/scan-build-py" "$out/bin/scan-build-py" + ''; + + makeWrapperArgs = [ + "--prefix" + "PATH" + ":" + (lib.makeBinPath [ clang-unwrapped ]) + ]; + + meta = { + description = "intercepts the build process to generate a compilation database"; + homepage = "https://github.com/llvm/llvm-project/tree/llvmorg-${version}/clang/tools/scan-build-py/"; + mainProgram = "scan-build-py"; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; + maintainers = with lib.maintainers; [ RossSmyth ]; + platforms = lib.intersectLists python3.meta.platforms clang-unwrapped.meta.platforms; + }; +} diff --git a/pkgs/by-name/sh/shaperglot-cli/package.nix b/pkgs/by-name/sh/shaperglot-cli/package.nix index aad4e144097b..a7bf716f8e93 100644 --- a/pkgs/by-name/sh/shaperglot-cli/package.nix +++ b/pkgs/by-name/sh/shaperglot-cli/package.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "shaperglot-cli"; - version = "0-unstable-2025-07-18"; + version = "0-unstable-2025-08-11"; src = fetchFromGitHub { owner = "googlefonts"; repo = "shaperglot"; - rev = "fafea94d0c4ffe291b34c6748149006b13476755"; - hash = "sha256-o5fh/rywa5AUhCXWUkuXH3XMCtVX2nio+jk+vwHVN14="; + rev = "b7ba56e583e89a1c169f4ef7c3419e4e76e00974"; + hash = "sha256-XFzsUzHa4KsyDWlOKlWHBNimn1hzdrtCPe+lFrs0EDc="; }; - cargoHash = "sha256-SrC9RAbD/qxn5Ywp83cCZmdjNrxJlZAGBYB9O+/yJHA="; + cargoHash = "sha256-Md48ovCG8pEPbTz6R0nks6rZxO3UEdZ/SYRVgffCIKU="; cargoBuildFlags = [ "--package=shaperglot-cli" diff --git a/pkgs/misc/screensavers/slock/default.nix b/pkgs/by-name/sl/slock/package.nix similarity index 71% rename from pkgs/misc/screensavers/slock/default.nix rename to pkgs/by-name/sl/slock/package.nix index 235b9fac71a6..cf28562f72b0 100644 --- a/pkgs/misc/screensavers/slock/default.nix +++ b/pkgs/by-name/sl/slock/package.nix @@ -1,16 +1,17 @@ { lib, stdenv, - fetchurl, + fetchzip, writeText, xorgproto, libX11, libXext, libXrandr, libxcrypt, - # default header can be obtained from - # https://git.suckless.org/slock/tree/config.def.h - conf ? null, + config, + conf ? config.slock.conf or null, + patches ? config.slock.patches or [ ], + extraLibs ? config.slock.extraLibs or [ ], # update script dependencies gitUpdater, }: @@ -19,9 +20,9 @@ stdenv.mkDerivation (finalAttrs: { pname = "slock"; version = "1.5"; - src = fetchurl { + src = fetchzip { url = "https://dl.suckless.org/tools/slock-${finalAttrs.version}.tar.gz"; - hash = "sha256-ruHj+/aid/tiWjg4BzuXm2SD57rKTOgvVt4f8ZLbDk0="; + hash = "sha256-nAAbyH4jixmwes9esrWRnHFw3mythKfqWu2+DRdlmx0="; }; buildInputs = [ @@ -30,7 +31,8 @@ stdenv.mkDerivation (finalAttrs: { libXext libXrandr libxcrypt - ]; + ] + ++ extraLibs; installFlags = [ "PREFIX=$(out)" ]; @@ -40,23 +42,25 @@ stdenv.mkDerivation (finalAttrs: { cp ${writeText "config.def.h" conf} config.def.h ''; + inherit patches; + makeFlags = [ "CC:=$(CC)" ]; passthru.updateScript = gitUpdater { url = "git://git.suckless.org/slock"; }; - meta = with lib; { + meta = { homepage = "https://tools.suckless.org/slock"; description = "Simple X display locker"; mainProgram = "slock"; longDescription = '' Simple X display locker. This is the simplest X screen locker. ''; - license = licenses.mit; - maintainers = with maintainers; [ + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ qusic ]; - platforms = platforms.linux; + platforms = lib.platforms.linux; }; }) diff --git a/pkgs/applications/misc/slstatus/default.nix b/pkgs/by-name/sl/slstatus/package.nix similarity index 68% rename from pkgs/applications/misc/slstatus/default.nix rename to pkgs/by-name/sl/slstatus/package.nix index a439aad37b31..c48e11143454 100644 --- a/pkgs/applications/misc/slstatus/default.nix +++ b/pkgs/by-name/sl/slstatus/package.nix @@ -1,25 +1,26 @@ { lib, stdenv, - fetchgit, + fetchzip, pkg-config, writeText, libX11, libXau, libXdmcp, - conf ? null, - patches ? [ ], + config, + conf ? config.slstatus.conf or null, + patches ? config.slstatus.patches or [ ], + extraLibs ? config.slstatus.extraLibs or [ ], # update script dependencies gitUpdater, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "slstatus"; version = "1.1"; - src = fetchgit { - url = "https://git.suckless.org/slstatus"; - rev = version; + src = fetchzip { + url = "https://dl.suckless.org/tools/slstatus-${finalAttrs.version}.tar.gz"; hash = "sha256-MRDovZpQsvnLEvsbJNBzprkzQQ4nIs1T9BLT+tSGta8="; }; @@ -40,21 +41,22 @@ stdenv.mkDerivation rec { libX11 libXau libXdmcp - ]; + ] + ++ extraLibs; installFlags = [ "PREFIX=$(out)" ]; passthru.updateScript = gitUpdater { }; - meta = with lib; { + meta = { homepage = "https://tools.suckless.org/slstatus/"; description = "Status monitor for window managers that use WM_NAME like dwm"; - license = licenses.isc; - maintainers = with maintainers; [ + license = lib.licenses.isc; + maintainers = with lib.maintainers; [ oxzi qusic ]; - platforms = platforms.linux; + platforms = lib.platforms.linux; mainProgram = "slstatus"; }; -} +}) diff --git a/pkgs/by-name/sp/speedscope/package.nix b/pkgs/by-name/sp/speedscope/package.nix index 7b319f306dd5..4c75e2e21633 100644 --- a/pkgs/by-name/sp/speedscope/package.nix +++ b/pkgs/by-name/sp/speedscope/package.nix @@ -7,13 +7,13 @@ buildNpmPackage rec { pname = "speedscope"; - version = "1.23.0"; + version = "1.23.1"; src = fetchFromGitHub { owner = "jlfwong"; repo = "speedscope"; tag = "v${version}"; - hash = "sha256-I7XulOJuMSxDXyGlXL6AeqP0ohjNhzGTEyWsq6MiTho="; + hash = "sha256-PIyx4ceihTSLRDP5MW3n6edtYNFOnx8Uo7qUWW7LTs8="; # scripts/prepack.sh wants to extract the git commit from .git # We don't want to keep .git for reproducibility reasons, so save the commit @@ -25,7 +25,7 @@ buildNpmPackage rec { ''; }; - npmDepsHash = "sha256-5gsWnk37F+fModNUWETBercXE1avEtbAAu8/qi76yDY="; + npmDepsHash = "sha256-xpFrkKAaFbVE1zJ/haibQte4HjUWmeBR8BVjZuSoyjI="; patches = [ ./fix-shebang.patch diff --git a/pkgs/by-name/st/storj-uplink/package.nix b/pkgs/by-name/st/storj-uplink/package.nix index a8be93defec0..9a408203b846 100644 --- a/pkgs/by-name/st/storj-uplink/package.nix +++ b/pkgs/by-name/st/storj-uplink/package.nix @@ -6,18 +6,18 @@ buildGoModule (finalAttrs: { pname = "storj-uplink"; - version = "1.133.5"; + version = "1.134.2"; src = fetchFromGitHub { owner = "storj"; repo = "storj"; tag = "v${finalAttrs.version}"; - hash = "sha256-MvaA8AkoP4FszEEM33QKDt5zeXMZ3XDt5uU1t6C6Q1I="; + hash = "sha256-DNxbJ+vw6a2yxbc6y/h+o4C7yhh5laCr2XIdBmjvAyc="; }; subPackages = [ "cmd/uplink" ]; - vendorHash = "sha256-N1rEEM+oH2VVOvg9c8gICQ1aDO9FS/faVbQl0kj1jYM="; + vendorHash = "sha256-ZteKOH6t2C96pm1u3J5GLXgWVdM77FjRqg6bYqIh1wQ="; ldflags = [ "-s" ]; diff --git a/pkgs/by-name/td/tdlib/package.nix b/pkgs/by-name/td/tdlib/package.nix index 6e2261a4bc45..ab2532edb0fe 100644 --- a/pkgs/by-name/td/tdlib/package.nix +++ b/pkgs/by-name/td/tdlib/package.nix @@ -38,7 +38,7 @@ in stdenv.mkDerivation { pname = if tde2eOnly then "tde2e" else "tdlib"; - version = "1.8.51"; + version = "1.8.52"; src = fetchFromGitHub { owner = "tdlib"; @@ -47,8 +47,8 @@ stdenv.mkDerivation { # The tdlib authors do not set tags for minor versions, but # external programs depending on tdlib constrain the minor # version, hence we set a specific commit with a known version. - rev = "bb474a201baa798784d696d2d9d762a9d2807f96"; - hash = "sha256-Jd2ojDDwO/7W54QjnKLlc1ecqTfJEFPRtT50rNlukKA="; + rev = "4269f54e16b9cf564efc2db5bcd29743a2eec6ee"; + hash = "sha256-LAI2MWKawGZ+iuhizBrqUXLU1n50s6YIyci6zepYTz0="; }; buildInputs = [ diff --git a/pkgs/development/ocaml-modules/logs/default.nix b/pkgs/development/ocaml-modules/logs/default.nix index 2befcaa51dcc..bbe31bcb13a9 100644 --- a/pkgs/development/ocaml-modules/logs/default.nix +++ b/pkgs/development/ocaml-modules/logs/default.nix @@ -3,20 +3,32 @@ stdenv, fetchurl, ocaml, - findlib, - ocamlbuild, + version ? if lib.versionAtLeast ocaml.version "4.14" then "0.9.0" else "0.8.0", topkg, - result, - lwt, - cmdliner, - fmt, - fmtSupport ? lib.versionAtLeast ocaml.version "4.08", - js_of_ocaml-compiler, - jsooSupport ? true, - lwtSupport ? true, + buildTopkgPackage, cmdlinerSupport ? true, + cmdliner, + fmtSupport ? lib.versionAtLeast ocaml.version "4.08", + fmt, + jsooSupport ? true, + js_of_ocaml-compiler, + lwtSupport ? true, + lwt, }: let + param = + { + "0.8.0" = { + minimalOCamlVersion = "4.03"; + sha512 = "c34c67b00d6a989a2660204ea70db8521736d6105f15d1ee0ec6287a662798fe5c4d47075c6e7c84f5d5372adb5af5c4c404f79db70d69140af5e0ebbea3b6a5"; + }; + "0.9.0" = { + minimalOCamlVersion = "4.14"; + sha512 = "b75fb28e83f33461b06b5c9b60972c4a9a9a1599d637b4a0c7b1e86a87f34fe5361e817cb31f42ad7e7cbb822473b28fab9f58a02870eb189ebe88dae8e045ff"; + }; + } + .${version}; + pname = "logs"; webpage = "https://erratique.ch/software/${pname}"; @@ -48,40 +60,26 @@ let ]) optional_deps; optional_buildInputs = map (d: d.pkg) (lib.filter (d: d.enabled) optional_deps); in +buildTopkgPackage { + inherit pname version; + inherit (param) minimalOCamlVersion; -if lib.versionOlder ocaml.version "4.03" then - throw "logs is not available for OCaml ${ocaml.version}" -else + src = fetchurl { + url = "${webpage}/releases/${pname}-${version}.tbz"; + inherit (param) sha512; + }; - stdenv.mkDerivation rec { - name = "ocaml${ocaml.version}-${pname}-${version}"; - version = "0.8.0"; + buildInputs = [ topkg ] ++ optional_buildInputs; - src = fetchurl { - url = "${webpage}/releases/${pname}-${version}.tbz"; - hash = "sha256-mmFRQJX6QvMBIzJiO2yNYF1Ce+qQS2oNF3+OwziCNtg="; - }; + strictDeps = true; - nativeBuildInputs = [ - ocaml - findlib - ocamlbuild - topkg - ]; - buildInputs = [ topkg ] ++ optional_buildInputs; - propagatedBuildInputs = [ result ]; + buildPhase = "${topkg.run} build ${lib.escapeShellArgs enable_flags}"; - strictDeps = true; - - buildPhase = "${topkg.run} build ${lib.escapeShellArgs enable_flags}"; - - inherit (topkg) installPhase; - - meta = with lib; { - description = "Logging infrastructure for OCaml"; - homepage = webpage; - inherit (ocaml.meta) platforms; - maintainers = [ maintainers.sternenseemann ]; - license = licenses.isc; - }; - } + meta = with lib; { + description = "Logging infrastructure for OCaml"; + homepage = webpage; + inherit (ocaml.meta) platforms; + maintainers = [ maintainers.sternenseemann ]; + license = licenses.isc; + }; +} diff --git a/pkgs/development/php-packages/ast/default.nix b/pkgs/development/php-packages/ast/default.nix index 7cb9bd566ecb..ac4dddae822a 100644 --- a/pkgs/development/php-packages/ast/default.nix +++ b/pkgs/development/php-packages/ast/default.nix @@ -5,7 +5,7 @@ }: let - version = "1.1.2"; + version = "1.1.3"; in buildPecl { inherit version; @@ -15,7 +15,7 @@ buildPecl { owner = "nikic"; repo = "php-ast"; rev = "v${version}"; - sha256 = "sha256-9HP+hKcpkWmvsx335JiCVjFG+xyAMEm5dWxWC1nZPxU="; + sha256 = "sha256-TGMZA3Qe+/TwG+FIevrcQzy/ufCyN8sXKjsPrnz3K1Q="; }; meta = with lib; { diff --git a/pkgs/development/python-modules/airos/default.nix b/pkgs/development/python-modules/airos/default.nix index 42fcee67126c..6e257ca3d250 100644 --- a/pkgs/development/python-modules/airos/default.nix +++ b/pkgs/development/python-modules/airos/default.nix @@ -14,7 +14,7 @@ buildPythonPackage rec { pname = "airos"; - version = "0.2.4"; + version = "0.2.7"; pyproject = true; disabled = pythonOlder "3.13"; @@ -23,7 +23,7 @@ buildPythonPackage rec { owner = "CoMPaTech"; repo = "python-airos"; tag = "v${version}"; - hash = "sha256-zY0XPucCXiJDo9C4GiDqs/lxQDTphs/mBXBqSYPvkoI="; + hash = "sha256-c/YVjNEy1nI6ClYk8BgLai+zRCwiblTFSJ5Rxx3UaeU="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/devpi-ldap/default.nix b/pkgs/development/python-modules/devpi-ldap/default.nix index 894819670e38..5a6173b2263e 100644 --- a/pkgs/development/python-modules/devpi-ldap/default.nix +++ b/pkgs/development/python-modules/devpi-ldap/default.nix @@ -19,7 +19,7 @@ buildPythonPackage rec { version = "2.1.1-unstable-2023-11-28"; pyproject = true; - disabled = pythonOlder "3.7"; + disabled = pythonOlder "3.13"; src = fetchFromGitHub { owner = "devpi"; @@ -48,10 +48,10 @@ buildPythonPackage rec { pythonImportsCheck = [ "devpi_ldap" ]; meta = { - homepage = "https://github.com/devpi/devpi-ldap"; description = "LDAP authentication for devpi-server"; + homepage = "https://github.com/devpi/devpi-ldap"; changelog = "https://github.com/devpi/devpi-ldap/blob/main/CHANGELOG.rst"; - license = lib.licenses.mit; # according to its setup.py + license = lib.licenses.mit; maintainers = with lib.maintainers; [ confus ]; }; } diff --git a/pkgs/development/python-modules/dramatiq/default.nix b/pkgs/development/python-modules/dramatiq/default.nix index e16d7d4d2a85..12535c9813b8 100644 --- a/pkgs/development/python-modules/dramatiq/default.nix +++ b/pkgs/development/python-modules/dramatiq/default.nix @@ -89,6 +89,9 @@ buildPythonPackage rec { "test_rabbitmq_process_100k_messages_with_cli" "test_rabbitmq_process_10k_fib_with_cli" "test_rabbitmq_process_1k_latency_with_cli" + # AssertionError + "test_cli_scrubs_stale_pid_files" + "test_message_contains_requeue_time_after_retry" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # Takes too long for darwin ofborg diff --git a/pkgs/development/python-modules/fast-simplification/default.nix b/pkgs/development/python-modules/fast-simplification/default.nix index 9b54726c898b..37d444ff11d7 100644 --- a/pkgs/development/python-modules/fast-simplification/default.nix +++ b/pkgs/development/python-modules/fast-simplification/default.nix @@ -13,14 +13,14 @@ buildPythonPackage rec { pname = "fast-simplification"; - version = "0.1.11"; + version = "0.1.12"; pyproject = true; src = fetchFromGitHub { owner = "pyvista"; repo = "fast-simplification"; tag = "v${version}"; - hash = "sha256-3mqcFTNrq1W376ctJJumzeQccaB4cvoTNW8BHEnv5t8="; + hash = "sha256-OhVJKYmJR+A6JDaM/7Bfkc4PNlhsc6NgRNU+SokCg1U="; }; build-system = [ diff --git a/pkgs/development/python-modules/flask-dramatiq/default.nix b/pkgs/development/python-modules/flask-dramatiq/default.nix index 1be6b757ec38..7ee16fbd9423 100644 --- a/pkgs/development/python-modules/flask-dramatiq/default.nix +++ b/pkgs/development/python-modules/flask-dramatiq/default.nix @@ -1,27 +1,25 @@ { lib, buildPythonPackage, - pythonOlder, - fetchFromGitLab, - poetry-core, dramatiq, - flask, - requests, - pytestCheckHook, - pytest-cov-stub, + fetchFromGitLab, flask-migrate, + flask, periodiq, + poetry-core, postgresql, postgresqlTestHook, psycopg2, + pytest-cov-stub, + pytest-mock, + pytestCheckHook, + requests, }: buildPythonPackage { pname = "flask-dramatiq"; version = "0.6.0"; - format = "pyproject"; - - disabled = pythonOlder "3.6"; + pyproject = true; src = fetchFromGitLab { owner = "bersace"; @@ -38,20 +36,21 @@ buildPythonPackage { patchShebangs --build ./example.py ''; - nativeBuildInputs = [ poetry-core ]; + build-system = [ poetry-core ]; - propagatedBuildInputs = [ dramatiq ]; + dependencies = [ dramatiq ]; nativeCheckInputs = [ - pytestCheckHook - pytest-cov-stub flask - requests flask-migrate periodiq postgresql postgresqlTestHook psycopg2 + pytest-cov-stub + pytest-mock + pytestCheckHook + requests ] ++ dramatiq.optional-dependencies.rabbitmq; @@ -62,23 +61,13 @@ buildPythonPackage { python3 ./example.py db upgrade ''; - pytestFlags = [ - "-x" - ]; - - disabledTestPaths = [ - "tests/func/" - "tests/unit" - ]; - - pythonImportsCheck = [ "flask_dramatiq" ]; - - # Does HTTP requests to localhost disabledTests = [ "test_fast" "test_other" ]; + pythonImportsCheck = [ "flask_dramatiq" ]; + meta = with lib; { description = "Adds Dramatiq support to your Flask application"; homepage = "https://gitlab.com/bersace/flask-dramatiq"; diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix index 4dfcb4a63f91..9a4a1d87d181 100644 --- a/pkgs/development/python-modules/hass-nabucasa/default.nix +++ b/pkgs/development/python-modules/hass-nabucasa/default.nix @@ -26,7 +26,7 @@ buildPythonPackage rec { pname = "hass-nabucasa"; - version = "0.111.1"; + version = "0.111.2"; pyproject = true; disabled = pythonOlder "3.13"; @@ -35,7 +35,7 @@ buildPythonPackage rec { owner = "nabucasa"; repo = "hass-nabucasa"; tag = version; - hash = "sha256-WmsLn/pHI3KJSmX5U20eNUEs0Q1upuwkkzcHIYPNYjY="; + hash = "sha256-64DdjyzeeYI9u8hYP7CwZvLhCcCzztti2DshvtYcxNQ="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/knx-frontend/default.nix b/pkgs/development/python-modules/knx-frontend/default.nix index 3567af317884..fefe104532bb 100644 --- a/pkgs/development/python-modules/knx-frontend/default.nix +++ b/pkgs/development/python-modules/knx-frontend/default.nix @@ -7,14 +7,14 @@ buildPythonPackage rec { pname = "knx-frontend"; - version = "2025.8.6.52906"; + version = "2025.8.9.63154"; pyproject = true; # TODO: source build, uses yarn.lock src = fetchPypi { pname = "knx_frontend"; inherit version; - hash = "sha256-Wmiwj5PL68VH1j5xDhZJyAHBakoG+0SKzCJCcCntT18="; + hash = "sha256-Sphetc0ox0Oh70vNdkHorX0jpvC8bckm1TBKk2QSGPo="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/libear/default.nix b/pkgs/development/python-modules/libear/default.nix new file mode 100644 index 000000000000..b1f00bc1e1aa --- /dev/null +++ b/pkgs/development/python-modules/libear/default.nix @@ -0,0 +1,37 @@ +{ + lib, + llvmPackages, + buildPythonPackage, +}: +let + inherit (llvmPackages) clang-unwrapped; +in +buildPythonPackage rec { + pname = "libear"; + inherit (clang-unwrapped) version; + + format = "other"; + + src = clang-unwrapped.lib + "/lib/libear"; + + dontUnpack = true; + + installPhase = '' + LIBPATH="$(toPythonPath "$out")/libear" + mkdir -p "$LIBPATH" + + install -t "$LIBPATH" $src/* + ''; + + pythonImportsCheck = [ "libear" ]; + + meta = { + description = "Hooks into build systems to listen to which files are opened"; + homepage = "https://github.com/llvm/llvm-project/tree/llvmorg-${version}/clang/tools/scan-build-py/lib/libear"; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; + maintainers = with lib.maintainers; [ RossSmyth ]; + }; +} diff --git a/pkgs/development/python-modules/libscanbuild/default.nix b/pkgs/development/python-modules/libscanbuild/default.nix new file mode 100644 index 000000000000..667c7e162e77 --- /dev/null +++ b/pkgs/development/python-modules/libscanbuild/default.nix @@ -0,0 +1,42 @@ +{ + lib, + llvmPackages, + buildPythonPackage, + libear, +}: +let + inherit (llvmPackages) clang-unwrapped; +in +buildPythonPackage rec { + pname = "libscanbuild"; + inherit (clang-unwrapped) version; + + format = "other"; + + src = clang-unwrapped.lib + "/lib/libscanbuild"; + + dontUnpack = true; + + dependencies = [ + libear + ]; + + installPhase = '' + LIBPATH="$(toPythonPath "$out")/libscanbuild" + mkdir -p "$LIBPATH" + + cp -r "$src/"* "$LIBPATH" + ''; + + pythonImportsCheck = [ "libscanbuild" ]; + + meta = { + description = "Captures all child process creation and log information about it"; + homepage = "https://github.com/llvm/llvm-project/tree/llvmorg-${version}/clang/tools/scan-build-py/lib/libscanbuild"; + license = with lib.licenses; [ + asl20 + llvm-exception + ]; + maintainers = with lib.maintainers; [ RossSmyth ]; + }; +} diff --git a/pkgs/development/python-modules/llama-index-workflows/default.nix b/pkgs/development/python-modules/llama-index-workflows/default.nix index 51da08f9f019..93b494e988c5 100644 --- a/pkgs/development/python-modules/llama-index-workflows/default.nix +++ b/pkgs/development/python-modules/llama-index-workflows/default.nix @@ -10,13 +10,13 @@ buildPythonPackage rec { pname = "llama-index-workflows"; - version = "1.2.0"; + version = "1.3.0"; pyproject = true; src = fetchPypi { pname = "llama_index_workflows"; inherit version; - hash = "sha256-9rGfAaNAoa+x0v0ihcnc40bjBKOq5RnmEDBZ9a+yYJ8="; + hash = "sha256-nBaI4jfvrThPFkha9xxvlFai622Fv2H/SeVxfxD/KG0="; }; pythonRelaxDeps = [ "pydantic" ]; diff --git a/pkgs/development/python-modules/nixpkgs/default.nix b/pkgs/development/python-modules/nixpkgs/default.nix deleted file mode 100644 index 989eb91287d8..000000000000 --- a/pkgs/development/python-modules/nixpkgs/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchPypi, - pbr, - pythonix, - pythonAtLeast, -}: - -buildPythonPackage rec { - pname = "nixpkgs"; - version = "0.2.4"; - format = "setuptools"; - disabled = !pythonAtLeast "3.5"; - - src = fetchPypi { - inherit pname version; - sha256 = "0dlvq4bpamhlva86042wlc0xxfsxlpdgm2adfb1c6y3vjgbm0nvd"; - }; - - buildInputs = [ pbr ]; - propagatedBuildInputs = [ pythonix ]; - - # does not have any tests - doCheck = false; - pythonImportsCheck = [ "nixpkgs" ]; - - meta = with lib; { - description = "Allows to `from nixpkgs import` stuff in interactive Python sessions"; - homepage = "https://github.com/t184256/nixpkgs-python-importer"; - license = licenses.mit; - maintainers = with maintainers; [ t184256 ]; - }; -} diff --git a/pkgs/development/python-modules/prometheus-flask-exporter/default.nix b/pkgs/development/python-modules/prometheus-flask-exporter/default.nix index bd594d8b2f8a..8b7f991f279b 100644 --- a/pkgs/development/python-modules/prometheus-flask-exporter/default.nix +++ b/pkgs/development/python-modules/prometheus-flask-exporter/default.nix @@ -5,28 +5,37 @@ flask, prometheus-client, pytestCheckHook, + setuptools, }: buildPythonPackage rec { pname = "prometheus-flask-exporter"; - version = "0.22.4"; - format = "setuptools"; + version = "0.23.2"; + pyproject = true; src = fetchFromGitHub { owner = "rycus86"; repo = "prometheus_flask_exporter"; - rev = version; - hash = "sha256-GAQ80J7at8Apqu+DUMN3+rLi/lrNv5Y7w/DKpUN2iu8="; + tag = version; + hash = "sha256-fWCIthtBiPJwn/Mbbwdv2+1cr9nlpUsPE2mDkaSsfpM="; }; - propagatedBuildInputs = [ + build-system = [ setuptools ]; + + dependencies = [ flask prometheus-client ]; nativeCheckInputs = [ pytestCheckHook ]; + enabledTestPaths = [ "tests/" ]; + disabledTests = [ + # AssertionError + "test_group_by_lambda_is_not_supported" + ]; + meta = with lib; { description = "Prometheus exporter for Flask applications"; homepage = "https://github.com/rycus86/prometheus_flask_exporter"; diff --git a/pkgs/development/python-modules/pythonix/default.nix b/pkgs/development/python-modules/pythonix/default.nix deleted file mode 100644 index 18eb56419219..000000000000 --- a/pkgs/development/python-modules/pythonix/default.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchFromGitHub, - ninja, - boost, - meson, - pkg-config, - nix, - isPy3k, - python, -}: - -buildPythonPackage rec { - pname = "pythonix"; - version = "0.1.7"; - format = "other"; - - src = fetchFromGitHub { - owner = "Mic92"; - repo = "pythonix"; - rev = "v${version}"; - sha256 = "1wxqv3i4bva2qq9mx670bcx0g0irjn68fvk28dwvhay9ndwcspqf"; - }; - - disabled = !isPy3k; - - nativeBuildInputs = [ - meson - ninja - pkg-config - ]; - - buildInputs = [ - nix - boost - ]; - - postInstall = '' - # This is typically set by pipInstallHook/eggInstallHook, - # so we have to do so manually when using meson - export PYTHONPATH=$out/${python.sitePackages}:$PYTHONPATH - ''; - - pythonImportsCheck = [ "nix" ]; - - meta = with lib; { - description = '' - Eval nix code from python. - ''; - maintainers = [ ]; - license = licenses.mit; - }; -} diff --git a/pkgs/development/python-modules/zha-quirks/default.nix b/pkgs/development/python-modules/zha-quirks/default.nix index e33195d711b2..569fae6d9765 100644 --- a/pkgs/development/python-modules/zha-quirks/default.nix +++ b/pkgs/development/python-modules/zha-quirks/default.nix @@ -13,7 +13,7 @@ buildPythonPackage rec { pname = "zha-quirks"; - version = "0.0.142"; + version = "0.0.143"; pyproject = true; disabled = pythonOlder "3.12"; @@ -22,7 +22,7 @@ buildPythonPackage rec { owner = "zigpy"; repo = "zha-device-handlers"; tag = version; - hash = "sha256-D1FIkyVSa4j6p4PHkjCAU08zpZjjXPGWoL5lKlWUHuU="; + hash = "sha256-txU1KJzQitSR7Y+/18dLo82K0SkPrJ4iQRBX9C4hgGU="; }; postPatch = '' diff --git a/pkgs/development/python-modules/zha/default.nix b/pkgs/development/python-modules/zha/default.nix index 196c5cc377fc..cfc6479eb9b8 100644 --- a/pkgs/development/python-modules/zha/default.nix +++ b/pkgs/development/python-modules/zha/default.nix @@ -27,7 +27,7 @@ buildPythonPackage rec { pname = "zha"; - version = "0.0.66"; + version = "0.0.68"; pyproject = true; disabled = pythonOlder "3.12"; @@ -36,7 +36,7 @@ buildPythonPackage rec { owner = "zigpy"; repo = "zha"; tag = version; - hash = "sha256-74rJ2bdscbGkaLuHMQr8sNxL1wNN72UrlpH4zIkSprY="; + hash = "sha256-NgUUzNfC1XngU5RBfbKpt/o8hu7XRXOUaDUb7OjSJJc="; }; postPatch = '' diff --git a/pkgs/development/tools/rust/rustup-toolchain-install-master/Cargo.lock b/pkgs/development/tools/rust/rustup-toolchain-install-master/Cargo.lock deleted file mode 100644 index 4c358be9de93..000000000000 --- a/pkgs/development/tools/rust/rustup-toolchain-install-master/Cargo.lock +++ /dev/null @@ -1,1669 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "async-compression" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" -dependencies = [ - "bytes 0.5.6", - "flate2", - "futures-core", - "memchr", - "pin-project-lite 0.2.9", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "backtrace" -version = "0.3.67" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" -dependencies = [ - "addr2line", - "cc", - "cfg-if 1.0.0", - "libc", - "miniz_oxide 0.6.2", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bumpalo" -version = "3.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" - -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if 1.0.0", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "encoding_rs" -version = "0.8.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "filetime" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "redox_syscall 0.2.16", - "windows-sys 0.48.0", -] - -[[package]] -name = "flate2" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" -dependencies = [ - "crc32fast", - "miniz_oxide 0.7.1", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-io", - "futures-task", - "memchr", - "pin-project-lite 0.2.9", - "pin-utils", - "slab", -] - -[[package]] -name = "gimli" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" - -[[package]] -name = "h2" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4728fd124914ad25e99e3d15a9361a879f6620f63cb56bbb08f95abb97a535" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", - "tracing-futures", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "home" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" -dependencies = [ - "windows-sys 0.48.0", -] - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes 1.4.0", - "fnv", - "itoa 1.0.6", -] - -[[package]] -name = "http-body" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b" -dependencies = [ - "bytes 0.5.6", - "http", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" - -[[package]] -name = "hyper" -version = "0.13.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb" -dependencies = [ - "bytes 0.5.6", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa 0.4.8", - "pin-project", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed" -dependencies = [ - "bytes 0.5.6", - "hyper", - "native-tls", - "tokio", - "tokio-tls", -] - -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ipnet" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" - -[[package]] -name = "js-sys" -version = "0.3.62" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c16e1bfd491478ab155fd8b4896b86f9ede344949b641e61501e07c2b8b4d5" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.144" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" - -[[package]] -name = "linux-raw-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if 1.0.0", -] - -[[package]] -name = "lzma-sys" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mime_guess" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" -dependencies = [ - "mime", - "unicase", -] - -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" -dependencies = [ - "cfg-if 0.1.10", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "miow" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "net2" -version = "0.2.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d0df99cfcd2530b2e694f6e17e7f37b8e26bb23983ac530c0c97408837c631" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "object" -version = "0.30.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "openssl" -version = "0.10.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56" -dependencies = [ - "bitflags", - "cfg-if 1.0.0", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "pbr" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5827dfa0d69b6c92493d6c38e633bbaa5937c153d0d7c28bf12313f8c6d514" -dependencies = [ - "crossbeam-channel", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "percent-encoding" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" - -[[package]] -name = "pin-project" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "pin-project-lite" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags", -] - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "reqwest" -version = "0.10.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0718f81a8e14c4dbb3b34cf23dc6aaf9ab8a0dfec160c534b3dbca1aaa21f47c" -dependencies = [ - "async-compression", - "base64", - "bytes 0.5.6", - "encoding_rs", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "lazy_static", - "log", - "mime", - "mime_guess", - "native-tls", - "percent-encoding", - "pin-project-lite 0.2.9", - "serde", - "serde_urlencoded", - "tokio", - "tokio-tls", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustix" -version = "0.37.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" -dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustup-toolchain-install-master" -version = "1.7.3" -dependencies = [ - "ansi_term", - "failure", - "home", - "pbr", - "remove_dir_all", - "reqwest", - "structopt", - "tar", - "tee", - "tempfile", - "xz2", -] - -[[package]] -name = "ryu" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - -[[package]] -name = "schannel" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" -dependencies = [ - "windows-sys 0.42.0", -] - -[[package]] -name = "security-framework" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2855b3715770894e67cbfa3df957790aa0c9edc3bf06efa1a84d77fa0839d1" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.163" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" - -[[package]] -name = "serde_json" -version = "1.0.96" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" -dependencies = [ - "itoa 1.0.6", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa 1.0.6", - "ryu", - "serde", -] - -[[package]] -name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] - -[[package]] -name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" -dependencies = [ - "clap", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - -[[package]] -name = "tar" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "tee" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c12559dba7383625faaff75be24becf35bfc885044375bcab931111799a3da" - -[[package]] -name = "tempfile" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" -dependencies = [ - "cfg-if 1.0.0", - "fastrand", - "redox_syscall 0.3.5", - "rustix", - "windows-sys 0.45.0", -] - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "0.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092" -dependencies = [ - "bytes 0.5.6", - "fnv", - "futures-core", - "iovec", - "lazy_static", - "memchr", - "mio", - "num_cpus", - "pin-project-lite 0.1.12", - "slab", -] - -[[package]] -name = "tokio-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8242891f2b6cbef26a2d7e8605133c2c554cd35b3e4948ea892d6d68436499" -dependencies = [ - "bytes 0.5.6", - "futures-core", - "futures-sink", - "log", - "pin-project-lite 0.1.12", - "tokio", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if 1.0.0", - "log", - "pin-project-lite 0.2.9", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - -[[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "url" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6cb788c4e39112fbe1822277ef6fb3c55cd86b95cb3d3c4c1c9597e4ac74b4" -dependencies = [ - "cfg-if 1.0.0", - "serde", - "serde_json", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e522ed4105a9d626d885b35d62501b30d9666283a5c8be12c14a8bdafe7822" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.15", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "083abe15c5d88556b77bdf7aef403625be9e327ad37c62c4e4129af740168163" -dependencies = [ - "cfg-if 1.0.0", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "358a79a0cb89d21db8120cbfb91392335913e4890665b1a7981d9e956903b434" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4783ce29f09b9d93134d41297aded3a712b7b979e9c6f28c32cb88c973a94869" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a901d592cafaa4d711bc324edfaff879ac700b19c3dfd60058d2b445be2691eb" - -[[package]] -name = "web-sys" -version = "0.3.62" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b5f940c7edfdc6d12126d98c9ef4d1b3d470011c47c76a6581df47ad9ba721" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "winreg" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - -[[package]] -name = "xattr" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" -dependencies = [ - "libc", -] - -[[package]] -name = "xz2" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" -dependencies = [ - "lzma-sys", -] diff --git a/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix b/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix index aace64a71a35..9833ff32142c 100644 --- a/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix +++ b/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix @@ -2,48 +2,38 @@ lib, rustPlatform, fetchFromGitHub, - runCommand, stdenv, patchelf, zlib, pkg-config, openssl, xz, + replaceVars, }: -rustPlatform.buildRustPackage rec { +rustPlatform.buildRustPackage (finalAttrs: { pname = "rustup-toolchain-install-master"; - version = "1.7.3"; + version = "1.9.0"; src = fetchFromGitHub { owner = "kennytm"; - repo = pname; - rev = "v${version}"; - hash = "sha256-J25ER/g8Kylw/oTIEl4Gl8i1xmhR+4JM5M5EHpl1ras="; + repo = "rustup-toolchain-install-master"; + tag = "v${finalAttrs.version}"; + hash = "sha256-0ayc4rzlZ9sLKzRhVr1fpRD7bmwQL69rkQ2jXBAdUPI="; }; - cargoLock = { - lockFile = ./Cargo.lock; - }; + cargoHash = "sha256-VxrtkZbi9BprQOQFxOIAYEoAtg0kqyL3C4ih/5RobZI="; - patches = - let - patchelfPatch = - runCommand "0001-dynamically-patchelf-binaries.patch" - { - CC = stdenv.cc; - patchelf = patchelf; - libPath = "$ORIGIN/../lib:${lib.makeLibraryPath [ zlib ]}"; - } - '' - export dynamicLinker=$(cat $CC/nix-support/dynamic-linker) - substitute ${./0001-dynamically-patchelf-binaries.patch} $out \ - --subst-var patchelf \ - --subst-var dynamicLinker \ - --subst-var libPath - ''; - in - lib.optionals stdenv.hostPlatform.isLinux [ patchelfPatch ]; + patches = lib.optional stdenv.hostPlatform.isLinux ( + replaceVars ./0001-dynamically-patchelf-binaries.patch { + inherit patchelf; + dynamicLinker = "${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2"; + libPath = lib.makeLibraryPath [ + zlib + (placeholder "out" + "/lib") + ]; + } + ); nativeBuildInputs = [ pkg-config ]; buildInputs = [ @@ -51,11 +41,6 @@ rustPlatform.buildRustPackage rec { xz ]; - # update Cargo.lock to work with openssl 3 - postPatch = '' - ln -sf ${./Cargo.lock} Cargo.lock - ''; - meta = with lib; { description = "Install a rustc master toolchain usable from rustup"; mainProgram = "rustup-toolchain-install-master"; @@ -63,4 +48,4 @@ rustPlatform.buildRustPackage rec { license = licenses.mit; maintainers = [ ]; }; -} +}) diff --git a/pkgs/games/path-of-building/default.nix b/pkgs/games/path-of-building/default.nix index 15d8672ca72c..ad44114be3a7 100644 --- a/pkgs/games/path-of-building/default.nix +++ b/pkgs/games/path-of-building/default.nix @@ -17,13 +17,13 @@ let data = stdenv.mkDerivation (finalAttrs: { pname = "path-of-building-data"; - version = "2.55.5"; + version = "2.56.0"; src = fetchFromGitHub { owner = "PathOfBuildingCommunity"; repo = "PathOfBuilding"; rev = "v${finalAttrs.version}"; - hash = "sha256-0FgLVQZBv366ACw8zXt72fARdQqFZf4l4lfvt85KpSs="; + hash = "sha256-vzTMkrZgXtsCtEyxaDkea/MRj8tZDzDV3JAc440xrM8="; }; nativeBuildInputs = [ unzip ]; diff --git a/pkgs/os-specific/linux/rtl8821ce/default.nix b/pkgs/os-specific/linux/rtl8821ce/default.nix index c4b88cefaea6..77414c1a71ce 100644 --- a/pkgs/os-specific/linux/rtl8821ce/default.nix +++ b/pkgs/os-specific/linux/rtl8821ce/default.nix @@ -47,6 +47,7 @@ stdenv.mkDerivation (finalAttrs: { maintainers = with lib.maintainers; [ defelo ]; broken = stdenv.hostPlatform.isAarch64 - || ((lib.versions.majorMinor kernel.version) == "5.4" && kernel.isHardened); + || ((lib.versions.majorMinor kernel.version) == "5.4" && kernel.isHardened) + || kernel.kernelAtLeast "6.16"; }; }) diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index b1597807ce94..af4ed17ed9fd 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -2,7 +2,7 @@ # Do not edit! { - version = "2025.8.0"; + version = "2025.8.1"; components = { "3_day_blinds" = ps: with ps; [ diff --git a/pkgs/servers/home-assistant/custom-components/xiaomi_miot/package.nix b/pkgs/servers/home-assistant/custom-components/xiaomi_miot/package.nix index b33334894608..ef1c4afb291d 100644 --- a/pkgs/servers/home-assistant/custom-components/xiaomi_miot/package.nix +++ b/pkgs/servers/home-assistant/custom-components/xiaomi_miot/package.nix @@ -11,13 +11,13 @@ buildHomeAssistantComponent rec { owner = "al-one"; domain = "xiaomi_miot"; - version = "1.0.19"; + version = "1.0.20"; src = fetchFromGitHub { owner = "al-one"; repo = "hass-xiaomi-miot"; rev = "v${version}"; - hash = "sha256-3vaMjY2NsKbw76UxzfAxMdijAeDnagDuM8ICa5Xwgg4="; + hash = "sha256-qn//le4zaS7URP4pWofwsA4FbB20DK7iRRUn8NWzwAI="; }; dependencies = [ diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix index a01951846239..3bef12f35577 100644 --- a/pkgs/servers/home-assistant/default.nix +++ b/pkgs/servers/home-assistant/default.nix @@ -281,6 +281,17 @@ let doCheck = false; }); + python-roborock = super.python-roborock.overridePythonAttrs rec { + version = "2.18.2"; + + src = fetchFromGitHub { + owner = "Python-roborock"; + repo = "python-roborock"; + tag = "v${version}"; + hash = "sha256-7xcw1jNCDapHjH1YVB5NW7jxMyb8Raf8HuTnWf2vdFo="; + }; + }; + python-telegram-bot = super.python-telegram-bot.overridePythonAttrs (oldAttrs: rec { version = "21.5"; @@ -342,7 +353,7 @@ let extraBuildInputs = extraPackages python.pkgs; # Don't forget to run update-component-packages.py after updating - hassVersion = "2025.8.0"; + hassVersion = "2025.8.1"; in python.pkgs.buildPythonApplication rec { @@ -363,13 +374,13 @@ python.pkgs.buildPythonApplication rec { owner = "home-assistant"; repo = "core"; tag = version; - hash = "sha256-o8NZ06GorRmICeu8GQzomkCuE2aALnodT5UuiJ4EOEc="; + hash = "sha256-o1j1ejSMa6T18nNxrmvNcOSWAMbi8b11wgHKO+w5gHA="; }; # Secondary source is pypi sdist for translations sdist = fetchPypi { inherit pname version; - hash = "sha256-U06ttXEWe46h8O2wurYyaCN78EdSCvOs10VbnyOQdsM="; + hash = "sha256-6LyI3t/+wKIVIcVwCny9AIYEaONiwc4GFmbwqjv/9r8="; }; build-system = with python.pkgs; [ diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix index 5ca9c825b092..e4ef9c1c508b 100644 --- a/pkgs/servers/home-assistant/frontend.nix +++ b/pkgs/servers/home-assistant/frontend.nix @@ -8,7 +8,7 @@ buildPythonPackage rec { # the frontend version corresponding to a specific home-assistant version can be found here # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json pname = "home-assistant-frontend"; - version = "20250806.0"; + version = "20250811.0"; format = "wheel"; src = fetchPypi { @@ -16,7 +16,7 @@ buildPythonPackage rec { pname = "home_assistant_frontend"; dist = "py3"; python = "py3"; - hash = "sha256-krx62/hxF9MAFOQygZGAgcwbTuYKXTPcRpfmrHfKzEQ="; + hash = "sha256-x//iMjNup4bf3PpvISYkHxOXKH20J2s+6oWQ22gS4BI="; }; # there is nothing to strip in this package diff --git a/pkgs/servers/home-assistant/pytest-homeassistant-custom-component.nix b/pkgs/servers/home-assistant/pytest-homeassistant-custom-component.nix index 00331a836048..def5322adee1 100644 --- a/pkgs/servers/home-assistant/pytest-homeassistant-custom-component.nix +++ b/pkgs/servers/home-assistant/pytest-homeassistant-custom-component.nix @@ -18,7 +18,7 @@ buildPythonPackage rec { pname = "pytest-homeassistant-custom-component"; - version = "0.13.269"; + version = "0.13.270"; pyproject = true; disabled = pythonOlder "3.13"; @@ -27,7 +27,7 @@ buildPythonPackage rec { owner = "MatthewFlamm"; repo = "pytest-homeassistant-custom-component"; rev = "refs/tags/${version}"; - hash = "sha256-5GKUfFxAs3plr5C9F6BQ5J+DU8J77lgyAQrj6xmuSHo="; + hash = "sha256-SDeQuzBZ1Fd97qotyWL6oB2CTB+qfplMN6yOaJguRmI="; }; build-system = [ setuptools ]; diff --git a/pkgs/servers/home-assistant/update-component-packages.py b/pkgs/servers/home-assistant/update-component-packages.py index a30117184c9e..471e576a6150 100755 --- a/pkgs/servers/home-assistant/update-component-packages.py +++ b/pkgs/servers/home-assistant/update-component-packages.py @@ -1,5 +1,5 @@ #! /usr/bin/env nix-shell -#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ packaging rich ])" -p pyright ruff isort +#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ packaging rich ])" -p pyright ruff isort nixfmt # # This script downloads Home Assistant's source tarball. # Inside the homeassistant/components directory, each integration has an associated manifest.json, diff --git a/pkgs/tools/misc/calamares/0002-Makes-calamares-search-run-current-system-sw-share-c.patch b/pkgs/tools/misc/calamares/0002-Makes-calamares-search-run-current-system-sw-share-c.patch deleted file mode 100644 index 1d6d601e5c1d..000000000000 --- a/pkgs/tools/misc/calamares/0002-Makes-calamares-search-run-current-system-sw-share-c.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Fuentes -Date: Thu, 1 Aug 2024 15:57:55 -0400 -Subject: [PATCH] Makes calamares search - /run/current-system/sw/share/calamares/ for extra configuration files as by - default it only searches /usr/share/calamares/ and - /nix/store/-calamares-/share/calamares/ but - calamares-nixos-extensions is not in either of these locations - ---- - src/calamares/main.cpp | 1 + - src/libcalamares/utils/Dirs.cpp | 8 ++++++++ - src/libcalamares/utils/Dirs.h | 3 +++ - 3 files changed, 12 insertions(+) - -diff --git a/src/calamares/main.cpp b/src/calamares/main.cpp -index e0491e5f9..faf272016 100644 ---- a/src/calamares/main.cpp -+++ b/src/calamares/main.cpp -@@ -132,6 +132,7 @@ main( int argc, char* argv[] ) - #endif - - std::unique_ptr< KDSingleApplication > possiblyUnique; -+ Calamares::setNixosDirs(); - const bool is_debug = handle_args( a ); - if ( !is_debug ) - { -diff --git a/src/libcalamares/utils/Dirs.cpp b/src/libcalamares/utils/Dirs.cpp -index c42768a08..dfce7eb5d 100644 ---- a/src/libcalamares/utils/Dirs.cpp -+++ b/src/libcalamares/utils/Dirs.cpp -@@ -114,6 +114,14 @@ setXdgDirs() - s_haveExtraDirs = !( s_extraConfigDirs.isEmpty() && s_extraDataDirs.isEmpty() ); - } - -+void -+setNixosDirs() -+{ -+ s_extraConfigDirs << "/run/current-system/sw/share/calamares/"; -+ s_extraDataDirs << "/run/current-system/sw/share/calamares/"; -+ s_haveExtraDirs = !( s_extraConfigDirs.isEmpty() && s_extraDataDirs.isEmpty() ); -+} -+ - QStringList - extraConfigDirs() - { -diff --git a/src/libcalamares/utils/Dirs.h b/src/libcalamares/utils/Dirs.h -index d0edd7a4f..26bd16b4e 100644 ---- a/src/libcalamares/utils/Dirs.h -+++ b/src/libcalamares/utils/Dirs.h -@@ -50,6 +50,9 @@ DLLEXPORT bool isAppDataDirOverridden(); - /** @brief Setup extra config and data dirs from the XDG variables. - */ - DLLEXPORT void setXdgDirs(); -+/** @brief Setup extra config and data dirs fir NixOS. -+ */ -+DLLEXPORT void setNixosDirs(); - /** @brief Are any extra directories configured? */ - DLLEXPORT bool haveExtraDirs(); - /** @brief XDG_CONFIG_DIRS, each guaranteed to end with / */ diff --git a/pkgs/tools/misc/calamares/0003-Uses-pkexec-within-modules-in-order-to-run-calamares.patch b/pkgs/tools/misc/calamares/0003-Uses-pkexec-within-modules-in-order-to-run-calamares.patch deleted file mode 100644 index 14b20d26780d..000000000000 --- a/pkgs/tools/misc/calamares/0003-Uses-pkexec-within-modules-in-order-to-run-calamares.patch +++ /dev/null @@ -1,119 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Fuentes -Date: Thu, 1 Aug 2024 15:59:54 -0400 -Subject: [PATCH] Uses pkexec within modules in order to run calamares without - root permissions as a whole. - -Also fixes storage check in the welcome module ---- - src/libcalamares/utils/Runner.cpp | 8 +++--- - src/modules/mount/main.py | 8 +++--- - .../welcome/checker/GeneralRequirements.cpp | 27 ++++++++++++++++++- - .../welcome/checker/GeneralRequirements.h | 1 + - 4 files changed, 35 insertions(+), 9 deletions(-) - -diff --git a/src/libcalamares/utils/Runner.cpp b/src/libcalamares/utils/Runner.cpp -index f7872a7d0..a246ca110 100644 ---- a/src/libcalamares/utils/Runner.cpp -+++ b/src/libcalamares/utils/Runner.cpp -@@ -145,13 +145,13 @@ Calamares::Utils::Runner::run() - } - if ( m_location == RunLocation::RunInTarget ) - { -- process.setProgram( "chroot" ); -- process.setArguments( QStringList { workingDirectory.absolutePath() } << m_command ); -+ process.setProgram( "pkexec" ); -+ process.setArguments( QStringList { "chroot" } + QStringList { workingDirectory.absolutePath() } << m_command ); - } - else - { -- process.setProgram( "env" ); -- process.setArguments( m_command ); -+ process.setProgram( "pkexec" ); -+ process.setArguments( QStringList { "env" } + m_command ); - } - - if ( m_output ) -diff --git a/src/modules/mount/main.py b/src/modules/mount/main.py -index 4a16f8872..6d32916a5 100644 ---- a/src/modules/mount/main.py -+++ b/src/modules/mount/main.py -@@ -244,7 +244,7 @@ def mount_partition(root_mount_point, partition, partitions, mount_options, moun - # Ensure that the created directory has the correct SELinux context on - # SELinux-enabled systems. - -- os.makedirs(mount_point, exist_ok=True) -+ subprocess.check_call(["pkexec", "mkdir", "-p", mount_point]) - - try: - subprocess.call(['chcon', '--reference=' + raw_mount_point, mount_point]) -@@ -288,13 +288,13 @@ def mount_partition(root_mount_point, partition, partitions, mount_options, moun - for s in btrfs_subvolumes: - if not s["subvolume"]: - continue -- os.makedirs(root_mount_point + os.path.dirname(s["subvolume"]), exist_ok=True) -- subprocess.check_call(["btrfs", "subvolume", "create", -+ subprocess.check_call(["pkexec", "mkdir", "-p", root_mount_point + os.path.dirname(s["subvolume"])]) -+ subprocess.check_call(["pkexec", "btrfs", "subvolume", "create", - root_mount_point + s["subvolume"]]) - if s["mountPoint"] == "/": - # insert the root subvolume into global storage - libcalamares.globalstorage.insert("btrfsRootSubvolume", s["subvolume"]) -- subprocess.check_call(["umount", "-v", root_mount_point]) -+ subprocess.check_call(["pkexec", "umount", "-v", root_mount_point]) - - device = partition["device"] - -diff --git a/src/modules/welcome/checker/GeneralRequirements.cpp b/src/modules/welcome/checker/GeneralRequirements.cpp -index a58f3df83..b66576b09 100644 ---- a/src/modules/welcome/checker/GeneralRequirements.cpp -+++ b/src/modules/welcome/checker/GeneralRequirements.cpp -@@ -431,10 +431,35 @@ GeneralRequirements::checkEnoughStorage( qint64 requiredSpace ) - cWarning() << "GeneralRequirements is configured without libparted."; - return false; - #else -- return check_big_enough( requiredSpace ); -+ return big_enough( requiredSpace ); - #endif - } - -+bool -+GeneralRequirements::big_enough( qint64 requiredSpace ) -+{ -+ FILE *fpipe; -+ char command[128]; -+ snprintf(command, sizeof(command), "lsblk --bytes -no SIZE,TYPE | grep disk | awk '$1 > %llu {print $1}'", requiredSpace); -+ char c = 0; -+ -+ if (0 == (fpipe = (FILE*)popen(command, "r"))) -+ { -+ cWarning() << "Failed to check storage size."; -+ return false; -+ } -+ -+ while (fread(&c, sizeof c, 1, fpipe)) -+ { -+ pclose(fpipe); -+ return true; -+ } -+ -+ pclose(fpipe); -+ -+ return false; -+} -+ - bool - GeneralRequirements::checkEnoughRam( qint64 requiredRam ) - { -diff --git a/src/modules/welcome/checker/GeneralRequirements.h b/src/modules/welcome/checker/GeneralRequirements.h -index b6646da11..ea27324fa 100644 ---- a/src/modules/welcome/checker/GeneralRequirements.h -+++ b/src/modules/welcome/checker/GeneralRequirements.h -@@ -36,6 +36,7 @@ private: - bool checkHasPower(); - bool checkHasInternet(); - bool checkIsRoot(); -+ bool big_enough( qint64 requiredSpace ); - - qreal m_requiredStorageGiB; - qreal m_requiredRamGiB; diff --git a/pkgs/tools/misc/calamares/0004-Adds-unfree-qml-to-packagechooserq.patch b/pkgs/tools/misc/calamares/0004-Adds-unfree-qml-to-packagechooserq.patch deleted file mode 100644 index 97961c265b10..000000000000 --- a/pkgs/tools/misc/calamares/0004-Adds-unfree-qml-to-packagechooserq.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Fuentes -Date: Thu, 1 Aug 2024 16:00:43 -0400 -Subject: [PATCH] Adds unfree qml to packagechooserq - ---- - .../packagechooserq/packagechooserq.qrc | 1 + - .../packagechooserq@unfree.qml | 75 +++++++++++++++++++ - src/modules/packagechooserq/unfree.conf | 11 +++ - 3 files changed, 87 insertions(+) - create mode 100644 src/modules/packagechooserq/packagechooserq@unfree.qml - create mode 100644 src/modules/packagechooserq/unfree.conf - -diff --git a/src/modules/packagechooserq/packagechooserq.qrc b/src/modules/packagechooserq/packagechooserq.qrc -index 1b892dce1..ee80a934b 100644 ---- a/src/modules/packagechooserq/packagechooserq.qrc -+++ b/src/modules/packagechooserq/packagechooserq.qrc -@@ -4,5 +4,6 @@ - images/libreoffice.jpg - images/no-selection.png - images/plasma.png -+ packagechooserq@unfree.qml - - -diff --git a/src/modules/packagechooserq/packagechooserq@unfree.qml b/src/modules/packagechooserq/packagechooserq@unfree.qml -new file mode 100644 -index 000000000..5e36d77d9 ---- /dev/null -+++ b/src/modules/packagechooserq/packagechooserq@unfree.qml -@@ -0,0 +1,75 @@ -+/* === This file is part of Calamares - === -+ * -+ * SPDX-FileCopyrightText: 2021 Anke Boersma -+ * SPDX-License-Identifier: GPL-3.0-or-later -+ * -+ * Calamares is Free Software: see the License-Identifier above. -+ * -+ */ -+ -+import io.calamares.core 1.0 -+import io.calamares.ui 1.0 -+ -+import QtQuick 2.15 -+import QtQuick.Controls 2.15 -+import QtQuick.Layouts 1.3 -+ -+Item { -+ -+ SystemPalette { -+ id: palette -+ colorGroup: SystemPalette.Active -+ } -+ -+ width: parent.width -+ height: parent.height -+ -+ Rectangle { -+ anchors.fill: parent -+ color: palette.window -+ -+ ButtonGroup { -+ id: switchGroup -+ } -+ -+ Column { -+ id: column -+ anchors.centerIn: parent -+ spacing: 5 -+ -+ Rectangle { -+ width: 700 -+ height: 250 -+ color: palette.base -+ radius: 10 -+ border.width: 0 -+ Text { -+ color: palette.text -+ width: 600 -+ height: 200 -+ anchors.centerIn: parent -+ text: qsTr("NixOS is fully open source, but it also provides optional software packages that do not respect users' freedom to run, copy, distribute, study, change and improve the software, and are commonly not open source. By default such \"unfree\" packages are not allowed, but you can enable it here. If you check this box, you agree that unfree software may be installed which might have additional End User License Agreements (EULAs) that you need to agree to. If not enabled, some hardware (notably Nvidia GPUs and some WiFi chips) might not work or not work optimally.
") -+ font.pointSize: 12 -+ wrapMode: Text.WordWrap -+ } -+ -+ CheckBox { -+ id: element2 -+ anchors.horizontalCenter: parent.horizontalCenter -+ y: 190 -+ text: qsTr("Allow unfree software") -+ checked: false -+ -+ onCheckedChanged: { -+ if ( checked ) { -+ config.packageChoice = "unfree" -+ } else { -+ config.packageChoice = "free" -+ } -+ } -+ } -+ } -+ } -+ } -+ -+} -diff --git a/src/modules/packagechooserq/unfree.conf b/src/modules/packagechooserq/unfree.conf -new file mode 100644 -index 000000000..da79a8eac ---- /dev/null -+++ b/src/modules/packagechooserq/unfree.conf -@@ -0,0 +1,11 @@ -+# SPDX-FileCopyrightText: no -+# SPDX-License-Identifier: CC0-1.0 -+# -+--- -+qmlLabel: -+ label: "Unfree Software" -+method: legacy -+mode: required -+labels: -+ step: "Unfree Software" -+packageChoice: free diff --git a/pkgs/tools/misc/calamares/0005-Modifies-finished-module-to-add-some-NixOS-resources.patch b/pkgs/tools/misc/calamares/0005-Modifies-finished-module-to-add-some-NixOS-resources.patch deleted file mode 100644 index 7155f0b7870d..000000000000 --- a/pkgs/tools/misc/calamares/0005-Modifies-finished-module-to-add-some-NixOS-resources.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Fuentes -Date: Thu, 1 Aug 2024 16:01:53 -0400 -Subject: [PATCH] Modifies finished module to add some NixOS resources. - -Modifies packagechooser module to change the UI. ---- - src/modules/finished/FinishedPage.cpp | 12 +++++--- - .../packagechooser/PackageChooserPage.cpp | 1 + - src/modules/packagechooser/page_package.ui | 28 +++++++++---------- - 3 files changed, 23 insertions(+), 18 deletions(-) - -diff --git a/src/modules/finished/FinishedPage.cpp b/src/modules/finished/FinishedPage.cpp -index 51be52678..307607232 100644 ---- a/src/modules/finished/FinishedPage.cpp -+++ b/src/modules/finished/FinishedPage.cpp -@@ -74,8 +74,10 @@ FinishedPage::retranslate() - { - ui->mainText->setText( tr( "

All done.


" - "%1 has been set up on your computer.
" -- "You may now start using your new system.", -- "@info" ) -+ "You may now start using your new system.
" -+ "You can change every setting later except the bootloader.
" -+ "Check the manual for instructions on how to install software, upgrade the system or enable services.
" -+ "You can find ways to get in touch with the community on the website!", "@info" ) - .arg( branding->versionedName() ) ); - ui->restartCheckBox->setToolTip( tr( "" - "

When this box is checked, your system will " -@@ -89,8 +91,10 @@ FinishedPage::retranslate() - ui->mainText->setText( tr( "

All done.


" - "%1 has been installed on your computer.
" - "You may now restart into your new system, or continue " -- "using the %2 Live environment.", -- "@info" ) -+ "using the %2 Live environment.
" -+ "You can change every setting later except the bootloader.
" -+ "Check the manual for instructions on how to install software, upgrade the system or enable services.
" -+ "You can find ways to get in touch with the community on the website!", "@info" ) - .arg( branding->versionedName(), branding->productName() ) ); - ui->restartCheckBox->setToolTip( tr( "" - "

When this box is checked, your system will " -diff --git a/src/modules/packagechooser/PackageChooserPage.cpp b/src/modules/packagechooser/PackageChooserPage.cpp -index 44a570d2f..4dc931bf3 100644 ---- a/src/modules/packagechooser/PackageChooserPage.cpp -+++ b/src/modules/packagechooser/PackageChooserPage.cpp -@@ -52,6 +52,7 @@ PackageChooserPage::currentChanged( const QModelIndex& index ) - if ( !index.isValid() || !ui->products->selectionModel()->hasSelection() ) - { - ui->productName->setText( m_introduction.name.get() ); -+ ui->productName->setStyleSheet("font-weight: bold"); - ui->productScreenshot->setPixmap( m_introduction.screenshot ); - ui->productDescription->setText( m_introduction.description.get() ); - } -diff --git a/src/modules/packagechooser/page_package.ui b/src/modules/packagechooser/page_package.ui -index 2ab5b7f13..bed462069 100644 ---- a/src/modules/packagechooser/page_package.ui -+++ b/src/modules/packagechooser/page_package.ui -@@ -37,20 +37,7 @@ SPDX-License-Identifier: GPL-3.0-or-later - - - -- -- -- -- -- -- 0 -- 0 -- -- -- -- Product Name -- -- -- -+ - - - -@@ -67,6 +54,19 @@ SPDX-License-Identifier: GPL-3.0-or-later - - - -+ -+ -+ -+ -+ 0 -+ 0 -+ -+ -+ -+ Product Name -+ -+ -+ - - - diff --git a/pkgs/tools/misc/calamares/0007-Fix-setting-the-kayboard-layout-on-GNOME-wayland.patch b/pkgs/tools/misc/calamares/0007-Fix-setting-the-kayboard-layout-on-GNOME-wayland.patch deleted file mode 100644 index 9c65859e0fc4..000000000000 --- a/pkgs/tools/misc/calamares/0007-Fix-setting-the-kayboard-layout-on-GNOME-wayland.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Fuentes -Date: Thu, 31 Oct 2024 10:34:25 -0700 -Subject: [PATCH] Fix setting the kayboard layout on GNOME wayland. - -By default the module uses the setxkbmap, which will not change the -keyboard ---- - src/modules/keyboard/Config.cpp | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp -index 54ee7649c..60fe2d7d0 100644 ---- a/src/modules/keyboard/Config.cpp -+++ b/src/modules/keyboard/Config.cpp -@@ -306,6 +306,10 @@ Config::applyXkb() - m_additionalLayoutInfo.groupSwitcher ) ); - QProcess::execute( "setxkbmap", basicArguments ); - -+ QString xkbmap = QString( "[('xkb','%1\%2'),('xkb','%3\%4')]").arg( -+ m_selectedLayout, ((!m_selectedVariant.isEmpty()) ? "+" + m_selectedVariant : ""), -+ m_additionalLayoutInfo.additionalLayout, ((!m_additionalLayoutInfo.additionalVariant.isEmpty()) ? "+" + m_additionalLayoutInfo.additionalVariant : "")); -+ QProcess::execute( "sh", { "-c", "if command -v gsettings; then gsettings set org.gnome.desktop.input-sources sources \"$0\"; fi", xkbmap }); - cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant << "(added " - << m_additionalLayoutInfo.additionalLayout << "-" << m_additionalLayoutInfo.additionalVariant - << " since current layout is not ASCII-capable)"; -@@ -314,6 +318,8 @@ Config::applyXkb() - { - basicArguments.append( xkbmap_layout_args( m_selectedLayout, m_selectedVariant ) ); - QProcess::execute( "setxkbmap", basicArguments ); -+ QString xkbmap = QString( "[('xkb','%1\%2')]").arg( m_selectedLayout, ((!m_selectedVariant.isEmpty()) ? "+" + m_selectedVariant : "") ); -+ QProcess::execute( "sh", { "-c", "if command -v gsettings; then gsettings set org.gnome.desktop.input-sources sources \"$0\"; fi", xkbmap }); - cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant; - } - m_applyTimer.stop(); \ No newline at end of file diff --git a/pkgs/tools/misc/calamares/0008-Change-default-location-where-calamares-searches-for.patch b/pkgs/tools/misc/calamares/0008-Change-default-location-where-calamares-searches-for.patch deleted file mode 100644 index 58b53758609f..000000000000 --- a/pkgs/tools/misc/calamares/0008-Change-default-location-where-calamares-searches-for.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Fuentes -Date: Thu, 1 Aug 2024 16:03:53 -0400 -Subject: [PATCH] Change default location where calamares searches for locales - ---- - src/modules/locale/Config.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/modules/locale/Config.cpp b/src/modules/locale/Config.cpp -index 8fa17a768..79b5419b6 100644 ---- a/src/modules/locale/Config.cpp -+++ b/src/modules/locale/Config.cpp -@@ -48,7 +48,7 @@ loadLocales( const QString& localeGenPath ) - // supported locales. We first try that one, and if it doesn't exist, we fall back - // to parsing the lines from locale.gen - localeGenLines.clear(); -- QFile supported( "/usr/share/i18n/SUPPORTED" ); -+ QFile supported( "/run/current-system/sw/share/i18n/SUPPORTED" ); - QByteArray ba; - - if ( supported.exists() && supported.open( QIODevice::ReadOnly | QIODevice::Text ) ) diff --git a/pkgs/tools/misc/calamares/default.nix b/pkgs/tools/misc/calamares/default.nix deleted file mode 100644 index ecab0d9c0fab..000000000000 --- a/pkgs/tools/misc/calamares/default.nix +++ /dev/null @@ -1,144 +0,0 @@ -{ - lib, - fetchurl, - boost, - cmake, - extra-cmake-modules, - kparts, - kpmcore, - kirigami2, - kservice, - libatasmart, - libxcb, - yaml-cpp, - libpwquality, - parted, - polkit-qt, - python3, - qtbase, - qtquickcontrols, - qtsvg, - qttools, - qtwebengine, - util-linux, - tzdata, - ckbcomp, - xkeyboard_config, - mkDerivation, - nixos-extensions ? false, - # passthru.tests - calamares-nixos, -}: - -mkDerivation rec { - pname = "calamares"; - version = "3.3.13"; - - # release including submodule - src = fetchurl { - url = "https://github.com/calamares/calamares/releases/download/v${version}/calamares-${version}.tar.gz"; - sha256 = "sha256-5Jz32JTgK6BImM0HcMtXi04k39CAirdmC/lbskVmSNQ="; - }; - - # On major changes, or when otherwise required, you *must* : - # 1. reformat the patches, - # 2. `git am path/to/00*.patch` them into a calamares worktree, - # 3. rebase to the more recent calamares version, - # 4. and export the patches again via - # `git -c format.signoff=false format-patch v${version} --no-numbered --zero-commit --no-signature`. - patches = lib.optionals nixos-extensions [ - ./0001-Modifies-the-users-module-to-only-set-passwords-of-u.patch - ./0002-Makes-calamares-search-run-current-system-sw-share-c.patch - ./0003-Uses-pkexec-within-modules-in-order-to-run-calamares.patch - ./0004-Adds-unfree-qml-to-packagechooserq.patch - ./0005-Modifies-finished-module-to-add-some-NixOS-resources.patch - ./0006-Remove-options-for-unsupported-partition-types.patch - ./0007-Fix-setting-the-kayboard-layout-on-GNOME-wayland.patch - ./0008-Change-default-location-where-calamares-searches-for.patch - ]; - - nativeBuildInputs = [ - cmake - extra-cmake-modules - ]; - buildInputs = [ - boost - kparts.dev - kpmcore.out - kservice.dev - kirigami2 - libatasmart - libxcb - yaml-cpp - libpwquality - parted - polkit-qt - python3 - qtbase - qtquickcontrols - qtsvg - qttools - qtwebengine.dev - util-linux - ]; - - cmakeFlags = [ - "-DPYTHON_LIBRARY=${python3}/lib/lib${python3.libPrefix}.so" - "-DPYTHON_INCLUDE_DIR=${python3}/include/${python3.libPrefix}" - "-DCMAKE_VERBOSE_MAKEFILE=True" - "-DWITH_PYTHONQT:BOOL=ON" - ]; - - POLKITQT-1_POLICY_FILES_INSTALL_DIR = "$(out)/share/polkit-1/actions"; - - postPatch = '' - # Run calamares without root. Other patches make it functional as a normal user - sed -e "s,pkexec calamares,calamares -D6," \ - -i calamares.desktop - - sed -e "s,X-AppStream-Ignore=true,&\nStartupWMClass=calamares," \ - -i calamares.desktop - - # Fix desktop reference with wayland - mv calamares.desktop io.calamares.calamares.desktop - - sed -e "s,calamares.desktop,io.calamares.calamares.desktop," \ - -i CMakeLists.txt - - sed -e "s,/usr/bin/calamares,$out/bin/calamares," \ - -i com.github.calamares.calamares.policy - - sed -e 's,/usr/share/zoneinfo,${tzdata}/share/zoneinfo,' \ - -i src/modules/locale/SetTimezoneJob.cpp \ - -i src/libcalamares/locale/TimeZone.cpp - - sed -e 's,/usr/share/X11/xkb/rules/base.lst,${xkeyboard_config}/share/X11/xkb/rules/base.lst,' \ - -i src/modules/keyboard/keyboardwidget/keyboardglobal.cpp - - sed -e 's,"ckbcomp","${ckbcomp}/bin/ckbcomp",' \ - -i src/modules/keyboard/keyboardwidget/keyboardpreview.cpp - - sed "s,\''${POLKITQT-1_POLICY_FILES_INSTALL_DIR},''${out}/share/polkit-1/actions," \ - -i CMakeLists.txt - ''; - - passthru.tests = { - inherit calamares-nixos; - }; - - meta = with lib; { - description = "Distribution-independent installer framework"; - homepage = "https://calamares.io/"; - license = with licenses; [ - gpl3Plus - bsd2 - cc0 - ]; - maintainers = with maintainers; [ - manveru - vlinkz - ]; - platforms = platforms.linux; - mainProgram = "calamares"; - }; -} diff --git a/pkgs/tools/package-management/nix/common-autoconf.nix b/pkgs/tools/package-management/nix/common-autoconf.nix index a33a48e00a1f..8dfefe1544a2 100644 --- a/pkgs/tools/package-management/nix/common-autoconf.nix +++ b/pkgs/tools/package-management/nix/common-autoconf.nix @@ -22,7 +22,6 @@ assert (hash == null) -> (src != null); let atLeast24 = lib.versionAtLeast version "2.4"; - atLeast224 = lib.versionAtLeast version "2.24pre"; atLeast225 = lib.versionAtLeast version "2.25pre"; in { @@ -118,7 +117,7 @@ let ] ++ lib.optional stdenv.hostPlatform.isMusl "fortify"; - nativeInstallCheckInputs = lib.optionals atLeast224 [ + nativeInstallCheckInputs = [ git man ]; @@ -131,21 +130,11 @@ let flex jq ] - ++ lib.optionals enableDocumentation ( - if atLeast224 then - [ - (lib.getBin lowdown-unsandboxed) - mdbook - mdbook-linkcheck - ] - else - [ - libxslt - libxml2 - docbook_xsl_ns - docbook5 - ] - ) + ++ lib.optionals enableDocumentation [ + (lib.getBin lowdown-unsandboxed) + mdbook + mdbook-linkcheck + ] ++ lib.optionals stdenv.hostPlatform.isLinux [ util-linuxMinimal ]; @@ -163,8 +152,6 @@ let gtest libarchive lowdown - ] - ++ lib.optionals atLeast224 [ libgit2 toml11 rapidcheck @@ -184,8 +171,6 @@ let propagatedBuildInputs = [ boehmgc - ] - ++ lib.optionals atLeast224 [ nlohmann_json ]; @@ -204,24 +189,7 @@ let chmod u+w $out/lib/*.so.* patchelf --set-rpath $out/lib:${lib.getLib stdenv.cc.cc}/lib $out/lib/libboost_thread.so.* ''} - '' - + - # On all versions before c9f51e87057652db0013289a95deffba495b35e7, which - # removes config.nix entirely and is not present in 2.3.x, we need to - # patch around an issue where the Nix configure step pulls in the build - # system's bash and other utilities when cross-compiling. - lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && !atLeast224) '' - mkdir tmp/ - substitute corepkgs/config.nix.in tmp/config.nix.in \ - --subst-var-by bash ${bash}/bin/bash \ - --subst-var-by coreutils ${coreutils}/bin \ - --subst-var-by bzip2 ${bzip2}/bin/bzip2 \ - --subst-var-by gzip ${gzip}/bin/gzip \ - --subst-var-by xz ${xz}/bin/xz \ - --subst-var-by tar ${gnutar}/bin/tar \ - --subst-var-by tr ${coreutils}/bin/tr - mv tmp/config.nix.in corepkgs/config.nix.in - ''; + ''; configureFlags = [ "--with-store-dir=${storeDir}" @@ -235,7 +203,7 @@ let ++ lib.optionals stdenv.hostPlatform.isLinux [ "--with-sandbox-shell=${busybox-sandbox-shell}/bin/busybox" ] - ++ lib.optionals (atLeast224 && stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isStatic) [ + ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isStatic) [ "--enable-embedded-sandbox-shell" ] ++ @@ -252,7 +220,7 @@ let # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50 "--disable-seccomp-sandboxing" ] - ++ lib.optionals (atLeast224 && stdenv.cc.isGNU && !enableStatic) [ + ++ lib.optionals (stdenv.cc.isGNU && !enableStatic) [ "--enable-lto" ]; @@ -277,7 +245,7 @@ let installFlags = [ "sysconfdir=$(out)/etc" ]; doInstallCheck = true; - installCheckTarget = if atLeast224 then "installcheck" else null; + installCheckTarget = "installcheck"; # socket path becomes too long otherwise preInstallCheck = @@ -290,10 +258,10 @@ let export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES '' # See https://github.com/NixOS/nix/issues/5687 - + lib.optionalString (atLeast224 && stdenv.hostPlatform.isDarwin) '' + + lib.optionalString (stdenv.hostPlatform.isDarwin) '' echo "exit 99" > tests/gc-non-blocking.sh '' # TODO: investigate why this broken - + lib.optionalString (atLeast224 && stdenv.hostPlatform.system == "aarch64-linux") '' + + lib.optionalString (stdenv.hostPlatform.system == "aarch64-linux") '' echo "exit 0" > tests/functional/flakes/show.sh '' + '' @@ -301,7 +269,7 @@ let export MANPATH=$man/share/man:$MANPATH ''; - separateDebugInfo = stdenv.hostPlatform.isLinux && (atLeast224 -> !enableStatic); + separateDebugInfo = stdenv.hostPlatform.isLinux && !enableStatic; enableParallelBuilding = true; diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 982d52c5087b..231f514a627b 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -147,32 +147,6 @@ lib.makeExtensible ( self: ( { - nix_2_3 = - (commonAutoconf { - version = "2.3.18"; - hash = "sha256-jBz2Ub65eFYG+aWgSI3AJYvLSghio77fWQiIW1svA9U="; - patches = [ - patch-monitorfdhup - ]; - self_attribute_name = "nix_2_3"; - knownVulnerabilities = [ - "CVE-2024-38531" - "CVE-2024-47174" - "CVE-2025-46415" - "CVE-2025-46416" - "CVE-2025-52991" - "CVE-2025-52992" - "CVE-2025-52993" - ]; - maintainers = with lib.maintainers; [ flokli ]; - teams = [ ]; - }).overrideAttrs - { - # https://github.com/NixOS/nix/issues/10222 - # spurious test/add.sh failures - enableParallelChecking = false; - }; - nix_2_24 = commonAutoconf { version = "2.24.15"; hash = "sha256-GHqFHLxvRID2IEPUwIfRMp8epYQMFcvG9ogLzfWRbPc="; @@ -229,23 +203,6 @@ lib.makeExtensible ( latest = self.nix_2_30; - # The minimum Nix version supported by Nixpkgs - # Note that some functionality *might* have been backported into this Nix version, - # making this package an inaccurate representation of what features are available - # in the actual lowest minver.nix *patch* version. - minimum = - let - minver = import ../../../../lib/minver.nix; - major = lib.versions.major minver; - minor = lib.versions.minor minver; - attribute = "nix_${major}_${minor}"; - nix = self.${attribute}; - in - if !self ? ${attribute} then - throw "The minimum supported Nix version is ${minver} (declared in lib/minver.nix), but pkgs.nixVersions.${attribute} does not exist." - else - nix; - # Read ./README.md before bumping a major release stable = addFallbackPathsCheck self.nix_2_28; } @@ -265,6 +222,7 @@ lib.makeExtensible ( nix_2_27 = throw "nix_2_27 has been removed. use nix_2_28."; nix_2_25 = throw "nix_2_25 has been removed. use nix_2_28."; + minimum = throw "nixVersions.minimum has been removed. Use a specific version instead."; unstable = throw "nixVersions.unstable has been removed. use nixVersions.latest or the nix flake."; } ) diff --git a/pkgs/tools/package-management/nix/update-all.sh b/pkgs/tools/package-management/nix/update-all.sh index a2b459e67e7f..d84b6f56a47f 100755 --- a/pkgs/tools/package-management/nix/update-all.sh +++ b/pkgs/tools/package-management/nix/update-all.sh @@ -11,9 +11,6 @@ nix_versions=$(nix eval --impure --json --expr "with import ./. { config.allowAl for name in $nix_versions; do minor_version=${name#nix_*_} - if [[ "$name" = "nix_2_3" ]]; then # not maintained by the nix team - continue - fi nix-update --override-filename "$SCRIPT_DIR/default.nix" --version-regex "(2\\.${minor_version}\..+)" --build --commit "nixVersions.$name" done @@ -25,9 +22,6 @@ stable_version_trimmed=${stable_version_full%.*} for name in $nix_versions; do minor_version=${name#nix_*_} - if [[ "$name" = "nix_2_3" ]]; then # not maintained by the nix team - continue - fi if [[ "$name" = "nix_${stable_version_trimmed//./_}" ]]; then curl https://releases.nixos.org/nix/nix-$stable_version_full/fallback-paths.nix > "$NIXPKGS_DIR/nixos/modules/installer/tools/nix-fallback-paths.nix" # nix-update will commit the file if it has changed diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index bc616ce90640..d31ac7e68d93 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1435,7 +1435,7 @@ mapAliases { nixFlakes = throw "'nixFlakes' has been renamed to/replaced by 'nixVersions.stable'"; # Converted to throw 2024-10-17 nixStable = nixVersions.stable; # Added 2022-01-24 nixUnstable = throw "nixUnstable has been removed. For bleeding edge (Nix master, roughly weekly updated) use nixVersions.git, otherwise use nixVersions.latest."; # Converted to throw 2024-04-22 - nix_2_3 = nixVersions.nix_2_3; + nix_2_3 = throw "'nix_2_3' has been removed, because it was unmaintained and insecure."; # Converted to throw 2025-07-24 nixfmt-rfc-style = if lib.oldestSupportedReleaseIsAtLeast 2511 then lib.warnOnInstantiate diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 79e50e499463..e87666ba948e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1760,9 +1760,9 @@ with pkgs; lukesmithxyz-bible-kjv = callPackage ../applications/misc/kjv/lukesmithxyz-kjv.nix { }; - plausible = callPackage ../servers/web-apps/plausible { - elixir = elixir_1_17; - beamPackages = beamPackages.extend (self: super: { elixir = elixir_1_17; }); + plausible = callPackage ../by-name/pl/plausible/package.nix { + elixir = elixir_1_18; + beamPackages = beamPackages.extend (self: super: { elixir = elixir_1_18; }); }; reattach-to-user-namespace = callPackage ../os-specific/darwin/reattach-to-user-namespace { }; @@ -1904,13 +1904,6 @@ with pkgs; ''; }); - calamares = libsForQt5.callPackage ../tools/misc/calamares { - boost = boost.override { - enablePython = true; - python = python3; - }; - }; - calamares-nixos = lowPrio (calamares.override { nixos-extensions = true; }); candle = libsForQt5.callPackage ../applications/misc/candle { }; capstone = callPackage ../development/libraries/capstone { }; @@ -4256,10 +4249,6 @@ with pkgs; ocamlPackages = ocaml-ng.ocamlPackages_4_12; }; - slstatus = callPackage ../applications/misc/slstatus { - conf = config.slstatus.conf or null; - }; - smpq = callPackage ../by-name/sm/smpq/package.nix { stormlib = stormlib.overrideAttrs (old: { version = "9.22"; @@ -15900,10 +15889,6 @@ with pkgs; sane-frontends = callPackage ../applications/graphics/sane/frontends.nix { }; - slock = callPackage ../misc/screensavers/slock { - conf = config.slock.conf or null; - }; - snscrape = with python3Packages; toPythonApplication snscrape; sourceAndTags = callPackage ../misc/source-and-tags { diff --git a/pkgs/top-level/make-tarball.nix b/pkgs/top-level/make-tarball.nix index b1ddef188d93..1b90e4bfdb66 100644 --- a/pkgs/top-level/make-tarball.nix +++ b/pkgs/top-level/make-tarball.nix @@ -3,13 +3,7 @@ officialRelease, pkgs ? import nixpkgs.outPath { }, nix ? pkgs.nix, - lib-tests ? import ../../lib/tests/release.nix { - pkgs = import nixpkgs.outPath { - config = { - permittedInsecurePackages = [ "nix-2.3.18" ]; - }; - }; - }, + lib-tests ? import ../../lib/tests/release.nix { inherit pkgs; }, }: pkgs.releaseTools.sourceTarball { diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index 06f54b2c247c..67dd19a842ec 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -456,6 +456,7 @@ mapAliases ({ nghttp2 = throw "in 1.52.0 removed deprecated python bindings."; # added 2023-06-08 niko-home-control = throw "niko-home-control was removed because Home Assistant switched to nhc"; # added 2025-01-09 ninja-python = ninja; # add 2022-08-03 + nixpkgs = throw "nixpkgs has been removed as its dependency pythonix was removed"; # added 2025-07-24 nose = throw "nose has been removed since it has been deprecated and unmaintained for almost a decade and does not work on Python 3.12; please switch to pytest or another test runner/framework"; # added 2024-07-28 nose3 = throw "nose3 has been removed since it is unmaintained and does not work with Python 3.12"; # added 2024-07-28 nosejs = throw "nosejs has been removed since it has not been maintained for 15 years and there are no dependent packages"; # added 2024-05-21 @@ -589,6 +590,7 @@ mapAliases ({ python-myq = throw "python-myq has been removed, as the service provider has decided to block its API requests"; # added 2023-12-07 python-picnic-api = throw "python-picnic-api was removed because Home Assistant switched to python-picnic-api2"; # added 2025-03-05 python-unshare = throw "python-unshare was removed as unmaintained since 2016"; # added 2025-05-25 + pythonix = throw "pythonix was removed as it was unmaintained since 2022"; # added 2025-07-24 pytrends = throw "pytrends has been removed, as it no longer works and is abandoned upstream"; # added 2025-02-02 pyqldb = throw "pyqldb has been removed, because the underlying service is reaching end of support"; # added 2025-07-30 pyqt4 = throw "pyqt4 has been removed, because it depended on the long EOL qt4"; # added 2022-06-09 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 80fcbf3b192f..922161695787 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8089,6 +8089,8 @@ self: super: with self; { (p: p.py) ]; + libear = callPackage ../development/python-modules/libear { }; + libevdev = callPackage ../development/python-modules/libevdev { }; libfdt = toPythonModule ( @@ -8224,6 +8226,8 @@ self: super: with self; { } ); + libscanbuild = callPackage ../development/python-modules/libscanbuild { }; + libselinux = lib.pipe pkgs.libselinux [ toPythonModule ( @@ -10401,8 +10405,6 @@ self: super: with self; { nix-prefetch-github = callPackage ../development/python-modules/nix-prefetch-github { }; - nixpkgs = callPackage ../development/python-modules/nixpkgs { }; - nixpkgs-pytools = callPackage ../development/python-modules/nixpkgs-pytools { }; nixpkgs-updaters-library = callPackage ../development/python-modules/nixpkgs-updaters-library { }; @@ -14955,11 +14957,6 @@ self: super: with self; { pythonfinder = callPackage ../development/python-modules/pythonfinder { }; - pythonix = callPackage ../development/python-modules/pythonix { - nix = pkgs.nixVersions.nix_2_3; - meson = pkgs.meson.override { python3 = self.python; }; - }; - pythonkuma = callPackage ../development/python-modules/pythonkuma { }; pythonnet = callPackage ../development/python-modules/pythonnet { }; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 370f39cad304..f087876479c8 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -113,20 +113,7 @@ let manual = pkgs.nixpkgs-manual.override { inherit nixpkgs; }; metrics = import ./metrics.nix { inherit pkgs nixpkgs; }; - lib-tests = import ../../lib/tests/release.nix { - pkgs = import nixpkgs ( - recursiveUpdate - (recursiveUpdate { - inherit system; - config.allowUnsupportedSystem = true; - } nixpkgsArgs) - { - config.permittedInsecurePackages = nixpkgsArgs.config.permittedInsecurePackages or [ ] ++ [ - "nix-2.3.18" - ]; - } - ); - }; + lib-tests = import ../../lib/tests/release.nix { inherit pkgs; }; pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; }; darwin-tested =