mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-09-20 12:29:02 +02:00
Merge staging-next into staging
This commit is contained in:
commit
caf9b7e92b
|
@ -10873,6 +10873,12 @@
|
|||
}];
|
||||
name = "Yaroslav Bolyukin";
|
||||
};
|
||||
lachrymal = {
|
||||
email = "lachrymalfutura@gmail.com";
|
||||
name = "lachrymaL";
|
||||
github = "lachrymaLF";
|
||||
githubId = 13716477;
|
||||
};
|
||||
lafrenierejm = {
|
||||
email = "joseph@lafreniere.xyz";
|
||||
github = "lafrenierejm";
|
||||
|
@ -14330,6 +14336,12 @@
|
|||
githubId = 6930756;
|
||||
name = "Nicolas Mattia";
|
||||
};
|
||||
noaccos = {
|
||||
name = "Francesco Noacco";
|
||||
email = "francesco.noacco2000@gmail.com";
|
||||
github = "noaccOS";
|
||||
githubId = 24324352;
|
||||
};
|
||||
nobbz = {
|
||||
name = "Norbert Melzer";
|
||||
email = "timmelzer+nixpkgs@gmail.com";
|
||||
|
|
|
@ -257,7 +257,6 @@ with lib.maintainers; {
|
|||
|
||||
docs = {
|
||||
members = [
|
||||
asymmetric
|
||||
ryantm
|
||||
];
|
||||
scope = "Maintain nixpkgs/NixOS documentation and tools for building it.";
|
||||
|
|
|
@ -34,6 +34,13 @@ in
|
|||
Sets the [`meta.broken`](https://nixos.org/manual/nixpkgs/stable/#var-meta-broken) attribute on the [{option}`test`](#test-opt-test) derivation.
|
||||
'';
|
||||
};
|
||||
platforms = lib.mkOption {
|
||||
type = types.listOf types.raw;
|
||||
default = lib.platforms.linux;
|
||||
description = ''
|
||||
Sets the [`meta.platforms`](https://nixos.org/manual/nixpkgs/stable/#var-meta-platforms) attribute on the [{option}`test`](#test-opt-test) derivation.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
default = {};
|
||||
|
|
|
@ -186,7 +186,7 @@ let
|
|||
NIX_EFI_VARS=$(readlink -f "''${NIX_EFI_VARS:-${config.system.name}-efi-vars.fd}")
|
||||
# VM needs writable EFI vars
|
||||
if ! test -e "$NIX_EFI_VARS"; then
|
||||
${if cfg.useBootLoader then
|
||||
${if cfg.efi.keepVariables then
|
||||
# We still need the EFI var from the make-disk-image derivation
|
||||
# because our "switch-to-configuration" process might
|
||||
# write into it and we want to keep this data.
|
||||
|
@ -905,6 +905,13 @@ in
|
|||
Defaults to OVMF.
|
||||
'';
|
||||
};
|
||||
|
||||
keepVariables = mkOption {
|
||||
type = types.bool;
|
||||
default = cfg.useBootLoader;
|
||||
defaultText = literalExpression "cfg.useBootLoader";
|
||||
description = "Whether to keep EFI variable values from the generated system image";
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.tpm = {
|
||||
|
|
|
@ -51,7 +51,7 @@ let
|
|||
boot.loader.systemd-boot.enable = true;
|
||||
''}
|
||||
|
||||
boot.initrd.secrets."/etc/secret" = ./secret;
|
||||
boot.initrd.secrets."/etc/secret" = "/etc/nixos/secret";
|
||||
|
||||
${optionalString clevisTest ''
|
||||
boot.kernelParams = [ "console=tty0" "ip=192.168.1.1:::255.255.255.0::eth1:none" ];
|
||||
|
@ -80,39 +80,24 @@ let
|
|||
# a test script fragment `createPartitions', which must create
|
||||
# partitions and filesystems.
|
||||
testScriptFun = { bootLoader, createPartitions, grubDevice, grubUseEfi, grubIdentifier
|
||||
, postInstallCommands, preBootCommands, postBootCommands, extraConfig
|
||||
, postInstallCommands, postBootCommands, extraConfig
|
||||
, testSpecialisationConfig, testFlakeSwitch, clevisTest, clevisFallbackTest
|
||||
, disableFileSystems
|
||||
}:
|
||||
let
|
||||
qemu-common = import ../lib/qemu-common.nix { inherit (pkgs) lib pkgs; };
|
||||
isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
|
||||
qemu = qemu-common.qemuBinary pkgs.qemu_test;
|
||||
in if !isEfi && !pkgs.stdenv.hostPlatform.isx86 then ''
|
||||
machine.succeed("true")
|
||||
'' else ''
|
||||
startTarget = ''
|
||||
${optionalString clevisTest "tpm.start()"}
|
||||
target.start()
|
||||
${postBootCommands}
|
||||
target.wait_for_unit("multi-user.target")
|
||||
'';
|
||||
in ''
|
||||
${optionalString clevisTest ''
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
tpm_folder = os.environ['NIX_BUILD_TOP']
|
||||
|
||||
startcommand = "${qemu} -m 2048"
|
||||
|
||||
${optionalString clevisTest ''
|
||||
startcommand += f" -chardev socket,id=chrtpm,path={tpm_folder}/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0"
|
||||
startcommand += " -device virtio-net-pci,netdev=vlan1,mac=52:54:00:12:11:02 -netdev vde,id=vlan1,sock=\"$QEMU_VDE_SOCKET_1\""
|
||||
''}
|
||||
${optionalString isEfi ''
|
||||
startcommand +=" -drive if=pflash,format=raw,unit=0,readonly=on,file=${pkgs.OVMF.firmware} -drive if=pflash,format=raw,unit=1,readonly=on,file=${pkgs.OVMF.variables}"
|
||||
''}
|
||||
|
||||
image_dir = machine.state_dir
|
||||
disk_image = os.path.join(image_dir, "machine.qcow2")
|
||||
startcommand += f" -drive file={disk_image},if=virtio,werror=report"
|
||||
|
||||
def create_machine_named(name):
|
||||
return create_machine(startcommand, name=name)
|
||||
|
||||
class Tpm:
|
||||
def __init__(self):
|
||||
self.start()
|
||||
|
@ -143,30 +128,31 @@ let
|
|||
os.mkdir(f"{tpm_folder}/swtpm")
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
''}
|
||||
|
||||
start_all()
|
||||
installer.start()
|
||||
${optionalString clevisTest ''
|
||||
tang.start()
|
||||
tang.wait_for_unit("sockets.target")
|
||||
tang.systemctl("start network-online.target")
|
||||
tang.wait_for_unit("network-online.target")
|
||||
machine.systemctl("start network-online.target")
|
||||
machine.wait_for_unit("network-online.target")
|
||||
installer.systemctl("start network-online.target")
|
||||
installer.wait_for_unit("network-online.target")
|
||||
''}
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
installer.wait_for_unit("multi-user.target")
|
||||
|
||||
with subtest("Assert readiness of login prompt"):
|
||||
machine.succeed("echo hello")
|
||||
installer.succeed("echo hello")
|
||||
|
||||
with subtest("Wait for hard disks to appear in /dev"):
|
||||
machine.succeed("udevadm settle")
|
||||
installer.succeed("udevadm settle")
|
||||
|
||||
${createPartitions}
|
||||
|
||||
with subtest("Create the NixOS configuration"):
|
||||
machine.succeed("nixos-generate-config ${optionalString disableFileSystems "--no-filesystems"} --root /mnt")
|
||||
machine.succeed("cat /mnt/etc/nixos/hardware-configuration.nix >&2")
|
||||
machine.copy_from_host(
|
||||
installer.succeed("nixos-generate-config ${optionalString disableFileSystems "--no-filesystems"} --root /mnt")
|
||||
installer.succeed("cat /mnt/etc/nixos/hardware-configuration.nix >&2")
|
||||
installer.copy_from_host(
|
||||
"${ makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier
|
||||
grubUseEfi extraConfig clevisTest;
|
||||
|
@ -174,13 +160,13 @@ let
|
|||
}",
|
||||
"/mnt/etc/nixos/configuration.nix",
|
||||
)
|
||||
machine.copy_from_host("${pkgs.writeText "secret" "secret"}", "/mnt/etc/nixos/secret")
|
||||
installer.copy_from_host("${pkgs.writeText "secret" "secret"}", "/mnt/etc/nixos/secret")
|
||||
|
||||
${optionalString clevisTest ''
|
||||
with subtest("Create the Clevis secret with Tang"):
|
||||
machine.systemctl("start network-online.target")
|
||||
machine.wait_for_unit("network-online.target")
|
||||
machine.succeed('echo -n password | clevis encrypt sss \'{"t": 2, "pins": {"tpm2": {}, "tang": {"url": "http://192.168.1.2"}}}\' -y > /mnt/etc/nixos/clevis-secret.jwe')''}
|
||||
installer.systemctl("start network-online.target")
|
||||
installer.wait_for_unit("network-online.target")
|
||||
installer.succeed('echo -n password | clevis encrypt sss \'{"t": 2, "pins": {"tpm2": {}, "tang": {"url": "http://192.168.1.2"}}}\' -y > /mnt/etc/nixos/clevis-secret.jwe')''}
|
||||
|
||||
${optionalString clevisFallbackTest ''
|
||||
with subtest("Shutdown Tang to check fallback to interactive prompt"):
|
||||
|
@ -188,13 +174,13 @@ let
|
|||
''}
|
||||
|
||||
with subtest("Perform the installation"):
|
||||
machine.succeed("nixos-install < /dev/null >&2")
|
||||
installer.succeed("nixos-install < /dev/null >&2")
|
||||
|
||||
with subtest("Do it again to make sure it's idempotent"):
|
||||
machine.succeed("nixos-install < /dev/null >&2")
|
||||
installer.succeed("nixos-install < /dev/null >&2")
|
||||
|
||||
with subtest("Check that we can build things in nixos-enter"):
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"""
|
||||
nixos-enter -- nix-build --option substitute false -E 'derivation {
|
||||
name = "t";
|
||||
|
@ -209,48 +195,48 @@ let
|
|||
${postInstallCommands}
|
||||
|
||||
with subtest("Shutdown system after installation"):
|
||||
machine.succeed("umount -R /mnt")
|
||||
machine.succeed("sync")
|
||||
machine.shutdown()
|
||||
installer.succeed("umount -R /mnt")
|
||||
installer.succeed("sync")
|
||||
installer.shutdown()
|
||||
|
||||
# We're actually the same machine, just booting differently this time.
|
||||
target.state_dir = installer.state_dir
|
||||
|
||||
# Now see if we can boot the installation.
|
||||
machine = create_machine_named("boot-after-install")
|
||||
|
||||
# For example to enter LUKS passphrase.
|
||||
${preBootCommands}
|
||||
${startTarget}
|
||||
|
||||
with subtest("Assert that /boot get mounted"):
|
||||
machine.wait_for_unit("local-fs.target")
|
||||
target.wait_for_unit("local-fs.target")
|
||||
${if bootLoader == "grub"
|
||||
then ''machine.succeed("test -e /boot/grub")''
|
||||
else ''machine.succeed("test -e /boot/loader/loader.conf")''
|
||||
then ''target.succeed("test -e /boot/grub")''
|
||||
else ''target.succeed("test -e /boot/loader/loader.conf")''
|
||||
}
|
||||
|
||||
with subtest("Check whether /root has correct permissions"):
|
||||
assert "700" in machine.succeed("stat -c '%a' /root")
|
||||
assert "700" in target.succeed("stat -c '%a' /root")
|
||||
|
||||
with subtest("Assert swap device got activated"):
|
||||
# uncomment once https://bugs.freedesktop.org/show_bug.cgi?id=86930 is resolved
|
||||
machine.wait_for_unit("swap.target")
|
||||
machine.succeed("cat /proc/swaps | grep -q /dev")
|
||||
target.wait_for_unit("swap.target")
|
||||
target.succeed("cat /proc/swaps | grep -q /dev")
|
||||
|
||||
with subtest("Check that the store is in good shape"):
|
||||
machine.succeed("nix-store --verify --check-contents >&2")
|
||||
target.succeed("nix-store --verify --check-contents >&2")
|
||||
|
||||
with subtest("Check whether the channel works"):
|
||||
machine.succeed("nix-env -iA nixos.procps >&2")
|
||||
assert ".nix-profile" in machine.succeed("type -tP ps | tee /dev/stderr")
|
||||
target.succeed("nix-env -iA nixos.procps >&2")
|
||||
assert ".nix-profile" in target.succeed("type -tP ps | tee /dev/stderr")
|
||||
|
||||
with subtest(
|
||||
"Check that the daemon works, and that non-root users can run builds "
|
||||
"(this will build a new profile generation through the daemon)"
|
||||
):
|
||||
machine.succeed("su alice -l -c 'nix-env -iA nixos.procps' >&2")
|
||||
target.succeed("su alice -l -c 'nix-env -iA nixos.procps' >&2")
|
||||
|
||||
with subtest("Configure system with writable Nix store on next boot"):
|
||||
# we're not using copy_from_host here because the installer image
|
||||
# doesn't know about the host-guest sharing mechanism.
|
||||
machine.copy_from_host_via_shell(
|
||||
target.copy_from_host_via_shell(
|
||||
"${ makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier
|
||||
grubUseEfi extraConfig clevisTest;
|
||||
|
@ -261,25 +247,23 @@ let
|
|||
)
|
||||
|
||||
with subtest("Check whether nixos-rebuild works"):
|
||||
machine.succeed("nixos-rebuild switch >&2")
|
||||
target.succeed("nixos-rebuild switch >&2")
|
||||
|
||||
# FIXME: Nix 2.4 broke nixos-option, someone has to fix it.
|
||||
# with subtest("Test nixos-option"):
|
||||
# kernel_modules = machine.succeed("nixos-option boot.initrd.kernelModules")
|
||||
# kernel_modules = target.succeed("nixos-option boot.initrd.kernelModules")
|
||||
# assert "virtio_console" in kernel_modules
|
||||
# assert "List of modules" in kernel_modules
|
||||
# assert "qemu-guest.nix" in kernel_modules
|
||||
|
||||
machine.shutdown()
|
||||
target.shutdown()
|
||||
|
||||
# Check whether a writable store build works
|
||||
machine = create_machine_named("rebuild-switch")
|
||||
${preBootCommands}
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
${startTarget}
|
||||
|
||||
# we're not using copy_from_host here because the installer image
|
||||
# doesn't know about the host-guest sharing mechanism.
|
||||
machine.copy_from_host_via_shell(
|
||||
target.copy_from_host_via_shell(
|
||||
"${ makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier
|
||||
grubUseEfi extraConfig clevisTest;
|
||||
|
@ -288,73 +272,62 @@ let
|
|||
}",
|
||||
"/etc/nixos/configuration.nix",
|
||||
)
|
||||
machine.succeed("nixos-rebuild boot >&2")
|
||||
machine.shutdown()
|
||||
target.succeed("nixos-rebuild boot >&2")
|
||||
target.shutdown()
|
||||
|
||||
# And just to be sure, check that the machine still boots after
|
||||
# "nixos-rebuild switch".
|
||||
machine = create_machine_named("boot-after-rebuild-switch")
|
||||
${preBootCommands}
|
||||
machine.wait_for_unit("network.target")
|
||||
# And just to be sure, check that the target still boots after "nixos-rebuild switch".
|
||||
${startTarget}
|
||||
target.wait_for_unit("network.target")
|
||||
|
||||
# Sanity check, is it the configuration.nix we generated?
|
||||
hostname = machine.succeed("hostname").strip()
|
||||
hostname = target.succeed("hostname").strip()
|
||||
assert hostname == "thatworked"
|
||||
|
||||
${postBootCommands}
|
||||
machine.shutdown()
|
||||
target.shutdown()
|
||||
|
||||
# Tests for validating clone configuration entries in grub menu
|
||||
''
|
||||
+ optionalString testSpecialisationConfig ''
|
||||
# Reboot Machine
|
||||
machine = create_machine_named("clone-default-config")
|
||||
${preBootCommands}
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
# Reboot target
|
||||
${startTarget}
|
||||
|
||||
with subtest("Booted configuration name should be 'Home'"):
|
||||
# This is not the name that shows in the grub menu.
|
||||
# The default configuration is always shown as "Default"
|
||||
machine.succeed("cat /run/booted-system/configuration-name >&2")
|
||||
assert "Home" in machine.succeed("cat /run/booted-system/configuration-name")
|
||||
target.succeed("cat /run/booted-system/configuration-name >&2")
|
||||
assert "Home" in target.succeed("cat /run/booted-system/configuration-name")
|
||||
|
||||
with subtest("We should **not** find a file named /etc/gitconfig"):
|
||||
machine.fail("test -e /etc/gitconfig")
|
||||
target.fail("test -e /etc/gitconfig")
|
||||
|
||||
with subtest("Set grub to boot the second configuration"):
|
||||
machine.succeed("grub-reboot 1")
|
||||
target.succeed("grub-reboot 1")
|
||||
|
||||
${postBootCommands}
|
||||
machine.shutdown()
|
||||
target.shutdown()
|
||||
|
||||
# Reboot Machine
|
||||
machine = create_machine_named("clone-alternate-config")
|
||||
${preBootCommands}
|
||||
# Reboot target
|
||||
${startTarget}
|
||||
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
with subtest("Booted configuration name should be Work"):
|
||||
machine.succeed("cat /run/booted-system/configuration-name >&2")
|
||||
assert "Work" in machine.succeed("cat /run/booted-system/configuration-name")
|
||||
target.succeed("cat /run/booted-system/configuration-name >&2")
|
||||
assert "Work" in target.succeed("cat /run/booted-system/configuration-name")
|
||||
|
||||
with subtest("We should find a file named /etc/gitconfig"):
|
||||
machine.succeed("test -e /etc/gitconfig")
|
||||
target.succeed("test -e /etc/gitconfig")
|
||||
|
||||
${postBootCommands}
|
||||
machine.shutdown()
|
||||
target.shutdown()
|
||||
''
|
||||
+ optionalString testFlakeSwitch ''
|
||||
${preBootCommands}
|
||||
machine.start()
|
||||
${startTarget}
|
||||
|
||||
with subtest("Configure system with flake"):
|
||||
# TODO: evaluate as user?
|
||||
machine.succeed("""
|
||||
target.succeed("""
|
||||
mkdir /root/my-config
|
||||
mv /etc/nixos/hardware-configuration.nix /root/my-config/
|
||||
mv /etc/nixos/secret /root/my-config/
|
||||
rm /etc/nixos/configuration.nix
|
||||
""")
|
||||
machine.copy_from_host_via_shell(
|
||||
target.copy_from_host_via_shell(
|
||||
"${makeConfig {
|
||||
inherit bootLoader grubDevice grubIdentifier grubUseEfi extraConfig clevisTest;
|
||||
forceGrubReinstallCount = 1;
|
||||
|
@ -362,11 +335,11 @@ let
|
|||
}}",
|
||||
"/root/my-config/configuration.nix",
|
||||
)
|
||||
machine.copy_from_host_via_shell(
|
||||
target.copy_from_host_via_shell(
|
||||
"${./installer/flake.nix}",
|
||||
"/root/my-config/flake.nix",
|
||||
)
|
||||
machine.succeed("""
|
||||
target.succeed("""
|
||||
# for some reason the image does not have `pkgs.path`, so
|
||||
# we use readlink to find a Nixpkgs source.
|
||||
pkgs=$(readlink -f /nix/var/nix/profiles/per-user/root/channels)/nixos
|
||||
|
@ -378,36 +351,32 @@ let
|
|||
""")
|
||||
|
||||
with subtest("Switch to flake based config"):
|
||||
machine.succeed("nixos-rebuild switch --flake /root/my-config#xyz")
|
||||
target.succeed("nixos-rebuild switch --flake /root/my-config#xyz")
|
||||
|
||||
${postBootCommands}
|
||||
machine.shutdown()
|
||||
target.shutdown()
|
||||
|
||||
${preBootCommands}
|
||||
machine.start()
|
||||
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
${startTarget}
|
||||
|
||||
with subtest("nix-channel command is not available anymore"):
|
||||
machine.succeed("! which nix-channel")
|
||||
target.succeed("! which nix-channel")
|
||||
|
||||
# Note that the channel profile is still present on disk, but configured
|
||||
# not to be used.
|
||||
with subtest("builtins.nixPath is now empty"):
|
||||
machine.succeed("""
|
||||
target.succeed("""
|
||||
[[ "[ ]" == "$(nix-instantiate builtins.nixPath --eval --expr)" ]]
|
||||
""")
|
||||
|
||||
with subtest("<nixpkgs> does not resolve"):
|
||||
machine.succeed("""
|
||||
target.succeed("""
|
||||
! nix-instantiate '<nixpkgs>' --eval --expr
|
||||
""")
|
||||
|
||||
with subtest("Evaluate flake config in fresh env without nix-channel"):
|
||||
machine.succeed("nixos-rebuild switch --flake /root/my-config#xyz")
|
||||
target.succeed("nixos-rebuild switch --flake /root/my-config#xyz")
|
||||
|
||||
with subtest("Evaluate flake config in fresh env without channel profiles"):
|
||||
machine.succeed("""
|
||||
target.succeed("""
|
||||
(
|
||||
exec 1>&2
|
||||
rm -v /root/.nix-channels
|
||||
|
@ -415,16 +384,15 @@ let
|
|||
rm -vrf /nix/var/nix/profiles/per-user/root/channels*
|
||||
)
|
||||
""")
|
||||
machine.succeed("nixos-rebuild switch --flake /root/my-config#xyz")
|
||||
target.succeed("nixos-rebuild switch --flake /root/my-config#xyz")
|
||||
|
||||
${postBootCommands}
|
||||
machine.shutdown()
|
||||
target.shutdown()
|
||||
'';
|
||||
|
||||
|
||||
makeInstallerTest = name:
|
||||
{ createPartitions
|
||||
, postInstallCommands ? "", preBootCommands ? "", postBootCommands ? ""
|
||||
, postInstallCommands ? "", postBootCommands ? ""
|
||||
, extraConfig ? ""
|
||||
, extraInstallerConfig ? {}
|
||||
, bootLoader ? "grub" # either "grub" or "systemd-boot"
|
||||
|
@ -436,18 +404,39 @@ let
|
|||
, clevisFallbackTest ? false
|
||||
, disableFileSystems ? false
|
||||
}:
|
||||
makeTest {
|
||||
let
|
||||
isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
|
||||
in makeTest {
|
||||
inherit enableOCR;
|
||||
name = "installer-" + name;
|
||||
meta = {
|
||||
# put global maintainers here, individuals go into makeInstallerTest fkt call
|
||||
maintainers = (meta.maintainers or []);
|
||||
# non-EFI tests can only run on x86
|
||||
platforms = if isEfi then platforms.linux else [ "x86_64-linux" "i686-linux" ];
|
||||
};
|
||||
nodes = {
|
||||
nodes = let
|
||||
commonConfig = {
|
||||
# builds stuff in the VM, needs more juice
|
||||
virtualisation.diskSize = 8 * 1024;
|
||||
virtualisation.cores = 8;
|
||||
virtualisation.memorySize = 2048;
|
||||
|
||||
# The configuration of the machine used to run "nixos-install".
|
||||
machine = { pkgs, ... }: {
|
||||
# both installer and target need to use the same drive
|
||||
virtualisation.diskImage = "./target.qcow2";
|
||||
|
||||
# and the same TPM options
|
||||
virtualisation.qemu.options = mkIf (clevisTest) [
|
||||
"-chardev socket,id=chrtpm,path=$NIX_BUILD_TOP/swtpm-sock"
|
||||
"-tpmdev emulator,id=tpm0,chardev=chrtpm"
|
||||
"-device tpm-tis,tpmdev=tpm0"
|
||||
];
|
||||
};
|
||||
in {
|
||||
# The configuration of the system used to run "nixos-install".
|
||||
installer = {
|
||||
imports = [
|
||||
commonConfig
|
||||
../modules/profiles/installation-device.nix
|
||||
../modules/profiles/base.nix
|
||||
extraInstallerConfig
|
||||
|
@ -458,11 +447,6 @@ let
|
|||
# root filesystem.
|
||||
virtualisation.fileSystems."/".autoFormat = systemdStage1;
|
||||
|
||||
# builds stuff in the VM, needs more juice
|
||||
virtualisation.diskSize = 8 * 1024;
|
||||
virtualisation.cores = 8;
|
||||
virtualisation.memorySize = 2048;
|
||||
|
||||
boot.initrd.systemd.enable = systemdStage1;
|
||||
|
||||
# Use a small /dev/vdb as the root disk for the
|
||||
|
@ -470,17 +454,6 @@ let
|
|||
# the same during and after installation.
|
||||
virtualisation.emptyDiskImages = [ 512 ];
|
||||
virtualisation.rootDevice = "/dev/vdb";
|
||||
virtualisation.bootLoaderDevice = "/dev/vda";
|
||||
virtualisation.qemu.diskInterface = "virtio";
|
||||
virtualisation.qemu.options = mkIf (clevisTest) [
|
||||
"-chardev socket,id=chrtpm,path=$NIX_BUILD_TOP/swtpm-sock"
|
||||
"-tpmdev emulator,id=tpm0,chardev=chrtpm"
|
||||
"-device tpm-tis,tpmdev=tpm0"
|
||||
];
|
||||
# We don't want to have any networking in the guest apart from the clevis tests.
|
||||
virtualisation.vlans = mkIf (!clevisTest) [];
|
||||
|
||||
boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true;
|
||||
|
||||
hardware.enableAllFirmware = mkForce false;
|
||||
|
||||
|
@ -520,7 +493,13 @@ let
|
|||
in [
|
||||
(pkgs.grub2.override { inherit zfsSupport; })
|
||||
(pkgs.grub2_efi.override { inherit zfsSupport; })
|
||||
]) ++ optionals clevisTest [ pkgs.klibc ];
|
||||
])
|
||||
++ optionals (bootLoader == "systemd-boot") [
|
||||
pkgs.zstd.bin
|
||||
pkgs.mypy
|
||||
pkgs.bootspec
|
||||
]
|
||||
++ optionals clevisTest [ pkgs.klibc ];
|
||||
|
||||
nix.settings = {
|
||||
substituters = mkForce [];
|
||||
|
@ -529,6 +508,18 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
target = {
|
||||
imports = [ commonConfig ];
|
||||
virtualisation.useBootLoader = true;
|
||||
virtualisation.useEFIBoot = isEfi;
|
||||
virtualisation.useDefaultFilesystems = false;
|
||||
virtualisation.efi.keepVariables = false;
|
||||
|
||||
virtualisation.fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/this-is-not-real-and-will-never-be-used";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
} // optionalAttrs clevisTest {
|
||||
tang = {
|
||||
services.tang = {
|
||||
|
@ -541,7 +532,7 @@ let
|
|||
};
|
||||
|
||||
testScript = testScriptFun {
|
||||
inherit bootLoader createPartitions postInstallCommands preBootCommands postBootCommands
|
||||
inherit bootLoader createPartitions postInstallCommands postBootCommands
|
||||
grubDevice grubIdentifier grubUseEfi extraConfig
|
||||
testSpecialisationConfig testFlakeSwitch clevisTest clevisFallbackTest
|
||||
disableFileSystems;
|
||||
|
@ -550,7 +541,7 @@ let
|
|||
|
||||
makeLuksRootTest = name: luksFormatOpts: makeInstallerTest name {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
|
@ -572,10 +563,9 @@ let
|
|||
boot.kernelParams = lib.mkAfter [ "console=tty0" ];
|
||||
'';
|
||||
enableOCR = true;
|
||||
preBootCommands = ''
|
||||
machine.start()
|
||||
machine.wait_for_text("[Pp]assphrase for")
|
||||
machine.send_chars("supersecret\n")
|
||||
postBootCommands = ''
|
||||
target.wait_for_text("[Pp]assphrase for")
|
||||
target.send_chars("supersecret\n")
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -583,7 +573,7 @@ let
|
|||
# one big filesystem partition.
|
||||
simple-test-config = {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary linux-swap 1M 1024M"
|
||||
+ " mkpart primary ext2 1024M -1s",
|
||||
|
@ -602,7 +592,7 @@ let
|
|||
|
||||
simple-uefi-grub-config = {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel gpt"
|
||||
+ " mkpart ESP fat32 1M 100MiB" # /boot
|
||||
+ " set 1 boot on"
|
||||
|
@ -656,7 +646,7 @@ let
|
|||
environment.systemPackages = with pkgs; [ keyutils clevis ];
|
||||
};
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB"
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
|
@ -680,13 +670,9 @@ let
|
|||
# not know the UUID in advance.
|
||||
fileSystems."/" = lib.mkForce { device = "/dev/vda3"; fsType = "bcachefs"; };
|
||||
'';
|
||||
preBootCommands = ''
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
'' + optionalString fallback ''
|
||||
machine.start()
|
||||
machine.wait_for_text("enter passphrase for")
|
||||
machine.send_chars("password\n")
|
||||
postBootCommands = optionalString fallback ''
|
||||
target.wait_for_text("enter passphrase for")
|
||||
target.send_chars("password\n")
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -698,7 +684,7 @@ let
|
|||
environment.systemPackages = with pkgs; [ clevis ];
|
||||
};
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB"
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
|
@ -719,17 +705,13 @@ let
|
|||
extraConfig = ''
|
||||
boot.initrd.clevis.devices."crypt-root".secretFile = "/etc/nixos/clevis-secret.jwe";
|
||||
'';
|
||||
preBootCommands = ''
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
'' + optionalString fallback ''
|
||||
machine.start()
|
||||
postBootCommands = optionalString fallback ''
|
||||
${if systemdStage1 then ''
|
||||
machine.wait_for_text("Please enter")
|
||||
target.wait_for_text("Please enter")
|
||||
'' else ''
|
||||
machine.wait_for_text("Passphrase for")
|
||||
target.wait_for_text("Passphrase for")
|
||||
''}
|
||||
machine.send_chars("password\n")
|
||||
target.send_chars("password\n")
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -742,7 +724,7 @@ let
|
|||
environment.systemPackages = with pkgs; [ clevis ];
|
||||
};
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB"
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
|
@ -770,17 +752,13 @@ let
|
|||
boot.zfs.devNodes = "/dev/disk/by-uuid/";
|
||||
networking.hostId = "00000000";
|
||||
'';
|
||||
preBootCommands = ''
|
||||
tpm = Tpm()
|
||||
tpm.check()
|
||||
'' + optionalString fallback ''
|
||||
machine.start()
|
||||
postBootCommands = optionalString fallback ''
|
||||
${if systemdStage1 then ''
|
||||
machine.wait_for_text("Enter key for rpool/root")
|
||||
target.wait_for_text("Enter key for rpool/root")
|
||||
'' else ''
|
||||
machine.wait_for_text("Key load error")
|
||||
target.wait_for_text("Key load error")
|
||||
''}
|
||||
machine.send_chars("password\n")
|
||||
target.send_chars("password\n")
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -801,7 +779,7 @@ in {
|
|||
# Simple GPT/UEFI configuration using systemd-boot with 3 partitions: ESP, swap & root filesystem
|
||||
simpleUefiSystemdBoot = makeInstallerTest "simpleUefiSystemdBoot" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel gpt"
|
||||
+ " mkpart ESP fat32 1M 100MiB" # /boot
|
||||
+ " set 1 boot on"
|
||||
|
@ -828,7 +806,7 @@ in {
|
|||
# Same as the previous, but now with a separate /boot partition.
|
||||
separateBoot = makeInstallerTest "separateBoot" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100MB 1024M"
|
||||
|
@ -848,7 +826,7 @@ in {
|
|||
# Same as the previous, but with fat32 /boot.
|
||||
separateBootFat = makeInstallerTest "separateBootFat" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100MB 1024M"
|
||||
|
@ -880,7 +858,7 @@ in {
|
|||
'';
|
||||
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 256MB" # /boot
|
||||
+ " mkpart primary linux-swap 256MB 1280M"
|
||||
|
@ -932,8 +910,8 @@ in {
|
|||
# umount & export bpool before shutdown
|
||||
# this is a fix for "cannot import 'bpool': pool was previously in use from another system."
|
||||
postInstallCommands = ''
|
||||
machine.succeed("umount /mnt/boot")
|
||||
machine.succeed("zpool export bpool")
|
||||
installer.succeed("umount /mnt/boot")
|
||||
installer.succeed("zpool export bpool")
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -954,7 +932,7 @@ in {
|
|||
'';
|
||||
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
|
@ -980,7 +958,7 @@ in {
|
|||
# that contains the logical swap and root partitions.
|
||||
lvm = makeInstallerTest "lvm" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary 1M 2048M" # PV1
|
||||
+ " set 1 lvm on"
|
||||
|
@ -1013,7 +991,7 @@ in {
|
|||
# keyfile is configured
|
||||
encryptedFSWithKeyfile = makeInstallerTest "encryptedFSWithKeyfile" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100M 1024M"
|
||||
|
@ -1052,7 +1030,7 @@ in {
|
|||
# LVM-on-LUKS and a keyfile in initrd.secrets to enter the passphrase once
|
||||
fullDiskEncryption = makeInstallerTest "fullDiskEncryption" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel gpt"
|
||||
+ " mkpart ESP fat32 1M 100MiB" # /boot/efi
|
||||
+ " set 1 boot on"
|
||||
|
@ -1083,23 +1061,22 @@ in {
|
|||
boot.loader.grub.enableCryptodisk = true;
|
||||
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
|
||||
boot.initrd.secrets."/luks.key" = ./luks.key;
|
||||
boot.initrd.secrets."/luks.key" = "/etc/nixos/luks.key";
|
||||
boot.initrd.luks.devices.crypt =
|
||||
{ device = "/dev/vda2";
|
||||
keyFile = "/luks.key";
|
||||
};
|
||||
'';
|
||||
enableOCR = true;
|
||||
preBootCommands = ''
|
||||
machine.start()
|
||||
machine.wait_for_text("Enter passphrase for")
|
||||
machine.send_chars("supersecret\n")
|
||||
postBootCommands = ''
|
||||
target.wait_for_text("Enter passphrase for")
|
||||
target.send_chars("supersecret\n")
|
||||
'';
|
||||
};
|
||||
|
||||
swraid = makeInstallerTest "swraid" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda --"
|
||||
+ " mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
|
@ -1128,15 +1105,14 @@ in {
|
|||
"udevadm settle",
|
||||
)
|
||||
'';
|
||||
preBootCommands = ''
|
||||
machine.start()
|
||||
machine.fail("dmesg | grep 'immediate safe mode'")
|
||||
postBootCommands = ''
|
||||
target.fail("dmesg | grep 'immediate safe mode'")
|
||||
'';
|
||||
};
|
||||
|
||||
bcache = makeInstallerTest "bcache" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda --"
|
||||
+ " mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
|
@ -1165,7 +1141,7 @@ in {
|
|||
};
|
||||
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100M 1024M" # swap
|
||||
|
@ -1197,18 +1173,17 @@ in {
|
|||
'';
|
||||
|
||||
enableOCR = true;
|
||||
preBootCommands = ''
|
||||
machine.start()
|
||||
postBootCommands = ''
|
||||
# Enter it wrong once
|
||||
machine.wait_for_text("enter passphrase for ")
|
||||
machine.send_chars("wrong\n")
|
||||
target.wait_for_text("enter passphrase for ")
|
||||
target.send_chars("wrong\n")
|
||||
# Then enter it right.
|
||||
machine.wait_for_text("enter passphrase for ")
|
||||
machine.send_chars("password\n")
|
||||
target.wait_for_text("enter passphrase for ")
|
||||
target.send_chars("password\n")
|
||||
'';
|
||||
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100M 1024M" # swap
|
||||
|
@ -1235,7 +1210,7 @@ in {
|
|||
};
|
||||
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"flock /dev/vda parted --script /dev/vda -- mklabel msdos"
|
||||
+ " mkpart primary ext2 1M 100MB" # /boot
|
||||
+ " mkpart primary linux-swap 100M 1024M" # swap
|
||||
|
@ -1256,7 +1231,7 @@ in {
|
|||
# Test using labels to identify volumes in grub
|
||||
simpleLabels = makeInstallerTest "simpleLabels" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk -Z /dev/vda",
|
||||
"sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
|
@ -1273,7 +1248,7 @@ in {
|
|||
simpleProvided = makeInstallerTest "simpleProvided" {
|
||||
createPartitions = ''
|
||||
uuid = "$(blkid -s UUID -o value /dev/vda2)"
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk -Z /dev/vda",
|
||||
"sgdisk -n 1:0:+1M -n 2:0:+100M -n 3:0:+1G -N 4 -t 1:ef02 -t 2:8300 "
|
||||
+ "-t 3:8200 -t 4:8300 -c 2:boot -c 4:root /dev/vda",
|
||||
|
@ -1282,9 +1257,9 @@ in {
|
|||
"mkfs.ext4 -L boot /dev/vda2",
|
||||
"mkfs.ext4 -L root /dev/vda4",
|
||||
)
|
||||
machine.execute(f"ln -s ../../vda2 /dev/disk/by-uuid/{uuid}")
|
||||
machine.execute("ln -s ../../vda4 /dev/disk/by-label/root")
|
||||
machine.succeed(
|
||||
installer.execute(f"ln -s ../../vda2 /dev/disk/by-uuid/{uuid}")
|
||||
installer.execute("ln -s ../../vda4 /dev/disk/by-label/root")
|
||||
installer.succeed(
|
||||
"mount /dev/disk/by-label/root /mnt",
|
||||
"mkdir /mnt/boot",
|
||||
f"mount /dev/disk/by-uuid/{uuid} /mnt/boot",
|
||||
|
@ -1296,7 +1271,7 @@ in {
|
|||
# Simple btrfs grub testing
|
||||
btrfsSimple = makeInstallerTest "btrfsSimple" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk -Z /dev/vda",
|
||||
"sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
|
@ -1310,7 +1285,7 @@ in {
|
|||
# Test to see if we can detect /boot and /nix on subvolumes
|
||||
btrfsSubvols = makeInstallerTest "btrfsSubvols" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk -Z /dev/vda",
|
||||
"sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
|
@ -1332,7 +1307,7 @@ in {
|
|||
# Test to see if we can detect default and aux subvolumes correctly
|
||||
btrfsSubvolDefault = makeInstallerTest "btrfsSubvolDefault" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk -Z /dev/vda",
|
||||
"sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
|
@ -1358,7 +1333,7 @@ in {
|
|||
# Test to see if we can deal with subvols that need to be escaped in fstab
|
||||
btrfsSubvolEscape = makeInstallerTest "btrfsSubvolEscape" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk -Z /dev/vda",
|
||||
"sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
|
@ -1385,7 +1360,7 @@ in {
|
|||
} // optionalAttrs systemdStage1 {
|
||||
stratisRoot = makeInstallerTest "stratisRoot" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk --zap-all /dev/vda",
|
||||
"sgdisk --new=1:0:+100M --typecode=0:ef00 /dev/vda", # /boot
|
||||
"sgdisk --new=2:0:+1G --typecode=0:8200 /dev/vda", # swap
|
||||
|
@ -1428,7 +1403,7 @@ in {
|
|||
in makeInstallerTest "gptAutoRoot" {
|
||||
disableFileSystems = true;
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
installer.succeed(
|
||||
"sgdisk --zap-all /dev/vda",
|
||||
"sgdisk --new=1:0:+100M --typecode=0:ef00 /dev/vda", # /boot
|
||||
"sgdisk --new=2:0:+1G --typecode=0:8200 /dev/vda", # swap
|
||||
|
|
|
@ -1,19 +1,50 @@
|
|||
{ buildVersion, aarch64sha256, x64sha256, dev ? false }:
|
||||
{
|
||||
buildVersion,
|
||||
dev ? false,
|
||||
aarch64sha256,
|
||||
x64sha256,
|
||||
}:
|
||||
|
||||
{ fetchurl, stdenv, lib, xorg, glib, libglvnd, glibcLocales, gtk3, cairo, pango, makeWrapper, wrapGAppsHook
|
||||
, writeShellScript, common-updater-scripts, curl
|
||||
, openssl_1_1, bzip2, bash, unzip, zip
|
||||
, sqlite
|
||||
{
|
||||
fetchurl,
|
||||
stdenv,
|
||||
lib,
|
||||
xorg,
|
||||
glib,
|
||||
libglvnd,
|
||||
glibcLocales,
|
||||
gtk3,
|
||||
cairo,
|
||||
pango,
|
||||
makeWrapper,
|
||||
wrapGAppsHook,
|
||||
writeShellScript,
|
||||
common-updater-scripts,
|
||||
curl,
|
||||
openssl_1_1,
|
||||
bzip2,
|
||||
sqlite,
|
||||
}:
|
||||
|
||||
let
|
||||
pnameBase = "sublimetext4";
|
||||
packageAttribute = "sublime4${lib.optionalString dev "-dev"}";
|
||||
binaries = [ "sublime_text" "plugin_host-3.3" "plugin_host-3.8" crashHandlerBinary ];
|
||||
binaries = [
|
||||
"sublime_text"
|
||||
"plugin_host-3.3"
|
||||
"plugin_host-3.8"
|
||||
crashHandlerBinary
|
||||
];
|
||||
primaryBinary = "sublime_text";
|
||||
primaryBinaryAliases = [ "subl" "sublime" "sublime4" ];
|
||||
crashHandlerBinary = if lib.versionAtLeast buildVersion "4153" then "crash_handler" else "crash_reporter";
|
||||
downloadUrl = arch: "https://download.sublimetext.com/sublime_text_build_${buildVersion}_${arch}.tar.xz";
|
||||
primaryBinaryAliases = [
|
||||
"subl"
|
||||
"sublime"
|
||||
"sublime4"
|
||||
];
|
||||
crashHandlerBinary =
|
||||
if lib.versionAtLeast buildVersion "4153" then "crash_handler" else "crash_reporter";
|
||||
downloadUrl =
|
||||
arch: "https://download.sublimetext.com/sublime_text_build_${buildVersion}_${arch}.tar.xz";
|
||||
versionUrl = "https://download.sublimetext.com/latest/${if dev then "dev" else "stable"}";
|
||||
versionFile = builtins.toString ./packages.nix;
|
||||
|
||||
|
@ -30,7 +61,8 @@ let
|
|||
] ++ lib.optionals (lib.versionAtLeast buildVersion "4145") [
|
||||
sqlite
|
||||
];
|
||||
in let
|
||||
in
|
||||
let
|
||||
binaryPackage = stdenv.mkDerivation rec {
|
||||
pname = "${pnameBase}-bin";
|
||||
version = buildVersion;
|
||||
|
@ -39,31 +71,22 @@ in let
|
|||
|
||||
dontStrip = true;
|
||||
dontPatchELF = true;
|
||||
buildInputs = [ glib gtk3 ]; # for GSETTINGS_SCHEMAS_PATH
|
||||
nativeBuildInputs = [ zip unzip makeWrapper wrapGAppsHook ];
|
||||
|
||||
# make exec.py in Default.sublime-package use own bash with an LD_PRELOAD instead of "/bin/bash"
|
||||
patchPhase = ''
|
||||
runHook prePatch
|
||||
buildInputs = [
|
||||
glib
|
||||
# for GSETTINGS_SCHEMAS_PATH
|
||||
gtk3
|
||||
];
|
||||
|
||||
# TODO: Should not be necessary even in 3
|
||||
mkdir Default.sublime-package-fix
|
||||
( cd Default.sublime-package-fix
|
||||
unzip -q ../Packages/Default.sublime-package
|
||||
substituteInPlace "exec.py" --replace \
|
||||
"[\"/bin/bash\"" \
|
||||
"[\"$out/sublime_bash\""
|
||||
zip -q ../Packages/Default.sublime-package **/*
|
||||
)
|
||||
rm -r Default.sublime-package-fix
|
||||
|
||||
runHook postPatch
|
||||
'';
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
for binary in ${ builtins.concatStringsSep " " binaries }; do
|
||||
for binary in ${builtins.concatStringsSep " " binaries}; do
|
||||
patchelf \
|
||||
--interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath ${lib.makeLibraryPath neededLibraries}:${stdenv.cc.cc.lib}/lib${lib.optionalString stdenv.is64bit "64"} \
|
||||
|
@ -86,10 +109,6 @@ in let
|
|||
mkdir -p $out
|
||||
cp -r * $out/
|
||||
|
||||
# We can't just call /usr/bin/env bash because a relocation error occurs
|
||||
# when trying to run a build from within Sublime Text
|
||||
ln -s ${bash}/bin/bash $out/sublime_bash
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
@ -116,7 +135,8 @@ in let
|
|||
};
|
||||
};
|
||||
};
|
||||
in stdenv.mkDerivation (rec {
|
||||
in
|
||||
stdenv.mkDerivation (rec {
|
||||
pname = pnameBase;
|
||||
version = buildVersion;
|
||||
|
||||
|
@ -124,27 +144,44 @@ in stdenv.mkDerivation (rec {
|
|||
|
||||
${primaryBinary} = binaryPackage;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin"
|
||||
makeWrapper "''$${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
|
||||
'' + builtins.concatStringsSep "" (map (binaryAlias: "ln -s $out/bin/${primaryBinary} $out/bin/${binaryAlias}\n") primaryBinaryAliases) + ''
|
||||
mkdir -p "$out/share/applications"
|
||||
substitute "''$${primaryBinary}/${primaryBinary}.desktop" "$out/share/applications/${primaryBinary}.desktop" --replace "/opt/${primaryBinary}/${primaryBinary}" "${primaryBinary}"
|
||||
for directory in ''$${primaryBinary}/Icon/*; do
|
||||
size=$(basename $directory)
|
||||
mkdir -p "$out/share/icons/hicolor/$size/apps"
|
||||
ln -s ''$${primaryBinary}/Icon/$size/* $out/share/icons/hicolor/$size/apps
|
||||
done
|
||||
'';
|
||||
installPhase =
|
||||
''
|
||||
mkdir -p "$out/bin"
|
||||
makeWrapper "''$${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
|
||||
''
|
||||
+ builtins.concatStringsSep "" (
|
||||
map (binaryAlias: "ln -s $out/bin/${primaryBinary} $out/bin/${binaryAlias}\n") primaryBinaryAliases
|
||||
)
|
||||
+ ''
|
||||
mkdir -p "$out/share/applications"
|
||||
|
||||
substitute \
|
||||
"''$${primaryBinary}/${primaryBinary}.desktop" \
|
||||
"$out/share/applications/${primaryBinary}.desktop" \
|
||||
--replace-fail "/opt/${primaryBinary}/${primaryBinary}" "${primaryBinary}"
|
||||
|
||||
for directory in ''$${primaryBinary}/Icon/*; do
|
||||
size=$(basename $directory)
|
||||
mkdir -p "$out/share/icons/hicolor/$size/apps"
|
||||
ln -s ''$${primaryBinary}/Icon/$size/* $out/share/icons/hicolor/$size/apps
|
||||
done
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript =
|
||||
let
|
||||
script = writeShellScript "${packageAttribute}-update-script" ''
|
||||
set -o errexit
|
||||
PATH=${lib.makeBinPath [ common-updater-scripts curl ]}
|
||||
PATH=${
|
||||
lib.makeBinPath [
|
||||
common-updater-scripts
|
||||
curl
|
||||
]
|
||||
}
|
||||
|
||||
versionFile=$1
|
||||
latestVersion=$(curl -s "${versionUrl}")
|
||||
|
@ -161,15 +198,27 @@ in stdenv.mkDerivation (rec {
|
|||
update-source-version "${packageAttribute}.${primaryBinary}" "$latestVersion" --file="$versionFile" --version-key=buildVersion --source-key="sources.$platform"
|
||||
done
|
||||
'';
|
||||
in [ script versionFile ];
|
||||
in
|
||||
[
|
||||
script
|
||||
versionFile
|
||||
];
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Sophisticated text editor for code, markup and prose";
|
||||
homepage = "https://www.sublimetext.com/";
|
||||
maintainers = with maintainers; [ jtojnar wmertens demin-dmitriy zimbatm ];
|
||||
maintainers = with maintainers; [
|
||||
jtojnar
|
||||
wmertens
|
||||
demin-dmitriy
|
||||
zimbatm
|
||||
];
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.unfree;
|
||||
platforms = [ "aarch64-linux" "x86_64-linux" ];
|
||||
platforms = [
|
||||
"aarch64-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
};
|
||||
})
|
||||
|
|
|
@ -3,17 +3,17 @@
|
|||
let
|
||||
common = opts: callPackage (import ./common.nix opts);
|
||||
in
|
||||
{
|
||||
sublime4 = common {
|
||||
buildVersion = "4169";
|
||||
x64sha256 = "jk9wKC0QgfhiHDYUcnDhsmgJsBPOUmCkyvQeI54IJJ4=";
|
||||
aarch64sha256 = "/W/xGbE+8gGu1zNh6lERZrfG9Dh9QUGkYiqTzp216JI=";
|
||||
} {};
|
||||
{
|
||||
sublime4 = common {
|
||||
buildVersion = "4169";
|
||||
x64sha256 = "jk9wKC0QgfhiHDYUcnDhsmgJsBPOUmCkyvQeI54IJJ4=";
|
||||
aarch64sha256 = "/W/xGbE+8gGu1zNh6lERZrfG9Dh9QUGkYiqTzp216JI=";
|
||||
} { };
|
||||
|
||||
sublime4-dev = common {
|
||||
buildVersion = "4168";
|
||||
dev = true;
|
||||
x64sha256 = "KfW1Mh78CUBTmthHQd1s15a7GrmssSnWZ1RgaarJeag=";
|
||||
aarch64sha256 = "qJ9oix1kwWN+TUb5/WSKyHcHzB+Q87XolMOhmqx1OFc=";
|
||||
} {};
|
||||
}
|
||||
sublime4-dev = common {
|
||||
buildVersion = "4173";
|
||||
dev = true;
|
||||
x64sha256 = "JEf974X+m0XaZ5x2g4o5XYkdo2A0cIZNjFLCrIgFzEA=";
|
||||
aarch64sha256 = "+aVV7o59ZFwSOyV0DDNUpaq3q21bXslE+Oz/i33X+4Y=";
|
||||
} { };
|
||||
}
|
||||
|
|
|
@ -14054,6 +14054,18 @@ final: prev:
|
|||
meta.homepage = "https://github.com/mzlogin/vim-markdown-toc/";
|
||||
};
|
||||
|
||||
vim-matchtag = buildVimPlugin {
|
||||
pname = "vim-matchtag";
|
||||
version = "2022-06-24";
|
||||
src = fetchFromGitHub {
|
||||
owner = "leafOfTree";
|
||||
repo = "vim-matchtag";
|
||||
rev = "54357c00979e07d86aa12b383ddd1d6a7fbda2c2";
|
||||
sha256 = "01ar9qma2glb6wyhpafnwpf1f63v9i417hx1dzck1gi4fcz1pfqa";
|
||||
};
|
||||
meta.homepage = "https://github.com/leafOfTree/vim-matchtag/";
|
||||
};
|
||||
|
||||
vim-matchup = buildVimPlugin {
|
||||
pname = "vim-matchup";
|
||||
version = "2024-02-24";
|
||||
|
|
|
@ -997,6 +997,13 @@
|
|||
dependencies = with self; [ nvim-dap ];
|
||||
};
|
||||
|
||||
nvim-dap-ui = super.nvim-dap-ui.overrideAttrs {
|
||||
dependencies = with self; [ nvim-dap nvim-nio ];
|
||||
|
||||
doInstallCheck = true;
|
||||
nvimRequireCheck = "dapui";
|
||||
};
|
||||
|
||||
nvim-lsputils = super.nvim-lsputils.overrideAttrs {
|
||||
dependencies = with self; [ popfix ];
|
||||
};
|
||||
|
|
|
@ -1184,6 +1184,7 @@ https://github.com/Yilin-Yang/vim-markbar/,,
|
|||
https://github.com/preservim/vim-markdown/,,
|
||||
https://github.com/euclio/vim-markdown-composer/,,
|
||||
https://github.com/mzlogin/vim-markdown-toc/,,
|
||||
https://github.com/leafOfTree/vim-matchtag/,HEAD,
|
||||
https://github.com/andymass/vim-matchup/,,
|
||||
https://github.com/aquach/vim-mediawiki-editor/,HEAD,
|
||||
https://github.com/samoshkin/vim-mergetool/,,
|
||||
|
|
|
@ -857,6 +857,22 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
cameron.vscode-pytest = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "vscode-pytest";
|
||||
publisher = "Cameron";
|
||||
version = "0.1.1";
|
||||
sha256 = "sha256-YU37a0Q+IXusXgwf9doxXLlYiyzkizbPjjdCZFxeDaA=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://github.com/cameronmaske/pytest-vscode/blob/master/CHANGELOG.md";
|
||||
description = "A Visual Studio Code extension that adds IntelliSense support for pytest fixtures";
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=Cameron.vscode-pytest";
|
||||
license = lib.licenses.unlicense;
|
||||
maintainers = [ lib.maintainers.rhoriguchi ];
|
||||
};
|
||||
};
|
||||
|
||||
christian-kohler.npm-intellisense = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "npm-intellisense";
|
||||
|
@ -4831,6 +4847,22 @@ let
|
|||
};
|
||||
};
|
||||
|
||||
zainchen.json = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "json";
|
||||
publisher = "ZainChen";
|
||||
version = "2.0.2";
|
||||
sha256 = "sha256-nC3Q8KuCtn/jg1j/NaAxWGvnKe/ykrPm2PUjfsJz8aI=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/ZainChen.json/changelog";
|
||||
description = "A Visual Studio Code extension for JSON support";
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=ZainChen.json";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.rhoriguchi ];
|
||||
};
|
||||
};
|
||||
|
||||
zhuangtongfa.material-theme = buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "material-theme";
|
||||
|
|
|
@ -287,10 +287,10 @@
|
|||
"src": {
|
||||
"owner": "libretro",
|
||||
"repo": "fbneo",
|
||||
"rev": "fa70abd34f49d8c461165b65a4ad436a4245eb51",
|
||||
"hash": "sha256-BaV+BY7jTw/6M4XmAAVSRQ9viftyaPZmG17TFgSFqOg="
|
||||
"rev": "537b5b8dcc358370f2349109004233fbeab46cfe",
|
||||
"hash": "sha256-zBOF1RV2dx5zraREZm/W//8DwrRMDc/j8sx+CwTyKz0="
|
||||
},
|
||||
"version": "unstable-2024-03-27"
|
||||
"version": "unstable-2024-04-02"
|
||||
},
|
||||
"fceumm": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
@ -307,11 +307,11 @@
|
|||
"src": {
|
||||
"owner": "flyinghead",
|
||||
"repo": "flycast",
|
||||
"rev": "c9fafa0ed176d1ffabae5c1a7a363d0ee276a972",
|
||||
"hash": "sha256-ruqgen9X3CEY+PRZFVGNPhEDUUvH486paWphQfGCHew=",
|
||||
"rev": "a0c81d2f2a393bd34caf6f15c1231ba4e2175405",
|
||||
"hash": "sha256-hajTfovkSH7l6AayQyiHI7E4I/82pBhQnDSxo0BcYu0=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"version": "unstable-2024-03-26"
|
||||
"version": "unstable-2024-04-03"
|
||||
},
|
||||
"fmsx": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
@ -408,10 +408,10 @@
|
|||
"src": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame",
|
||||
"rev": "6d6d21fd9e41dab2b0e0ca0587baf3fcad18fd67",
|
||||
"hash": "sha256-8pPDIxnEeeTQl160E+sg/wmchOR53pQmbhvEAXRFif0="
|
||||
"rev": "ac9d0347f5d331eb49017cd599a5e63a668b4f22",
|
||||
"hash": "sha256-P5Hunw1o0C29/YsOu7tmR/oY2sbL2qTmY6RoJ56bTzI="
|
||||
},
|
||||
"version": "unstable-2024-02-29"
|
||||
"version": "unstable-2024-04-01"
|
||||
},
|
||||
"mame2000": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
@ -438,10 +438,10 @@
|
|||
"src": {
|
||||
"owner": "libretro",
|
||||
"repo": "mame2003-plus-libretro",
|
||||
"rev": "ee777f235b99d652890dedbc94337094968869d4",
|
||||
"hash": "sha256-nfoZRymtbAsXWvb8MKFHUwQr0xRk9kLRtgPC2G2iAVE="
|
||||
"rev": "f03f865af9d496965ab15b9a213691319daad9d2",
|
||||
"hash": "sha256-yHVkEJYSXHeUGNFJ/zbAwNi+I4gka8Id7z+LnDkCCSM="
|
||||
},
|
||||
"version": "unstable-2024-03-22"
|
||||
"version": "unstable-2024-04-03"
|
||||
},
|
||||
"mame2010": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
@ -559,10 +559,10 @@
|
|||
"src": {
|
||||
"owner": "libretro",
|
||||
"repo": "nestopia",
|
||||
"rev": "2cef539e0df9ae5c8e6adf830a37f5d122bf5f05",
|
||||
"hash": "sha256-OKqD99kqpIoqRUOByQ4qwAczYlIGeAn0xfTZVC5jptc="
|
||||
"rev": "efe3a052c75ad47d6e98eeffd1f3d2d4893279c2",
|
||||
"hash": "sha256-sSXU+rUBJcE2gQRTqnZV8NSuBz/zWNxlZHQqoAUoigU="
|
||||
},
|
||||
"version": "unstable-2024-02-18"
|
||||
"version": "unstable-2024-03-29"
|
||||
},
|
||||
"np2kai": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
@ -630,10 +630,10 @@
|
|||
"src": {
|
||||
"owner": "libretro",
|
||||
"repo": "pcsx_rearmed",
|
||||
"rev": "e2fb1389dc12376acb84e4993ed3b08760257252",
|
||||
"hash": "sha256-h/Bjgyfp+8gx3VoxteJyXxI/z4ghyw/xdmwAGXidEkc="
|
||||
"rev": "2fb8465594a7ffb7ccbac39fdedf7c70085d7f63",
|
||||
"hash": "sha256-RQU2EDcBRa6aH40JrEJ3eppjflk5++AWlOH+iGJyjFY="
|
||||
},
|
||||
"version": "unstable-2024-03-25"
|
||||
"version": "unstable-2024-03-29"
|
||||
},
|
||||
"picodrive": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
@ -651,22 +651,22 @@
|
|||
"src": {
|
||||
"owner": "jpd002",
|
||||
"repo": "Play-",
|
||||
"rev": "08db12cefaad02eaa5265283e3ad0b51eeb8a633",
|
||||
"hash": "sha256-1wO/iBnyGnBx+vIlnqaihAVrth3shCvogEX9TC59GaY=",
|
||||
"rev": "8445595b734301f22c6fdd57536867fea3786b58",
|
||||
"hash": "sha256-3e9+PkSGZbjZ2LVY0cWRIK+TbdJ4hn8FxBjWqhsQB4o=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"version": "unstable-2024-03-26"
|
||||
"version": "unstable-2024-04-02"
|
||||
},
|
||||
"ppsspp": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
"src": {
|
||||
"owner": "hrydgard",
|
||||
"repo": "ppsspp",
|
||||
"rev": "768174e19ca80bccadc067bd2c7adc0d35fb4602",
|
||||
"hash": "sha256-V66SGvOAcw5lMOBID+qnsjuvKQkt1afl8wdiscKN3Us=",
|
||||
"rev": "5bead8d999717ed13f7808d3e6b88a237806899e",
|
||||
"hash": "sha256-bGNlzpC3xPX5xyFyMfXbeR4q3Q9bGN/oRwFTLcgzfJM=",
|
||||
"fetchSubmodules": true
|
||||
},
|
||||
"version": "unstable-2024-03-27"
|
||||
"version": "unstable-2024-04-04"
|
||||
},
|
||||
"prboom": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
@ -793,10 +793,10 @@
|
|||
"src": {
|
||||
"owner": "stella-emu",
|
||||
"repo": "stella",
|
||||
"rev": "8e8549c1c441e62c2bac0ae5a6489ba3e15412c6",
|
||||
"hash": "sha256-gcIBtLpfmjPHxnixMOF/onNyIclC8sDrmgTi3zHW0Mc="
|
||||
"rev": "09be43c5060b7f23eeb413aa3d7a7021e9a6566c",
|
||||
"hash": "sha256-jxvX9YAgUVe/92AbwXwgOqJmfoH7t8QxnrrGoXzjFZs="
|
||||
},
|
||||
"version": "unstable-2024-03-08"
|
||||
"version": "unstable-2024-04-04"
|
||||
},
|
||||
"stella2014": {
|
||||
"fetcher": "fetchFromGitHub",
|
||||
|
|
|
@ -66,7 +66,7 @@ python3.pkgs.buildPythonApplication {
|
|||
checkInputs = with python3.pkgs; [
|
||||
pytest-aiohttp
|
||||
pytest-rerunfailures
|
||||
pytestCheckHook
|
||||
(pytestCheckHook.override { pytest = pytest_7; })
|
||||
];
|
||||
|
||||
pytestFlagsArray = [
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
let
|
||||
versions =
|
||||
if stdenv.isLinux then {
|
||||
stable = "0.0.46";
|
||||
stable = "0.0.47";
|
||||
ptb = "0.0.76";
|
||||
canary = "0.0.323";
|
||||
canary = "0.0.326";
|
||||
development = "0.0.16";
|
||||
} else {
|
||||
stable = "0.0.296";
|
||||
ptb = "0.0.102";
|
||||
canary = "0.0.435";
|
||||
development = "0.0.31";
|
||||
stable = "0.0.298";
|
||||
ptb = "0.0.105";
|
||||
canary = "0.0.451";
|
||||
development = "0.0.39";
|
||||
};
|
||||
version = versions.${branch};
|
||||
srcs = rec {
|
||||
x86_64-linux = {
|
||||
stable = fetchurl {
|
||||
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
||||
hash = "sha256-uGHDZg4vu7rUJce6SSVbuLRBPEHXgN4oocAQY+Dqdaw=";
|
||||
hash = "sha256-4cELs7K7DAfzbA0/BwAkKraTD7z58jzOf1J3Our3CwM=";
|
||||
};
|
||||
ptb = fetchurl {
|
||||
url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
|
||||
|
@ -25,7 +25,7 @@ let
|
|||
};
|
||||
canary = fetchurl {
|
||||
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
||||
hash = "sha256-jhfg66zd5oADT84RDdoBXp8n9xGd1jNaX8hDRnJKFK0=";
|
||||
hash = "sha256-MxiFhd7tLvL1tBRc451qjCFZlmGM8IolckExp0sR3y8=";
|
||||
};
|
||||
development = fetchurl {
|
||||
url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
|
||||
|
@ -35,19 +35,19 @@ let
|
|||
x86_64-darwin = {
|
||||
stable = fetchurl {
|
||||
url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg";
|
||||
hash = "sha256-0bSyL/J2P1pVzv9pFTNSR3V2NkQcDTd74t8KT+WVd64=";
|
||||
hash = "sha256-GlTebQ16sRgHdpB9+Jw7dn+KVZ6qIrAmWBSypTcoFmE=";
|
||||
};
|
||||
ptb = fetchurl {
|
||||
url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
|
||||
hash = "sha256-33x6M++EsRJXTbsC4BCa21Yz7cbAhsosPO1WqYq/lCY=";
|
||||
hash = "sha256-X5bYO1D5eWTYh22v4R274OhjTsVv70XCyrMqeRlt0Bo=";
|
||||
};
|
||||
canary = fetchurl {
|
||||
url = "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
|
||||
hash = "sha256-Jreet8EstaTAYAmQrzRaJE/b+xwgRVXIW8elEY7amvw=";
|
||||
hash = "sha256-psVm0eXDHVBGNb/R0kHbvz/4ilyIg4xlOj/CwkwlvgM=";
|
||||
};
|
||||
development = fetchurl {
|
||||
url = "https://dl-development.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
|
||||
hash = "sha256-He/9KH1oMyj9ofYSwHhdqm7jKDsvrGpPPjLED9fSq30=";
|
||||
hash = "sha256-nZV9LK3eGpXK/2wQKJBn3K2Ud6uBk8aammkeE00rWx0=";
|
||||
};
|
||||
};
|
||||
aarch64-darwin = x86_64-darwin;
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "trayscale";
|
||||
version = "0.11.0";
|
||||
version = "0.11.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "DeedleFake";
|
||||
repo = "trayscale";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-qSrt94hEJosdvs2N6rbcJLpjqvMPkY20dIKV3jtjFlg=";
|
||||
hash = "sha256-SepVgSxM4+csX7S0LPl6HmGDcgS991sgWJrOAA2YjIc=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-eIakjEYfVp2wfXu0oqBmd5hJZTp0xgYKNNbtpRBnT2w=";
|
||||
|
@ -46,10 +46,11 @@ buildGoModule rec {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
changelog = "https://github.com/DeedleFake/trayscale/releases/tag/${version}";
|
||||
description = "An unofficial GUI wrapper around the Tailscale CLI client";
|
||||
homepage = "https://github.com/DeedleFake/trayscale";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ k900 ];
|
||||
maintainers = with maintainers; [ patka ];
|
||||
mainProgram = "trayscale";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,18 +1,49 @@
|
|||
{ buildVersion, aarch64sha256, x64sha256, dev ? false }:
|
||||
{
|
||||
buildVersion,
|
||||
dev ? false,
|
||||
aarch64sha256,
|
||||
x64sha256,
|
||||
}:
|
||||
|
||||
{ fetchurl, lib, stdenv, xorg, glib, libGL, glibcLocales, gtk3, cairo, pango, libredirect, makeWrapper, wrapGAppsHook
|
||||
, pkexecPath ? "/run/wrappers/bin/pkexec"
|
||||
, writeShellScript, common-updater-scripts, curl, gnugrep, coreutils
|
||||
{
|
||||
fetchurl,
|
||||
lib,
|
||||
stdenv,
|
||||
xorg,
|
||||
glib,
|
||||
libGL,
|
||||
glibcLocales,
|
||||
gtk3,
|
||||
cairo,
|
||||
pango,
|
||||
libredirect,
|
||||
makeWrapper,
|
||||
wrapGAppsHook,
|
||||
pkexecPath ? "/run/wrappers/bin/pkexec",
|
||||
writeShellScript,
|
||||
common-updater-scripts,
|
||||
curl,
|
||||
gnugrep,
|
||||
coreutils,
|
||||
}:
|
||||
|
||||
let
|
||||
pnameBase = "sublime-merge";
|
||||
packageAttribute = "sublime-merge${lib.optionalString dev "-dev"}";
|
||||
binaries = [ "sublime_merge" crashHandlerBinary "git-credential-sublime" "ssh-askpass-sublime" ];
|
||||
binaries = [
|
||||
"sublime_merge"
|
||||
crashHandlerBinary
|
||||
"git-credential-sublime"
|
||||
"ssh-askpass-sublime"
|
||||
];
|
||||
primaryBinary = "sublime_merge";
|
||||
primaryBinaryAliases = [ "smerge" ];
|
||||
crashHandlerBinary = if lib.versionAtLeast buildVersion "2086" then "crash_handler" else "crash_reporter";
|
||||
downloadUrl = arch: "https://download.sublimetext.com/sublime_merge_build_${buildVersion}_${arch}.tar.xz";
|
||||
primaryBinaryAliases = [
|
||||
"smerge"
|
||||
];
|
||||
crashHandlerBinary =
|
||||
if lib.versionAtLeast buildVersion "2086" then "crash_handler" else "crash_reporter";
|
||||
downloadUrl =
|
||||
arch: "https://download.sublimetext.com/sublime_merge_build_${buildVersion}_${arch}.tar.xz";
|
||||
versionUrl = "https://www.sublimemerge.com/${if dev then "dev" else "download"}";
|
||||
versionFile = builtins.toString ./default.nix;
|
||||
|
||||
|
@ -25,8 +56,12 @@ let
|
|||
curl
|
||||
];
|
||||
|
||||
redirects = [ "/usr/bin/pkexec=${pkexecPath}" "/bin/true=${coreutils}/bin/true" ];
|
||||
in let
|
||||
redirects = [
|
||||
"/usr/bin/pkexec=${pkexecPath}"
|
||||
"/bin/true=${coreutils}/bin/true"
|
||||
];
|
||||
in
|
||||
let
|
||||
binaryPackage = stdenv.mkDerivation rec {
|
||||
pname = "${pnameBase}-bin";
|
||||
version = buildVersion;
|
||||
|
@ -35,13 +70,20 @@ in let
|
|||
|
||||
dontStrip = true;
|
||||
dontPatchELF = true;
|
||||
buildInputs = [ glib gtk3 ]; # for GSETTINGS_SCHEMAS_PATH
|
||||
nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
|
||||
buildInputs = [
|
||||
glib
|
||||
# for GSETTINGS_SCHEMAS_PATH
|
||||
gtk3
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
for binary in ${ builtins.concatStringsSep " " binaries }; do
|
||||
for binary in ${builtins.concatStringsSep " " binaries}; do
|
||||
patchelf \
|
||||
--interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath ${lib.makeLibraryPath neededLibraries}:${libGL}/lib:${stdenv.cc.cc.lib}/lib${lib.optionalString stdenv.is64bit "64"} \
|
||||
|
@ -96,7 +138,8 @@ in let
|
|||
};
|
||||
};
|
||||
};
|
||||
in stdenv.mkDerivation (rec {
|
||||
in
|
||||
stdenv.mkDerivation (rec {
|
||||
pname = pnameBase;
|
||||
version = buildVersion;
|
||||
|
||||
|
@ -104,27 +147,45 @@ in stdenv.mkDerivation (rec {
|
|||
|
||||
${primaryBinary} = binaryPackage;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin"
|
||||
makeWrapper "''$${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
|
||||
'' + builtins.concatStringsSep "" (map (binaryAlias: "ln -s $out/bin/${primaryBinary} $out/bin/${binaryAlias}\n") primaryBinaryAliases) + ''
|
||||
mkdir -p "$out/share/applications"
|
||||
substitute "''$${primaryBinary}/${primaryBinary}.desktop" "$out/share/applications/${primaryBinary}.desktop" --replace "/opt/${primaryBinary}/${primaryBinary}" "${primaryBinary}"
|
||||
for directory in ''$${primaryBinary}/Icon/*; do
|
||||
size=$(basename $directory)
|
||||
mkdir -p "$out/share/icons/hicolor/$size/apps"
|
||||
ln -s ''$${primaryBinary}/Icon/$size/* $out/share/icons/hicolor/$size/apps
|
||||
done
|
||||
'';
|
||||
installPhase =
|
||||
''
|
||||
mkdir -p "$out/bin"
|
||||
makeWrapper "''$${primaryBinary}/${primaryBinary}" "$out/bin/${primaryBinary}"
|
||||
''
|
||||
+ builtins.concatStringsSep "" (
|
||||
map (binaryAlias: "ln -s $out/bin/${primaryBinary} $out/bin/${binaryAlias}\n") primaryBinaryAliases
|
||||
)
|
||||
+ ''
|
||||
mkdir -p "$out/share/applications"
|
||||
|
||||
substitute \
|
||||
"''$${primaryBinary}/${primaryBinary}.desktop" \
|
||||
"$out/share/applications/${primaryBinary}.desktop" \
|
||||
--replace-fail "/opt/${primaryBinary}/${primaryBinary}" "${primaryBinary}"
|
||||
|
||||
for directory in ''$${primaryBinary}/Icon/*; do
|
||||
size=$(basename $directory)
|
||||
mkdir -p "$out/share/icons/hicolor/$size/apps"
|
||||
ln -s ''$${primaryBinary}/Icon/$size/* $out/share/icons/hicolor/$size/apps
|
||||
done
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript =
|
||||
let
|
||||
script = writeShellScript "${packageAttribute}-update-script" ''
|
||||
set -o errexit
|
||||
PATH=${lib.makeBinPath [ common-updater-scripts curl gnugrep ]}
|
||||
PATH=${
|
||||
lib.makeBinPath [
|
||||
common-updater-scripts
|
||||
curl
|
||||
gnugrep
|
||||
]
|
||||
}
|
||||
|
||||
versionFile=$1
|
||||
latestVersion=$(curl -s ${versionUrl} | grep -Po '(?<=<p class="latest"><i>Version:</i> Build )([0-9]+)')
|
||||
|
@ -141,7 +202,11 @@ in stdenv.mkDerivation (rec {
|
|||
update-source-version "${packageAttribute}.${primaryBinary}" "$latestVersion" --file="$versionFile" --version-key=buildVersion --source-key="sources.$platform"
|
||||
done
|
||||
'';
|
||||
in [ script versionFile ];
|
||||
in
|
||||
[
|
||||
script
|
||||
versionFile
|
||||
];
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -150,6 +215,9 @@ in stdenv.mkDerivation (rec {
|
|||
maintainers = with maintainers; [ zookatron ];
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.unfree;
|
||||
platforms = [ "aarch64-linux" "x86_64-linux" ];
|
||||
platforms = [
|
||||
"aarch64-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
};
|
||||
})
|
||||
|
|
|
@ -2,17 +2,18 @@
|
|||
|
||||
let
|
||||
common = opts: callPackage (import ./common.nix opts);
|
||||
in {
|
||||
in
|
||||
{
|
||||
sublime-merge = common {
|
||||
buildVersion = "2091";
|
||||
aarch64sha256 = "dkPKuuzQQtL3eZlaAPeL7e2p5PCxroFRSp6Rw5wHODc=";
|
||||
x64sha256 = "T5g6gHgl9xGytEOsh3VuB08IrbDvMu24o/1edCGmfd4=";
|
||||
} {};
|
||||
} { };
|
||||
|
||||
sublime-merge-dev = common {
|
||||
buildVersion = "2092";
|
||||
dev = true;
|
||||
aarch64sha256 = "3QMDynXMVB4QVtM8EPbZ8I4m+5sEjzs8XN+jEoMaktM=";
|
||||
x64sha256 = "S9E+wRvO41Eq+PLA/J+sjBIAn6yz715Wg9bKRW2Eobg=";
|
||||
dev = true;
|
||||
} {};
|
||||
} { };
|
||||
}
|
||||
|
|
35
pkgs/by-name/as/astartectl/package.nix
Normal file
35
pkgs/by-name/as/astartectl/package.nix
Normal file
|
@ -0,0 +1,35 @@
|
|||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, installShellFiles
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "astartectl";
|
||||
version = "23.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "astarte-platform";
|
||||
repo = "astartectl";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4NgDVuYEeJI5Arq+/+xdyUOBWdCLALM3EKVLSFimJlI=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Syod7SUsjiM3cdHPZgjH/3qdsiowa0enyV9DN8k13Ws=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd astartectl \
|
||||
--bash <($out/bin/astartectl completion bash) \
|
||||
--fish <($out/bin/astartectl completion fish) \
|
||||
--zsh <($out/bin/astartectl completion zsh)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/astarte-platform/astartectl";
|
||||
description = "Astarte command line client utility";
|
||||
license = licenses.asl20;
|
||||
mainProgram = "astartectl";
|
||||
maintainers = with maintainers; [ noaccos ];
|
||||
};
|
||||
}
|
|
@ -1,15 +1,15 @@
|
|||
{ lib, python3Packages, fetchFromGitHub, installShellFiles }:
|
||||
{ lib, python3Packages, fetchFromGitHub, installShellFiles, nix-update-script }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "audible-cli";
|
||||
version = "0.2.6";
|
||||
version = "0.3.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mkb79";
|
||||
repo = "audible-cli";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-J81RcehFokOpsQBJLvmeihSrlMyX0geHPl3PPxvGjmY=";
|
||||
hash = "sha256-AYL7lcYYY7gK12Id94aHRWRlCiznnF4r+lpI5VFpAWY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with python3Packages; [
|
||||
|
@ -35,7 +35,6 @@ python3Packages.buildPythonApplication rec {
|
|||
|
||||
pythonRelaxDeps = [
|
||||
"httpx"
|
||||
"audible"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
|
@ -53,6 +52,8 @@ python3Packages.buildPythonApplication rec {
|
|||
"audible_cli"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = with lib; {
|
||||
description = "A command line interface for audible package. With the cli you can download your Audible books, cover, chapter files";
|
||||
license = licenses.agpl3Only;
|
|
@ -29,7 +29,7 @@ let
|
|||
doInstallCheck = false;
|
||||
});
|
||||
|
||||
version = "1.0.2";
|
||||
version = "1.0.3";
|
||||
in rustPlatform.buildRustPackage {
|
||||
pname = "devenv";
|
||||
inherit version;
|
||||
|
@ -38,10 +38,10 @@ in rustPlatform.buildRustPackage {
|
|||
owner = "cachix";
|
||||
repo = "devenv";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-JCxjmWr2+75KMPOoVybNZhy9zhhrg9BAKA8D+J6MNBc=";
|
||||
hash = "sha256-fnJPqMFoWTYsPNEwbxTxO0h771vZKu+b5Ig4LJQcoRg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-FGB8p9ClGokYDrV0b47PnjeSlOv7p+IgThNajve3yms=";
|
||||
cargoHash = "sha256-Qckh7knX3sARMHgn+39ozQj8CnfyEQV4yjJPP2+v2SM=";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper pkg-config ];
|
||||
|
||||
|
|
77
pkgs/by-name/hy/hydrapaper/package.nix
Normal file
77
pkgs/by-name/hy/hydrapaper/package.nix
Normal file
|
@ -0,0 +1,77 @@
|
|||
{ lib
|
||||
, python3Packages
|
||||
, fetchFromGitLab
|
||||
, meson
|
||||
, ninja
|
||||
, glib
|
||||
, pkg-config
|
||||
, pandoc
|
||||
, appstream
|
||||
, blueprint-compiler
|
||||
, gobject-introspection
|
||||
, wrapGAppsHook4
|
||||
, dbus
|
||||
, libadwaita
|
||||
, xdg-user-dirs
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "hydrapaper";
|
||||
version = "3.3.2";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "gabmus";
|
||||
repo = "HydraPaper";
|
||||
rev = version;
|
||||
hash = "sha256-IDaM8bM/0KH9h59523WqLKe400V5lLNyJ4faPf980Ro=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
glib
|
||||
pkg-config
|
||||
pandoc
|
||||
appstream
|
||||
blueprint-compiler
|
||||
gobject-introspection
|
||||
wrapGAppsHook4
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
dbus
|
||||
glib
|
||||
libadwaita
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
dbus-python
|
||||
pygobject3
|
||||
pillow
|
||||
];
|
||||
|
||||
# wrapGAppsHook4 propogates gtk4 -- which provides gtk4-update-icon-cache instead
|
||||
preInstall = ''
|
||||
substituteInPlace /build/source/meson_post_install.py \
|
||||
--replace-fail gtk-update-icon-cache gtk4-update-icon-cache
|
||||
'';
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
preFixup = ''
|
||||
gappsWrapperArgs+=(
|
||||
--prefix PATH : ${lib.makeBinPath [ glib xdg-user-dirs ]}
|
||||
)
|
||||
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "GNOME utility for setting different wallpapers on individual monitors";
|
||||
homepage = "https://hydrapaper.gabmus.org";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ lachrymal ];
|
||||
mainProgram = "hydrapaper";
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,9 +1,11 @@
|
|||
{ cmake
|
||||
, lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
{
|
||||
cmake,
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "lib60870";
|
||||
version = "2.3.2";
|
||||
|
@ -21,15 +23,13 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
preConfigure = "cd lib60870-C";
|
||||
|
||||
passthru.updateScript = gitUpdater {
|
||||
rev-prefix = "v";
|
||||
};
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Implementation of the IEC 60870-5-101/104 protocol";
|
||||
homepage = "https://libiec61850.com/";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ stv0g ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
{ cmake
|
||||
, lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
{
|
||||
cmake,
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libiec61850";
|
||||
version = "1.5.3";
|
||||
|
@ -19,15 +21,13 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
passthru.updateScript = gitUpdater {
|
||||
rev-prefix = "v";
|
||||
};
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Open-source library for the IEC 61850 protocols";
|
||||
homepage = "https://libiec61850.com/";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ stv0g ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "mihomo";
|
||||
version = "1.18.2";
|
||||
version = "1.18.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MetaCubeX";
|
||||
repo = "mihomo";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-/4Tlv6LLT1+CHdjJ1ZlYaZj44TX5y6FEHdKk+OA1vBU=";
|
||||
hash = "sha256-/fFVUI++OhOer5DrvcXO+R+4whtb5+3Qg3e4+ikJr1Y=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-k4xB/jO78VGD+n9HtuoWXoXB+kZCEyPKJTTwj32nGIw=";
|
||||
|
|
78
pkgs/by-name/pe/pest/composer.lock
generated
78
pkgs/by-name/pe/pest/composer.lock
generated
|
@ -1069,16 +1069,16 @@
|
|||
},
|
||||
{
|
||||
"name": "phpstan/phpdoc-parser",
|
||||
"version": "1.27.0",
|
||||
"version": "1.28.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpdoc-parser.git",
|
||||
"reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757"
|
||||
"reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757",
|
||||
"reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757",
|
||||
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
|
||||
"reference": "cd06d6b1a1b3c75b0b83f97577869fd85a3cd4fb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1110,9 +1110,9 @@
|
|||
"description": "PHPDoc parser with support for nullable, intersection and generic types",
|
||||
"support": {
|
||||
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.27.0"
|
||||
"source": "https://github.com/phpstan/phpdoc-parser/tree/1.28.0"
|
||||
},
|
||||
"time": "2024-03-21T13:14:53+00:00"
|
||||
"time": "2024-04-03T18:51:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/php-code-coverage",
|
||||
|
@ -2557,16 +2557,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v7.0.4",
|
||||
"version": "v7.0.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f"
|
||||
"reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/6b099f3306f7c9c2d2786ed736d0026b2903205f",
|
||||
"reference": "6b099f3306f7c9c2d2786ed736d0026b2903205f",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5",
|
||||
"reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2630,7 +2630,7 @@
|
|||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v7.0.4"
|
||||
"source": "https://github.com/symfony/console/tree/v7.0.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2646,7 +2646,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-22T20:27:20+00:00"
|
||||
"time": "2024-04-01T11:04:53+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
|
@ -3093,16 +3093,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/service-contracts",
|
||||
"version": "v3.4.1",
|
||||
"version": "v3.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/service-contracts.git",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
|
||||
"reference": "11bbf19a0fb7b36345861e85c5768844c552906e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
|
||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e",
|
||||
"reference": "11bbf19a0fb7b36345861e85c5768844c552906e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -3155,7 +3155,7 @@
|
|||
"standards"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
|
||||
"source": "https://github.com/symfony/service-contracts/tree/v3.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -3171,7 +3171,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-12-26T14:02:43+00:00"
|
||||
"time": "2023-12-19T21:51:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
|
@ -3502,16 +3502,16 @@
|
|||
},
|
||||
{
|
||||
"name": "laravel/pint",
|
||||
"version": "v1.14.0",
|
||||
"version": "v1.15.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel/pint.git",
|
||||
"reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e"
|
||||
"reference": "5f288b5e79938cc72f5c298d384e639de87507c6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel/pint/zipball/6b127276e3f263f7bb17d5077e9e0269e61b2a0e",
|
||||
"reference": "6b127276e3f263f7bb17d5077e9e0269e61b2a0e",
|
||||
"url": "https://api.github.com/repos/laravel/pint/zipball/5f288b5e79938cc72f5c298d384e639de87507c6",
|
||||
"reference": "5f288b5e79938cc72f5c298d384e639de87507c6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -3522,13 +3522,13 @@
|
|||
"php": "^8.1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^3.49.0",
|
||||
"illuminate/view": "^10.43.0",
|
||||
"larastan/larastan": "^2.8.1",
|
||||
"friendsofphp/php-cs-fixer": "^3.52.1",
|
||||
"illuminate/view": "^10.48.4",
|
||||
"larastan/larastan": "^2.9.2",
|
||||
"laravel-zero/framework": "^10.3.0",
|
||||
"mockery/mockery": "^1.6.7",
|
||||
"mockery/mockery": "^1.6.11",
|
||||
"nunomaduro/termwind": "^1.15.1",
|
||||
"pestphp/pest": "^2.33.6"
|
||||
"pestphp/pest": "^2.34.5"
|
||||
},
|
||||
"bin": [
|
||||
"builds/pint"
|
||||
|
@ -3564,7 +3564,7 @@
|
|||
"issues": "https://github.com/laravel/pint/issues",
|
||||
"source": "https://github.com/laravel/pint"
|
||||
},
|
||||
"time": "2024-02-20T17:38:05+00:00"
|
||||
"time": "2024-04-02T14:28:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "nette/utils",
|
||||
|
@ -3787,16 +3787,16 @@
|
|||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "1.10.65",
|
||||
"version": "1.10.66",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "3c657d057a0b7ecae19cb12db446bbc99d8839c6"
|
||||
"reference": "94779c987e4ebd620025d9e5fdd23323903950bd"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/3c657d057a0b7ecae19cb12db446bbc99d8839c6",
|
||||
"reference": "3c657d057a0b7ecae19cb12db446bbc99d8839c6",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/94779c987e4ebd620025d9e5fdd23323903950bd",
|
||||
"reference": "94779c987e4ebd620025d9e5fdd23323903950bd",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -3845,7 +3845,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-03-23T10:30:26+00:00"
|
||||
"time": "2024-03-28T16:17:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan-strict-rules",
|
||||
|
@ -4026,16 +4026,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/var-dumper",
|
||||
"version": "v6.4.4",
|
||||
"version": "v6.4.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/var-dumper.git",
|
||||
"reference": "b439823f04c98b84d4366c79507e9da6230944b1"
|
||||
"reference": "95bd2706a97fb875185b51ecaa6112ec184233d4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1",
|
||||
"reference": "b439823f04c98b84d4366c79507e9da6230944b1",
|
||||
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/95bd2706a97fb875185b51ecaa6112ec184233d4",
|
||||
"reference": "95bd2706a97fb875185b51ecaa6112ec184233d4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -4091,7 +4091,7 @@
|
|||
"dump"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/var-dumper/tree/v6.4.4"
|
||||
"source": "https://github.com/symfony/var-dumper/tree/v6.4.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -4107,7 +4107,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-02-15T11:23:52+00:00"
|
||||
"time": "2024-03-19T11:56:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symplify/phpstan-rules",
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
php.buildComposerProject (finalAttrs: {
|
||||
pname = "pest";
|
||||
version = "2.34.5";
|
||||
version = "2.34.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pestphp";
|
||||
|
@ -13,7 +13,7 @@ php.buildComposerProject (finalAttrs: {
|
|||
|
||||
composerLock = ./composer.lock;
|
||||
|
||||
vendorHash = "sha256-skNf6bUyGUN/F9Ffpz325napOmPINYk1TyUyYqWmwRM=";
|
||||
vendorHash = "sha256-+FKNGjwq+KFPw8agdwsgnwb2ENgFAWK5EngmS4hMcSA=";
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/pestphp/pest/releases/tag/v${finalAttrs.version}";
|
||||
|
|
34
pkgs/by-name/up/upsun/package.nix
Normal file
34
pkgs/by-name/up/upsun/package.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{ stdenvNoCC, lib, fetchurl }:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "upsun";
|
||||
version = "5.0.12";
|
||||
|
||||
src = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://github.com/platformsh/cli/releases/download/${version}/upsun_${version}_linux_amd64.tar.gz";
|
||||
hash = "sha256-svEPMVY7r7pAoXwFIMYqCEduqR3Nkocaguf2nIGt+G8=";
|
||||
};
|
||||
aarch64-linux = fetchurl {
|
||||
url = "https://github.com/platformsh/cli/releases/download/${version}/upsun_${version}_linux_arm64.tar.gz";
|
||||
hash = "sha256-ZraS/PqSPL/kcj5o6hzDdL70IV2IWXOma6OHCiXIDQc=";
|
||||
};
|
||||
}.${stdenvNoCC.system} or (throw "${pname}-${version}: ${stdenvNoCC.system} is unsupported.");
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
sourceRoot = ".";
|
||||
installPhase = ''
|
||||
install -Dm755 upsun $out/bin/upsun
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/platformsh/cli";
|
||||
description = "The unified tool for managing your Upsun services from the command line";
|
||||
maintainers = with lib.maintainers; [ spk ];
|
||||
license = lib.licenses.mit;
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
};
|
||||
}
|
|
@ -90,8 +90,6 @@ python3.pkgs.buildPythonApplication {
|
|||
export HOME=$TMPDIR
|
||||
'';
|
||||
|
||||
dontWrapPythonPrograms = true;
|
||||
|
||||
passthru = {
|
||||
shellPath = "/bin/xonsh";
|
||||
python = python3; # To the wrapper
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "deepin-gettext-tools";
|
||||
version = "1.0.10";
|
||||
version = "1.0.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxdeepin";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-5Dd2QU6JYwuktusssNDfA7IHa6HbFcWo9sZf5PS7NtI=";
|
||||
sha256 = "sha256-V6X0E80352Vb6zwaBTRfZZnXEVCmBRbO2bca9A9OL6c=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
|
||||
buildNpmPackage rec {
|
||||
pname = "typescript";
|
||||
version = "5.4.3";
|
||||
version = "5.4.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "microsoft";
|
||||
repo = "TypeScript";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-yB87R6LyuTbSbQOcRi+QOhrnUy+ra76PiCzsEvPx3ds=";
|
||||
hash = "sha256-8mVkVLy/E8Fl4Ds9NphtE2Hp1HLM8ehhW/dG6MlaLIs=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./disable-dprint-dstBundler.patch
|
||||
];
|
||||
|
||||
npmDepsHash = "sha256-XlXDof0yFxEpNCZN+4ZY2BVgpbAkwdAUJcTRxIXi8eQ=";
|
||||
npmDepsHash = "sha256-Csu9Ik9aC9qvZmx9Yn1xzkrP1bjHL0o72ZSwzCicFoI=";
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ callPackage }:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
version = "2.28.7";
|
||||
hash = "sha256-JI0Frbz4HkPqrLQNrSIj1ikN8201h4kd1wTwyPotERw=";
|
||||
version = "2.28.8";
|
||||
hash = "sha256-A1DYZrvJ8SRujroVwqPfcTOSgLnT5xRat/RVdq2fL/o=";
|
||||
}
|
||||
|
|
|
@ -1,6 +1,18 @@
|
|||
{ callPackage }:
|
||||
{ callPackage
|
||||
, fetchpatch
|
||||
}:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
version = "3.5.2";
|
||||
hash = "sha256-lVGmnSYccNmRS6vfF/fDiny5cYRPc/wJBpgciFLPUvM=";
|
||||
version = "3.6.0";
|
||||
hash = "sha256-tCwAKoTvY8VCjcTPNwS3DeitflhpKHLr6ygHZDbR6wQ=";
|
||||
|
||||
patches = [
|
||||
# https://github.com/Mbed-TLS/mbedtls/pull/9000
|
||||
# Remove at next version update
|
||||
(fetchpatch {
|
||||
name = "fix-darwin-memcpy-error.patch";
|
||||
url = "https://github.com/Mbed-TLS/mbedtls/commit/b32d7ae0fee2f906be59780b42a0cd4468a39bd1.patch";
|
||||
hash = "sha256-BTkJs9NEkCl+/Q8EwB/LW9uwF95jQOKWmoCK4B/7/sU=";
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
, stdenv
|
||||
, version
|
||||
, hash
|
||||
, patches ? []
|
||||
, fetchFromGitHub
|
||||
|
||||
, cmake
|
||||
|
@ -21,8 +22,12 @@ stdenv.mkDerivation rec {
|
|||
repo = "mbedtls";
|
||||
rev = "${pname}-${version}";
|
||||
inherit hash;
|
||||
# mbedtls >= 3.6.0 uses git submodules
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
inherit patches;
|
||||
|
||||
nativeBuildInputs = [ cmake ninja perl python3 ];
|
||||
|
||||
strictDeps = true;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{ fetchFromGitHub, gperf, openssl, readline, zlib, cmake, lib, stdenv }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation {
|
||||
pname = "tdlib";
|
||||
version = "1.8.24";
|
||||
version = "1.8.27";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tdlib";
|
||||
|
@ -11,8 +11,8 @@ stdenv.mkDerivation rec {
|
|||
# The tdlib authors do not set tags for minor versions, but
|
||||
# external programs depending on tdlib constrain the minor
|
||||
# version, hence we set a specific commit with a known version.
|
||||
rev = "c5c55092dd61b9eb15d6bbfd0f02c04c593450e7";
|
||||
hash = "sha256-jqS3PGg42W15QBgpL1PNU3xJdk67g8u0THN/4hW5i88=";
|
||||
rev = "efc6bd553b61dea0ae8c0436695e8d2539bf03f9";
|
||||
hash = "sha256-AHfuT+bLkc8Lm1B96E/kwUx1ZKStQbv/skH8woRITRk=";
|
||||
};
|
||||
|
||||
buildInputs = [ gperf openssl readline zlib ];
|
||||
|
|
|
@ -1,24 +1,25 @@
|
|||
{ lib
|
||||
, aiofiles
|
||||
, aiohttp
|
||||
, aioresponses
|
||||
, aiounittest
|
||||
, buildPythonPackage
|
||||
, ciso8601
|
||||
, fetchFromGitHub
|
||||
, pubnub
|
||||
, pyjwt
|
||||
, pytestCheckHook
|
||||
, python-dateutil
|
||||
, pythonOlder
|
||||
, requests
|
||||
, requests-mock
|
||||
, setuptools
|
||||
{
|
||||
lib,
|
||||
aiofiles,
|
||||
aiohttp,
|
||||
aioresponses,
|
||||
aiounittest,
|
||||
buildPythonPackage,
|
||||
ciso8601,
|
||||
fetchFromGitHub,
|
||||
pubnub,
|
||||
pyjwt,
|
||||
pytestCheckHook,
|
||||
python-dateutil,
|
||||
pythonOlder,
|
||||
requests,
|
||||
requests-mock,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "yalexs";
|
||||
version = "3.0.0";
|
||||
version = "3.0.1";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.9";
|
||||
|
@ -27,7 +28,7 @@ buildPythonPackage rec {
|
|||
owner = "bdraco";
|
||||
repo = "yalexs";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-hY46hUUmbQUWmI+Oa9qIQ1rZdXT5daGo1Vd5JRKfDHE=";
|
||||
hash = "sha256-+FdQQzQhKhIOEnOym2DNT9uQL2uAbfE8tUXUHIFFK2I=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -36,11 +37,9 @@ buildPythonPackage rec {
|
|||
--replace-fail '"vol",' ""
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
setuptools
|
||||
];
|
||||
build-system = [ setuptools ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dependencies = [
|
||||
aiofiles
|
||||
aiohttp
|
||||
ciso8601
|
||||
|
@ -60,9 +59,7 @@ buildPythonPackage rec {
|
|||
requests-mock
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"yalexs"
|
||||
];
|
||||
pythonImportsCheck = [ "yalexs" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python API for Yale Access (formerly August) Smart Lock and Doorbell";
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "go-mockery";
|
||||
version = "2.42.1";
|
||||
version = "2.42.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vektra";
|
||||
repo = "mockery";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-+D91qWXv+OAZKKXllCv6cpGppzmIlwUTweN2NR/nTqU=";
|
||||
sha256 = "sha256-y0HMoQvv001smvWlK1qN0bYeHgNDLz1uKQCaRmDnoM4=";
|
||||
};
|
||||
|
||||
preCheck = ''
|
||||
|
@ -24,7 +24,7 @@ buildGoModule rec {
|
|||
CGO_ENABLED = false;
|
||||
|
||||
proxyVendor = true;
|
||||
vendorHash = "sha256-FCl17nywcMoXEA3l0rOzY66Pj51rEEGdK6Zo6Y3/n34=";
|
||||
vendorHash = "sha256-1SzdVM1Ncpym6bPg1aSyfoAM1YiUGal3Glw0paz+buk=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-hack";
|
||||
version = "0.6.22";
|
||||
version = "0.6.27";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
hash = "sha256-TlTm4pQrviKHusBBYLbpIX1dGcS4dSs1G/TfZT32CvY=";
|
||||
hash = "sha256-TaXVHTUof/T+p0Zxpdf552uVqCr7jzQtNGKLKq7asqI=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-OFzeD15m6Ie2GrRlItsqDO3QGTBWkcsvSkanbzPdne4=";
|
||||
cargoHash = "sha256-qhD6PLvvfLkVr9rOB90Kw4/jDOw06h7TUe1YCjGad1g=";
|
||||
|
||||
# some necessary files are absent in the crate version
|
||||
doCheck = false;
|
||||
|
|
|
@ -21,6 +21,7 @@ stdenvNoCC.mkDerivation rec {
|
|||
cp -av sof-tplg $out/lib/firmware/intel/sof-tplg
|
||||
cp -av sof-ace-tplg $out/lib/firmware/intel/sof-ace-tplg
|
||||
cp -av sof-ipc4 $out/lib/firmware/intel/sof-ipc4
|
||||
cp -av sof-ipc4-tplg $out/lib/firmware/intel/sof-ipc4-tplg
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "dolt";
|
||||
version = "1.35.4";
|
||||
version = "1.35.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dolthub";
|
||||
repo = "dolt";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-9EEqwS7IKlRfE5bwxjScDX7KMCTpmbxixAznRhbaOE0=";
|
||||
sha256 = "sha256-n6J6gFXdUvR1G2KmZf/k1ngeXAUbYorNFDxND+e5YIY=";
|
||||
};
|
||||
|
||||
modRoot = "./go";
|
||||
subPackages = [ "cmd/dolt" ];
|
||||
vendorHash = "sha256-TXx+YmXsAwh2J+nHpff0oHatI6G2QY2QZmMMcHAG6Lc=";
|
||||
vendorHash = "sha256-o9b+eoFCrC7oN26nyeFGMWnLtvU+Wk7e9cr38bSsKTs=";
|
||||
proxyVendor = true;
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nilfs-utils";
|
||||
version = "2.2.10";
|
||||
version = "2.2.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nilfs-dev";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-xTnd3sfBaVU4Ovcsk4oufylNpGS+5n3ZLa2GXzUbeCE=";
|
||||
sha256 = "sha256-qvs0PBkMYzGfIQ/Z2Wz0aHe2Y2Ia6fA4pMSk5Jhejf4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook ];
|
||||
|
|
|
@ -22,7 +22,6 @@ rustPlatform.buildRustPackage rec {
|
|||
license = [ licenses.gpl3 ];
|
||||
maintainers = with maintainers; [
|
||||
infinisil
|
||||
asymmetric
|
||||
hsjobeki
|
||||
];
|
||||
platforms = platforms.unix;
|
||||
|
|
|
@ -1708,8 +1708,6 @@ with pkgs;
|
|||
|
||||
arubaotp-seed-extractor = callPackage ../tools/security/arubaotp-seed-extractor { };
|
||||
|
||||
audible-cli = callPackage ../tools/misc/audible-cli { };
|
||||
|
||||
auditwheel = with python3Packages; toPythonApplication auditwheel;
|
||||
|
||||
amidst = callPackage ../tools/games/minecraft/amidst { };
|
||||
|
|
Loading…
Reference in a new issue