Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-03-01 06:05:01 +00:00
committed by GitHub
30 changed files with 2857 additions and 948 deletions

View File

@@ -21751,6 +21751,12 @@
githubId = 8219659;
name = "Siraphob Phipathananunth";
};
SirBerg = {
email = "benno@boerg.co";
github = "SirBerg";
githubId = 87900036;
name = "Benno Rodehack";
};
siriobalmelli = {
email = "sirio@b-ad.ch";
github = "siriobalmelli";

View File

@@ -519,10 +519,6 @@
- `services.gitea` now supports CAPTCHA usage through the `services.gitea.captcha` variable.
- The GRUB bootloader (`boot.loader.grub`) now generates [boot loader entries](https://uapi-group.org/specifications/specs/boot_loader_specification/).
These files are used by userspace tools (for example, `bootctl`) to inspect the bootloader status, getting the default boot entry, the path of the kernel binary, etc.
As a consequence, `systemctl kexec` now works automatically: specifying the kernel and its arguments with `kexec --load` is no longer required.
- `bind.cacheNetworks` now only controls access for recursive queries, where it previously controlled access for all queries.
- [`services.mongodb.enableAuth`](#opt-services.mongodb.enableAuth) now uses the newer [mongosh](https://github.com/mongodb-js/mongosh) shell instead of the legacy shell to configure the initial superuser. You can configure the mongosh package to use through the [`services.mongodb.mongoshPackage`](#opt-services.mongodb.mongoshPackage) option.

View File

@@ -50,10 +50,6 @@ let
then realGrub.override { efiSupport = cfg.efiSupport; }
else null;
bootPath = if cfg.mirroredBoots != [ ]
then (builtins.head cfg.mirroredBoots).path
else "/boot";
f = x: optionalString (x != null) ("" + x);
grubConfig = args:
@@ -760,16 +756,6 @@ in
environment.systemPackages = mkIf (grub != null) [ grub ];
# Link /boot under /run/boot-loder-entries to make
# systemd happy even on non-EFI system
systemd.mounts = lib.optional (!cfg.efiSupport) {
what = bootPath;
where = "/run/boot-loader-entries";
type = "none";
options = "bind";
requiredBy = [ "local-fs.target" ];
};
boot.loader.grub.extraPrepareConfig =
concatStrings (mapAttrsToList (n: v: ''
${pkgs.coreutils}/bin/install -Dp "${v}" "${efi.efiSysMountPoint}/"${escapeShellArg n}

View File

@@ -99,15 +99,7 @@ $ENV{'PATH'} = get("path");
print STDERR "updating GRUB 2 menu...\n";
# Make GRUB directory
make_path("$bootPath/grub", { mode => 0700 });
# Make BLS entries directory, see addBLSEntry
make_path("$bootPath/loader/entries", { mode => 0700 });
writeFile("$bootPath/loader/entries.srel", "type1");
# and a temporary one for new entries
make_path("$bootPath/loader/entries.tmp", { mode => 0700 });
make_path("$bootPath/grub", { mode => 0700 });
# Discover whether the bootPath is on the same filesystem as / and
# /nix/store. If not, then all kernels and initrds must be copied to
@@ -468,7 +460,6 @@ sub copyToKernelsDir {
}
sub addEntry {
# Creates a Grub menu entry for a given system
my ($name, $path, $options, $current) = @_;
return unless -e "$path/kernel" && -e "$path/initrd";
@@ -530,58 +521,6 @@ sub addEntry {
$conf .= "}\n\n";
}
sub addBLSEntry {
# Creates a Boot Loader Specification[1] entry for a given system.
# The information contained in the entry mirrors a boot entry in GRUB menu.
#
# [1]: https://uapi-group.org/specifications/specs/boot_loader_specification
my ($prof, $spec, $gen, $link) = @_;
# collect data from system
my %bootspec = %{decode_json(readFile("$link/boot.json"))->{"org.nixos.bootspec.v1"}};
my $date = strftime("%F", localtime(lstat($link)->mtime));
my $kernel = $bootspec{kernel} =~ s@$storePath/@@r =~ s@/@-@r;
my $initrd = $bootspec{initrd} =~ s@$storePath/@@r =~ s@/@-@r;
my $kernelParams = readFile("$link/kernel-params");
my $machineId = readFile("/etc/machine-id");
if ($grubEfi eq "" && !$copyKernels) {
# workaround for https://github.com/systemd/systemd/issues/35729
make_path("$bootPath/kernels", { mode => 0755 });
symlink($bootspec{kernel}, "$bootPath/kernels/$kernel");
symlink($bootspec{initrd}, "$bootPath/kernels/$initrd");
$copied{"$bootPath/kernels/$kernel"} = 1;
$copied{"$bootPath/kernels/$initrd"} = 1;
}
# fill in the entry
my $extras = join(' ', $prof = $prof ne "system" ? " [$prof] " : "",
$spec = $spec ne "" ? " ($spec) " : "");
my $entry = <<~END;
title @distroName@$extras
sort-key nixos
version Generation $gen $bootspec{label}, built on $date
linux kernels/$kernel
initrd kernels/$initrd
options init=$bootspec{init} $kernelParams
END
$entry .= "machine-id $machineId" if defined $machineId;
# entry file basename
my $name = join("-", grep { length $_ > 0 }
"nixos", $prof ne "system" ? $prof : "",
"generation", $gen,
$spec ? "specialisation-$spec" : "");
# write entry to the temp directory
writeFile("$bootPath/loader/entries.tmp/$name.conf", $entry);
# mark the default entry
if (readlink($link) eq $defaultConfig) {
writeFile("$bootPath/loader/loader.conf", "default $name.conf");
}
}
sub addGeneration {
my ($name, $nameSuffix, $path, $options, $current) = @_;
@@ -653,18 +592,12 @@ sub addProfile {
warn "skipping corrupt system profile entry ‘$link’\n";
next;
}
my $gen = nrFromGen($link);
my $date = strftime("%F", localtime(lstat($link)->mtime));
my $version =
-e "$link/nixos-version"
? readFile("$link/nixos-version")
: basename((glob(dirname(Cwd::abs_path("$link/kernel")) . "/lib/modules/*"))[0]);
addGeneration("@distroName@ - Configuration " . $gen, " ($date - $version)", $link, $subEntryOptions, 0);
addBLSEntry(basename($profile), "", $gen, $link);
foreach my $spec (glob "$link/specialisation/*") {
addBLSEntry(basename($profile), $spec, $gen, $spec);
}
addGeneration("@distroName@ - Configuration " . nrFromGen($link), " ($date - $version)", $link, $subEntryOptions, 0);
}
$conf .= "}\n";
@@ -678,12 +611,6 @@ for my $profile (glob "/nix/var/nix/profiles/system-profiles/*") {
addProfile $profile, "@distroName@ - Profile '$name'";
}
# Atomically replace the BLS entries directory
my $entriesDir = "$bootPath/loader/entries";
rename $entriesDir, "$entriesDir.bak" or die "cannot rename $entriesDir to $entriesDir.bak: $!\n";
rename "$entriesDir.tmp", $entriesDir or die "cannot rename $entriesDir.tmp to $entriesDir: $!\n";
rmtree "$entriesDir.bak" or die "cannot remove $entriesDir.bak: $!\n";
# extraPrepareConfig could refer to @bootPath@, which we have to substitute
$extraPrepareConfig =~ s/\@bootPath\@/$bootPath/g;

View File

@@ -463,7 +463,7 @@ in {
greetd-no-shadow = handleTest ./greetd-no-shadow.nix {};
grocy = handleTest ./grocy.nix {};
grow-partition = runTest ./grow-partition.nix;
grub = import ./grub.nix { inherit pkgs runTest; };
grub = handleTest ./grub.nix {};
guacamole-server = handleTest ./guacamole-server.nix {};
guix = handleTest ./guix {};
gvisor = handleTest ./gvisor.nix {};
@@ -1217,6 +1217,7 @@ in {
vault-postgresql = handleTest ./vault-postgresql.nix {};
vaultwarden = discoverTests (import ./vaultwarden.nix);
vector = handleTest ./vector {};
velocity = runTest ./velocity.nix;
vengi-tools = handleTest ./vengi-tools.nix {};
victoriametrics = handleTest ./victoriametrics {};
vikunja = handleTest ./vikunja.nix {};

View File

@@ -1,123 +1,60 @@
{ pkgs, runTest }:
import ./make-test-python.nix ({ lib, ... }: {
name = "grub";
{
# Basic GRUB setup with BIOS and a password
basic = runTest {
name = "grub-basic";
meta.maintainers = with pkgs.lib.maintainers; [ rnhmjoj ];
nodes.machine = { ... }: {
virtualisation.useBootLoader = true;
boot.loader.timeout = null;
boot.loader.grub = {
enable = true;
users.alice.password = "supersecret";
# OCR is not accurate enough
extraConfig = "serial; terminal_output serial";
};
};
testScript = ''
def grub_login_as(user, password):
"""
Enters user and password to log into GRUB
"""
machine.wait_for_console_text("Enter username:")
machine.send_chars(user + "\n")
machine.wait_for_console_text("Enter password:")
machine.send_chars(password + "\n")
def grub_select_all_configurations():
"""
Selects "All configurations" from the GRUB menu
to trigger a login request.
"""
machine.send_monitor_command("sendkey down")
machine.send_monitor_command("sendkey ret")
machine.start()
# wait for grub screen
machine.wait_for_console_text("GNU GRUB")
grub_select_all_configurations()
with subtest("Invalid credentials are rejected"):
grub_login_as("wronguser", "wrongsecret")
machine.wait_for_console_text("error: access denied.")
grub_select_all_configurations()
with subtest("Valid credentials are accepted"):
grub_login_as("alice", "supersecret")
machine.send_chars("\n") # press enter to boot
machine.wait_for_console_text("Linux version")
with subtest("Machine boots correctly"):
machine.wait_for_unit("multi-user.target")
'';
};
# Test boot loader entries on EFI
bls-efi = runTest {
name = "grub-bls-efi";
meta.maintainers = with pkgs.lib.maintainers; [ rnhmjoj ];
nodes.machine = { pkgs, ... }: {
virtualisation.useBootLoader = true;
virtualisation.useEFIBoot = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.enable = true;
boot.loader.grub.efiSupport = true;
};
testScript = ''
with subtest("Machine boots correctly"):
machine.wait_for_unit("multi-user.target")
with subtest("Boot entries are installed"):
entries = machine.succeed("bootctl list")
print(entries)
error = "NixOS boot entry not found in bootctl list."
assert "version: Generation 1" in entries, error
with subtest("systemctl kexec can detect the kernel"):
machine.succeed("systemctl kexec --dry-run")
with subtest("systemctl kexec really works"):
machine.execute("systemctl kexec", check_return=False)
machine.connected = False
machine.connect()
machine.wait_for_unit("multi-user.target")
'';
meta = with lib.maintainers; {
maintainers = [ rnhmjoj ];
};
# Test boot loader entries on BIOS
bls-bios = runTest {
name = "grub-bls-bios";
meta.maintainers = with pkgs.lib.maintainers; [ rnhmjoj ];
nodes.machine = { ... }: {
virtualisation.useBootLoader = true;
nodes.machine = { pkgs, ... }: {
virtualisation.useBootLoader = true;
boot.loader.grub.enable = true;
boot.loader.timeout = null;
boot.loader.grub = {
enable = true;
users.alice.password = "supersecret";
# OCR is not accurate enough
extraConfig = "serial; terminal_output serial";
};
testScript = ''
with subtest("Machine boots correctly"):
machine.wait_for_unit("multi-user.target")
with subtest("Boot entries are installed"):
machine.succeed("test -f /boot/loader/entries/nixos-generation-1.conf")
with subtest("systemctl kexec can detect the kernel"):
machine.succeed("systemctl kexec --dry-run")
with subtest("systemctl kexec really works"):
machine.execute("systemctl kexec", check_return=False)
machine.connected = False
machine.connect()
machine.wait_for_unit("multi-user.target")
'';
};
}
testScript = ''
def grub_login_as(user, password):
"""
Enters user and password to log into GRUB
"""
machine.wait_for_console_text("Enter username:")
machine.send_chars(user + "\n")
machine.wait_for_console_text("Enter password:")
machine.send_chars(password + "\n")
def grub_select_all_configurations():
"""
Selects "All configurations" from the GRUB menu
to trigger a login request.
"""
machine.send_monitor_command("sendkey down")
machine.send_monitor_command("sendkey ret")
machine.start()
# wait for grub screen
machine.wait_for_console_text("GNU GRUB")
grub_select_all_configurations()
with subtest("Invalid credentials are rejected"):
grub_login_as("wronguser", "wrongsecret")
machine.wait_for_console_text("error: access denied.")
grub_select_all_configurations()
with subtest("Valid credentials are accepted"):
grub_login_as("alice", "supersecret")
machine.send_chars("\n") # press enter to boot
machine.wait_for_console_text("Linux version")
with subtest("Machine boots correctly"):
machine.wait_for_unit("multi-user.target")
'';
})

View File

@@ -71,8 +71,5 @@ import ./make-test-python.nix ({ pkgs, lib, withNg ? false, ... }: {
# at this point we've tested regression #262724, but haven't tested the bootloader itself
# TODO: figure out how to how to tell the test driver to start the bootloader instead of
# booting into the kernel directly.
with subtest("New boot entry has been added"):
machine.succeed("test -f /boot/loader/entries/nixos-generation-2.conf")
'';
})

68
nixos/tests/velocity.nix Normal file
View File

@@ -0,0 +1,68 @@
{ lib, pkgs, ... }:
{
name = "velocity";
meta = {
platforms = [
"x86_64-linux"
"aarch64-linux"
];
maintainers = [ lib.maintainers.Tert0 ];
};
nodes.server =
{ ... }:
{
imports =
let
mkVelocityService = name: pkg: {
systemd.sockets.${name} = {
socketConfig = {
ListenFIFO = "/run/${name}.stdin";
Service = "${name}";
};
};
systemd.services.${name} = {
serviceConfig = {
ExecStart = "${pkg}/bin/velocity";
DynamicUser = true;
StateDirectory = "${name}";
WorkingDirectory = "/var/lib/${name}";
Sockets = "${name}.socket";
StandardInput = "socket";
StandardOutput = "journal";
StandardError = "journal";
};
};
};
in
[
(mkVelocityService "velocity-without-native" (
pkgs.velocity.override { withVelocityNative = false; }
))
(mkVelocityService "velocity-with-native" (pkgs.velocity.override { withVelocityNative = true; }))
];
environment.systemPackages = [ pkgs.mcstatus ];
};
testScript = ''
def test_velocity(name: str, native: bool):
server.start_job(name)
server.wait_for_unit(name);
server.wait_for_open_port(25565)
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q 'Booting up Velocity nixpkgs-${pkgs.velocity.version}...'")
connections_startup_query = "Connections will use epoll channels, libdeflate (.+) compression, OpenSSL 3.x.x (.+) ciphers" if native else "Connections will use epoll channels, Java compression, Java ciphers"
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q -E '{connections_startup_query}'")
server.wait_until_succeeds(f"journalctl -b -u {name} | grep -q 'Done ([0-9]*.[0-9]*s)!'");
_, status_result = server.execute("mcstatus localhost:25565 status")
assert "A Velocity Server" in status_result
server.execute(f"echo stop > /run/{name}.stdin")
server.wait_for_closed_port(25565);
test_velocity("velocity-without-native", False)
test_velocity("velocity-with-native", True)
'';
}

File diff suppressed because it is too large Load Diff

View File

@@ -536,12 +536,12 @@
};
earthfile = buildGrammar {
language = "earthfile";
version = "0.0.0+rev=6695a2d";
version = "0.0.0+rev=ae378d9";
src = fetchFromGitHub {
owner = "glehmann";
repo = "tree-sitter-earthfile";
rev = "6695a2dfea5f8d9076b11f9bebcac8184e405e67";
hash = "sha256-qNZVpqODosmEurtS83PLAc+MacoiC64O9RogXuU1jK4=";
rev = "ae378d9d1306e9a967698516041f6f8803db5592";
hash = "sha256-BKosyoT2zv9A1at9N1P018nNlMUB2OPg2vu3sjNiW4Q=";
};
meta.homepage = "https://github.com/glehmann/tree-sitter-earthfile";
};
@@ -647,12 +647,12 @@
};
enforce = buildGrammar {
language = "enforce";
version = "0.0.0+rev=cf853e5";
version = "0.0.0+rev=8201c3c";
src = fetchFromGitHub {
owner = "simonvic";
repo = "tree-sitter-enforce";
rev = "cf853e5f56f1babe5ec573e356f6fbb4784bf5c1";
hash = "sha256-jzXRzROW/2ZenZVbnboUkXLsIUX8vObet4DcTmyXYxs=";
rev = "8201c3c354c34b96d5a531c8e63d262209ee06cb";
hash = "sha256-0js82yv8wShy1bdj3k50nnlOPNpNgKLobd/4aNH//gw=";
};
meta.homepage = "https://github.com/simonvic/tree-sitter-enforce";
};
@@ -757,12 +757,12 @@
};
fortran = buildGrammar {
language = "fortran";
version = "0.0.0+rev=022b032";
version = "0.0.0+rev=765d82a";
src = fetchFromGitHub {
owner = "stadelmanma";
repo = "tree-sitter-fortran";
rev = "022b032d31299c5d8336cdfd0ece97de20a609c0";
hash = "sha256-STRbEv7kBtkrokXgaN9g1JNwWmSV+7gkyklhYKJszNY=";
rev = "765d82ad913e75abfffdd57837217e96f4774fba";
hash = "sha256-+vLs5nHWDiusMYbRjOWIvTCTkK6fdWqn61HAjfCq5uE=";
};
meta.homepage = "https://github.com/stadelmanma/tree-sitter-fortran";
};
@@ -779,12 +779,12 @@
};
fsharp = buildGrammar {
language = "fsharp";
version = "0.0.0+rev=ad824de";
version = "0.0.0+rev=9308e58";
src = fetchFromGitHub {
owner = "ionide";
repo = "tree-sitter-fsharp";
rev = "ad824dea984734406b50699c5f388a7412e85946";
hash = "sha256-pjNBd6egwdrVpMNcLvcv8dPvEhdHZ3ey6xCRKJ70z5M=";
rev = "9308e58bec0394232a8d4abdd92eeaa387aefc89";
hash = "sha256-Zzzm9flwRuVV4aKVF8bBGtSf532a94R4T+EvFjV+jrA=";
};
location = "fsharp";
meta.homepage = "https://github.com/ionide/tree-sitter-fsharp";
@@ -1342,12 +1342,12 @@
};
inko = buildGrammar {
language = "inko";
version = "0.0.0+rev=0b08a8f";
version = "0.0.0+rev=f58a87a";
src = fetchFromGitHub {
owner = "inko-lang";
repo = "tree-sitter-inko";
rev = "0b08a8f976456a9271f70d4682143328d7224115";
hash = "sha256-mQkPg7bYadj/RToIo79y8TT9oh4UVEmZZCCYm6kAkwE=";
rev = "f58a87ac4dc6a7955c64c9e4408fbd693e804686";
hash = "sha256-hZdbF9lw7fR5K8UfUaESS7/c4v9u7vEcSylEEbc6//4=";
};
meta.homepage = "https://github.com/inko-lang/tree-sitter-inko";
};
@@ -1518,6 +1518,17 @@
};
meta.homepage = "https://github.com/IndianBoy42/tree-sitter-just";
};
kcl = buildGrammar {
language = "kcl";
version = "0.0.0+rev=b0b2eb3";
src = fetchFromGitHub {
owner = "kcl-lang";
repo = "tree-sitter-kcl";
rev = "b0b2eb38009e04035a6e266c7e11e541f3caab7c";
hash = "sha256-Aeu1j77GdsNpo9PU+FcqN3ttT0eLaDKY4n8buftMiDc=";
};
meta.homepage = "https://github.com/kcl-lang/tree-sitter-kcl";
};
kconfig = buildGrammar {
language = "kconfig";
version = "0.0.0+rev=9ac99fe";
@@ -1631,12 +1642,12 @@
};
liquid = buildGrammar {
language = "liquid";
version = "0.0.0+rev=23ac814";
version = "0.0.0+rev=6e03a05";
src = fetchFromGitHub {
owner = "hankthetank27";
repo = "tree-sitter-liquid";
rev = "23ac814111e2b4b4b083e2c92219af2d5b74d13d";
hash = "sha256-WZSvUiX1bKEfzXHVHC0AvzHpgyPD9JL+NgsoBx9mktQ=";
rev = "6e03a054a71cd419d9702725243137641e97ba51";
hash = "sha256-KDbI8jmSeXm1T3WGoZ60IFWK8xaJwmU2Ofnr/khKz+U=";
};
meta.homepage = "https://github.com/hankthetank27/tree-sitter-liquid";
};
@@ -1798,12 +1809,12 @@
};
mlir = buildGrammar {
language = "mlir";
version = "0.0.0+rev=9d83ca2";
version = "0.0.0+rev=ad38178";
src = fetchFromGitHub {
owner = "artagnon";
repo = "tree-sitter-mlir";
rev = "9d83ca263fa7ec8ac7a5fd8ad14891b2dc583a32";
hash = "sha256-7sbzFRhNHaUJ+wYrj5vSSaVo60UhNPX2HvL5DW5/Lgc=";
rev = "ad381783044e107ce144af3c36342cc34183d5b4";
hash = "sha256-meE+FKpw3dFX6PpaKRUErgMTUeGMCFHlVMn9smVlIog=";
};
generate = true;
meta.homepage = "https://github.com/artagnon/tree-sitter-mlir";
@@ -1887,12 +1898,12 @@
};
nix = buildGrammar {
language = "nix";
version = "0.0.0+rev=b3a88cf";
version = "0.0.0+rev=48057cf";
src = fetchFromGitHub {
owner = "cstrahan";
repo = "tree-sitter-nix";
rev = "b3a88cf3e597d48c33657deca4fda7a75c0069c1";
hash = "sha256-ujiKNd3h/i9bxrtJqKYy6e5mAExXGf38PHtuaZCo85k=";
rev = "48057cf966641e7a49b09700550751195c34bcb5";
hash = "sha256-VZGTHZdTZSKhjycFALHxYmelez6FR2BMqhIVSOv+kLU=";
};
meta.homepage = "https://github.com/cstrahan/tree-sitter-nix";
};
@@ -1920,12 +1931,12 @@
};
nu = buildGrammar {
language = "nu";
version = "0.0.0+rev=2a153c8";
version = "0.0.0+rev=a073ba8";
src = fetchFromGitHub {
owner = "nushell";
repo = "tree-sitter-nu";
rev = "2a153c88d5d44d96653057c7cc14292f4e641bef";
hash = "sha256-Mv4XxJSO0bLF/JB6U5WCtu6sXqW6T6tOTKzsbnc/zcs=";
rev = "a073ba8cd854318ca5d56e97279fc330f194be8a";
hash = "sha256-PuoSH6MV9xWF9wm2xJZN4PBJvvUnvc3mWPU3t6URkEI=";
};
meta.homepage = "https://github.com/nushell/tree-sitter-nu";
};
@@ -1998,25 +2009,14 @@
};
meta.homepage = "https://github.com/amaanq/tree-sitter-odin";
};
org = buildGrammar {
language = "org";
version = "0.0.0+rev=64cfbc2";
src = fetchFromGitHub {
owner = "milisims";
repo = "tree-sitter-org";
rev = "64cfbc213f5a83da17632c95382a5a0a2f3357c1";
hash = "sha256-/03eZBbv23W5s/GbDgPgaJV5TyK+/lrWUVeINRS5wtA=";
};
meta.homepage = "https://github.com/milisims/tree-sitter-org";
};
pascal = buildGrammar {
language = "pascal";
version = "0.0.0+rev=d0ebabe";
version = "0.0.0+rev=78426d9";
src = fetchFromGitHub {
owner = "Isopod";
repo = "tree-sitter-pascal";
rev = "d0ebabefaea9ac3f6fc3004cf08cd121b66da9e4";
hash = "sha256-T47xDjEbcDLg1IOu2HsIGA7j/CFMCagfV4xKdFYYoec=";
rev = "78426d96bde7114af979e314283e45d087603428";
hash = "sha256-KNVrXS7sYMXqZ5+sMnmp87vHr8NYrY+BTVVIdV2wnm0=";
};
meta.homepage = "https://github.com/Isopod/tree-sitter-pascal";
};
@@ -2055,24 +2055,24 @@
};
php = buildGrammar {
language = "php";
version = "0.0.0+rev=f3a19ab";
version = "0.0.0+rev=f7cf734";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-php";
rev = "f3a19ab3217a6e838870fc7142fa492d1fd7a7c9";
hash = "sha256-toppaKtuu8G2tsALPqlLv0ztdnv8kRwQd+b9X0b3ldk=";
rev = "f7cf7348737d8cff1b13407a0bfedce02ee7b046";
hash = "sha256-UWYKrC0mpWO86V52Phj/gYCdH586ZNdev/zhvUn4EBc=";
};
location = "php";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
};
php_only = buildGrammar {
language = "php_only";
version = "0.0.0+rev=f3a19ab";
version = "0.0.0+rev=f7cf734";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-php";
rev = "f3a19ab3217a6e838870fc7142fa492d1fd7a7c9";
hash = "sha256-toppaKtuu8G2tsALPqlLv0ztdnv8kRwQd+b9X0b3ldk=";
rev = "f7cf7348737d8cff1b13407a0bfedce02ee7b046";
hash = "sha256-UWYKrC0mpWO86V52Phj/gYCdH586ZNdev/zhvUn4EBc=";
};
location = "php_only";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
@@ -2401,12 +2401,12 @@
};
razor = buildGrammar {
language = "razor";
version = "0.0.0+rev=a47cd8c";
version = "0.0.0+rev=fe46ce5";
src = fetchFromGitHub {
owner = "tris203";
repo = "tree-sitter-razor";
rev = "a47cd8ca148685629739a4ab69f58864800fbdab";
hash = "sha256-U1UmVBbOTNJnmgMB+6EOhCdS99BJ5YH/ry0xd2tzzkY=";
rev = "fe46ce5ea7d844e53d59bc96f2175d33691c61c5";
hash = "sha256-E4fgy588g6IP258TS2DvoILc1Aikvpfbtq20VIhBE4U=";
};
meta.homepage = "https://github.com/tris203/tree-sitter-razor";
};
@@ -2544,12 +2544,12 @@
};
rst = buildGrammar {
language = "rst";
version = "0.0.0+rev=899e073";
version = "0.0.0+rev=4e562e1";
src = fetchFromGitHub {
owner = "stsewd";
repo = "tree-sitter-rst";
rev = "899e073a10012b8028b643d676c30bbf9c64a45d";
hash = "sha256-s4Ix3/CNNM7SLN4Z+eEWow0Z+NcUo1lSJDulu63WKSM=";
rev = "4e562e1598b95b93db4f3f64fe40ddefbc677a15";
hash = "sha256-C65FmrEUyMQN+rF3RTN1oNVJtGiTHMZvdRyy/tMjVqY=";
};
meta.homepage = "https://github.com/stsewd/tree-sitter-rst";
};
@@ -2577,12 +2577,12 @@
};
rust = buildGrammar {
language = "rust";
version = "0.0.0+rev=2eaf126";
version = "0.0.0+rev=6e883a2";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-rust";
rev = "2eaf126458a4d6a69401089b6ba78c5e5d6c1ced";
hash = "sha256-u3mJghmVHYPjow1QWRoT/Ip7DZwli4EzmioZQOzqTjs=";
rev = "6e883a2adea9414799300699e78c0d2f032b5c46";
hash = "sha256-vvB5xswHwBCjYObyaZ4SHYFPuIPF1bAjZ2Xl5zsQB2Q=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-rust";
};
@@ -2823,12 +2823,12 @@
};
styled = buildGrammar {
language = "styled";
version = "0.0.0+rev=75d3ad2";
version = "0.0.0+rev=319cdca";
src = fetchFromGitHub {
owner = "mskelton";
repo = "tree-sitter-styled";
rev = "75d3ad20818c30c49b445ca2cb35999c278b3453";
hash = "sha256-2GMOHPO1vDqeXazAlQw35XhrOXrAmZnITibIfe0hscA=";
rev = "319cdcaa0346ba6db668a222d938e5c3569e2a51";
hash = "sha256-sKRSgN5mSF+uolWD6iKrCR83Ssroytr8ZGduTTyyxGQ=";
};
meta.homepage = "https://github.com/mskelton/tree-sitter-styled";
};
@@ -2890,12 +2890,12 @@
};
swift = buildGrammar {
language = "swift";
version = "0.0.0+rev=1ebc09c";
version = "0.0.0+rev=42ad8f6";
src = fetchFromGitHub {
owner = "alex-pinkus";
repo = "tree-sitter-swift";
rev = "1ebc09c38f41d6aab7dd65ca0f8ea032ced0364f";
hash = "sha256-DLgeqbRn6QOTJm4vqwncNOdMNzoZv9tW1EFFAfO5AV4=";
rev = "42ad8f6b4dc9b46285893cc37b460323b54932d4";
hash = "sha256-nxKOyyDXrQAxb/ZmuMKSqesm6SUSbCq+cI+lU0hZwuU=";
};
generate = true;
meta.homepage = "https://github.com/alex-pinkus/tree-sitter-swift";
@@ -3036,12 +3036,12 @@
};
tlaplus = buildGrammar {
language = "tlaplus";
version = "0.0.0+rev=d711f24";
version = "0.0.0+rev=4ba91b0";
src = fetchFromGitHub {
owner = "tlaplus-community";
repo = "tree-sitter-tlaplus";
rev = "d711f24c93221cdfc9a9b4dbb0998f528fc982ac";
hash = "sha256-CHoqOY990/30GqLkxee/xexQ9uni7VTdW0iZ+inunoc=";
rev = "4ba91b07b97741a67f61221d0d50e6d962e4987e";
hash = "sha256-Oc+VYBLP1XcfMTWmcYyJRXzq1Ty838TnF2fPGIsjtOE=";
};
meta.homepage = "https://github.com/tlaplus-community/tree-sitter-tlaplus";
};
@@ -3227,12 +3227,12 @@
};
v = buildGrammar {
language = "v";
version = "0.0.0+rev=92cb593";
version = "0.0.0+rev=532bebd";
src = fetchFromGitHub {
owner = "vlang";
repo = "v-analyzer";
rev = "92cb593652173dbb1ffb34ce48874d779850aabc";
hash = "sha256-W7cGig5Dd0wxDJhLDKG2mdaAsEMYoD8myPvJEipWhvo=";
rev = "532bebd50742ef15949bdd67c36d46697c847628";
hash = "sha256-lBrX5n4hYdDq+2m7j9JXyeGGS3yl4oBu8jK7VV+OE7I=";
};
location = "tree_sitter_v";
meta.homepage = "https://github.com/vlang/v-analyzer";
@@ -3272,12 +3272,12 @@
};
vhdl = buildGrammar {
language = "vhdl";
version = "0.0.0+rev=cfc522a";
version = "0.0.0+rev=f3a8d69";
src = fetchFromGitHub {
owner = "jpt13653903";
repo = "tree-sitter-vhdl";
rev = "cfc522af3e49c1a00ae74e01aa14e19818dab8f2";
hash = "sha256-ikx/sSq7/nGLCrf0Pm0LKqrToz7SieeSRWK9xct6nqI=";
rev = "f3a8d69a96656bb81d803f7e6ec24fbe1aa2c313";
hash = "sha256-8cWDG3nqYwFlFSL1eLAR/B7aAkLlOlAuT20WhgGCRy0=";
};
meta.homepage = "https://github.com/jpt13653903/tree-sitter-vhdl";
};

View File

@@ -2882,10 +2882,12 @@ in
snacks-nvim = super.snacks-nvim.overrideAttrs {
nvimSkipModule = [
# Requires setup call first
# attempt to index global 'Snacks' (a nil value)
"snacks.dashboard"
"snacks.debug"
"snacks.dim"
"snacks.git"
"snacks.image.convert"
"snacks.image.image"
"snacks.image.init"
"snacks.image.placement"

View File

@@ -324,7 +324,7 @@ https://github.com/earthly/earthly.vim/,HEAD,
https://github.com/GustavEikaas/easy-dotnet.nvim/,HEAD,
https://github.com/Shougo/echodoc.vim/,,
https://github.com/sainnhe/edge/,,
https://github.com/edgedb/edgedb-vim/,,
https://github.com/geldata/edgedb-vim/,,
https://github.com/folke/edgy.nvim/,HEAD,
https://github.com/editorconfig/editorconfig-vim/,,
https://github.com/gpanders/editorconfig.nvim/,,
@@ -835,7 +835,6 @@ https://github.com/joosepalviste/nvim-ts-context-commentstring/,,
https://github.com/kevinhwang91/nvim-ufo/,HEAD,
https://github.com/samjwill/nvim-unception/,HEAD,
https://github.com/chrisgrieser/nvim-various-textobjs/,HEAD,
https://github.com/nvim-tree/nvim-web-devicons/,,
https://github.com/AckslD/nvim-whichkey-setup.lua/,,
https://github.com/s1n7ax/nvim-window-picker/,HEAD,
https://github.com/roxma/nvim-yarp/,,

View File

@@ -10,17 +10,22 @@
enableLegacySg ? false,
}:
rustPlatform.buildRustPackage rec {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ast-grep";
version = "0.35.0";
src = fetchFromGitHub {
owner = "ast-grep";
repo = "ast-grep";
tag = version;
tag = finalAttrs.version;
hash = "sha256-uiQYqVcSSQT32Vu8iE5ATIHFGDiyuxaQvg8hkBtB4DU=";
};
# error: linker `aarch64-linux-gnu-gcc` not found
postPatch = ''
rm .cargo/config.toml
'';
useFetchCargoVendor = true;
cargoHash = "sha256-B/egtLMBrlLobB1m04L1NlNmZ6+DdQIV9Ae0LVPmO2Y=";
@@ -60,7 +65,7 @@ rustPlatform.buildRustPackage rec {
mainProgram = "ast-grep";
description = "Fast and polyglot tool for code searching, linting, rewriting at large scale";
homepage = "https://ast-grep.github.io/";
changelog = "https://github.com/ast-grep/ast-grep/blob/${src.rev}/CHANGELOG.md";
changelog = "https://github.com/ast-grep/ast-grep/blob/${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
xiaoxiangmoe
@@ -69,4 +74,4 @@ rustPlatform.buildRustPackage rec {
cafkafk
];
};
}
})

View File

@@ -0,0 +1,152 @@
{
lib,
stdenv,
stdenvNoCC,
fetchFromGitHub,
cacert,
yarn-berry,
nodejs,
electron,
makeWrapper,
writableTmpDirAsHomeHook,
makeDesktopItem,
copyDesktopItems,
nix-update-script,
commandLineArgs ? "",
}:
stdenv.mkDerivation (finalAttrs: {
pname = "cherry-studio";
version = "1.0.1";
src = fetchFromGitHub {
owner = "CherryHQ";
repo = "cherry-studio";
tag = "v${finalAttrs.version}";
hash = "sha256-C8D0XCwIFWG+5WakAK+TmI4VVuIYJBSgkv5ynM2Ewkc=";
};
yarnOfflineCache = stdenvNoCC.mkDerivation {
name = "${finalAttrs.pname}-${finalAttrs.version}-offline-cache";
inherit (finalAttrs) src;
nativeBuildInputs = [
cacert
yarn-berry
writableTmpDirAsHomeHook
];
postConfigure =
let
supportedArchitectures = builtins.toJSON {
os = [
"darwin"
"linux"
];
cpu = [
"x64"
"ia32"
"arm64"
];
libc = [
"glibc"
"musl"
];
};
in
''
yarn config set enableTelemetry false
yarn config set enableGlobalCache false
yarn config set supportedArchitectures --json '${supportedArchitectures}'
yarn config set cacheFolder $out
'';
buildPhase = ''
runHook preBuild
yarn install --mode=skip-build
runHook postBuild
'';
outputHashMode = "recursive";
outputHash = "sha256-DrEkaXkbaY40uYH7niT10OFJH+PD7ip3A4OCwbKmtz8=";
};
nativeBuildInputs = [
yarn-berry
makeWrapper
writableTmpDirAsHomeHook
copyDesktopItems
];
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
npm_config_build_from_source = "true";
npm_config_nodedir = nodejs;
};
postConfigure = ''
yarn config set enableTelemetry false
yarn config set enableGlobalCache false
export cachePath=$(mktemp -d)
cp -r $yarnOfflineCache/* $cachePath
yarn config set cacheFolder $cachePath
yarn install --mode=skip-build
'';
buildPhase = ''
runHook preBuild
yarn run electron-vite build
yarn run electron-builder --linux --dir \
--config electron-builder.yml \
-c.electronDist="${electron}/libexec/electron" \
-c.electronVersion=${electron.version}
runHook postBuild
'';
desktopItems = [
(makeDesktopItem {
name = "cherry-studio";
desktopName = "Cherry Studio";
comment = "A powerful AI assistant for producer.";
exec = "cherry-studio --no-sandbox %U";
terminal = false;
icon = "cherry-studio";
startupWMClass = "Cherry Studio";
categories = [ "Utility" ];
})
];
installPhase = ''
runHook preInstall
mkdir -p $out/lib/cherry-studio
cp -r dist/linux-unpacked/{resources,LICENSE*} $out/lib/cherry-studio
install -Dm644 build/icon.png $out/share/pixmaps/cherry-studio.png
makeWrapper "${lib.getExe electron}" $out/bin/cherry-studio \
--inherit-argv0 \
--add-flags $out/lib/cherry-studio/resources/app.asar \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \
--add-flags ${lib.escapeShellArg commandLineArgs}
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Desktop client that supports for multiple LLM providers";
homepage = "https://github.com/CherryHQ/cherry-studio";
changelog = "https://github.com/CherryHQ/cherry-studio/releases/tag/v${finalAttrs.version}";
mainProgram = "cherry-studio";
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ nayeko ];
license = with lib.licenses; [
asl20
unfree
];
};
})

View File

@@ -0,0 +1,16 @@
--- a/data/meson.build
+++ b/data/meson.build
@@ -1,10 +1,13 @@
dataconf = configuration_data()
dataconf.set('VERSION', meson.project_version())
+schemadir = get_option('prefix') / get_option('datadir') / 'glib-2.0' / 'schemas'
+
install_data(
'org.nemo.plugins.seahorse.gschema.xml',
'org.nemo.plugins.seahorse.window.gschema.xml',
install_dir: get_option('datadir') / 'glib-2.0' / 'schemas',
)
+meson.add_install_script('glib-compile-schemas', schemadir)
install_man('nemo-seahorse-tool.1')

View File

@@ -0,0 +1,90 @@
{
stdenv,
lib,
fetchFromGitHub,
meson,
pkg-config,
ninja,
glib,
gtk3,
nemo,
cmake,
dbus-glib,
libcryptui,
gcr,
libnotify,
gnupg,
gpgme,
nix-update-script,
}:
stdenv.mkDerivation rec {
pname = "nemo-seahorse";
version = "6.4.0";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "nemo-extensions";
tag = version;
hash = "sha256-39hWA4SNuEeaPA6D5mWMHjJDs4hYK7/ZdPkTyskvm5Y=";
};
sourceRoot = "${src.name}/nemo-seahorse";
patches = [ ./fix-schemas.patch ];
nativeBuildInputs = [
meson
pkg-config
ninja
cmake
];
buildInputs = [
glib
gtk3
nemo
gpgme
dbus-glib
libcryptui
gcr
libnotify
gnupg
];
PKG_CONFIG_LIBNEMO_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/${nemo.extensiondir}";
passthru.updateScript = nix-update-script { };
meta = {
homepage = "https://github.com/linuxmint/nemo-extensions/tree/master/nemo-seahorse";
changelog = "https://github.com/linuxmint/nemo-extensions/blob/master/nemo-seahorse/ChangeLog";
description = "Nemo seahorse extension";
longDescription = ''
You can add the extension to nemo using the following configuration:
```nix
{
environment.systemPackages = with pkgs; [
(nemo-with-extensions.override {
extensions = [ nemo-seahorse ];
})
];
services.dbus.packages = with pkgs; [
libcryptui
];
services.xserver.desktopManager.gnome.extraGSettingsOverridePackages = with pkgs; [
nemo
gcr
libcryptui
nemo-seahorse
];
}
```
'';
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = lib.teams.cinnamon.members;
};
}

View File

@@ -5,16 +5,16 @@
}:
buildNpmPackage rec {
pname = "stylelint";
version = "16.14.1";
version = "16.15.0";
src = fetchFromGitHub {
owner = "stylelint";
repo = "stylelint";
tag = version;
hash = "sha256-VBr/16r/hpHRTMwndsklCo/9V8lb0NI/MSgOyEM7TYI=";
hash = "sha256-9PaRsBvs8TDpL2I5nPr+vWGzx4TJEWvKIoMuTq9qI5k=";
};
npmDepsHash = "sha256-2D4uaZk3OAruFRucjSroMnGBWWnOxm+r7WndmPPbNv0=";
npmDepsHash = "sha256-gVaXq83XeYnEA6s37Y0Bwo5Y14bPr/Q7mYMNQFFcw38=";
dontNpmBuild = true;

View File

@@ -0,0 +1,33 @@
{
stdenvNoCC,
unzip,
makeWrapper,
pname,
version,
meta,
src,
}:
stdenvNoCC.mkDerivation {
inherit
pname
version
meta
src
;
sourceRoot = ".";
nativeBuildInputs = [
unzip
makeWrapper
];
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,Applications}
cp -r Upscayl.app $out/Applications/
makeWrapper $out/Applications/Upscayl.app/Contents/MacOS/Upscayl $out/bin/upscayl
runHook postInstall
'';
}

View File

@@ -0,0 +1,46 @@
{
appimageTools,
makeWrapper,
pname,
version,
meta,
src,
}:
let
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
in
appimageTools.wrapType2 {
inherit
pname
version
src
meta
;
nativeBuildInputs = [
makeWrapper
];
extraPkgs = pkgs: [
pkgs.vulkan-headers
pkgs.vulkan-loader
];
extraInstallCommands = ''
mkdir -p $out/share/{applications,pixmaps}
cp ${appimageContents}/upscayl.desktop $out/share/applications/upscayl.desktop
cp ${appimageContents}/upscayl.png $out/share/pixmaps/upscayl.png
substituteInPlace $out/share/applications/upscayl.desktop \
--replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=upscayl'
wrapProgram $out/bin/upscayl \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
'';
}

View File

@@ -1,54 +1,51 @@
{
appimageTools,
fetchurl,
stdenv,
lib,
makeWrapper,
fetchurl,
callPackage,
}:
let
pname = "upscayl";
version = "2.15.0";
src = fetchurl {
url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-linux.AppImage";
hash = "sha256-ZFlFfliby5nneepELc5gi6zaM5FrcBmohit8YlKqgik=";
srcs = rec {
x86_64-linux = fetchurl {
url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-linux.AppImage";
hash = "sha256-ZFlFfliby5nneepELc5gi6zaM5FrcBmohit8YlKqgik=";
};
aarch64-darwin = fetchurl {
url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-mac.zip";
hash = "sha256-gXqeRaNW0g7ZVkCSbxps9SqPMuVSzLTCGL5F3Om/iwo=";
};
x86_64-darwin = aarch64-darwin;
};
appimageContents = appimageTools.extractType2 {
inherit pname version src;
};
in
appimageTools.wrapType2 {
inherit pname version src;
nativeBuildInputs = [
makeWrapper
];
extraPkgs = pkgs: [
pkgs.vulkan-headers
pkgs.vulkan-loader
];
extraInstallCommands = ''
mkdir -p $out/share/{applications,pixmaps}
cp ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop
cp ${appimageContents}/${pname}.png $out/share/pixmaps/${pname}.png
substituteInPlace $out/share/applications/${pname}.desktop \
--replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=${pname}'
wrapProgram $out/bin/${pname} \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
'';
meta = with lib; {
meta = {
description = "Free and Open Source AI Image Upscaler";
homepage = "https://upscayl.github.io/";
maintainers = with maintainers; [ icy-thought ];
license = licenses.agpl3Plus;
platforms = platforms.linux;
maintainers = with lib.maintainers; [
icy-thought
matteopacini
];
license = lib.licenses.agpl3Plus;
platforms = [ "x86_64-linux" ] ++ lib.platforms.darwin;
mainProgram = "upscayl";
};
}
in
if stdenv.hostPlatform.isDarwin then
callPackage ./darwin.nix {
inherit
pname
version
meta
;
src = srcs.${stdenv.hostPlatform.system};
}
else
callPackage ./linux.nix {
inherit
pname
version
meta
;
src = srcs.${stdenv.hostPlatform.system};
}

1438
pkgs/by-name/ve/velocity/deps.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -28,4 +28,6 @@ subprojects {
}
}
}
+
+ tasks.withType<Javadoc>().configureEach { enabled = false }
}

View File

@@ -0,0 +1,32 @@
--- a/build-logic/src/main/kotlin/velocity-init-manifest.gradle.kts
+++ b/build-logic/src/main/kotlin/velocity-init-manifest.gradle.kts
@@ -2,28 +2,9 @@ import org.gradle.jvm.tasks.Jar
import org.gradle.kotlin.dsl.withType
import java.io.ByteArrayOutputStream
-val currentShortRevision = ByteArrayOutputStream().use {
- exec {
- executable = "git"
- args = listOf("rev-parse", "HEAD")
- standardOutput = it
- }
- it.toString().trim().substring(0, 8)
-}
-
tasks.withType<Jar> {
manifest {
- val buildNumber = System.getenv("BUILD_NUMBER")
- val velocityHumanVersion: String =
- if (project.version.toString().endsWith("-SNAPSHOT")) {
- if (buildNumber == null) {
- "${project.version} (git-$currentShortRevision)"
- } else {
- "${project.version} (git-$currentShortRevision-b$buildNumber)"
- }
- } else {
- archiveVersion.get()
- }
+ val velocityHumanVersion = System.getenv("BUILD_VERSION")
attributes["Implementation-Version"] = velocityHumanVersion
}
}

View File

@@ -0,0 +1,144 @@
{
lib,
stdenv,
fetchFromGitHub,
gradle,
jdk17,
makeBinaryWrapper,
openssl,
libdeflate,
jre_headless,
writeScript,
nixosTests,
# native (openssl + libdeflate) compression and crypto implementations
withVelocityNative ? builtins.elem stdenv.hostPlatform.system [
"x86_64-linux"
"aarch64-linux"
],
}:
let
gradle_jdk17 = gradle.override {
javaToolchains = [ jdk17 ];
};
velocityNativePlatform =
{
x86_64-linux = "linux_x86_64";
aarch64-linux = "linux_aarch64";
}
.${stdenv.hostPlatform.system} or (
if withVelocityNative then
throw "velocity native is not supported on ${stdenv.hostPlatform.system}"
else
null
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "velocity";
version = "3.4.0-unstable-2025-02-28";
src = fetchFromGitHub {
owner = "PaperMC";
repo = "Velocity";
rev = "b8fe3577c9582972a92134642e35eb7fac671376";
hash = "sha256-V+h2+M567niYmDWxT6hInbsVivL3pLp2pZO8D91kXkg=";
};
nativeBuildInputs =
[
gradle_jdk17
makeBinaryWrapper
]
++ lib.optionals withVelocityNative [
# libraries for velocity-native
openssl
libdeflate
# needed for building velocity-native jni
jdk17
];
mitmCache = gradle_jdk17.fetchDeps {
inherit (finalAttrs) pname;
data = ./deps.json;
};
patches = [
./fix-version.patch # remove build-time dependency on git and use version string from a env var instead
./disable-javadocs.patch # disable building java docs because they cause build failures
];
# tests require velocity native
doCheck = withVelocityNative;
postPatch = ''
rm -rf native/src/main/resources/{linux_x86_64,linux_aarch64,macos_aarch64}/*
'';
# based on native/build-support/compile-linux-{compress,crypt}.sh
preBuild =
let
CFLAGS = "-O2 -fPIC -shared -Wl,-z,noexecstack -Wall -Werror -fomit-frame-pointer";
in
lib.optionalString withVelocityNative ''
$CC ${CFLAGS} native/src/main/c/jni_util.c native/src/main/c/jni_cipher_openssl.c \
-o native/src/main/resources/${velocityNativePlatform}/velocity-cipher-ossl30x.so \
-lcrypto
$CC ${CFLAGS} native/src/main/c/jni_util.c native/src/main/c/jni_zlib_deflate.c native/src/main/c/jni_zlib_inflate.c \
-o native/src/main/resources/${velocityNativePlatform}/velocity-compress.so \
-ldeflate
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/velocity
cp proxy/build/libs/velocity-proxy-${builtins.head (builtins.split "-" finalAttrs.version)}-SNAPSHOT-all.jar $out/share/velocity/velocity.jar
makeWrapper ${lib.getExe jre_headless} "$out/bin/velocity" \
--append-flags "-jar $out/share/velocity/velocity.jar"
runHook postInstall
'';
env.BUILD_VERSION = "nixpkgs-${finalAttrs.version}";
passthru = {
updateScript = writeScript "update-velocity" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p common-updater-scripts
tmpdir="$(mktemp -d)"
git clone --depth=1 "${finalAttrs.src.gitRepoUrl}" "$tmpdir"
pushd "$tmpdir"
main_version=$(awk 'match($0,/version=([0-9.]+)/,r) { print r[1] }' gradle.properties)
commit_date=$(git show -s --pretty='format:%cs')
commit_hash=$(git show -s --pretty='format:%H')
popd
rm -rf "$tmpdir"
update-source-version "$UPDATE_NIX_ATTR_PATH" "$main_version-unstable-$commit_date" --rev="$commit_hash"
'';
tests.velocity = nixosTests.velocity;
};
meta = {
description = "Modern, next-generation Minecraft server proxy";
homepage = "https://papermc.io/software/velocity";
license = with lib.licenses; [
gpl3Only
mit
];
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # java deps
];
maintainers = with lib.maintainers; [ Tert0 ];
platforms = lib.platforms.linux;
mainProgram = "velocity";
};
})

View File

@@ -0,0 +1,39 @@
{
appimageTools,
fetchurl,
lib,
makeWrapper,
}:
let
pname = "volanta";
version = "1.10.10";
src = fetchurl {
url = "https://cdn.volanta.app/software/volanta-app/${version}-a7ebf1c7/volanta-${version}.AppImage";
hash = "sha256-pdMPC3flJzguRYmS+xKiAXWQ4BKsD3N48S27djXDtuo=";
};
appImageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 rec {
inherit pname version src;
nativeBuildInputs = [ makeWrapper ];
# Note: Volanta needs the env variable APPIMAGE=true to be set in order to work at all.
extraInstallCommands = ''
install -m 444 -D ${appImageContents}/volanta.desktop $out/share/applications/volanta.desktop
install -m 444 -D ${appImageContents}/volanta.png \
$out/share/icons/hicolor/1024x1024/apps/volanta.png
substituteInPlace $out/share/applications/volanta.desktop \
--replace-fail 'Exec=AppRun' 'Exec=env APPIMAGE=true volanta'
wrapProgram $out/bin/volanta \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
'';
meta = {
description = "Easy-to-use smart flight tracker that integrates all your flight data across all major flightsims";
homepage = "https://volanta.app/";
maintainers = with lib.maintainers; [ SirBerg ];
mainProgram = "volanta";
platforms = [ "x86_64-linux" ];
license = lib.licenses.unfree;
};
}

View File

@@ -1,20 +1,20 @@
{
"aarch64-darwin": {
"version": "1.3.9",
"version": "1.3.10",
"vscodeVersion": "1.94.0",
"url": "https://windsurf-stable.codeiumdata.com/darwin-arm64/stable/43976ecab7354ba352849517e15779fe8a4eff88/Windsurf-darwin-arm64-1.3.9.zip",
"sha256": "1f6c3b1f1fd1a634ad90b523a892989fe18b1b95aa7cea074070bff4b792c2e5"
"url": "https://windsurf-stable.codeiumdata.com/darwin-arm64/stable/61d65579650f356494469f86c21fb953834289a0/Windsurf-darwin-arm64-1.3.10.zip",
"sha256": "d4308fef263dddb8ae931b5ed6a5c86da9650e63d9043153833082e3180823c5"
},
"x86_64-darwin": {
"version": "1.3.9",
"version": "1.3.10",
"vscodeVersion": "1.94.0",
"url": "https://windsurf-stable.codeiumdata.com/darwin-x64/stable/43976ecab7354ba352849517e15779fe8a4eff88/Windsurf-darwin-x64-1.3.9.zip",
"sha256": "3388e05e2cf3835fe2a1c9442cb2cf7fa5c6abdbc4e36af9af56fa8a64132364"
"url": "https://windsurf-stable.codeiumdata.com/darwin-x64/stable/61d65579650f356494469f86c21fb953834289a0/Windsurf-darwin-x64-1.3.10.zip",
"sha256": "dee42a845ecd7b97c77daba109d5dd2392a28686fb75c63ea50f519b2a8b4da0"
},
"x86_64-linux": {
"version": "1.3.9",
"version": "1.3.10",
"vscodeVersion": "1.94.0",
"url": "https://windsurf-stable.codeiumdata.com/linux-x64/stable/43976ecab7354ba352849517e15779fe8a4eff88/Windsurf-linux-x64-1.3.9.tar.gz",
"sha256": "0228099a39128cb21b1cd87516d74ac1bfaa1dd801f47feb3a67b1dbef7365c7"
"url": "https://windsurf-stable.codeiumdata.com/linux-x64/stable/61d65579650f356494469f86c21fb953834289a0/Windsurf-linux-x64-1.3.10.tar.gz",
"sha256": "9a98223f0629b0e0219d82902b8c38d18dd08dd8b6700d2739419a385344d17f"
}
}

View File

@@ -13,7 +13,6 @@
, gtk3
, json-glib
, switchboard-with-plugs
, libsoup_2_4
, wingpanel
, zeitgeist
, bc
@@ -22,13 +21,13 @@
stdenv.mkDerivation rec {
pname = "wingpanel-applications-menu";
version = "8.0.0";
version = "8.0.1";
src = fetchFromGitHub {
owner = "elementary";
repo = "applications-menu";
rev = version;
sha256 = "sha256-HA82CcVC2+hJFksOuZ8pFmw7phpkCEjPCgE/5naaPcg=";
sha256 = "sha256-bwQI41Znm75GFoXxSbWkY9daAJTMvUo+UHyyPmvzOUA=";
};
patches = [
@@ -51,7 +50,6 @@ stdenv.mkDerivation rec {
json-glib
libgee
libhandy
libsoup_2_4
switchboard-with-plugs
wingpanel
zeitgeist

View File

@@ -14,7 +14,6 @@
os-service-types,
pbr,
psutil,
pythonOlder,
pyyaml,
requestsexceptions,
setuptools,
@@ -23,11 +22,9 @@
buildPythonPackage rec {
pname = "openstacksdk";
version = "4.3.0";
version = "4.4.0";
pyproject = true;
disabled = pythonOlder "3.8";
outputs = [
"out"
"man"
@@ -35,7 +32,7 @@ buildPythonPackage rec {
src = fetchPypi {
inherit pname version;
hash = "sha256-6NIRsSqBqedjca5O3cqXVh6h/bUEefB3QAz0Ry0q2Jw=";
hash = "sha256-FXQ3Vj1k8/b+7BeW+9hVLVYnczJGF3jE2+dtGCj9MeA=";
};
postPatch = ''

View File

@@ -22,7 +22,6 @@
python-watcherclient,
python-zaqarclient,
python-zunclient,
pythonOlder,
requests-mock,
requests,
setuptools,
@@ -34,14 +33,13 @@
buildPythonPackage rec {
pname = "python-openstackclient";
version = "7.2.1";
version = "7.4.0";
pyproject = true;
disabled = pythonOlder "3.9";
src = fetchPypi {
inherit pname version;
hash = "sha256-65q+VrUnJiRbmb37U5ps1RlsBSA5gJcDxlxpBJ5Eyjk=";
pname = "python_openstackclient";
inherit version;
hash = "sha256-6BfhGgHLK1FvvZnc5FwJnI5BxD0RuxHmZycDqDhEnZ8=";
};
build-system = [

View File

@@ -157,25 +157,21 @@ let
chmod u-x $out/libexec/electron/*.so*
'';
# We use null here to not cause unnecessary rebuilds.
dontWrapGApps = if needsAarch64PageSizeFix then true else null;
preFixup =
if needsAarch64PageSizeFix then
''
wrapProgram "$out/libexec/electron/chrome_crashpad_handler" "''${gappsWrapperArgs[@]}"
wrapProgram "$out/libexec/electron/chrome-sandbox" "''${gappsWrapperArgs[@]}"
wrapProgram "$out/libexec/electron/electron" "''${gappsWrapperArgs[@]}" \
--add-flags "--js-flags=--no-decommit-pooled-pages"
''
else
null;
# We don't want to wrap the contents of $out/libexec automatically
dontWrapGApps = true;
preFixup = ''
makeWrapper "$out/libexec/electron/electron" $out/bin/electron \
"''${gappsWrapperArgs[@]}" \
${lib.optionalString needsAarch64PageSizeFix "--add-flags '--js-flags=--no-decommit-pooled-pages'"}
'';
postFixup = ''
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${electronLibPath}:$out/libexec/electron" \
$out/libexec/electron/.electron-wrapped \
$out/libexec/electron/.chrome_crashpad_handler-wrapped
$out/libexec/electron/electron \
$out/libexec/electron/chrome_crashpad_handler
# patch libANGLE
patchelf \