mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-06 17:13:24 -05:00
Merge release-26.05 into staging-next-26.05
This commit is contained in:
commit
49c3f5dc13
75 changed files with 1058 additions and 951 deletions
2
.github/workflows/backport.yml
vendored
2
.github/workflows/backport.yml
vendored
|
|
@ -36,7 +36,7 @@ jobs:
|
|||
permission-pull-requests: write
|
||||
permission-workflows: write
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
|
|
|
|||
2
.github/workflows/bot.yml
vendored
2
.github/workflows/bot.yml
vendored
|
|
@ -46,7 +46,7 @@ jobs:
|
|||
# https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: |
|
||||
|
|
|
|||
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
|
@ -52,7 +52,7 @@ jobs:
|
|||
runs-on: ${{ matrix.runner }}
|
||||
timeout-minutes: 60
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
|
|||
6
.github/workflows/check.yml
vendored
6
.github/workflows/check.yml
vendored
|
|
@ -43,7 +43,7 @@ jobs:
|
|||
runs-on: ubuntu-slim
|
||||
timeout-minutes: 3
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: trusted
|
||||
|
|
@ -95,7 +95,7 @@ jobs:
|
|||
runs-on: ubuntu-slim
|
||||
timeout-minutes: 3
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: trusted
|
||||
|
|
@ -137,7 +137,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
|
|||
2
.github/workflows/comment.yml
vendored
2
.github/workflows/comment.yml
vendored
|
|
@ -23,7 +23,7 @@ jobs:
|
|||
timeout-minutes: 2
|
||||
if: contains(github.event.comment.body, '@NixOS/nixpkgs-merge-bot merge')
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: |
|
||||
|
|
|
|||
10
.github/workflows/eval.yml
vendored
10
.github/workflows/eval.yml
vendored
|
|
@ -47,7 +47,7 @@ jobs:
|
|||
ciPinBumpCommit: ${{ steps.find-pinned-commit.outputs.ciPinBumpCommit }}
|
||||
ciPinBumpCommitShort: ${{ steps.find-pinned-commit.outputs.ciPinBumpCommitShort }}
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
path: trusted
|
||||
|
|
@ -55,7 +55,7 @@ jobs:
|
|||
ci/supportedVersions.nix
|
||||
|
||||
- name: Check out the PR at the test merge commit
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
ref: ${{ inputs.mergedSha }}
|
||||
|
|
@ -171,7 +171,7 @@ jobs:
|
|||
sudo mkswap /swap
|
||||
sudo swapon /swap
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
@ -256,7 +256,7 @@ jobs:
|
|||
statuses: write # creating 'Eval Summary' commit statuses
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
@ -471,7 +471,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
|
|||
8
.github/workflows/lint.yml
vendored
8
.github/workflows/lint.yml
vendored
|
|
@ -26,7 +26,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
@ -61,7 +61,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
@ -90,7 +90,7 @@ jobs:
|
|||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: .github/actions
|
||||
|
|
@ -134,7 +134,7 @@ jobs:
|
|||
runs-on: ubuntu-slim
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: true # Needed to run git fetch for large PRs.
|
||||
path: trusted
|
||||
|
|
|
|||
2
.github/workflows/merge-group.yml
vendored
2
.github/workflows/merge-group.yml
vendored
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
targetSha: ${{ steps.prepare.outputs.targetSha }}
|
||||
systems: ${{ steps.prepare.outputs.systems }}
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: |
|
||||
|
|
|
|||
2
.github/workflows/periodic-merge.yml
vendored
2
.github/workflows/periodic-merge.yml
vendored
|
|
@ -34,7 +34,7 @@ jobs:
|
|||
permission-contents: write
|
||||
permission-pull-requests: write
|
||||
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
|
|
|
|||
2
.github/workflows/pull-request-target.yml
vendored
2
.github/workflows/pull-request-target.yml
vendored
|
|
@ -36,7 +36,7 @@ jobs:
|
|||
systems: ${{ steps.prepare.outputs.systems }}
|
||||
touched: ${{ steps.prepare.outputs.touched }}
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout-cone-mode: true # default, for clarity
|
||||
|
|
|
|||
2
.github/workflows/review.yml
vendored
2
.github/workflows/review.yml
vendored
|
|
@ -20,7 +20,7 @@ jobs:
|
|||
runs-on: ubuntu-slim
|
||||
timeout-minutes: 2
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: |
|
||||
|
|
|
|||
2
.github/workflows/teams.yml
vendored
2
.github/workflows/teams.yml
vendored
|
|
@ -30,7 +30,7 @@ jobs:
|
|||
permission-pull-requests: write
|
||||
|
||||
- name: Fetch source
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout: |
|
||||
|
|
|
|||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
|
|
@ -19,7 +19,7 @@ jobs:
|
|||
push: ${{ steps.files.outputs.push }}
|
||||
targetSha: ${{ steps.prepare.outputs.targetSha }}
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
with:
|
||||
persist-credentials: false
|
||||
sparse-checkout-cone-mode: true # default, for clarity
|
||||
|
|
|
|||
|
|
@ -939,7 +939,7 @@ in
|
|||
lomiri-system-settings = runTest ./lomiri-system-settings.nix;
|
||||
lorri = handleTest ./lorri/default.nix { };
|
||||
luks = runTest ./luks.nix;
|
||||
lvm2 = handleTest ./lvm2 { };
|
||||
lvm2 = import ./lvm2 { inherit pkgs runTest; };
|
||||
lxc = runTestOn [ "x86_64-linux" "aarch64-linux" ] ./lxc;
|
||||
lxd-image-server = runTest ./lxd-image-server.nix;
|
||||
lxqt = runTest ./lxqt.nix;
|
||||
|
|
@ -1845,7 +1845,7 @@ in
|
|||
zammad = runTest ./zammad.nix;
|
||||
zenohd = runTest ./zenohd.nix;
|
||||
zeronet-conservancy = runTest ./zeronet-conservancy.nix;
|
||||
zfs = handleTest ./zfs.nix { };
|
||||
zfs = import ./zfs.nix { inherit system pkgs runTest; };
|
||||
zigbee2mqtt = runTest ./zigbee2mqtt.nix;
|
||||
zipline = runTest ./zipline.nix;
|
||||
zoneminder = runTest ./zoneminder.nix;
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
resp = json.loads(machine.succeed("curl localhost:8000/api/getconfig"))
|
||||
assert resp["success"] is False
|
||||
assert resp["reason"] == "No valid authentication was found"
|
||||
assert resp["reason"] == "No valid authentication."
|
||||
|
||||
resp = json.loads(machine.succeed("curl -H 'X-API-Key: api_key' localhost:8000/api/getconfig"))
|
||||
expected_version = "${config.nodes.machine.services.chhoto-url.package.version}"
|
||||
|
|
|
|||
|
|
@ -61,47 +61,63 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Encrypt key with empty key so boot should try keyfile and then fallback to empty passphrase
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
toplevel = nodes.machine.system.build.toplevel;
|
||||
boot-luks-missing-keyfile =
|
||||
nodes.machine.specialisation.boot-luks-missing-keyfile.configuration.system.build.toplevel;
|
||||
boot-luks-wrong-keyfile =
|
||||
nodes.machine.specialisation.boot-luks-wrong-keyfile.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Encrypt key with empty key so boot should try keyfile and then fallback to empty passphrase
|
||||
|
||||
|
||||
def grub_select_boot_luks_wrong_key_file():
|
||||
"""
|
||||
Selects "boot-luks" from the GRUB menu
|
||||
to trigger a login request.
|
||||
"""
|
||||
machine.send_monitor_command("sendkey down")
|
||||
machine.send_monitor_command("sendkey down")
|
||||
machine.send_monitor_command("sendkey ret")
|
||||
def grub_select_boot_luks_wrong_key_file():
|
||||
"""
|
||||
Selects "boot-luks" from the GRUB menu
|
||||
to trigger a login request.
|
||||
"""
|
||||
machine.send_monitor_command("sendkey down")
|
||||
machine.send_monitor_command("sendkey down")
|
||||
machine.send_monitor_command("sendkey ret")
|
||||
|
||||
def grub_select_boot_luks_missing_key_file():
|
||||
"""
|
||||
Selects "boot-luks" from the GRUB menu
|
||||
to trigger a login request.
|
||||
"""
|
||||
machine.send_monitor_command("sendkey down")
|
||||
machine.send_monitor_command("sendkey ret")
|
||||
def grub_select_boot_luks_missing_key_file():
|
||||
"""
|
||||
Selects "boot-luks" from the GRUB menu
|
||||
to trigger a login request.
|
||||
"""
|
||||
machine.send_monitor_command("sendkey down")
|
||||
machine.send_monitor_command("sendkey ret")
|
||||
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo "" | cryptsetup luksFormat /dev/vdb --batch-mode")
|
||||
machine.succeed("echo "" | cryptsetup luksOpen /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks-wrong-keyfile.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo "" | cryptsetup luksFormat /dev/vdb --batch-mode")
|
||||
machine.succeed("echo "" | cryptsetup luksOpen /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
machine.succeed("${boot-luks-wrong-keyfile}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Check if rootfs is on /dev/mapper/cryptroot
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
# Check if rootfs is on /dev/mapper/cryptroot
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
|
||||
# Choose boot-luks-missing-keyfile specialisation
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks-missing-keyfile.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Choose boot-luks-missing-keyfile specialisation
|
||||
machine.succeed(
|
||||
"mkdir -p /nix/var/nix/profiles",
|
||||
"ln -sfn ${toplevel} /nix/var/nix/profiles/system-1-link",
|
||||
"ln -sfn system-1-link /nix/var/nix/profiles/system",
|
||||
)
|
||||
|
||||
# Check if rootfs is on /dev/mapper/cryptroot
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
machine.succeed("${boot-luks-missing-keyfile}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Check if rootfs is on /dev/mapper/cryptroot
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Tests LUKS specifically with scripted stage 1. Remove in 26.11.
|
||||
|
||||
{ lib, pkgs, ... }:
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "luks";
|
||||
|
||||
|
|
@ -47,41 +47,59 @@
|
|||
|
||||
enableOCR = true;
|
||||
|
||||
testScript = ''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
toplevel = nodes.machine.system.build.toplevel;
|
||||
boot-luks = nodes.machine.specialisation.boot-luks.configuration.system.build.toplevel;
|
||||
boot-luks-custom-keymap =
|
||||
nodes.machine.specialisation.boot-luks-custom-keymap.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdc cryptroot2")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot2")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdc cryptroot2")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot2")
|
||||
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("${boot-luks}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Boot and decrypt the disk
|
||||
machine.start()
|
||||
machine.wait_for_text("Passphrase for")
|
||||
machine.send_chars("supersecret\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Boot and decrypt the disk
|
||||
machine.start()
|
||||
machine.wait_for_text("Passphrase for")
|
||||
machine.send_chars("supersecret\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
|
||||
# Boot from the encrypted disk with custom keymap
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks-custom-keymap.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# The new root is empty, so it has no /nix/var/nix/profiles. Without a
|
||||
# system profile, systemd-boot-builder finds zero generations and
|
||||
# bails. So we manually create the one profile link that we need.
|
||||
machine.succeed(
|
||||
"mkdir -p /nix/var/nix/profiles",
|
||||
"ln -sfn ${toplevel} /nix/var/nix/profiles/system-1-link",
|
||||
"ln -sfn system-1-link /nix/var/nix/profiles/system",
|
||||
)
|
||||
|
||||
# Boot and decrypt the disk
|
||||
machine.start()
|
||||
machine.wait_for_text("Passphrase for")
|
||||
machine.send_chars("havfkhfrkfl\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Boot from the encrypted disk with custom keymap
|
||||
machine.succeed("${boot-luks-custom-keymap}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
# Boot and decrypt the disk
|
||||
machine.start()
|
||||
machine.wait_for_text("Passphrase for")
|
||||
machine.send_chars("havfkhfrkfl\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
{
|
||||
system ? builtins.currentSystem,
|
||||
config ? { },
|
||||
pkgs ? import ../../.. { inherit system config; },
|
||||
lib ? pkgs.lib,
|
||||
pkgs,
|
||||
runTest,
|
||||
kernelVersionsToTest ? [
|
||||
"5.10"
|
||||
"5.15"
|
||||
|
|
@ -15,38 +13,36 @@
|
|||
|
||||
# For quickly running a test, the nixosTests.lvm2.lvm-thinpool-linux-latest attribute is recommended
|
||||
let
|
||||
tests =
|
||||
let
|
||||
callTest = p: lib.flip (import p) { inherit system pkgs; };
|
||||
in
|
||||
{
|
||||
thinpool = {
|
||||
test = callTest ./thinpool.nix;
|
||||
kernelFilter = lib.id;
|
||||
};
|
||||
# we would like to test all versions, but the kernel module currently does not compile against the other versions
|
||||
vdo = {
|
||||
test = callTest ./vdo.nix;
|
||||
kernelFilter = lib.filter (v: v == "latest");
|
||||
};
|
||||
inherit (pkgs) lib;
|
||||
|
||||
# systemd in stage 1
|
||||
raid-sd-stage-1 = {
|
||||
test = callTest ./systemd-stage-1.nix;
|
||||
kernelFilter = lib.filter (v: v != "5.15");
|
||||
flavour = "raid";
|
||||
};
|
||||
thinpool-sd-stage-1 = {
|
||||
test = callTest ./systemd-stage-1.nix;
|
||||
kernelFilter = lib.id;
|
||||
flavour = "thinpool";
|
||||
};
|
||||
vdo-sd-stage-1 = {
|
||||
test = callTest ./systemd-stage-1.nix;
|
||||
kernelFilter = lib.filter (v: v == "latest");
|
||||
flavour = "vdo";
|
||||
};
|
||||
tests = {
|
||||
thinpool = {
|
||||
test = ./thinpool.nix;
|
||||
kernelFilter = lib.id;
|
||||
};
|
||||
# we would like to test all versions, but the kernel module currently does not compile against the other versions
|
||||
vdo = {
|
||||
test = ./vdo.nix;
|
||||
kernelFilter = lib.filter (v: v == "latest");
|
||||
};
|
||||
|
||||
# systemd in stage 1
|
||||
raid-sd-stage-1 = {
|
||||
test = ./systemd-stage-1.nix;
|
||||
kernelFilter = lib.filter (v: v != "5.15");
|
||||
flavour = "raid";
|
||||
};
|
||||
thinpool-sd-stage-1 = {
|
||||
test = ./systemd-stage-1.nix;
|
||||
kernelFilter = lib.id;
|
||||
flavour = "thinpool";
|
||||
};
|
||||
vdo-sd-stage-1 = {
|
||||
test = ./systemd-stage-1.nix;
|
||||
kernelFilter = lib.filter (v: v == "latest");
|
||||
flavour = "vdo";
|
||||
};
|
||||
};
|
||||
in
|
||||
lib.listToAttrs (
|
||||
lib.filter (x: x.value != { }) (
|
||||
|
|
@ -61,18 +57,17 @@ lib.listToAttrs (
|
|||
lib.flip lib.mapAttrsToList tests (
|
||||
name: t:
|
||||
lib.nameValuePair "lvm-${name}-linux-${v'}" (
|
||||
lib.optionalAttrs (builtins.elem version (t.kernelFilter kernelVersionsToTest)) (
|
||||
t.test (
|
||||
{
|
||||
kernelPackages = pkgs."linuxPackages_${v'}";
|
||||
inherit mkXfsFlags;
|
||||
}
|
||||
// removeAttrs t [
|
||||
"test"
|
||||
"kernelFilter"
|
||||
]
|
||||
)
|
||||
)
|
||||
lib.optionalAttrs (builtins.elem version (t.kernelFilter kernelVersionsToTest)) (runTest {
|
||||
imports = [ t.test ];
|
||||
_module.args = {
|
||||
kernelPackages = pkgs."linuxPackages_${v'}";
|
||||
inherit mkXfsFlags;
|
||||
}
|
||||
// removeAttrs t [
|
||||
"test"
|
||||
"kernelFilter"
|
||||
];
|
||||
})
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
{
|
||||
lib,
|
||||
kernelPackages ? null,
|
||||
flavour,
|
||||
mkXfsFlags ? "",
|
||||
...
|
||||
}:
|
||||
let
|
||||
preparationCode =
|
||||
|
|
@ -66,57 +68,61 @@ let
|
|||
.${flavour};
|
||||
|
||||
in
|
||||
import ../make-test-python.nix (
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
name = "lvm2-${flavour}-systemd-stage-1";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
das_j
|
||||
helsinki-Jo
|
||||
];
|
||||
{
|
||||
name = "lvm2-${flavour}-systemd-stage-1";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
das_j
|
||||
helsinki-Jo
|
||||
];
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
imports = [ extraConfig ];
|
||||
# Use systemd-boot
|
||||
virtualisation = {
|
||||
emptyDiskImages = [
|
||||
8192
|
||||
8192
|
||||
];
|
||||
useBootLoader = true;
|
||||
useEFIBoot = true;
|
||||
# To boot off the LVM disk, we need to have a init script which comes from the Nix store.
|
||||
mountHostNixStore = true;
|
||||
};
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
nodes.machine =
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
imports = [ extraConfig ];
|
||||
# Use systemd-boot
|
||||
virtualisation = {
|
||||
emptyDiskImages = [
|
||||
8192
|
||||
8192
|
||||
];
|
||||
useBootLoader = true;
|
||||
useEFIBoot = true;
|
||||
# To boot off the LVM disk, we need to have a init script which comes from the Nix store.
|
||||
mountHostNixStore = true;
|
||||
};
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [ xfsprogs ];
|
||||
boot = {
|
||||
initrd.systemd = {
|
||||
enable = true;
|
||||
emergencyAccess = true;
|
||||
};
|
||||
initrd.services.lvm.enable = true;
|
||||
kernelPackages = lib.mkIf (kernelPackages != null) kernelPackages;
|
||||
};
|
||||
|
||||
specialisation.boot-lvm.configuration.virtualisation = {
|
||||
useDefaultFilesystems = false;
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/test_vg/test_lv";
|
||||
fsType = "xfs";
|
||||
};
|
||||
};
|
||||
|
||||
rootDevice = "/dev/test_vg/test_lv";
|
||||
environment.systemPackages = with pkgs; [ xfsprogs ];
|
||||
boot = {
|
||||
initrd.systemd = {
|
||||
enable = true;
|
||||
emergencyAccess = true;
|
||||
};
|
||||
initrd.services.lvm.enable = true;
|
||||
kernelPackages = lib.mkIf (kernelPackages != null) kernelPackages;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
specialisation.boot-lvm.configuration.virtualisation = {
|
||||
useDefaultFilesystems = false;
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/test_vg/test_lv";
|
||||
fsType = "xfs";
|
||||
};
|
||||
};
|
||||
|
||||
rootDevice = "/dev/test_vg/test_lv";
|
||||
};
|
||||
};
|
||||
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-lvm = nodes.machine.specialisation.boot-lvm.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Create a VG for the root
|
||||
${preparationCode}
|
||||
|
|
@ -124,7 +130,7 @@ import ../make-test-python.nix (
|
|||
machine.succeed("mkdir -p /mnt && mount /dev/test_vg/test_lv /mnt && echo hello > /mnt/test && umount /mnt")
|
||||
|
||||
# Boot from LVM
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-lvm.conf")
|
||||
machine.succeed("${boot-lvm}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
|
@ -135,5 +141,4 @@ import ../make-test-python.nix (
|
|||
assert "hello" in machine.succeed("cat /test")
|
||||
${extraCheck}
|
||||
'';
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,49 +1,48 @@
|
|||
{
|
||||
lib,
|
||||
kernelPackages ? null,
|
||||
mkXfsFlags ? "",
|
||||
...
|
||||
}:
|
||||
import ../make-test-python.nix (
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
name = "lvm2-thinpool";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
das_j
|
||||
helsinki-Jo
|
||||
];
|
||||
{
|
||||
name = "lvm2-thinpool";
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
das_j
|
||||
helsinki-Jo
|
||||
];
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
virtualisation.emptyDiskImages = [ 4096 ];
|
||||
services.lvm = {
|
||||
boot.thin.enable = true;
|
||||
dmeventd.enable = true;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [ xfsprogs ];
|
||||
environment.etc."lvm/lvm.conf".text = ''
|
||||
activation/thin_pool_autoextend_percent = 10
|
||||
activation/thin_pool_autoextend_threshold = 80
|
||||
'';
|
||||
boot = lib.mkIf (kernelPackages != null) { inherit kernelPackages; };
|
||||
nodes.machine =
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
virtualisation.emptyDiskImages = [ 4096 ];
|
||||
services.lvm = {
|
||||
boot.thin.enable = true;
|
||||
dmeventd.enable = true;
|
||||
};
|
||||
|
||||
testScript =
|
||||
let
|
||||
mkXfsFlags =
|
||||
lib.optionalString (lib.versionOlder kernelPackages.kernel.version "5.10") " -m bigtime=0 -m inobtcount=0 "
|
||||
+ lib.optionalString (lib.versionOlder kernelPackages.kernel.version "5.19") " -i nrext64=0 ";
|
||||
in
|
||||
''
|
||||
machine.succeed("vgcreate test_vg /dev/vdb")
|
||||
machine.succeed("lvcreate -L 512M -T test_vg/test_thin_pool")
|
||||
machine.succeed("lvcreate -n test_lv -V 16G --thinpool test_thin_pool test_vg")
|
||||
machine.succeed("mkfs.xfs ${mkXfsFlags} /dev/test_vg/test_lv")
|
||||
machine.succeed("mkdir /mnt; mount /dev/test_vg/test_lv /mnt")
|
||||
assert "/dev/mapper/test_vg-test_lv" == machine.succeed("findmnt -no SOURCE /mnt").strip()
|
||||
machine.succeed("dd if=/dev/zero of=/mnt/empty.file bs=1M count=1024")
|
||||
machine.succeed("journalctl -u dm-event.service | grep \"successfully resized\"")
|
||||
machine.succeed("umount /mnt")
|
||||
machine.succeed("vgchange -a n")
|
||||
environment.systemPackages = with pkgs; [ xfsprogs ];
|
||||
environment.etc."lvm/lvm.conf".text = ''
|
||||
activation/thin_pool_autoextend_percent = 10
|
||||
activation/thin_pool_autoextend_threshold = 80
|
||||
'';
|
||||
}
|
||||
)
|
||||
boot = lib.mkIf (kernelPackages != null) { inherit kernelPackages; };
|
||||
};
|
||||
|
||||
testScript =
|
||||
let
|
||||
mkXfsFlags =
|
||||
lib.optionalString (lib.versionOlder kernelPackages.kernel.version "5.10") " -m bigtime=0 -m inobtcount=0 "
|
||||
+ lib.optionalString (lib.versionOlder kernelPackages.kernel.version "5.19") " -i nrext64=0 ";
|
||||
in
|
||||
''
|
||||
machine.succeed("vgcreate test_vg /dev/vdb")
|
||||
machine.succeed("lvcreate -L 512M -T test_vg/test_thin_pool")
|
||||
machine.succeed("lvcreate -n test_lv -V 16G --thinpool test_thin_pool test_vg")
|
||||
machine.succeed("mkfs.xfs ${mkXfsFlags} /dev/test_vg/test_lv")
|
||||
machine.succeed("mkdir /mnt; mount /dev/test_vg/test_lv /mnt")
|
||||
assert "/dev/mapper/test_vg-test_lv" == machine.succeed("findmnt -no SOURCE /mnt").strip()
|
||||
machine.succeed("dd if=/dev/zero of=/mnt/empty.file bs=1M count=1024")
|
||||
machine.succeed("journalctl -u dm-event.service | grep \"successfully resized\"")
|
||||
machine.succeed("umount /mnt")
|
||||
machine.succeed("vgchange -a n")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,35 +1,34 @@
|
|||
{
|
||||
lib,
|
||||
kernelPackages ? null,
|
||||
mkXfsFlags ? "",
|
||||
...
|
||||
}:
|
||||
import ../make-test-python.nix (
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
name = "lvm2-vdo";
|
||||
meta.maintainers = [ ];
|
||||
{
|
||||
name = "lvm2-vdo";
|
||||
meta.maintainers = [ ];
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
# Minimum required size for VDO volume: 5063921664 bytes
|
||||
virtualisation.emptyDiskImages = [ 8192 ];
|
||||
services.lvm = {
|
||||
boot.vdo.enable = true;
|
||||
dmeventd.enable = true;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [ xfsprogs ];
|
||||
boot = lib.mkIf (kernelPackages != null) { inherit kernelPackages; };
|
||||
nodes.machine =
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
# Minimum required size for VDO volume: 5063921664 bytes
|
||||
virtualisation.emptyDiskImages = [ 8192 ];
|
||||
services.lvm = {
|
||||
boot.vdo.enable = true;
|
||||
dmeventd.enable = true;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [ xfsprogs ];
|
||||
boot = lib.mkIf (kernelPackages != null) { inherit kernelPackages; };
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.succeed("vgcreate test_vg /dev/vdb")
|
||||
machine.succeed("lvcreate --type vdo -n vdo_lv -L 6G -V 12G test_vg/vdo_pool_lv")
|
||||
machine.succeed("mkfs.xfs ${mkXfsFlags} -K /dev/test_vg/vdo_lv")
|
||||
machine.succeed("mkdir /mnt; mount /dev/test_vg/vdo_lv /mnt")
|
||||
assert "/dev/mapper/test_vg-vdo_lv" == machine.succeed("findmnt -no SOURCE /mnt").strip()
|
||||
machine.succeed("umount /mnt")
|
||||
machine.succeed("vdostats")
|
||||
machine.succeed("vgchange -a n")
|
||||
'';
|
||||
}
|
||||
)
|
||||
testScript = ''
|
||||
machine.succeed("vgcreate test_vg /dev/vdb")
|
||||
machine.succeed("lvcreate --type vdo -n vdo_lv -L 6G -V 12G test_vg/vdo_pool_lv")
|
||||
machine.succeed("mkfs.xfs ${mkXfsFlags} -K /dev/test_vg/vdo_lv")
|
||||
machine.succeed("mkdir /mnt; mount /dev/test_vg/vdo_lv /mnt")
|
||||
assert "/dev/mapper/test_vg-vdo_lv" == machine.succeed("findmnt -no SOURCE /mnt").strip()
|
||||
machine.succeed("umount /mnt")
|
||||
machine.succeed("vdostats")
|
||||
machine.succeed("vgchange -a n")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, pkgs, ... }:
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "systemd-initrd-btrfs-raid";
|
||||
|
||||
|
|
@ -33,21 +33,27 @@
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Create RAID
|
||||
machine.succeed("mkfs.btrfs -d raid0 /dev/vdb /dev/vdc")
|
||||
machine.succeed("mkdir -p /mnt && mount /dev/vdb /mnt && echo hello > /mnt/test && umount /mnt")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-btrfs-raid = nodes.machine.specialisation.boot-btrfs-raid.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Create RAID
|
||||
machine.succeed("mkfs.btrfs -d raid0 /dev/vdb /dev/vdc")
|
||||
machine.succeed("mkdir -p /mnt && mount /dev/vdb /mnt && echo hello > /mnt/test && umount /mnt")
|
||||
|
||||
# Boot from the RAID
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-btrfs-raid.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Boot from the RAID
|
||||
machine.succeed("${boot-btrfs-raid}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
# Ensure we have successfully booted from the RAID
|
||||
assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
|
||||
assert "/dev/vdb on / type btrfs" in machine.succeed("mount")
|
||||
assert "hello" in machine.succeed("cat /test")
|
||||
assert "Total devices 2" in machine.succeed("btrfs filesystem show")
|
||||
'';
|
||||
# Ensure we have successfully booted from the RAID
|
||||
assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
|
||||
assert "/dev/vdb on / type btrfs" in machine.succeed("mount")
|
||||
assert "hello" in machine.succeed("cat /test")
|
||||
assert "Total devices 2" in machine.succeed("btrfs filesystem show")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
lib,
|
||||
pkgs,
|
||||
hostPkgs,
|
||||
...
|
||||
}:
|
||||
|
|
@ -43,19 +42,25 @@
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("PASSWORD=supersecret SYSTEMD_LOG_LEVEL=debug systemd-cryptenroll --fido2-device=auto /dev/vdb |& systemd-cat")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-luks = nodes.machine.specialisation.boot-luks.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("PASSWORD=supersecret SYSTEMD_LOG_LEVEL=debug systemd-cryptenroll --fido2-device=auto /dev/vdb |& systemd-cat")
|
||||
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("${boot-luks}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Boot and decrypt the disk
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
# Boot and decrypt the disk
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,20 +42,26 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("cryptsetup luksFormat -q --iter-time=1 -d ${keyfile} /dev/vdb")
|
||||
machine.succeed("cryptsetup luksOpen --key-file ${keyfile} /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-luks = nodes.machine.specialisation.boot-luks.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("cryptsetup luksFormat -q --iter-time=1 -d ${keyfile} /dev/vdb")
|
||||
machine.succeed("cryptsetup luksOpen --key-file ${keyfile} /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("${boot-luks}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Boot and decrypt the disk
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
# Boot and decrypt the disk
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, pkgs, ... }:
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "systemd-initrd-luks-password";
|
||||
|
||||
|
|
@ -39,30 +39,36 @@
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-luks = nodes.machine.specialisation.boot-luks.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdc cryptroot2")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot2")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdc cryptroot2")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot2")
|
||||
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("${boot-luks}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Boot and decrypt the disk
|
||||
machine.start()
|
||||
machine.wait_for_console_text("Please enter passphrase for disk cryptroot")
|
||||
machine.send_console("supersecret\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Boot and decrypt the disk
|
||||
machine.start()
|
||||
machine.wait_for_console_text("Please enter passphrase for disk cryptroot")
|
||||
machine.send_console("supersecret\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount"), "/dev/mapper/cryptroot do not appear in mountpoints list"
|
||||
assert "/dev/mapper/cryptroot2 on /cryptroot2 type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount"), "/dev/mapper/cryptroot do not appear in mountpoints list"
|
||||
assert "/dev/mapper/cryptroot2 on /cryptroot2 type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,21 +35,27 @@
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
machine.succeed("PASSWORD=supersecret SYSTEMD_LOG_LEVEL=debug systemd-cryptenroll --tpm2-pcrs= --tpm2-device=auto /dev/vdb |& systemd-cat")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-luks = nodes.machine.specialisation.boot-luks.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Create encrypted volume
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n supersecret | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
machine.succeed("PASSWORD=supersecret SYSTEMD_LOG_LEVEL=debug systemd-cryptenroll --tpm2-pcrs= --tpm2-device=auto /dev/vdb |& systemd-cat")
|
||||
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("${boot-luks}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Boot and decrypt the disk
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
# Boot and decrypt the disk
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,33 +82,39 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-luks = nodes.machine.specialisation.boot-luks.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksOpen -q /dev/vdb cryptroot")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot")
|
||||
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksOpen -q /dev/vdc cryptroot2")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot2")
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
|
||||
machine.succeed("echo -n ${passphrase} | cryptsetup luksOpen -q /dev/vdc cryptroot2")
|
||||
machine.succeed("mkfs.ext4 /dev/mapper/cryptroot2")
|
||||
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
# Boot from the encrypted disk
|
||||
machine.succeed("${boot-luks}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
|
||||
# Boot and decrypt the disk. This part of the test is SLOW.
|
||||
machine.start()
|
||||
machine.wait_for_unit("unl0kr-agent.service")
|
||||
machine.screenshot("prompt")
|
||||
machine.send_chars("${passphrase}")
|
||||
machine.screenshot("pw")
|
||||
machine.send_chars("\n")
|
||||
machine.switch_root()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Boot and decrypt the disk. This part of the test is SLOW.
|
||||
machine.start()
|
||||
machine.wait_for_unit("unl0kr-agent.service")
|
||||
machine.screenshot("prompt")
|
||||
machine.send_chars("${passphrase}")
|
||||
machine.screenshot("pw")
|
||||
machine.send_chars("\n")
|
||||
machine.switch_root()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount"), "/dev/mapper/cryptroot do not appear in mountpoints list"
|
||||
assert "/dev/mapper/cryptroot2 on /cryptroot2 type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount"), "/dev/mapper/cryptroot do not appear in mountpoints list"
|
||||
assert "/dev/mapper/cryptroot2 on /cryptroot2 type ext4" in machine.succeed("mount")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, pkgs, ... }:
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "systemd-initrd-swraid";
|
||||
|
||||
|
|
@ -41,30 +41,36 @@
|
|||
specialisation.build-old-initrd.configuration.boot.initrd.systemd.enable = lib.mkForce false;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Create RAID
|
||||
machine.succeed("mdadm --create --force /dev/md0 -n 2 --level=raid1 /dev/vdb /dev/vdc --metadata=0.90 --bitmap=internal")
|
||||
machine.succeed("mkfs.ext4 -L testraid /dev/md0")
|
||||
machine.succeed("mkdir -p /mnt && mount /dev/md0 /mnt && echo hello > /mnt/test && umount /mnt")
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
boot-swraid = nodes.machine.specialisation.boot-swraid.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
# Create RAID
|
||||
machine.succeed("mdadm --create --force /dev/md0 -n 2 --level=raid1 /dev/vdb /dev/vdc --metadata=0.90 --bitmap=internal")
|
||||
machine.succeed("mkfs.ext4 -L testraid /dev/md0")
|
||||
machine.succeed("mkdir -p /mnt && mount /dev/md0 /mnt && echo hello > /mnt/test && umount /mnt")
|
||||
|
||||
# Boot from the RAID
|
||||
machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-swraid.conf")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Boot from the RAID
|
||||
machine.succeed("${boot-swraid}/bin/switch-to-configuration boot")
|
||||
machine.succeed("sync")
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
# Ensure we have successfully booted from the RAID
|
||||
assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
|
||||
assert "/dev/md0 on / type ext4" in machine.succeed("mount")
|
||||
assert "hello" in machine.succeed("cat /test")
|
||||
assert "md0" in machine.succeed("cat /proc/mdstat")
|
||||
# Ensure we have successfully booted from the RAID
|
||||
assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
|
||||
assert "/dev/md0 on / type ext4" in machine.succeed("mount")
|
||||
assert "hello" in machine.succeed("cat /test")
|
||||
assert "md0" in machine.succeed("cat /proc/mdstat")
|
||||
|
||||
# Verify the RAID array was properly auto-detected and assembled
|
||||
detail = machine.succeed("mdadm --detail /dev/md0")
|
||||
assert "raid1" in detail, f"Expected raid1 in mdadm detail output: {detail}"
|
||||
assert "/dev/vdb" in detail, f"Expected /dev/vdb in array: {detail}"
|
||||
assert "/dev/vdc" in detail, f"Expected /dev/vdc in array: {detail}"
|
||||
# Verify the RAID array was properly auto-detected and assembled
|
||||
detail = machine.succeed("mdadm --detail /dev/md0")
|
||||
assert "raid1" in detail, f"Expected raid1 in mdadm detail output: {detail}"
|
||||
assert "/dev/vdb" in detail, f"Expected /dev/vdb in array: {detail}"
|
||||
assert "/dev/vdc" in detail, f"Expected /dev/vdc in array: {detail}"
|
||||
|
||||
machine.wait_for_unit("mdmonitor.service")
|
||||
'';
|
||||
machine.wait_for_unit("mdmonitor.service")
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
let
|
||||
supportedSystems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"i686-linux"
|
||||
];
|
||||
in
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
nodes = {
|
||||
server =
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
services.pixelfed = {
|
||||
enable = true;
|
||||
|
|
@ -19,16 +19,25 @@
|
|||
);
|
||||
settings."FORCE_HTTPS_URLS" = false;
|
||||
};
|
||||
|
||||
# to prevent getting killed by oom
|
||||
virtualisation.memorySize = 2048;
|
||||
virtualisation.emptyDiskImages = [ 4096 ];
|
||||
swapDevices = [ { device = "/dev/vdb"; } ];
|
||||
|
||||
# allows running nixos test on qemu without kvm, eg. github actions on aarch64-linux
|
||||
systemd.settings.Manager.DefaultDeviceTimeoutSec = lib.mkForce 1800;
|
||||
boot.initrd.kernelModules = [ "virtio_console" ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# Wait for Pixelfed PHP pool
|
||||
server.wait_for_unit("phpfpm-pixelfed.service")
|
||||
server.wait_for_unit("phpfpm-pixelfed.service", timeout=1800)
|
||||
# Wait for NGINX
|
||||
server.wait_for_unit("nginx.service")
|
||||
server.wait_for_unit("nginx.service", timeout=1800)
|
||||
# Wait for HTTP port
|
||||
server.wait_for_open_port(80)
|
||||
server.wait_for_open_port(80, timeout=1800)
|
||||
# Access the homepage.
|
||||
server.succeed("curl -H 'Host: pixelfed.local' http://localhost")
|
||||
# Create an account
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
system ? builtins.currentSystem,
|
||||
config ? { },
|
||||
pkgs ? import ../.. { inherit system config; },
|
||||
system,
|
||||
pkgs,
|
||||
runTest,
|
||||
}:
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
|
||||
makeZfsTest =
|
||||
{
|
||||
|
|
@ -15,11 +14,9 @@ let
|
|||
zfsPackage,
|
||||
extraTest ? "",
|
||||
}:
|
||||
makeTest {
|
||||
runTest {
|
||||
name = zfsPackage.kernelModuleAttribute;
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ elvishjerricco ];
|
||||
};
|
||||
meta.maintainers = with lib.maintainers; [ elvishjerricco ];
|
||||
|
||||
nodes.machine =
|
||||
{
|
||||
|
|
@ -124,82 +121,90 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed(
|
||||
"zpool status",
|
||||
"parted --script /dev/vdb mklabel msdos",
|
||||
"parted --script /dev/vdb -- mkpart primary 1024M -1s",
|
||||
"parted --script /dev/vdc mklabel msdos",
|
||||
"parted --script /dev/vdc -- mkpart primary 1024M -1s",
|
||||
)
|
||||
testScript =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
samba = nodes.machine.specialisation.samba.configuration.system.build.toplevel;
|
||||
encryption = nodes.machine.specialisation.encryption.configuration.system.build.toplevel;
|
||||
forcepool = nodes.machine.specialisation.forcepool.configuration.system.build.toplevel;
|
||||
in
|
||||
# python
|
||||
''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed(
|
||||
"zpool status",
|
||||
"parted --script /dev/vdb mklabel msdos",
|
||||
"parted --script /dev/vdb -- mkpart primary 1024M -1s",
|
||||
"parted --script /dev/vdc mklabel msdos",
|
||||
"parted --script /dev/vdc -- mkpart primary 1024M -1s",
|
||||
)
|
||||
|
||||
with subtest("sharesmb works"):
|
||||
machine.succeed(
|
||||
"zpool create rpool /dev/vdb1",
|
||||
"zfs create -o mountpoint=legacy rpool/root",
|
||||
# shared datasets cannot have legacy mountpoint
|
||||
"zfs create rpool/shared_smb",
|
||||
"bootctl set-default nixos-generation-1-specialisation-samba.conf",
|
||||
"sync",
|
||||
)
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("zfs set sharesmb=on rpool/shared_smb")
|
||||
machine.succeed(
|
||||
"smbclient -gNL localhost | grep rpool_shared_smb",
|
||||
"umount /tmp/mnt",
|
||||
"zpool destroy rpool",
|
||||
)
|
||||
with subtest("sharesmb works"):
|
||||
machine.succeed(
|
||||
"zpool create rpool /dev/vdb1",
|
||||
"zfs create -o mountpoint=legacy rpool/root",
|
||||
# shared datasets cannot have legacy mountpoint
|
||||
"zfs create rpool/shared_smb",
|
||||
"${samba}/bin/switch-to-configuration boot",
|
||||
"sync",
|
||||
)
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed("zfs set sharesmb=on rpool/shared_smb")
|
||||
machine.succeed(
|
||||
"smbclient -gNL localhost | grep rpool_shared_smb",
|
||||
"umount /tmp/mnt",
|
||||
"zpool destroy rpool",
|
||||
)
|
||||
|
||||
with subtest("encryption works"):
|
||||
machine.succeed(
|
||||
'echo password | zpool create -O mountpoint=legacy '
|
||||
+ "-O encryption=aes-256-gcm -O keyformat=passphrase automatic /dev/vdb1",
|
||||
"zpool create -O mountpoint=legacy manual /dev/vdc1",
|
||||
"echo otherpass | zfs create "
|
||||
+ "-o encryption=aes-256-gcm -o keyformat=passphrase manual/encrypted",
|
||||
"zfs create -o encryption=aes-256-gcm -o keyformat=passphrase "
|
||||
+ "-o keylocation=http://localhost/zfskey manual/httpkey",
|
||||
"bootctl set-default nixos-generation-1-specialisation-encryption.conf",
|
||||
"sync",
|
||||
"zpool export automatic",
|
||||
"zpool export manual",
|
||||
)
|
||||
machine.crash()
|
||||
machine.start()
|
||||
machine.wait_for_console_text("Starting password query on")
|
||||
machine.send_console("password\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed(
|
||||
"zfs get -Ho value keystatus manual/encrypted | grep -Fx unavailable",
|
||||
"echo otherpass | zfs load-key manual/encrypted",
|
||||
"systemctl start manual-encrypted.mount",
|
||||
"zfs load-key manual/httpkey",
|
||||
"systemctl start manual-httpkey.mount",
|
||||
"umount /automatic /manual/encrypted /manual/httpkey /manual",
|
||||
"zpool destroy automatic",
|
||||
"zpool destroy manual",
|
||||
)
|
||||
with subtest("encryption works"):
|
||||
machine.succeed(
|
||||
'echo password | zpool create -O mountpoint=legacy '
|
||||
+ "-O encryption=aes-256-gcm -O keyformat=passphrase automatic /dev/vdb1",
|
||||
"zpool create -O mountpoint=legacy manual /dev/vdc1",
|
||||
"echo otherpass | zfs create "
|
||||
+ "-o encryption=aes-256-gcm -o keyformat=passphrase manual/encrypted",
|
||||
"zfs create -o encryption=aes-256-gcm -o keyformat=passphrase "
|
||||
+ "-o keylocation=http://localhost/zfskey manual/httpkey",
|
||||
"${encryption}/bin/switch-to-configuration boot",
|
||||
"sync",
|
||||
"zpool export automatic",
|
||||
"zpool export manual",
|
||||
)
|
||||
machine.crash()
|
||||
machine.start()
|
||||
machine.wait_for_console_text("Starting password query on")
|
||||
machine.send_console("password\n")
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed(
|
||||
"zfs get -Ho value keystatus manual/encrypted | grep -Fx unavailable",
|
||||
"echo otherpass | zfs load-key manual/encrypted",
|
||||
"systemctl start manual-encrypted.mount",
|
||||
"zfs load-key manual/httpkey",
|
||||
"systemctl start manual-httpkey.mount",
|
||||
"umount /automatic /manual/encrypted /manual/httpkey /manual",
|
||||
"zpool destroy automatic",
|
||||
"zpool destroy manual",
|
||||
)
|
||||
|
||||
with subtest("boot.zfs.forceImportAll works"):
|
||||
machine.succeed(
|
||||
"rm /etc/hostid",
|
||||
"zgenhostid deadcafe",
|
||||
"zpool create forcepool /dev/vdb1 -O mountpoint=legacy",
|
||||
"bootctl set-default nixos-generation-1-specialisation-forcepool.conf",
|
||||
"rm /etc/hostid",
|
||||
"sync",
|
||||
)
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.fail("zpool import forcepool")
|
||||
machine.succeed(
|
||||
"systemctl start forcepool.mount",
|
||||
"mount | grep forcepool",
|
||||
)
|
||||
''
|
||||
+ extraTest;
|
||||
with subtest("boot.zfs.forceImportAll works"):
|
||||
machine.succeed(
|
||||
"rm /etc/hostid",
|
||||
"zgenhostid deadcafe",
|
||||
"zpool create forcepool /dev/vdb1 -O mountpoint=legacy",
|
||||
"${forcepool}/bin/switch-to-configuration boot",
|
||||
"rm /etc/hostid",
|
||||
"sync",
|
||||
)
|
||||
machine.crash()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.fail("zpool import forcepool")
|
||||
machine.succeed(
|
||||
"systemctl start forcepool.mount",
|
||||
"mount | grep forcepool",
|
||||
)
|
||||
''
|
||||
+ extraTest;
|
||||
|
||||
};
|
||||
|
||||
|
|
@ -250,7 +255,7 @@ in
|
|||
systemdStage1 = true;
|
||||
}).zfsroot;
|
||||
|
||||
expand-partitions = makeTest {
|
||||
expand-partitions = runTest {
|
||||
name = "multi-disk-zfs";
|
||||
nodes = {
|
||||
machine =
|
||||
|
|
|
|||
|
|
@ -56,8 +56,8 @@ let
|
|||
}
|
||||
else
|
||||
{
|
||||
version = "2026.1";
|
||||
hash = "sha256-2VoxP1bbfgXuOiHlD1gv3uUXbC9guQC6skYf2Vxegb4=";
|
||||
version = "2026.2";
|
||||
hash = "sha256-0n5EVegkYXeVI2Z5hjGg2tny4fVnQApsuFShaNzAUN0=";
|
||||
};
|
||||
|
||||
in
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@
|
|||
# reference: https://boringssl.googlesource.com/boringssl/+/refs/tags/0.20250818.0/BUILDING.md
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "boringssl";
|
||||
version = "0.20260508.0";
|
||||
version = "0.20260526.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://boringssl.googlesource.com/boringssl";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-7fW0OmOj+Hduq5YCc5xpcfICpC8qAc/05/UMgZ70jhM=";
|
||||
hash = "sha256-SmyImyzGn7v2b5qGJbMmQZX5bODA9i6+8jy3uGwOawA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
|||
|
|
@ -3,24 +3,24 @@
|
|||
|
||||
let
|
||||
pname = "brave";
|
||||
version = "1.90.124";
|
||||
version = "1.90.128";
|
||||
|
||||
allArchives = {
|
||||
aarch64-linux = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb";
|
||||
hash = "sha256-+ZJxwwL5jPO49anc+6aBA5jlAsFw7BSHt6lXjFseJ3c=";
|
||||
hash = "sha256-tRFlzHOz2pMpSrdp6vst9zuKhmpqWga3FzLWglLAgwc=";
|
||||
};
|
||||
x86_64-linux = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||
hash = "sha256-mcqe531FqdBVIgZrQLOVDgIi2JBPSKadD4fCLQMimwI=";
|
||||
hash = "sha256-BBOpwAM7KVLCd6v47q6ndA6Lb9LsI8dQXB/evwBXV/w=";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-arm64.zip";
|
||||
hash = "sha256-u3KmZffPQpHzS9IxZ7UsL7D6ETGJxExil20vmD6flMo=";
|
||||
hash = "sha256-pJFvRP8GKTv+b2OSaAhiabIXxSJjelZPsYROTuHw0qo=";
|
||||
};
|
||||
x86_64-darwin = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-x64.zip";
|
||||
hash = "sha256-jSWamdWVBCR9uPY/i0awwdhTG3pD/iVdJIeYBnG747k=";
|
||||
hash = "sha256-DgqaYEZJ6je3N/BDwIiwXrJ+w6qrBJse6d9LtKq7Dac=";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -8,17 +8,17 @@
|
|||
}:
|
||||
|
||||
maven.buildMavenPackage (finalAttrs: {
|
||||
version = "13.4.2";
|
||||
version = "13.5.0";
|
||||
pname = "checkstyle";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "checkstyle";
|
||||
repo = "checkstyle";
|
||||
tag = "checkstyle-${finalAttrs.version}";
|
||||
hash = "sha256-0ENLO/hP/MXVU358Ys83cH1Adl8CTbT/zcG9/tOBIC8=";
|
||||
hash = "sha256-2v6ccNG4t8cXObMdztX+Y+PVuiqt4Fd5IR7j5bk5IaA=";
|
||||
};
|
||||
|
||||
mvnHash = "sha256-eRNJOrSP9GcuF226kZi5ef3shm1PdTEsGvjpi46cfSw=";
|
||||
mvnHash = "sha256-M830+mpd7fAbzZGUQiTJZUKPe64zYUKp6QRqTrSOy7w=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
maven
|
||||
|
|
|
|||
|
|
@ -8,23 +8,23 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "chhoto-url";
|
||||
version = "7.1.5";
|
||||
version = "7.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SinTan1729";
|
||||
repo = "chhoto-url";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-TREBriuK7k3ZBDkdQ5gGdptWCG/5UOdhoWcOj1Ppd/8=";
|
||||
hash = "sha256-B6bMuy/EEveYtQtGBO5CNeEUlPK8eQ412k+SwlRPm2M=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/actix";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/{main.rs,services.rs} \
|
||||
substituteInPlace src/{main.rs,services/get.rs,services/utils.rs} \
|
||||
--replace-fail "./resources/" "${placeholder "out"}/share/chhoto-url/resources/"
|
||||
'';
|
||||
|
||||
cargoHash = "sha256-S+fWxhPRB+JZPjWQkww9VYtYfc9vnXCZgUZTu+ND1So=";
|
||||
cargoHash = "sha256-9EVGsOipx9ObygpM37iZYLnhYjSMHFhHTDvjHkLWLz8=";
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/chhoto-url
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{ mkDprintPlugin }:
|
||||
mkDprintPlugin {
|
||||
description = "Biome (JS/TS/JSON) wrapper plugin";
|
||||
hash = "sha256-k+o4eiLwzoCF6MPX0dEn/3modSwvFYFuzMe47cdJWo8=";
|
||||
hash = "sha256-0zbtVqdL86r69ahRS61qJ2r7qUtRzfY1qO1FL+SWt+g=";
|
||||
initConfig = {
|
||||
configExcludes = [ "**/node_modules" ];
|
||||
configKey = "biome";
|
||||
|
|
@ -17,6 +17,6 @@ mkDprintPlugin {
|
|||
};
|
||||
pname = "dprint-plugin-biome";
|
||||
updateUrl = "https://plugins.dprint.dev/dprint/biome/latest.json";
|
||||
url = "https://plugins.dprint.dev/biome-0.12.11.wasm";
|
||||
version = "0.12.11";
|
||||
url = "https://plugins.dprint.dev/biome-0.12.12.wasm";
|
||||
version = "0.12.12";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,29 +3,30 @@
|
|||
stdenv,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
electron_40,
|
||||
electron_41,
|
||||
dart-sass,
|
||||
mpv-unwrapped,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
pnpm_10_29_2,
|
||||
darwin,
|
||||
actool,
|
||||
copyDesktopItems,
|
||||
makeDesktopItem,
|
||||
nix-update-script,
|
||||
}:
|
||||
let
|
||||
pname = "feishin";
|
||||
version = "1.11.0";
|
||||
version = "1.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jeffvli";
|
||||
repo = "feishin";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-TSjgjNHhPSZ4k7zZTH5e3FCkl6d7B/2w2WCt0S5OW0g=";
|
||||
hash = "sha256-v6dWzEB1+IK4bHmDo8Rr5e0Xi3OWKcm+UPBmBiSfdZ0=";
|
||||
};
|
||||
|
||||
electron = electron_40;
|
||||
electron = electron_41;
|
||||
in
|
||||
buildNpmPackage {
|
||||
inherit pname version;
|
||||
|
|
@ -43,7 +44,7 @@ buildNpmPackage {
|
|||
;
|
||||
pnpm = pnpm_10_29_2;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-2fLqqCbbCIPoW/wGzsZOpZd5tnvyrLYlrVhbFWixlDM=";
|
||||
hash = "sha256-zNOGJ24G0xcgsGK4DmbBm7d1PHTp7IJS+RTALGRtfDg=";
|
||||
};
|
||||
|
||||
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
|
|
@ -52,17 +53,15 @@ buildNpmPackage {
|
|||
pnpm_10_29_2
|
||||
]
|
||||
++ lib.optionals (stdenv.hostPlatform.isLinux) [ copyDesktopItems ]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.autoSignDarwinBinariesHook ];
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
darwin.autoSignDarwinBinariesHook
|
||||
actool
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# release/app dependencies are installed on preConfigure
|
||||
substituteInPlace package.json \
|
||||
--replace-fail '"postinstall": "electron-builder install-app-deps",' ""
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
# https://github.com/electron/electron/issues/31121
|
||||
substituteInPlace src/main/index.ts \
|
||||
--replace-fail "process.resourcesPath" "'$out/share/feishin/resources'"
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
|
|
|
|||
|
|
@ -29,13 +29,13 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fluent-bit";
|
||||
version = "5.0.5";
|
||||
version = "5.0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fluent";
|
||||
repo = "fluent-bit";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-IPTM0jtlu3DZJRXCD0IE13ASGbJsDygPEuDXsiQP7Ts=";
|
||||
hash = "sha256-VXf1F0TZFi8d7gil8yc3WWA/0X3QyYPnbA3luE1DE98=";
|
||||
};
|
||||
|
||||
# The source build documentation covers some dependencies and CMake options.
|
||||
|
|
|
|||
|
|
@ -212,6 +212,11 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
libsecret
|
||||
];
|
||||
|
||||
# This is required for building the rust build.rs script when cross compiling
|
||||
depsBuildBuild = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
|
||||
buildPackages.stdenv.cc
|
||||
];
|
||||
|
||||
env = {
|
||||
# required to support pthread_cancel()
|
||||
NIX_LDFLAGS =
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "grafana";
|
||||
version = "13.0.1+security-01";
|
||||
version = "13.0.2";
|
||||
|
||||
subPackages = [
|
||||
"pkg/cmd/grafana"
|
||||
|
|
@ -33,7 +33,7 @@ buildGoModule (finalAttrs: {
|
|||
owner = "grafana";
|
||||
repo = "grafana";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-v/6a0Xlj11nZ0u8xtFzw5i674rB1YV21iLCuLc5af+I=";
|
||||
hash = "sha256-knalINdJPFrvj6HNxWPV6wu6TSkrRvgkZjOnECOsWwU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
@ -55,12 +55,12 @@ buildGoModule (finalAttrs: {
|
|||
# Since this is not a dependency attribute the buildPackages has to be specified.
|
||||
offlineCache = buildPackages.yarn-berry_4-fetcher.fetchYarnBerryDeps {
|
||||
inherit (finalAttrs) src missingHashes patches;
|
||||
hash = "sha256-uOl9PemVZiKwGfhLUpAAByMvt5A8JyA5qyJ6Cdl6od4=";
|
||||
hash = "sha256-NXDXmed2TsMQS99breDt0Ky6X2ZyuWkJ5KyKz5Apkt8=";
|
||||
};
|
||||
|
||||
disallowedRequisites = [ finalAttrs.offlineCache ];
|
||||
|
||||
vendorHash = "sha256-PEGgrkTguHvqrclzvZDQ7yk6rwTKDLXdUSjeaQFnYtU=";
|
||||
vendorHash = "sha256-rFGwtplr+n0qgIulycNQ5L/lh4ZFoHCrYeIfbb+e/h4=";
|
||||
|
||||
# Grafana seems to just set it to the latest version available
|
||||
# nowadays.
|
||||
|
|
|
|||
|
|
@ -4,17 +4,23 @@
|
|||
fetchFromGitHub,
|
||||
makeBinaryWrapper,
|
||||
writeText,
|
||||
ocaml,
|
||||
findlib,
|
||||
zarith,
|
||||
camlp5,
|
||||
camlp-streams,
|
||||
fmt,
|
||||
pcre2,
|
||||
ocamlPackages,
|
||||
ledit,
|
||||
bash,
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (ocamlPackages)
|
||||
ocaml
|
||||
findlib
|
||||
zarith
|
||||
camlp5
|
||||
camlp-streams
|
||||
fmt
|
||||
pcre2
|
||||
;
|
||||
in
|
||||
|
||||
let
|
||||
ocamlPath = lib.makeSearchPath "/lib/ocaml/${ocaml.version}/site-lib" [
|
||||
camlp5
|
||||
|
|
@ -12,16 +12,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "hyfetch";
|
||||
version = "2.0.5";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hykilpikonna";
|
||||
repo = "hyfetch";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-vrTmjg6CZczImueN3JxKg1vYXAaEDYHYG7UaZeupYPU=";
|
||||
hash = "sha256-/aOVgl93n9IL5lDzY1REg88BXhlqtDDjrZnkD4rQ9aw=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-SieVB0zwer9Ksio3l87gUZkVJMwb+Da/NjBi5f57tJc=";
|
||||
cargoHash = "sha256-uTIzLY5H+zoCsC/YalA0ImnJ817KhU5sXHWkbvWEfVk=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
|
|
@ -59,7 +59,9 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
versionCheckKeepEnvironment = [ "PATH" ];
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [ "--version-regex=^(\\d+\\.\\d+\\.\\d+)$" ];
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Neofetch with LGBTQ+ pride flags";
|
||||
|
|
@ -81,6 +83,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
|||
isabelroses
|
||||
nullcube
|
||||
defelo
|
||||
Misaka13514
|
||||
];
|
||||
};
|
||||
})
|
||||
|
|
|
|||
96
pkgs/by-name/ja/jackett/deps.json
generated
96
pkgs/by-name/ja/jackett/deps.json
generated
|
|
@ -61,18 +61,18 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.Cryptography.Internal",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-Q+hF4swlFzafwMDnVSH/GwFBdwO3e+l3VYPcD/NStYw="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-UwBbUhfCxg5B3llggin1UtoaGYdy9ifoYs1MT3WiIJw="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.DataProtection",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-o854THp3eNnY+sJssLxNQtDbDrp21QX1TJurYWu04g4="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-8bK7MDVhISTXmEFdcFcnJUleDaPAZkA8fWPAHV6XFeg="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.DataProtection.Abstractions",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-7muJ67Xvw4PynXKRDQZnLKwFdbGutkx/p3bJfxph2KM="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-YSVo0oww1xoG7Hef+roLwGNX6dQs7ZG10f3Ij7w6z1w="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.Http",
|
||||
|
|
@ -91,13 +91,13 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.JsonPatch",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-X7/fHaxXSbZCg5EKFLfX6tjDtOXpgiPNirF/ifaIy1E="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-+AxAcxXNHLrELpW0KZd54TGMqPwe2bYaxUwNS64F8oQ="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.Mvc.NewtonsoftJson",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-kNNf6RnVm7SgT0eEBSPDE3nXRwxL3qYln6gGzIszKTc="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-ephL6fJDFR+0rrebEH92IDpoMadJLef98L7mNKHTAUo="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.AspNetCore.WebUtilities",
|
||||
|
|
@ -126,8 +126,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.Bcl.AsyncInterfaces",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-I2sbQ4JwlDU/ocYsfgq6XLd7FDTIqxqsl7Bq8k10m5U="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-kCHVu7LDlMXlvDvFo9C3zbISV2t52s+iZMpp0/JX3iw="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Bcl.TimeProvider",
|
||||
|
|
@ -146,8 +146,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Configuration",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-WDOS1x9YpEsJ9z6xI4h6R+HGGck3l/5kHbQxzjMSfgk="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-wfj9Vp3innwgJGToOyGqhW2lyFe4vG3KW51vMJjGGoU="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Configuration.Abstractions",
|
||||
|
|
@ -156,8 +156,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Configuration.Abstractions",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-Ihhg9vZC4vWDQhZNSCSXF9Cdhd+IVCCy53WSVJk4Iaw="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-1968fW24KGyvpNU8gYIPEhXJVVusgCCBz4PkK9Rww0s="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.DependencyInjection",
|
||||
|
|
@ -171,23 +171,23 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-LF0CXHppSdguJ/zL14BuCxsJmOXgpC4sVcNlc+nME/A="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-jTzy4tazMmC7magGRhm86yd2a7+2vRYWrC0QoOoDMSQ="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Diagnostics.Abstractions",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-g8hikT/FfhWM5uzACl6n8AVb6BqVDAaSddZ/GoshUu8="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-U6ij4cMOc94qLfVxuPINg4/vqqbFcZgTuIC/c0RznTQ="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.FileProviders.Abstractions",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-TjaYFKyoWJaf8XztRPp6pM+iAXE3tcA+EC2rdctWCH4="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-T5LCT9yTrHvMaVP/4spQqCj27hXCbchTUdPMKKGBp3E="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Hosting.Abstractions",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-S/InBEcgCmsWTVMFWTs6cYLYotMANuklDFD8psj8LWE="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-u62QeQqAhJ0Pa5JnxXQIyOGkuQZnYYmo3ADTB9f6L9o="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging",
|
||||
|
|
@ -201,8 +201,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Logging.Abstractions",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-q24UO57BWHF0AED054nTAhNj6Sk1AaCVSMlvxl+kFo0="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-B5aTywrWdDbuAC5JBaueFtsA8VQAsejdMW9PSacELMM="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.ObjectPool",
|
||||
|
|
@ -221,8 +221,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Options",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-EyDTvLfZmQOhJvvl6Um4fqHsF1+IxA4MXm13tw0kqgY="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-GkwkNAO87zn4tzOX7Z0oSpBhjIgkhAx5ApnY/PP5q/0="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Primitives",
|
||||
|
|
@ -231,8 +231,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "Microsoft.Extensions.Primitives",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-FU5zzgkyZd4Js0lXUxKahID8M1u3Hty24IfN52tLT6M="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-UqBlK5n0ZV8PlvwbholkIB6OU8mkT8bLDUv74a8pq5Y="
|
||||
},
|
||||
{
|
||||
"pname": "Microsoft.Net.Http.Headers",
|
||||
|
|
@ -716,8 +716,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.Diagnostics.EventLog",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-jnBBxxlKnFEC1K5oV0SIfb2xOY5tfRJg7dg+URYrYsA="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-5+BaoVjBFX0MoVDsUGqNs+Pu3oIrqksrnT9W7Eqgrww="
|
||||
},
|
||||
{
|
||||
"pname": "System.Diagnostics.Tools",
|
||||
|
|
@ -786,8 +786,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.IO.Pipelines",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-GWAPzaq4LYwmebixpiTn3TntDt3SjE04/DiFzd5P0Vc="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-ySSAdeOwjapOB53Fb3EU0QwLHw1pLCoP2NZ07E8rj7Q="
|
||||
},
|
||||
{
|
||||
"pname": "System.Linq",
|
||||
|
|
@ -971,8 +971,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Pkcs",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-jQoOzArEHhUzbJI9GrEKn/EIUYj2KNRt0waZZDC5XaU="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-4IJgqiBVvHqLXr2LEC/m2sz4Z1ugU3YECsJHN2jvXqU="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Primitives",
|
||||
|
|
@ -986,8 +986,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.ProtectedData",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-oSzz/P2MujRav0fAEtJ4ahIi8Jc1i0SAXWNPMN2K1Ps="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-dzULuNU8/MMI0iZ9k1vS9pU5tgiwn6e7vvzGyxNHZHA="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.X509Certificates",
|
||||
|
|
@ -996,8 +996,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.Security.Cryptography.Xml",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-wa2dV3WvK+Bgqk4bRTOL9q4VtGHtoMr1nBuP3qVTpxE="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-1KFc+NUWOLCVj+KzrWVcrcL9Ph1roZ5qJuCfetHvQ8Q="
|
||||
},
|
||||
{
|
||||
"pname": "System.Security.Principal.Windows",
|
||||
|
|
@ -1011,8 +1011,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.ServiceProcess.ServiceController",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-QBGEjsIV+VfL51qGaYo1PlsPHKZ6b71VinvF+2yK1oM="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-s7mpGEfvvgw5PzpcQJpMtrPzezPUaeJ81vc0KBM9+/k="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encoding",
|
||||
|
|
@ -1021,8 +1021,8 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.Text.Encoding.CodePages",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-N5XNml7+QGIw61HcnntmtyILGWRxGNfJOhsuDFcxL0Q="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-llRnK9hMkLkFYP1OLNAfsr7GuIRP2OmbzfrIfCz2xv8="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Encoding.Extensions",
|
||||
|
|
@ -1036,13 +1036,13 @@
|
|||
},
|
||||
{
|
||||
"pname": "System.Text.Encodings.Web",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-snL0tLOiaom9pNPcbJ25xhq4Kqh66qwZH5s7Zyp32ZY="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-Vo9mC4wgTNXc2DGUjhykVuuIJO8gpPTpYQJBsY0X5Rw="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.Json",
|
||||
"version": "9.0.14",
|
||||
"hash": "sha256-/y4PuhczVyM4GyC5mfv6NOsUCdfOMQNzr+4Ozch/Jw0="
|
||||
"version": "9.0.16",
|
||||
"hash": "sha256-GF3aOmsHlEjeWg/pkj1yFQktfd4PMNb2jKpMvUADOcQ="
|
||||
},
|
||||
{
|
||||
"pname": "System.Text.RegularExpressions",
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
buildDotnetModule (finalAttrs: {
|
||||
pname = "jackett";
|
||||
version = "0.24.1954";
|
||||
version = "0.24.2021";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jackett";
|
||||
repo = "jackett";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-HuMK8nW0PRBmRYUYAr3h/hDkVhUGgQIj+7v60ChuKRw=";
|
||||
hash = "sha256-/9NDFedtjMholM3Doqt/5hJ+Zw68DJheWNxZ0X+Kvuk=";
|
||||
};
|
||||
|
||||
projectFile = "src/Jackett.Server/Jackett.Server.csproj";
|
||||
|
|
|
|||
|
|
@ -18,16 +18,16 @@ let
|
|||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "lockbook-desktop";
|
||||
version = "26.5.22";
|
||||
version = "26.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lockbook";
|
||||
repo = "lockbook";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-KqqiaM0txuZsylbr1+7faTdJINy1sNttT9n/YUpqyCc=";
|
||||
hash = "sha256-+r5WsaqQr6NlQNWDTQf/tvCh6P5LpFFyyLMTIZw9yis=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-d4yKch2c1w5gFBjyrYZQT/6lscRi3p05wKiJEIaXhjA=";
|
||||
cargoHash = "sha256-ybAcG7sCEwZC6FxWx2KhHd1HkhK8wwkGeeLoI/KOXKU=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
|
|
|||
|
|
@ -12,16 +12,16 @@ let
|
|||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "lockbook";
|
||||
version = "26.5.22";
|
||||
version = "26.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lockbook";
|
||||
repo = "lockbook";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-KqqiaM0txuZsylbr1+7faTdJINy1sNttT9n/YUpqyCc=";
|
||||
hash = "sha256-+r5WsaqQr6NlQNWDTQf/tvCh6P5LpFFyyLMTIZw9yis=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-d4yKch2c1w5gFBjyrYZQT/6lscRi3p05wKiJEIaXhjA=";
|
||||
cargoHash = "sha256-ybAcG7sCEwZC6FxWx2KhHd1HkhK8wwkGeeLoI/KOXKU=";
|
||||
|
||||
doCheck = false; # there are no cli tests
|
||||
cargoBuildFlags = [
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
version = "1.30.0";
|
||||
hash = "sha256-lUynHDFfbX9BxwTdREbgAMil7S3+vwAl05myzMEWgGQ=";
|
||||
npmDepsHash = "sha256-snWhjSy9au81bJZwjh/KVvchjEaJJ05HYhyh3V8/Y5g=";
|
||||
vendorHash = "sha256-LMjS0YxRTvHZ8U10BOST/5Zthqhoi5OxngWWB+2CSeQ=";
|
||||
version = "1.30.1";
|
||||
hash = "sha256-Z/0Lh+2VLB3w4AHNf+imWRgHmarO1MMUmNqrcAVSQ2k=";
|
||||
npmDepsHash = "sha256-eccYGPIbk98+BtNtBAq4G1z/ymj6HHwacuH6ZktuN0U=";
|
||||
vendorHash = "sha256-FgwMdvND7DMrYWp9kB2IB+Gjyo1gm1LtLTeC9SfPw9U=";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
stdenv,
|
||||
addDriverRunpath,
|
||||
nix-update-script,
|
||||
coreutils,
|
||||
|
||||
cmake,
|
||||
gitMinimal,
|
||||
|
|
@ -22,6 +21,7 @@
|
|||
vulkan-tools,
|
||||
vulkan-headers,
|
||||
vulkan-loader,
|
||||
spirv-headers,
|
||||
shaderc,
|
||||
ccache,
|
||||
|
||||
|
|
@ -108,6 +108,17 @@ let
|
|||
|
||||
cudaPath = lib.removeSuffix "-${cudaMajorVersion}" cudaToolkit;
|
||||
|
||||
# Since v0.30, llama.cpp is consumed via CMake FetchContent rather than
|
||||
# vendored in-tree. Pre-stage the pinned commit (read from upstream's
|
||||
# `LLAMA_CPP_VERSION` file — currently `b9509`) so the FetchContent step
|
||||
# uses our copy instead of trying to clone over the network in the sandbox.
|
||||
llamaCppSrc = fetchFromGitHub {
|
||||
owner = "ggml-org";
|
||||
repo = "llama.cpp";
|
||||
rev = "6f3a9f3dee3c27545371044a3a38005721ac8a8e"; # tag b9509
|
||||
hash = "sha256-bO1ucb/+vidj/EYzNCssotjte9NlVLdjC794jToNNeM=";
|
||||
};
|
||||
|
||||
wrapperOptions = [
|
||||
# ollama embeds llama-cpp binaries which actually run the ai models
|
||||
# these llama-cpp binaries are unaffected by the ollama binary's DT_RUNPATH
|
||||
|
|
@ -132,25 +143,25 @@ let
|
|||
if enableCuda then
|
||||
buildGoModule.override { stdenv = cudaPackages.backendStdenv; }
|
||||
else if enableRocm then
|
||||
buildGoModule.override { stdenv = rocmPackages.stdenv; }
|
||||
buildGoModule.override { inherit (rocmPackages) stdenv; }
|
||||
else if enableVulkan then
|
||||
buildGoModule.override { stdenv = vulkan-tools.stdenv; }
|
||||
buildGoModule.override { inherit (vulkan-tools) stdenv; }
|
||||
else
|
||||
buildGoModule;
|
||||
inherit (lib) licenses platforms maintainers;
|
||||
in
|
||||
goBuild (finalAttrs: {
|
||||
pname = "ollama";
|
||||
version = "0.24.0";
|
||||
version = "0.30.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ollama";
|
||||
repo = "ollama";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-cSZtbF0oUI7a++baTipF6OUu+w8tBpILzE0Wm1Y6wUk=";
|
||||
hash = "sha256-jh/B/FkmAliCVzqc8DGCPYa5+XejE3cFZTzSuRxjPvw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Lc1Ktdqtv2VhJQssk8K1UOimeEjVNvDWePE9WkamCos=";
|
||||
vendorHash = "sha256-lZdGzGb9xRjTm1Rm7/wHjqM490gLznLEndmb4mNbCX0=";
|
||||
proxyVendor = true;
|
||||
|
||||
env =
|
||||
|
|
@ -181,6 +192,10 @@ goBuild (finalAttrs: {
|
|||
]
|
||||
++ lib.optionals enableVulkan [
|
||||
ccache
|
||||
# ggml-vulkan/CMakeLists.txt does `find_package(SPIRV-Headers REQUIRED)`
|
||||
# at configure time (it builds shader code into the vulkan backend).
|
||||
# Header-only — nativeBuildInputs is the right slot.
|
||||
spirv-headers
|
||||
];
|
||||
|
||||
buildInputs =
|
||||
|
|
@ -190,39 +205,37 @@ goBuild (finalAttrs: {
|
|||
++ lib.optionals enableVulkan vulkanLibs;
|
||||
|
||||
# replace inaccurate version number with actual release version
|
||||
# and replace core utils tools from their FHS location to nix store
|
||||
postPatch = ''
|
||||
substituteInPlace version/version.go \
|
||||
--replace-fail 0.0.0 '${finalAttrs.version}'
|
||||
substituteInPlace cmd/launch/openclaw_test.go \
|
||||
--replace-fail '/bin/mkdir' '${coreutils}/bin/mkdir' \
|
||||
--replace-fail '/bin/cat' '${coreutils}/bin/cat' \
|
||||
--replace-fail '/usr/bin/env' '${coreutils}/bin/env' \
|
||||
--replace-fail '/usr/bin/sort' '${coreutils}/bin/sort' \
|
||||
--replace-fail '/bin/chmod' '${coreutils}/bin/chmod'
|
||||
substituteInPlace cmd/launch/hermes_test.go \
|
||||
--replace-fail '/bin/mkdir' '${coreutils}/bin/mkdir' \
|
||||
--replace-fail '/bin/cat' '${coreutils}/bin/cat' \
|
||||
--replace-fail '/bin/chmod' '${coreutils}/bin/chmod'
|
||||
substituteInPlace cmd/launch/kimi_test.go \
|
||||
--replace-fail '/bin/mkdir' '${coreutils}/bin/mkdir' \
|
||||
--replace-fail '/bin/cat' '${coreutils}/bin/cat' \
|
||||
--replace-fail '/bin/chmod' '${coreutils}/bin/chmod'
|
||||
|
||||
# cmd/launch/*_test.go are integration tests for user-facing CLI
|
||||
# launchers (claude, qwen, cline, codex, kimi, droid, openclaw, hermes,
|
||||
# …) that install the target binary via npm and then exec it on PATH.
|
||||
# Both prerequisites are unavailable in the nix sandbox, so the launch
|
||||
# subpackage's tests can't pass here. Drop them.
|
||||
rm cmd/launch/*_test.go
|
||||
|
||||
rm -r app
|
||||
''
|
||||
# disable tests that fail in sandbox due to Metal init failure
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
rm ml/backend/ggml/ggml_test.go
|
||||
rm ml/nn/pooling/pooling_test.go
|
||||
rm model/models/nemotronh/model_omni_test.go
|
||||
|
||||
# Pre-stage llama.cpp for the FetchContent step and apply Ollama's
|
||||
# compat patch. When FETCHCONTENT_SOURCE_DIR_LLAMA_CPP is set, neither
|
||||
# `cmake/local.cmake` nor `llama/server/CMakeLists.txt` auto-applies
|
||||
# the patch (the parent's ExternalProject_Add passes
|
||||
# OLLAMA_LLAMA_CPP_SKIP_COMPAT_PATCH=ON to the child build) — the
|
||||
# caller has to. The apply-patch.cmake script is idempotent so this
|
||||
# is safe to re-run.
|
||||
cp -r ${llamaCppSrc} $TMPDIR/llama-cpp-src
|
||||
chmod -R +w $TMPDIR/llama-cpp-src
|
||||
( cd $TMPDIR/llama-cpp-src && \
|
||||
cmake -DPATCH_DIR=$NIX_BUILD_TOP/source/llama/compat \
|
||||
-P $NIX_BUILD_TOP/source/llama/compat/apply-patch.cmake )
|
||||
'';
|
||||
|
||||
overrideModAttrs = (
|
||||
finalAttrs: prevAttrs: {
|
||||
# don't run llama.cpp build in the module fetch phase
|
||||
preBuild = "";
|
||||
}
|
||||
);
|
||||
overrideModAttrs = _: _: {
|
||||
# don't run llama.cpp build in the module fetch phase
|
||||
preBuild = "";
|
||||
};
|
||||
|
||||
preBuild =
|
||||
let
|
||||
|
|
@ -236,20 +249,77 @@ goBuild (finalAttrs: {
|
|||
cudaArchitectures = builtins.concatStringsSep ";" (map removeSMPrefix cudaArches);
|
||||
rocmTargets = builtins.concatStringsSep ";" rocmGpuTargets;
|
||||
|
||||
# Since 0.30, Ollama splits the llama.cpp build into per-accelerator
|
||||
# "runners" gated by OLLAMA_LLAMA_BACKENDS. Without setting it the
|
||||
# build silently produces only the CPU runner — ollama-cuda would
|
||||
# ship without `libggml-cuda.so` and fall back to CPU at runtime.
|
||||
# The accepted values map to cmake/local.cmake's elseif chain
|
||||
# (cuda_v12 / cuda_v13 / rocm_v7_1 / rocm_v7_2 / vulkan / cuda_jetpack*).
|
||||
rocmMajorVersion = lib.versions.major rocmPackages.clr.version;
|
||||
rocmMinorVersion = lib.versions.minor rocmPackages.clr.version;
|
||||
llamaBackend =
|
||||
if enableCuda then
|
||||
"cuda_v${cudaMajorVersion}"
|
||||
else if enableRocm then
|
||||
"rocm_v${rocmMajorVersion}_${rocmMinorVersion}"
|
||||
else if enableVulkan then
|
||||
"vulkan"
|
||||
else
|
||||
"";
|
||||
|
||||
cmakeFlagsCudaArchitectures = lib.optionalString enableCuda "-DCMAKE_CUDA_ARCHITECTURES='${cudaArchitectures}'";
|
||||
cmakeFlagsRocmTargets = lib.optionalString enableRocm "-DAMDGPU_TARGETS='${rocmTargets}'";
|
||||
cmakeFlagsBackend = lib.optionalString (
|
||||
llamaBackend != ""
|
||||
) "-DOLLAMA_LLAMA_BACKENDS=${llamaBackend}";
|
||||
|
||||
in
|
||||
''
|
||||
${lib.optionalString enableVulkan ''
|
||||
# Ollama builds each per-accelerator llama.cpp runner via
|
||||
# cmake/local.cmake's ExternalProject_Add(ollama-llama-server-vulkan …).
|
||||
# Two things need to cross the parent → child boundary:
|
||||
#
|
||||
# 1. The SPIRV-Headers cmake config — so `find_package(SPIRV-Headers
|
||||
# REQUIRED)` at ggml-vulkan/CMakeLists.txt:14 succeeds in the
|
||||
# child. CMAKE_PREFIX_PATH as a flag wouldn't propagate; as env
|
||||
# var it does.
|
||||
# 2. The SPIRV-Headers include directory in the compile env. The
|
||||
# ggml-vulkan target's `target_link_libraries(... Vulkan::Vulkan)`
|
||||
# notably does NOT link `SPIRV-Headers::SPIRV-Headers`, so the
|
||||
# interface include directory the cmake config exports never
|
||||
# flows into the compile commands — even though the find_package
|
||||
# call succeeded. `#include <spirv/unified1/spirv.hpp>` then
|
||||
# fails at compile time. Patching upstream's CMakeLists for
|
||||
# one missing link line is fragile across llama.cpp pins;
|
||||
# NIX_CFLAGS_COMPILE forces the include path globally and
|
||||
# survives version bumps.
|
||||
export CMAKE_PREFIX_PATH="${spirv-headers}''${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH}"
|
||||
export NIX_CFLAGS_COMPILE="-isystem ${spirv-headers}/include $NIX_CFLAGS_COMPILE"
|
||||
''}
|
||||
cmake -B build \
|
||||
-DCMAKE_SKIP_BUILD_RPATH=ON \
|
||||
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
|
||||
-DFETCHCONTENT_SOURCE_DIR_LLAMA_CPP="$TMPDIR/llama-cpp-src" \
|
||||
${cmakeFlagsCudaArchitectures} \
|
||||
${cmakeFlagsRocmTargets} \
|
||||
${cmakeFlagsBackend}
|
||||
|
||||
cmake --build build -j $NIX_BUILD_CORES
|
||||
'';
|
||||
|
||||
# The llama.cpp sub-build is driven by ExternalProject_Add and does
|
||||
# not inherit the parent's CMAKE_SKIP_BUILD_RPATH setting, so its
|
||||
# `.so` payloads end up with build-dir entries in RPATH. Drop them
|
||||
# before the forbidden-references check. $ORIGIN is preserved
|
||||
# unconditionally; only absolute /nix/store entries are kept.
|
||||
# ELF-only (patchelf doesn't know Mach-O); darwin builds Mach-O dylibs
|
||||
# that don't carry the build-dir RPATH problem in the first place.
|
||||
preFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
find $out/lib/ollama -type f \( -name '*.so' -o -name '*.so.*' \) \
|
||||
-exec patchelf --shrink-rpath --allowed-rpath-prefixes /nix/store {} +
|
||||
'';
|
||||
|
||||
# ollama looks for acceleration libs in ../lib/ollama/ (now also for CPU-only with arch specific optimizations)
|
||||
# https://github.com/ollama/ollama/blob/v0.21.1/docs/development.md#library-detection
|
||||
postInstall = ''
|
||||
|
|
|
|||
|
|
@ -7,19 +7,21 @@
|
|||
dataDir ? "/var/lib/pixelfed",
|
||||
runtimeDir ? "/run/pixelfed",
|
||||
}:
|
||||
|
||||
php.buildComposerProject2 (finalAttrs: {
|
||||
let
|
||||
php' = php.withExtensions ({ enabled, all }: enabled ++ (with all; [ ffi ]));
|
||||
in
|
||||
php'.buildComposerProject2 (finalAttrs: {
|
||||
pname = "pixelfed";
|
||||
version = "0.12.6";
|
||||
version = "0.12.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pixelfed";
|
||||
repo = "pixelfed";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-FxJWoFNyIGQ6o9g2Q0/jaBMyeH8UnbTgha2goHAurvY=";
|
||||
hash = "sha256-Ay1WJWEPwzeTtScaj+g72lsoWODeHWtjnQT5aa6epbU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-4x+vvkQUhqxBwm+9Lx7n6Ww6qvfLwqd8IXXCuCSAijE=";
|
||||
vendorHash = "sha256-RNJzvWrKfxr2uBFtc05N1pUfBmvy01JiJHMWgtJ01pA=";
|
||||
|
||||
postInstall = ''
|
||||
chmod -R u+w $out/share
|
||||
|
|
|
|||
|
|
@ -10,16 +10,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "redis_exporter";
|
||||
version = "1.84.0";
|
||||
version = "1.85.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "oliver006";
|
||||
repo = "redis_exporter";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-0GxPPtZh7qJO1jQ5Q+ED8cJK0kbn/Q7DuXLihWd67gg=";
|
||||
sha256 = "sha256-04LDNXHaVADvcH3CLVYnFXnLPvBPqjGIBls2KeHHdlY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-O2koMGh9/1UWtV5arH3S/7b6q33P4Yv+xgPthTtZsLg=";
|
||||
vendorHash = "sha256-muGgriK1DDkKk4DOWf7m+W6/qquwYwqgTOzyNGbjV+U=";
|
||||
|
||||
ldflags = [
|
||||
"-X main.BuildVersion=${version}"
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@
|
|||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "proton-authenticator";
|
||||
version = "1.1.4";
|
||||
version = "1.1.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://proton.me/download/authenticator/linux/ProtonAuthenticator_${finalAttrs.version}_amd64.deb";
|
||||
hash = "sha256-SoTeqnYDMgCoWLGaQZXaHiRKGreFn7FPSz5C0O88uWM=";
|
||||
hash = "sha256-y6VXzytstYBXdmujDWASC8AShQPkr+tNtoynGk0l3hg=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
|
@ -47,7 +47,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
|||
description = "Two-factor authentication manager with optional sync";
|
||||
homepage = "https://proton.me/authenticator";
|
||||
license = lib.licenses.unfree; # source not yet published
|
||||
maintainers = with lib.maintainers; [ felschr ];
|
||||
maintainers = with lib.maintainers; [
|
||||
felschr
|
||||
pbek
|
||||
];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
mainProgram = "proton-authenticator";
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
From 94fafae651077be5e7a6dfd29fc06327a2f218ed Mon Sep 17 00:00:00 2001
|
||||
From: ppom <reaction@ppom.me>
|
||||
Date: Thu, 28 May 2026 12:00:00 +0200
|
||||
Subject: [PATCH] nftables: fix compilation on aarch64-linux
|
||||
|
||||
---
|
||||
plugins/reaction-plugin-nftables/src/nft.rs | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/plugins/reaction-plugin-nftables/src/nft.rs b/plugins/reaction-plugin-nftables/src/nft.rs
|
||||
index c234f77..2ac49df 100644
|
||||
--- a/plugins/reaction-plugin-nftables/src/nft.rs
|
||||
+++ b/plugins/reaction-plugin-nftables/src/nft.rs
|
||||
@@ -1,5 +1,6 @@
|
||||
use std::{
|
||||
ffi::{CStr, CString},
|
||||
+ os::raw::c_char,
|
||||
thread,
|
||||
};
|
||||
|
||||
@@ -71,7 +72,7 @@ struct NftCommand {
|
||||
ret: oneshot::Sender<Result<String, String>>,
|
||||
}
|
||||
|
||||
-fn to_rust_string(c_ptr: *const i8) -> Option<String> {
|
||||
+fn to_rust_string(c_ptr: *const c_char) -> Option<String> {
|
||||
if c_ptr.is_null() {
|
||||
None
|
||||
} else {
|
||||
--
|
||||
GitLab
|
||||
|
||||
|
||||
|
|
@ -4,7 +4,6 @@
|
|||
callPackage,
|
||||
rustPlatform,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
|
||||
versionCheckHook,
|
||||
installShellFiles,
|
||||
|
|
@ -14,22 +13,17 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "reaction";
|
||||
version = "2.4.0";
|
||||
version = "2.4.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "framagit.org";
|
||||
owner = "ppom";
|
||||
repo = "reaction";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Y6scgbcwhg56SQ1DefNtdja+n89Gc5bJUHKHKn2EYwQ=";
|
||||
hash = "sha256-1+kliU3TfXhAz/vRh/UamTdcv8UIXrcF1q+Qy1jsjD4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# nftables: fix compilation on aarch64-linux; remove in 2.4.1
|
||||
./nftables-aarch64-linux-compat.patch
|
||||
];
|
||||
|
||||
cargoHash = "sha256-NAcMpASvphAqjBjbAPWLG5qZbSgdaFC3GvU25exCS3g=";
|
||||
cargoHash = "sha256-FQCYCSKk8SLO2ddM6hklUuTvSK7+4dElaNQ3ZNnci3M=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@
|
|||
patchRcPathPosix,
|
||||
onetbb,
|
||||
xrootd,
|
||||
freetype,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
|
|
@ -117,7 +118,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
zlib
|
||||
zstd
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ apple-sdk.privateFrameworksHook ]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
apple-sdk.privateFrameworksHook
|
||||
freetype
|
||||
]
|
||||
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
||||
libGLU
|
||||
libGL
|
||||
|
|
@ -138,11 +142,6 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
patchShebangs cmake/unix/
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
# Eliminate impure reference to /System/Library/PrivateFrameworks
|
||||
substituteInPlace core/macosx/CMakeLists.txt \
|
||||
--replace-fail "-F/System/Library/PrivateFrameworks " ""
|
||||
''
|
||||
+
|
||||
lib.optionalString
|
||||
(stdenv.hostPlatform.isDarwin && lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11")
|
||||
|
|
|
|||
|
|
@ -43,6 +43,16 @@ buildGo126Module (finalAttrs: {
|
|||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
nativeCheckInputs = [ writableTmpDirAsHomeHook ];
|
||||
|
||||
checkFlags = [
|
||||
# This subtest hardcodes a go-humanize relative-time string ("35 years ago")
|
||||
# for a fixed 1990 date instead of computing it, so it breaks once enough
|
||||
# wall-clock time passes (now "36 years ago"). go-humanize truncates the
|
||||
# elapsed time by a fixed 360-day year (Year = 12*Month, Month = 30*Day), so
|
||||
# diff/Year rolled 35 -> 36 on 2026-05-12. Upstream keeps bumping the
|
||||
# literal by hand rather than fixing it, so skip the time-dependent subtest.
|
||||
"-skip=^TestMarshal/structWithMapsInSection$"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||
$out/bin/scw autocomplete script basename=scw shell=bash >scw.bash
|
||||
$out/bin/scw autocomplete script basename=scw shell=fish >scw.fish
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/scripts/generate-emoji-data.mjs b/scripts/generate-emoji-data.mjs
|
||||
index 85fd8d484..23ca0bb72 100644
|
||||
--- a/scripts/generate-emoji-data.mjs
|
||||
+++ b/scripts/generate-emoji-data.mjs
|
||||
@@ -207,7 +207,6 @@ for (const emojiSrc of SRC_EMOJIS_SORTED) {
|
||||
}
|
||||
|
||||
const emoji = encodeUnified(emojiSrc.unified);
|
||||
- assert(isEmoji(emoji), 'Unexpected invalid emoji');
|
||||
|
||||
if (isDeprecated(emoji)) {
|
||||
continue; // drop deprecated emoji
|
||||
|
|
@ -15,23 +15,23 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "libsignal-node";
|
||||
version = "0.92.2";
|
||||
version = "0.94.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "signalapp";
|
||||
repo = "libsignal";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-7VimtFjobM2EQl0cV0K1EIPeV015e+00ljfAfM4KNJI=";
|
||||
hash = "sha256-re9IAC0R2QOIjyOLUjdaJw/TgDA4JT1nhtOskE5A0FQ=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-HBrg//iKNo5/TuVtf9NuVbAyrhul2VVXwC0an7jGEgs=";
|
||||
cargoHash = "sha256-EVwIRUJ8SmajjocZj3dAHkTiR7Q78m/lf+4qls/oZAM=";
|
||||
|
||||
npmRoot = "node";
|
||||
npmDeps = fetchNpmDeps {
|
||||
name = "${finalAttrs.pname}-npm-deps";
|
||||
inherit (finalAttrs) version src;
|
||||
sourceRoot = "${finalAttrs.src.name}/${finalAttrs.npmRoot}";
|
||||
hash = "sha256-BV5E898u07LLoUVMVRJCHKhp4OJJl2fc5973n16T51k=";
|
||||
hash = "sha256-bEQb+36IB+kXSbIkAFDpeIXWeHoQoIIiHo9q5AbaTio=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
|||
|
|
@ -40,13 +40,13 @@ let
|
|||
webrtc = callPackage ./webrtc.nix { };
|
||||
ringrtc = callPackage ./ringrtc.nix { inherit webrtc; };
|
||||
|
||||
version = "8.9.1";
|
||||
version = "8.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "signalapp";
|
||||
repo = "Signal-Desktop";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-HXxIjCVGh3JFAj0UUEAvmVnm7jMZdxRqWDILRDFCGw4=";
|
||||
hash = "sha256-gOYnjNCjI1eNVzcb7sx0XDXbhrAdvlgsZQaRuyBXpwI=";
|
||||
# Emoji font files will be added in `postFetch` if `withAppleEmojis` is enabled. They
|
||||
# are fetched separately below.
|
||||
postFetch = ''
|
||||
|
|
@ -114,16 +114,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
];
|
||||
|
||||
patches = [
|
||||
# Custom fonts currently don't work on windows other than the main one,
|
||||
# which causes some of the text to look messed up. We want to include
|
||||
# this patch since we are overriding the emoji font by default.
|
||||
# Upstream PR: https://github.com/signalapp/Signal-Desktop/pull/7864
|
||||
# This patch can be removed after `v8.11.0`.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/signalapp/Signal-Desktop/commit/52ecd0d931e6071da79b016d2af1f508167b2a98.patch";
|
||||
hash = "sha256-dtc0bwv9aLz92j5Zfm/SREWtQ43ljXN9Vm2VkeDbAx8=";
|
||||
})
|
||||
./force-90-days-expiration.patch
|
||||
|
||||
# Drop once https://github.com/NixOS/nixpkgs/pull/520553 and https://github.com/NixOS/nixpkgs/pull/525241 land.
|
||||
./dont-assert-unicode-17-emoji.patch
|
||||
]
|
||||
++ lib.optional (!withAppleEmojis) (
|
||||
# Signal ships the Apple emoji set without a licence and upstream
|
||||
|
|
@ -180,13 +174,13 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-ls7DYPI5Dq06KI7WCdEkKHPsHTMJ3kO0qJDZsHZQHBQ=";
|
||||
hash = "sha256-3EEeHmtOAdcm2Q3eNUEl2RbTFRB4YBKcZLFtEmwbVOk=";
|
||||
};
|
||||
|
||||
env = {
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
SIGNAL_ENV = "production";
|
||||
SOURCE_DATE_EPOCH = 1778260300;
|
||||
SOURCE_DATE_EPOCH = 1780508208;
|
||||
}
|
||||
// lib.optionalAttrs stdenv.hostPlatform.isDarwin {
|
||||
# Disable code signing during local macOS builds.
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ index d9f558cd4..45a42ecd1 100644
|
|||
|
||||
$largeEmojiFont: 'asset:///optional-fonts/emoji-large.woff2';
|
||||
diff --git a/stylesheets/components/fun/FunEmoji.scss b/stylesheets/components/fun/FunEmoji.scss
|
||||
index f96218420..612538cd3 100644
|
||||
index bb1464cd6..efbeca91e 100644
|
||||
--- a/stylesheets/components/fun/FunEmoji.scss
|
||||
+++ b/stylesheets/components/fun/FunEmoji.scss
|
||||
@@ -8,14 +8,12 @@
|
||||
|
|
@ -54,8 +54,8 @@ index f96218420..612538cd3 100644
|
|||
- content-visibility: auto;
|
||||
vertical-align: top;
|
||||
letter-spacing: inherit;
|
||||
|
||||
@@ -24,15 +22,6 @@
|
||||
font-style: normal;
|
||||
@@ -25,15 +23,6 @@
|
||||
color: hsl(from currentColor h s l / 100%);
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ index f96218420..612538cd3 100644
|
|||
.FunStaticEmoji--Blot {
|
||||
display: inline-flex;
|
||||
margin-bottom: round(-0.4em + 3px, 1px);
|
||||
@@ -133,7 +122,6 @@ $inline-emoji-container-name: inline-emoji;
|
||||
@@ -134,7 +123,6 @@ $inline-emoji-container-name: inline-emoji;
|
||||
|
||||
.FunInlineEmoji {
|
||||
z-index: 0;
|
||||
|
|
@ -79,20 +79,20 @@ index f96218420..612538cd3 100644
|
|||
container: $inline-emoji-container-name / inline-size;
|
||||
display: inline-block;
|
||||
flex: none;
|
||||
@@ -142,8 +130,7 @@ $inline-emoji-container-name: inline-emoji;
|
||||
@@ -143,8 +131,7 @@ $inline-emoji-container-name: inline-emoji;
|
||||
font-size: var(--fun-inline-emoji-size, round(1.4em, 1px));
|
||||
line-height: var(--fun-inline-emoji-size, round(1em, 1px));
|
||||
letter-spacing: inherit;
|
||||
- content-visibility: auto;
|
||||
- vertical-align: bottom;
|
||||
+ vertical-align: text-bottom;
|
||||
font-style: normal;
|
||||
color: hsl(from currentColor h s l / 100%);
|
||||
}
|
||||
|
||||
.FunInlineEmoji__Image {
|
||||
@@ -170,26 +157,6 @@ $inline-emoji-container-name: inline-emoji;
|
||||
@container #{$inline-emoji-container-name} (width > 64px) {
|
||||
display: none;
|
||||
}
|
||||
@@ -169,26 +156,6 @@ $inline-emoji-container-name: inline-emoji;
|
||||
// Inline-block so copying multiple emoji does not insert newlines around
|
||||
// each one in the clipboard plain-text serialization.
|
||||
display: inline-block;
|
||||
-
|
||||
- // Emoji font images are slightly higher than optical center
|
||||
- @container #{$inline-emoji-container-name} (width > 16px) {
|
||||
|
|
@ -117,18 +117,18 @@ index f96218420..612538cd3 100644
|
|||
|
||||
.FunInlineEmoji__Jumbo {
|
||||
diff --git a/ts/components/fun/FunEmoji.dom.tsx b/ts/components/fun/FunEmoji.dom.tsx
|
||||
index 853f8b7cd..f4589f735 100644
|
||||
index dd022bbc6..d517f3cb4 100644
|
||||
--- a/ts/components/fun/FunEmoji.dom.tsx
|
||||
+++ b/ts/components/fun/FunEmoji.dom.tsx
|
||||
@@ -31,12 +31,6 @@ function getEmojiJumboUrl(
|
||||
emoji: EmojiVariantData,
|
||||
@@ -21,12 +21,6 @@ function getEmojiJumboUrl(
|
||||
emoji: Emoji.Variant,
|
||||
size: number | undefined
|
||||
): string | null {
|
||||
- if (size != null && size < MIN_JUMBOMOJI_SIZE) {
|
||||
- return null;
|
||||
- }
|
||||
- if (KNOWN_JUMBOMOJI.has(emoji.value)) {
|
||||
- return `emoji://jumbo?emoji=${encodeURIComponent(emoji.value)}`;
|
||||
- if (KNOWN_JUMBOMOJI.has(emoji)) {
|
||||
- return `emoji://jumbo?emoji=${encodeURIComponent(emoji)}`;
|
||||
- }
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,16 +19,16 @@ let
|
|||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "ringrtc";
|
||||
version = "2.67.0";
|
||||
version = "2.69.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "signalapp";
|
||||
repo = "ringrtc";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-jwLJVq3lkb7HtVigji/1ZKnyaIxyCj+fWCsKe9CjCCM=";
|
||||
hash = "sha256-KQ/zAyj9caArZvl8SwMFfRcye1IzPoChjnYA0A8GcWw=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-X/y2923IBF+ajTyjM4SX9FvkAFiyCYSGnVRYHGKgHko=";
|
||||
cargoHash = "sha256-DlRAPFluKdfU1YutDNQbAEF95aydd+duc6T2hqYWwGQ=";
|
||||
|
||||
preConfigure = ''
|
||||
# Check for matching webrtc version
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@
|
|||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "node-sqlcipher";
|
||||
version = "3.2.1";
|
||||
version = "3.3.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "signalapp";
|
||||
repo = "node-sqlcipher";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-lkSQXiplkY5sBpHsAhW4odWe+MCalAo100EL7h4VKbg=";
|
||||
hash = "sha256-RzuyUx0WEG8j8HwV5cepVJIeqYzJpNemFNtB+9NETto=";
|
||||
};
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
|
|
@ -66,8 +66,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir $out
|
||||
cp -r dist $out
|
||||
cp -r prebuilds $out
|
||||
cp package.json $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
|
|
|||
|
|
@ -1,25 +1,25 @@
|
|||
{
|
||||
"src": {
|
||||
"args": {
|
||||
"hash": "sha256-Q5o9fezL7E2J6rn3YxHTtrImCkMTFQL6H+T12d1QOik=",
|
||||
"hash": "sha256-TsVGiR9qXq6AmvPETkCQP7BGgO21/SUwZJZrSXlj7p8=",
|
||||
"owner": "signalapp",
|
||||
"repo": "webrtc",
|
||||
"tag": "7444h"
|
||||
"tag": "7680g"
|
||||
},
|
||||
"fetcher": "fetchFromGitHub"
|
||||
},
|
||||
"src/build": {
|
||||
"args": {
|
||||
"hash": "sha256-UHTiL6tMDu/rhSmfy89QQPwEEdU2kS0IaYBhWKKJ4Yo=",
|
||||
"rev": "045565e91c7360951bddbd0618a20ea59cdd31f3",
|
||||
"hash": "sha256-ZPEL0Oy07aAd/qtboCcbD7t55f4EzHiOnE3fiVkZE3Q=",
|
||||
"rev": "a37e61dc22fd633ab32146e7000068a57a2864ff",
|
||||
"url": "https://chromium.googlesource.com/chromium/src/build"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/buildtools": {
|
||||
"args": {
|
||||
"hash": "sha256-OOCCh0pSzUPpjlaceYIR2VGQ66eAqUAv8x7kgDfBD/0=",
|
||||
"rev": "3e6e75d1961a90054ee0e3030ee66b6a04164c10",
|
||||
"hash": "sha256-wR2qwqxiRmInKzQiVIiZ13SNKuY5k+aJ+dxKAWV1zdo=",
|
||||
"rev": "6a18683f555b4ac8b05ac8395c29c84483ac9588",
|
||||
"url": "https://chromium.googlesource.com/chromium/src/buildtools"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -35,40 +35,40 @@
|
|||
},
|
||||
"src/testing": {
|
||||
"args": {
|
||||
"hash": "sha256-UT4DGNjd+F6liecGeXDwS5Zast4ZriOinbrXAqd96ks=",
|
||||
"rev": "c030c132cbab406942fb208b7180f8846aa4abf1",
|
||||
"hash": "sha256-cE8uCDkhkzFjrEJ3ccXq5H45WJ3wvmirLeeSymnR8bk=",
|
||||
"rev": "b887106bc278bb2a49e21f3a0ab2019574e7e47a",
|
||||
"url": "https://chromium.googlesource.com/chromium/src/testing"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party": {
|
||||
"args": {
|
||||
"hash": "sha256-qxIivQe2O9L6N5T5RpjtdSXvEFQ4CDZtMSounS8iixw=",
|
||||
"rev": "de738129ebb915bbe34cdf06520c7050ef8aa9d9",
|
||||
"hash": "sha256-fSsA88V0cv/hAJEZJ7p+RnrnkceLMZCa+XaP+1awo9M=",
|
||||
"rev": "e43b96b7a65dd3f45f066983061e6f8b2f3a112d",
|
||||
"url": "https://chromium.googlesource.com/chromium/src/third_party"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/boringssl/src": {
|
||||
"args": {
|
||||
"hash": "sha256-yGBxpmWrFURe3gziO3en5ZKs9wAup8XEwHhzq+cKVu8=",
|
||||
"rev": "db638238d29708a20b991af3b2488e45a8bbcf71",
|
||||
"hash": "sha256-4eCoRVe47hZ6hc3gXgBS1gY64d+sPqeI08hNMh6JkUY=",
|
||||
"rev": "305bcfce00b189f2297f53365b0454f96009927d",
|
||||
"url": "https://boringssl.googlesource.com/boringssl.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/breakpad/breakpad": {
|
||||
"args": {
|
||||
"hash": "sha256-jGdQyM3+p3qt+Hjt44Wpg7XKiUt7kz9Lv1xRG7vp+dM=",
|
||||
"rev": "a1220f673dc44632e821bd1a217089e5a159a203",
|
||||
"hash": "sha256-dtuBGcYwwaqSKiW7ASFveAeJqcdnFLeU97ip8D786/Q=",
|
||||
"rev": "79099fdf668ae097c9eca7052fd5c4c5de6c9098",
|
||||
"url": "https://chromium.googlesource.com/breakpad/breakpad.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/catapult": {
|
||||
"args": {
|
||||
"hash": "sha256-Is8yDmTyNyseTBPIDwIlhRthqfkFPgQIvu3b6u5c0m0=",
|
||||
"rev": "04c85a1d0e324464c6be4b3d193b47cb6177d03a",
|
||||
"hash": "sha256-Buh+Ixx8CTqBb0vuu/Fnv6fx15lPMOatYGPAgQ0aWEI=",
|
||||
"rev": "39805a224bb6c6e80e403a4ebe9a150c7ca0b4d1",
|
||||
"url": "https://chromium.googlesource.com/catapult.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -83,8 +83,8 @@
|
|||
},
|
||||
"src/third_party/clang-format/script": {
|
||||
"args": {
|
||||
"hash": "sha256-d9uweklBffiuCWEb03ti1eFLnMac2qRtvggzXY1n/RU=",
|
||||
"rev": "37f6e68a107df43b7d7e044fd36a13cbae3413f2",
|
||||
"hash": "sha256-f+BbQ6xIubloSzx/MhPSZ8ymCskmS+9+epDGtPjZqXc=",
|
||||
"rev": "c2725e0622e1a86d55f14514f2177a39efea4a0e",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -99,16 +99,16 @@
|
|||
},
|
||||
"src/third_party/compiler-rt/src": {
|
||||
"args": {
|
||||
"hash": "sha256-MHamj1BEwae6pohqjrMULEp2hrh8+jGDxNgYbzqtGK0=",
|
||||
"rev": "dbef1a89100395f128231024d0c07e4dcfe72140",
|
||||
"hash": "sha256-7Jnb0tzi0SkS9vL7VurdTk6Igz5I8ol4H4nRqcZ2+O0=",
|
||||
"rev": "d606e955eec3d4fb0bf831dea336c3b24cba2f27",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/cpuinfo/src": {
|
||||
"args": {
|
||||
"hash": "sha256-JW83AgI1cWv4TSpXNe9sv/hNYAA7MOdUeTHY8+0lHgc=",
|
||||
"rev": "877328f188a3c7d1fa855871a278eb48d530c4c0",
|
||||
"hash": "sha256-eXrfeFK0ADKAYoy/vESv7nQnH0oGpeZKlX8XEqPQspo=",
|
||||
"rev": "84818a41e074779dbb00521a4731d3e14160ff15",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/pytorch/cpuinfo.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -123,24 +123,24 @@
|
|||
},
|
||||
"src/third_party/dav1d/libdav1d": {
|
||||
"args": {
|
||||
"hash": "sha256-dPVDZ4SyrHWsRWERUl6UKbbdUG/5dC/UTte6sItMYxg=",
|
||||
"rev": "af5cf2b1e7f03d6f6de84477e1ca8eed1f3eb03d",
|
||||
"hash": "sha256-E3da/LJ8HNy1osExmupovqnL8JHgVNzPUCG5F8TJKXQ=",
|
||||
"rev": "b546257f770768b2c88258c533da38b91a06f737",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/videolan/dav1d.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/depot_tools": {
|
||||
"args": {
|
||||
"hash": "sha256-oL/WjK90HWqtyE0sJhDUp3UxlC8jr4dZfp+Q80xu3sM=",
|
||||
"rev": "675a3a9ccd7cf9367bb4caa58c30f08b56d45ef5",
|
||||
"hash": "sha256-RsmH8kxnmzOKsrfmDqULDeQsvRr1l+p8ZE1a4bPLVLs=",
|
||||
"rev": "9fd48a305e18b9bbaf61734557ce2c46497192b3",
|
||||
"url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/eigen3/src": {
|
||||
"args": {
|
||||
"hash": "sha256-ZXDzAuvTu46YhieLIQ7MSQ0os+v2RF+KBtFuKU9fCWE=",
|
||||
"rev": "430e35fbd15d3c946d2d2ba19ec41c16ba217cb3",
|
||||
"hash": "sha256-GpuSoq887Z1qGKsc4+Vz8X+Sx40P6UnWhaQgrmigkdQ=",
|
||||
"rev": "afb43805349cf1cbec0083d94256bb8f72cbc53b",
|
||||
"url": "https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -155,24 +155,24 @@
|
|||
},
|
||||
"src/third_party/ffmpeg": {
|
||||
"args": {
|
||||
"hash": "sha256-ZeFzrCE9LkDcp3VTMJkm5ypX29RGZCyZkp3tEr7yFKU=",
|
||||
"rev": "9e751092c9498b84bbb77e2e0689ef9f50fe608f",
|
||||
"hash": "sha256-LphjwzqsrvAOzd+O+lJ/gGfaWuX4h2/UrRC694ftwSs=",
|
||||
"rev": "9e588ab02e16326026aa61cc3b6515da20520cec",
|
||||
"url": "https://chromium.googlesource.com/chromium/third_party/ffmpeg.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/flatbuffers/src": {
|
||||
"args": {
|
||||
"hash": "sha256-u5AVjbep3iWwGNXLrkPJUnF8SbmIXlHOYoy3NIlUl/E=",
|
||||
"rev": "1c514626e83c20fffa8557e75641848e1e15cd5e",
|
||||
"hash": "sha256-gV1hn1iHI7knFEXy3Oii97mLRZYJUBiBlTh6/sqOoXg=",
|
||||
"rev": "a86afae9399bbe631d1ea0783f8816e780e236cc",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/flatbuffers.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/fontconfig/src": {
|
||||
"args": {
|
||||
"hash": "sha256-2h0dWn7MxAX+4o2tMZLyjRFAES+FTMaGaf8M7ySkSV8=",
|
||||
"rev": "f0ed9c3f43161d3555f6f7a5234b22fe7ca60727",
|
||||
"hash": "sha256-Oo4ewK86dbEkO5EXyGWvdmsPHa8Wk1BHQah784vIem0=",
|
||||
"rev": "d62c2ab268d1679335daa8fb0ea6970f35224a76",
|
||||
"url": "https://chromium.googlesource.com/external/fontconfig.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -187,16 +187,16 @@
|
|||
},
|
||||
"src/third_party/freetype/src": {
|
||||
"args": {
|
||||
"hash": "sha256-b74O5i4xhHq8y0qepP8Wup2nuj9LFzBX7ahMCCVhc98=",
|
||||
"rev": "d3668e00da732654b50e4e81f982544ed6e26390",
|
||||
"hash": "sha256-CorCyTiS2fumIF0jhqQgw7VjGkjGXNVD8efdmfZ2wUo=",
|
||||
"rev": "e3a0652b6d706ee1ce77d4dda606b6597dd8b5c4",
|
||||
"url": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/fuzztest/src": {
|
||||
"args": {
|
||||
"hash": "sha256-gMIDf/Alh9BCk0Gm0m+mmhHoKreHCiN7/WOomcMbS/k=",
|
||||
"rev": "e101ca021a40733d0fa76a3bd9b49b5f76da4f8a",
|
||||
"hash": "sha256-CqJJ1hj9nQkGONB+5tJgafg1xvrPgTuE3tM8RjO2RY0=",
|
||||
"rev": "54dfec04d5c9ad1f22b08002ab6a5e2d0de77671",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/fuzztest.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -219,24 +219,24 @@
|
|||
},
|
||||
"src/third_party/google_benchmark/src": {
|
||||
"args": {
|
||||
"hash": "sha256-cH8s1gP6kCcojAAfTt5iQCVqiAaSooNk4BdaILujM3w=",
|
||||
"rev": "761305ec3b33abf30e08d50eb829e19a802581cc",
|
||||
"hash": "sha256-GfqY2d+Nd7ovNrXxzTRm/AYWj7GuxIO6FawzUEzwOVA=",
|
||||
"rev": "188e8278990a9069ffc84441cb5a024fd0bede37",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/benchmark.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/googletest/src": {
|
||||
"args": {
|
||||
"hash": "sha256-A3kDQbt9ITaxCjl/tJtwySsPUyH+NNb8erdjBzq81o8=",
|
||||
"rev": "244cec869d12e53378fa0efb610cd4c32a454ec8",
|
||||
"hash": "sha256-gJhv3DQQSP5BQ6GmDobq42/Gkx4AbOg/ZS80bM0WpEw=",
|
||||
"rev": "4fe3307fb2d9f86d19777c7eb0e4809e9694dde7",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/googletest.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/grpc/src": {
|
||||
"args": {
|
||||
"hash": "sha256-JUws1tD5/4mfx/muCkx5FvQoh0Vb2mD5/bIacCAZVAg=",
|
||||
"rev": "de6ce7f32b1bf254d2b4c04e8872b63284632fd3",
|
||||
"hash": "sha256-GvzPndJkPZsVCp0LtaQ29rnORQ7xSZ76if/feEIhvkI=",
|
||||
"rev": "f394c3f07b4c685b9f6948b36d65ca10a629f4fa",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/grpc/grpc.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -251,16 +251,16 @@
|
|||
},
|
||||
"src/third_party/harfbuzz-ng/src": {
|
||||
"args": {
|
||||
"hash": "sha256-gUUXBd2/di6MYhUzo0QkGQvRY6KLcy7qdDlSClnmnL8=",
|
||||
"rev": "7d936359a27abb2d7cb14ecc102463bb15c11843",
|
||||
"hash": "sha256-pXAQYEotsqZmfaJSQFaJmZAQVzUiNrHw52z0vmbxQRQ=",
|
||||
"rev": "fa2908bf16d2ccd6623f4d575455fea72a1a722b",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/icu": {
|
||||
"args": {
|
||||
"hash": "sha256-k3z31DhDPoqjcZdUL4vjyUMVpUiNk44+7rCMTDVPH8Q=",
|
||||
"rev": "1b2e3e8a421efae36141a7b932b41e315b089af8",
|
||||
"hash": "sha256-zFxeAY6lEFRGNbCOOJij0CFjp3512WkyaN1Ld0+WADs=",
|
||||
"rev": "a86a32e67b8d1384b33f8fa48c83a6079b86f8cd",
|
||||
"url": "https://chromium.googlesource.com/chromium/deps/icu.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -291,40 +291,40 @@
|
|||
},
|
||||
"src/third_party/libaom/source/libaom": {
|
||||
"args": {
|
||||
"hash": "sha256-s+fFufuRRGfItmd63IbHCR6ScANkJ49y+fsIGhTdwZE=",
|
||||
"rev": "dcfc0bd1934130570d04597a3b75de0824dc434d",
|
||||
"hash": "sha256-SE9nevzv+e2pVvRECQM0bg3dU1l7rE/4bLPuZDHFi18=",
|
||||
"rev": "557586fde2fdc09dff9c3edf6943d6d54aa8914c",
|
||||
"url": "https://aomedia.googlesource.com/aom.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/libc++/src": {
|
||||
"args": {
|
||||
"hash": "sha256-IemCFOw1X+Kcna6cuj9e29FUhitqvVGn1DeMCShkbOs=",
|
||||
"rev": "b77132b512d5411f8393fd3decb3abaeaf1d3ec8",
|
||||
"hash": "sha256-7O/X2JW8ghkPTjmFZmT9cgG3Ui5zk3gUb436KlPww34=",
|
||||
"rev": "7ab65651aed6802d2599dcb7a73b1f82d5179d05",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/libc++abi/src": {
|
||||
"args": {
|
||||
"hash": "sha256-7TUY05CW5OCyd1C1oq69rptr1RkvOMS+1CAJc7yKRFQ=",
|
||||
"rev": "864f61dc9253d56586ada34c388278565ef513f6",
|
||||
"hash": "sha256-L5CUvhpOLS+NBNGssCv0pY9rsDFuAI0LlPjXQRfy62A=",
|
||||
"rev": "8f11bb1d4438d0239d0dfc1bd9456a9f31629dda",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/libgav1/src": {
|
||||
"args": {
|
||||
"hash": "sha256-BgTfWmbcMvJB1KewJpRcMtbOd2FVuJ+fi1zAXBXfkrg=",
|
||||
"rev": "c05bf9be660cf170d7c26bd06bb42b3322180e58",
|
||||
"hash": "sha256-gisU0p0HDL7Po/ZXIIZVOTnxnOuVvSE/FYo9DaEUFfo=",
|
||||
"rev": "40f58ed32ff39071c3f2a51056dbc49a070af0dc",
|
||||
"url": "https://chromium.googlesource.com/codecs/libgav1.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/libjpeg_turbo": {
|
||||
"args": {
|
||||
"hash": "sha256-Ig+tmprZDvlf/M72/DTar2pbxat9ZElgSqdXdoM0lPs=",
|
||||
"rev": "e14cbfaa85529d47f9f55b0f104a579c1061f9ad",
|
||||
"hash": "sha256-FeSS7D3NietL34KgpaDFenBf/GcvapGSpkiKwgIOOHs=",
|
||||
"rev": "6bb85251a8382b5e07f635a981ac685cc5ab5053",
|
||||
"url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -347,56 +347,56 @@
|
|||
},
|
||||
"src/third_party/libunwind/src": {
|
||||
"args": {
|
||||
"hash": "sha256-veSxr/ICnBsdP+3vWjCbPxduHiEzbT0DUdwfo0xcM30=",
|
||||
"rev": "322be580a5a193a921c349a15747eeeb9a716ad1",
|
||||
"hash": "sha256-iRfpzVN+QEpN6okwVs5oEtZqIJYzFGxsUO/IJY1c/W8=",
|
||||
"rev": "ba19d93d6d4f467fba11ff20fe2fc7c056f79345",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/libvpx/source/libvpx": {
|
||||
"args": {
|
||||
"hash": "sha256-44k28SJ7AbcABv1YV1tICtJ1II4AXTuvcAELSTUht6c=",
|
||||
"rev": "8d00aca60b951444582b1373e4e47f0ca6e0871c",
|
||||
"hash": "sha256-/FtYzbcOgOlaaWCoJfYns5oye7DoRZx1/xew3lN7tAM=",
|
||||
"rev": "e83e25f791932202256479052f18bdd03a091147",
|
||||
"url": "https://chromium.googlesource.com/webm/libvpx.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/libyuv": {
|
||||
"args": {
|
||||
"hash": "sha256-9Qn1v9iUrk28bjW9HGepvzEM0wrpmCiA43+a/GPc9/s=",
|
||||
"rev": "5b22f31cb5d39c1309a589f148678c2a217e75db",
|
||||
"hash": "sha256-2lnobd22L9u+h6JGWJoWT/0gjhI5JImDsEjn+RRYzJg=",
|
||||
"rev": "917276084a49be726c90292ff0a6b0a3d571a6af",
|
||||
"url": "https://chromium.googlesource.com/libyuv/libyuv.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/llvm-libc/src": {
|
||||
"args": {
|
||||
"hash": "sha256-U/ToyQwIzZlaPic6LAnR17ySrZ6eGhReJ6iKVFrIHPg=",
|
||||
"rev": "0c61a55402c6a0d9d6ca2aeb3c6a2613a8bc8c55",
|
||||
"hash": "sha256-ZPsVBO+5v1xR9lvzHi616unK4HEak07Sy/reMSYwiok=",
|
||||
"rev": "d99c56d4b9f6663bff528c4fac5313bceb32e762",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libc.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/lss": {
|
||||
"args": {
|
||||
"hash": "sha256-rhp4EcZYdgSfu9cqn+zxxGx6v2IW8uX8V+iA0UfZhFY=",
|
||||
"rev": "ed31caa60f20a4f6569883b2d752ef7522de51e0",
|
||||
"hash": "sha256-89CdA7vBYudbko0nAIyHcpHMXqFZHC05kwRIUmeEWGo=",
|
||||
"rev": "29164a80da4d41134950d76d55199ea33fbb9613",
|
||||
"url": "https://chromium.googlesource.com/linux-syscall-support.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/nasm": {
|
||||
"args": {
|
||||
"hash": "sha256-TxzAcp+CoKnnM0lCGjm+L3h6M30vYHjM07vW6zUe/vY=",
|
||||
"rev": "e2c93c34982b286b27ce8b56dd7159e0b90869a2",
|
||||
"hash": "sha256-vH3OUzfLZbaPY4DMAvSW0jKYRJmOa7aE8EfIJtZ1/Xs=",
|
||||
"rev": "af5eeeb054bebadfbb79c7bcd100a95e2ad4525f",
|
||||
"url": "https://chromium.googlesource.com/chromium/deps/nasm.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/neon_2_sse/src": {
|
||||
"args": {
|
||||
"hash": "sha256-AkDAHOPO5NdXXk0hETS5D67mzw0RVXwPDDKqM0XXo5g=",
|
||||
"rev": "eb8b80b28f956275e291ea04a7beb5ed8289e872",
|
||||
"hash": "sha256-4OzG4wIPwnKbFD9LG+stxHt5O4qB85ZIXVeSrNqDAyM=",
|
||||
"rev": "662a85912e8f86ec808f9b15ce77f8715ba53316",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/intel/ARM_NEON_2_x86_SSE.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -411,8 +411,8 @@
|
|||
},
|
||||
"src/third_party/perfetto": {
|
||||
"args": {
|
||||
"hash": "sha256-FfOCX3Z7aKGkMAf8hK5itt7+8N5kBRd9NJGjOLiUjQs=",
|
||||
"rev": "d5bbee7afdf259af4212929ccbff467dd5349953",
|
||||
"hash": "sha256-xOFm5u6uwzktkHCLuLmy3ryiuVN8B8Fo+ltHbFmilOY=",
|
||||
"rev": "2074b65d22dd04b65c2688647b9386a63338f0b9",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/perfetto.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
@ -427,48 +427,48 @@
|
|||
},
|
||||
"src/third_party/pthreadpool/src": {
|
||||
"args": {
|
||||
"hash": "sha256-M9uMq/ZkvrWNep+CIFzx6xLfepLkfY8tjgL7ed2vjU0=",
|
||||
"rev": "f5a07eddbf4be8f23e29e60a2ccf66b78b71f119",
|
||||
"hash": "sha256-Es9QNblzo5b+x4K7myQJwIiUKvqyP16QExWPhGqqDO8=",
|
||||
"rev": "9003ee6c137cea3b94161bd5c614fb43be523ee1",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/pthreadpool.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/re2/src": {
|
||||
"args": {
|
||||
"hash": "sha256-e18aSNVEE42LNzCDMay/Fa3BNg36pBPeEtfNvWqlnWE=",
|
||||
"rev": "6569a9a3df256f4c0c3813cb8ee2f8eef6e2c1fb",
|
||||
"hash": "sha256-oEU+dz8ax1S36+f9OysjB0GnQj8mjZx1VsZ/UgckdDI=",
|
||||
"rev": "972a15cedd008d846f1a39b2e88ce48d7f166cbd",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/re2.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/ruy/src": {
|
||||
"args": {
|
||||
"hash": "sha256-fV0El2ZgjxLqstKVN35SL72+diHNK0FkBmG5UwVZFrk=",
|
||||
"rev": "9940fbf1e0c0863907e77e0600b99bb3e2bc2b9f",
|
||||
"hash": "sha256-zJ7EYxIoZvN2uOfPscKzWycBO057g4bMnTys2sUrp2M=",
|
||||
"rev": "576e020f06334118994496b45f9796ed7fda3280",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/ruy.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/tflite/src": {
|
||||
"args": {
|
||||
"hash": "sha256-9RWrxIDA2vvobr9Cg13SkwfScw+Lk/NCeaPVIXTCKmY=",
|
||||
"rev": "313f58ae85278ced9ccc7f90ee630bdf8735c52f",
|
||||
"hash": "sha256-pIhOSb9eLzel5oDPCpxCvI2XJ2jGLdLURCRkd1BbMkk=",
|
||||
"rev": "01e030d23d3b904d98cbf908da74d63b3c186949",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/tensorflow/tensorflow.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/third_party/xnnpack/src": {
|
||||
"args": {
|
||||
"hash": "sha256-oxpMzIFwJ3L5cYLkwcSL7a8XS1AGHXKQjwtHoe/2mZw=",
|
||||
"rev": "4d098efeac50c44a7c03e6feb1794908db4c3158",
|
||||
"hash": "sha256-OdrwYAazY0E3han/fpFjlAiguY4M/xnCMJjL3KAIhvw=",
|
||||
"rev": "4574c4d9b00703c15f2218634ddf101597b22b18",
|
||||
"url": "https://chromium.googlesource.com/external/github.com/google/XNNPACK.git"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
},
|
||||
"src/tools": {
|
||||
"args": {
|
||||
"hash": "sha256-a3sRfYOVGgroZu25lPS+jGN5Nf/lhfKvKhMl8WiAybs=",
|
||||
"rev": "3b73a00861c1cc1d6308e20786f42045b77864cd",
|
||||
"hash": "sha256-QKFYNmNwVcm7aAP3aeuSrY2ScbgMPs4/odf62dI0WJg=",
|
||||
"rev": "f8f65faf07b1132c9d01932ef95846e9a82b8d54",
|
||||
"url": "https://chromium.googlesource.com/chromium/src/tools"
|
||||
},
|
||||
"fetcher": "fetchFromGitiles"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchpatch,
|
||||
buildPackages,
|
||||
ninja,
|
||||
gn,
|
||||
|
|
@ -85,6 +86,19 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
alsa-lib
|
||||
];
|
||||
|
||||
patches = [
|
||||
# https://github.com/NixOS/nixpkgs/blob/8e689a91c5b4e47b57dee488dd7e319cc704eb9d/pkgs/applications/networking/browsers/chromium/common.nix#L604-L612
|
||||
# clang++: error: unknown argument: '-fsanitize-ignore-for-ubsan-feature=array-bounds'
|
||||
(fetchpatch {
|
||||
name = "chromium-146-revert-Update-fsanitizer=array-bounds-config.patch";
|
||||
# https://chromium-review.googlesource.com/c/chromium/src/+/7539408
|
||||
url = "https://chromium.googlesource.com/chromium/src/+/acb47d9a6b56c4889a2ed4216e9968cfc740086c^!?format=TEXT";
|
||||
decode = "base64 -d";
|
||||
revert = true;
|
||||
hash = "sha256-WZsN2qm6lX121bDf7SoN75flXtCTmPPpwtHK0ayjkPc=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace build/toolchain/linux/BUILD.gn \
|
||||
--replace-fail 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ let
|
|||
++ lib.optionals mediaSupport [ ffmpeg_7 ]
|
||||
);
|
||||
|
||||
version = "15.0.14";
|
||||
version = "15.0.15";
|
||||
|
||||
sources = {
|
||||
x86_64-linux = fetchurl {
|
||||
|
|
@ -112,7 +112,7 @@ let
|
|||
"https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz"
|
||||
"https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz"
|
||||
];
|
||||
hash = "sha256-kxRtNraru8w/lAwwhAD2h6Q+CqFdS2DzV2FZHnNj9Q4=";
|
||||
hash = "sha256-UlKf5YPGnPCKzCiFu1dxLg6kg3bJQAcZlwOKE9rTIgQ=";
|
||||
};
|
||||
|
||||
i686-linux = fetchurl {
|
||||
|
|
@ -122,7 +122,7 @@ let
|
|||
"https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz"
|
||||
"https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz"
|
||||
];
|
||||
hash = "sha256-GHLeAyMrnwD5lC4NnwM72nZQeRN7AjrlS/zlOqfmjtw=";
|
||||
hash = "sha256-bIFw4QOIgEQBdcQqjYRKWmy/C0srG0eBBR5H5oteWlo=";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
Prototype the K&R handler so the probe still compiles under -std=gnu23
|
||||
(selected by autoconf 2.73). Upstream removed the probe in 8dd271fdec52,
|
||||
which does not apply against 5.9 with the PCRE backports.
|
||||
|
||||
https://github.com/NixOS/nixpkgs/issues/513543
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -2334,8 +2334,7 @@ if test x$signals_style = xPOSIX_SIGNALS; then
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
int child=0;
|
||||
-void handler(sig)
|
||||
- int sig;
|
||||
+void handler(int sig)
|
||||
{if(sig==SIGCHLD) child=1;}
|
||||
int main() {
|
||||
struct sigaction act;
|
||||
|
|
@ -2,7 +2,6 @@
|
|||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchpatch,
|
||||
autoreconfHook,
|
||||
yodl,
|
||||
perl,
|
||||
|
|
@ -18,7 +17,7 @@
|
|||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "zsh";
|
||||
version = "5.9";
|
||||
version = "5.9.1";
|
||||
outputs = [
|
||||
"out"
|
||||
"doc"
|
||||
|
|
@ -28,52 +27,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/zsh/zsh-${finalAttrs.version}.tar.xz";
|
||||
sha256 = "sha256-m40ezt1bXoH78ZGOh2dSp92UjgXBoNuhCrhjhC1FrNU=";
|
||||
sha256 = "sha256-XSC+wD+YHcTpoJ7CRedBU4j/ZB95xcXEFrUELljYKA0=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# fix location of timezone data for TZ= completion
|
||||
./tz_completion.patch
|
||||
# Fixes configure misdetection when using clang 16, resulting in broken subshells on Darwin.
|
||||
# This patch can be dropped with the next release of zsh.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zsh-users/zsh/commit/ab4d62eb975a4c4c51dd35822665050e2ddc6918.patch";
|
||||
hash = "sha256-nXB4w7qqjZJC7/+CDxnNy6wu9qNwmS3ezjj/xK7JfeU=";
|
||||
excludes = [ "ChangeLog" ];
|
||||
})
|
||||
# Fixes compatibility with texinfo 7.1. This patch can be dropped with the next release of zsh.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zsh-users/zsh/commit/ecd3f9c9506c7720dc6c0833dc5d5eb00e4459c4.patch";
|
||||
hash = "sha256-oA8GC8LmuqNKGuPqGfiQVhL5nWb7ArLWGUI6wjpsIW8=";
|
||||
excludes = [ "ChangeLog" ];
|
||||
})
|
||||
# PCRE 2.x support
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zsh-users/zsh/commit/1b421e4978440234fb73117c8505dad1ccc68d46.patch";
|
||||
hash = "sha256-jqTXnz56L3X21e3kXtzrT1jKEq+K7ittFjL7GdHVq94=";
|
||||
excludes = [ "ChangeLog" ];
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zsh-users/zsh/commit/b62e911341c8ec7446378b477c47da4256053dc0.patch";
|
||||
hash = "sha256-MfyiLucaSNNfdCLutgv/kL/oi/EVoxZVUd1KjGzN9XI=";
|
||||
excludes = [ "ChangeLog" ];
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zsh-users/zsh/commit/10bdbd8b5b0b43445aff23dcd412f25cf6aa328a.patch";
|
||||
hash = "sha256-bl1PG9Zk1wK+2mfbCBhD3OEpP8HQboqEO8sLFqX8DmA=";
|
||||
excludes = [ "ChangeLog" ];
|
||||
})
|
||||
# autoconf 2.73 picks -std=gnu23, breaking the K&R sigsuspend probe and
|
||||
# causing $(...) hangs. Drop with the next zsh release.
|
||||
./fix-sigsuspend-probe-c23.patch
|
||||
]
|
||||
++ lib.optionals stdenv.cc.isGNU [
|
||||
# Fixes compilation with gcc >= 14.
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zsh-users/zsh/commit/4c89849c98172c951a9def3690e8647dae76308f.patch";
|
||||
hash = "sha256-l5IHQuIXo0N6ynLlZoQA7wJd/C7KrW3G7nMzfjQINkw=";
|
||||
excludes = [ "ChangeLog" ];
|
||||
})
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@ let
|
|||
hash = "sha256-jnDdxmSbGLw9iVzzqQjAKR6kw4A5rYcixH4Bja8enPw=";
|
||||
};
|
||||
"11" = {
|
||||
version = "11.4.0";
|
||||
hash = "sha256-50EGpaDrJWn0WDUEQg6tX8HCY+QXoyFsqxy+DM3LTq4=";
|
||||
version = "11.5.1";
|
||||
hash = "sha256-3npcG+2DAYBRg6h5l/4XIM1crvtXvoOFNaS/xKFZaVk=";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -53,14 +53,14 @@ let
|
|||
in
|
||||
{
|
||||
nextcloud32 = generic {
|
||||
version = "32.0.10";
|
||||
hash = "sha256-D/zIqDOIJezowzco7gzaTvjquI6Pu80Z9IsE4t0KNXo=";
|
||||
version = "32.0.11";
|
||||
hash = "sha256-vvIY5Yeczhy/0Q0gfVG1iiYPGQ1U/VcZkx7coMWdRiQ=";
|
||||
packages = nextcloud32Packages;
|
||||
};
|
||||
|
||||
nextcloud33 = generic {
|
||||
version = "33.0.4";
|
||||
hash = "sha256-9LHNbdBSXGuoiPLMHw8fU3mdbRfLDXz2YFQuxMvNenI=";
|
||||
version = "33.0.5";
|
||||
hash = "sha256-7Ua5HY2k4fAjTQGIslvulEj6LzAYh+WygBPmtUfW3Mo=";
|
||||
packages = nextcloud33Packages;
|
||||
};
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -11138,8 +11138,6 @@ with pkgs;
|
|||
enableUnfree = true;
|
||||
};
|
||||
|
||||
inherit (ocamlPackages) hol_light;
|
||||
|
||||
isabelle-components = recurseIntoAttrs (callPackage ../by-name/is/isabelle/components { });
|
||||
|
||||
lean3 = lean;
|
||||
|
|
|
|||
|
|
@ -2336,8 +2336,6 @@ let
|
|||
|
||||
google-drive-ocamlfuse = callPackage ../applications/networking/google-drive-ocamlfuse { };
|
||||
|
||||
hol_light = callPackage ../applications/science/logic/hol_light { };
|
||||
|
||||
### End ###
|
||||
|
||||
}
|
||||
|
|
@ -2348,6 +2346,7 @@ let
|
|||
dune_2 = pkgs.dune_2; # Added 2025-12-08
|
||||
dune_3 = pkgs.dune_3; # Added 2025-12-08
|
||||
gd4o = throw "ocamlPackages.gd4o is not maintained, use ocamlPackages.gd instead";
|
||||
hol_light = pkgs.hol_light; # Added 2026-06-02
|
||||
notty = throw "2026-05-05: notty is no longer maintained, use notty-community instead";
|
||||
ocaml-freestanding = throw "ocamlPackages.ocaml-freestanding has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05
|
||||
ocaml-vdom = throw "2023-10-09: ocamlPackages.ocaml-vdom was renamed to ocamlPackages.vdom";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue