Merge branch 'staging' into staging-next

This commit is contained in:
Vladimír Čunát
2026-01-11 21:44:59 +01:00
344 changed files with 15483 additions and 69619 deletions
+1 -1
View File
@@ -437,7 +437,7 @@ pkgs/by-name/fo/forgejo/ @adamcstephens @bendlas @emilylange
# Node.js
/pkgs/build-support/node/build-npm-package @winterqt
/pkgs/build-support/node/fetch-npm-deps @winterqt
/pkgs/build-support/node/prefetch-npm-deps @winterqt
/doc/languages-frameworks/javascript.section.md @winterqt
/pkgs/development/tools/pnpm @Scrumplex @gepbird
/pkgs/build-support/node/fetch-pnpm-deps @Scrumplex @gepbird
+12
View File
@@ -742,6 +742,18 @@ lib.mapAttrs mkLicense (
fullName = "Historical Permission Notice and Disclaimer - sell xserver variant with MIT disclaimer";
};
hpndSellVariantSafetyClause = {
fullName = "HPND - sell variant with safety critical systems clause";
url = "https://gitlab.freedesktop.org/xorg/driver/xf86-video-voodoo/-/blob/68a5b6d98ae34749cca889f4373b4043d00bfe6a/src/voodoo_dga.c#L12-33";
# TODO: if the license gets accepted to spdx then
# add spdxId
# else
# remove license
# && replace reference with whatever this license is supposed to be then
# https://github.com/spdx/license-list-XML/issues/2922
# spdxId = "HPND-sell-variant-safety-clause";
};
hpndDec = {
fullName = "Historical Permission Notice and Disclaimer - DEC variant";
spdxId = "HPND-DEC";
-3
View File
@@ -85,7 +85,6 @@ rec {
BLK_DEV_DM m
DM_CRYPT m
MD y
REISERFS_FS m
BTRFS_FS m
XFS_FS m
JFS_FS m
@@ -430,7 +429,6 @@ rec {
BLK_DEV_DM m
DM_CRYPT m
MD y
REISERFS_FS m
EXT4_FS m
USB_STORAGE_CYPRESS_ATACB m
@@ -475,7 +473,6 @@ rec {
FRAMEBUFFER_CONSOLE y
EXT2_FS y
EXT3_FS y
REISERFS_FS y
MAGIC_SYSRQ y
# The kernel doesn't boot at all, with FTRACE
+45 -2
View File
@@ -11,10 +11,53 @@ These are called "bootstrap files".
Bootstrap files should always be fetched from hydra and uploaded to `tarballs.nixos.org` to guarantee that all the binaries were built from the code committed into `nixpkgs` repository.
The uploads to `tarballs.nixos.org` are done by `@lovesegfault` today.
The uploads to `tarballs.nixos.org` are done by `@NixOS/infra` team members who have S3 write access.
This document describes the procedure of updating bootstrap files in `nixpkgs`.
## How to upload bootstrap files (for infra team)
When a PR updates bootstrap files, the commit message contains the upload commands.
Infra team members with S3 access can upload as follows:
1. Clone or navigate to the [nixos-infra](https://github.com/NixOS/nixos-infra) repository and enter the `terraform` directory:
```
$ cd nixos-infra/terraform
```
2. Authenticate with AWS SSO:
```
$ aws sso login
```
3. Realize the build output locally (fetch from hydra cache):
```
$ nix-store --realize /nix/store/<hash>-stdenv-bootstrap-tools
```
4. Upload to S3 with public-read ACL:
```
$ aws s3 cp --recursive --acl public-read \
/nix/store/<hash>-stdenv-bootstrap-tools/on-server/ \
s3://nixpkgs-tarballs/stdenv/<target>/<nixpkgs-revision>/
```
5. Verify the upload by downloading and checking hashes:
```
$ aws s3 cp --recursive s3://nixpkgs-tarballs/stdenv/<target>/<nixpkgs-revision>/ ./
$ sha256sum bootstrap-tools.tar.xz busybox
$ sha256sum /nix/store/<hash>-stdenv-bootstrap-tools/on-server/*
```
Compare these hashes with those shown in the PR's commit message.
The exact paths and hashes are provided in each bootstrap update commit message generated by `refresh-tarballs.bash`.
## How to request the bootstrap seed update
To get the tarballs updated let's use an example `i686-unknown-linux-gnu` target:
@@ -34,7 +77,7 @@ To get the tarballs updated let's use an example `i686-unknown-linux-gnu` target
To validate cross-targets `binfmt` `NixOS` helper can be useful.
For `riscv64-unknown-linux-gnu` the `/etc/nixos/configuration.nix` entry would be `boot.binfmt.emulatedSystems = [ "riscv64-linux" ]`.
3. Propose the commit as a PR to update bootstrap tarballs, tag people who can help you test the updated architecture and once reviewed tag `@lovesegfault` to upload the tarballs.
3. Propose the commit as a PR to update bootstrap tarballs, tag people who can help you test the updated architecture and once reviewed tag `@NixOS/infra-build` to upload the tarballs.
## How to add bootstrap files for a new target
@@ -104,3 +104,41 @@ of pulling the upstream container image from Docker Hub. If you want the old beh
- `services.openssh` now supports generating host SSH keys by setting `services.openssh.generateHostKeys = true` while leaving `services.openssh.enable` disabled. This is particularly useful for systems that have no need of an SSH daemon but want SSH host keys for other purposes such as using agenix or sops-nix.
- `services.slurm` now supports slurmrestd usage through the `services.slurm.rest` NixOS options.
- `glibc` has been updated to version 2.42.
This version no longer makes the stack executable when a shared library requires this. A symptom
is an error like
> cannot enable executable stack as shared object requires: Invalid argument
This is usually a bug. Please consider reporting it to the software maintainers.
In a lot of cases, the library requires the execstack by mistake only. The following workarounds exist:
* When building the shared library in question from source, use the following linker flags to force turning off the
executable flag:
```nix
mkDerivation {
# …
env.NIX_LDFLAGS = "-z,noexecstack";
}
```
* If the sources are not available, the execstack-flag can be cleared with `patchelf`:
```
patchelf --clear-execstack binary-only.so
```
* If the shared library to be loaded actually requires an executable stack and it isn't turned
on by the application loading it, you may force allowing that behavior by setting the
following environment variable:
```
GLIBC_TUNABLES=glibc.rtld.execstack=2
```
**Do not set this globally!** This makes your setup inherently less secure.
-1
View File
@@ -1929,7 +1929,6 @@
./tasks/filesystems/nfs.nix
./tasks/filesystems/ntfs.nix
./tasks/filesystems/overlayfs.nix
./tasks/filesystems/reiserfs.nix
./tasks/filesystems/squashfs.nix
./tasks/filesystems/sshfs.nix
./tasks/filesystems/unionfs-fuse.nix
+7 -13
View File
@@ -78,6 +78,8 @@ in
];
systemd.services.polkit.stopIfChanged = false;
systemd.sockets."polkit-agent-helper".wantedBy = [ "sockets.target" ];
# The polkit daemon reads action/rule files
environment.pathsToLink = [ "/share/polkit-1" ];
@@ -94,19 +96,11 @@ in
security.pam.services.polkit-1 = { };
security.wrappers = {
pkexec = {
setuid = true;
owner = "root";
group = "root";
source = "${cfg.package.bin}/bin/pkexec";
};
polkit-agent-helper-1 = {
setuid = true;
owner = "root";
group = "root";
source = "${cfg.package.out}/lib/polkit-1/polkit-agent-helper-1";
};
security.wrappers.pkexec = {
setuid = true;
owner = "root";
group = "root";
source = "${cfg.package.bin}/bin/pkexec";
};
systemd.tmpfiles.rules = [
@@ -390,6 +390,10 @@ in
systemd.packages = [
pkgs.gnome-session
pkgs.gnome-shell
]
++ removeExcluded [
pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
pkgs.xdg-user-dirs-gtk # Used to create the default bookmarks
];
services.udev.packages = [
-1
View File
@@ -284,7 +284,6 @@ let
++ lib.optionals (!config.boot.initrd.checkJournalingFS) [
"ext3"
"ext4"
"reiserfs"
"xfs"
"jfs"
"f2fs"
@@ -1,31 +0,0 @@
{
config,
lib,
pkgs,
...
}:
with lib;
let
inInitrd = config.boot.initrd.supportedFilesystems.reiserfs or false;
in
{
config = mkIf (config.boot.supportedFilesystems.reiserfs or false) {
system.fsPackages = [ pkgs.reiserfsprogs ];
boot.initrd.kernelModules = mkIf inInitrd [ "reiserfs" ];
boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable) ''
copy_bin_and_libs ${pkgs.reiserfsprogs}/sbin/reiserfsck
ln -s reiserfsck $out/bin/fsck.reiserfs
'';
boot.initrd.systemd.initrdBin = mkIf inInitrd [ pkgs.reiserfsprogs ];
};
}
+6 -3
View File
@@ -158,7 +158,8 @@ in
}
);
basicXbootldr = runTest (
# TODO: Fix on aarch64-linux
basicXbootldr = runTestOn [ "x86_64-linux" ] (
{ lib, ... }:
{
name = "systemd-boot-xbootldr";
@@ -282,7 +283,8 @@ in
}
);
update = runTest (
# TODO: Fix on aarch64-linux
update = runTestOn [ "x86_64-linux" ] (
{ lib, ... }:
{
name = "systemd-boot-update";
@@ -457,7 +459,8 @@ in
}
);
entryFilenameXbootldr = runTest (
# TODO: Fix on aarch64-linux
entryFilenameXbootldr = runTestOn [ "x86_64-linux" ] (
{ lib, ... }:
{
name = "systemd-boot-entry-filename-xbootldr";
@@ -1,13 +0,0 @@
--- a/src/core/util_string.cpp 2014-10-27 22:52:11.875981552 +0100
+++ b/src/core/util_string.cpp 2014-10-27 22:54:18.613001994 +0100
@@ -40,6 +40,10 @@
#include <linux/limits.h>
#endif // __PLATFORM_LINUX__
+#ifdef __PLATFORM_MACOSX__
+#include <limits.h>
+#endif // __PLATFORM_MACOSX__
+
#include <stdio.h>
using namespace std;
+2 -4
View File
@@ -12,12 +12,12 @@
}:
stdenv.mkDerivation rec {
version = "1.4.2.0";
version = "1.5.5.5";
pname = "chuck";
src = fetchurl {
url = "http://chuck.cs.princeton.edu/release/files/chuck-${version}.tgz";
sha256 = "sha256-hIwsC9rYgXWSTFqUufKGqoT0Gnsf4nR4KQ0iSVbj8xg=";
sha256 = "sha256-fxbTW0wcKn1q6psRhhCe6pHFJTPFfZUTCmlGr7gFoRU=";
};
nativeBuildInputs = [
@@ -32,8 +32,6 @@ stdenv.mkDerivation rec {
buildInputs = [ libsndfile ] ++ lib.optional (!stdenv.hostPlatform.isDarwin) alsa-lib;
patches = [ ./darwin-limits.patch ];
makeFlags = [
"-C src"
"DESTDIR=$(out)/bin"
@@ -5,7 +5,6 @@
faust2jack,
faust2lv2,
helmholtz,
mrpeach,
puredata-with-plugins,
jack-example-tools,
}:
@@ -22,7 +21,6 @@ stdenv.mkDerivation rec {
plugins = [
helmholtz
mrpeach
];
pitchTracker = puredata-with-plugins plugins;
+2 -2
View File
@@ -21,11 +21,11 @@ assert withConplay -> !libOnly;
stdenv.mkDerivation rec {
pname = "${lib.optionalString libOnly "lib"}mpg123";
version = "1.33.3";
version = "1.33.4";
src = fetchurl {
url = "mirror://sourceforge/mpg123/mpg123-${version}.tar.bz2";
hash = "sha256-agxkct0VbiE8IGj0ARXru3OXjC2HPma64qJQ4tIZjSY=";
hash = "sha256-OujJ/4Cpe/wOIuifvNdGh+yk/B2zFbEmB/J/ActaR9k=";
};
outputs = [
@@ -198,6 +198,8 @@ let
inherit pname version;
inherit plugins;
strictDeps = true;
__structuredAttrs = true;
dontUnpack = true;
inherit
+2 -2
View File
@@ -1,6 +1,6 @@
{ lib, fetchFromGitHub }:
rec {
version = "9.1.1918";
version = "9.1.2035";
outputs = [
"out"
@@ -11,7 +11,7 @@ rec {
owner = "vim";
repo = "vim";
rev = "v${version}";
hash = "sha256-NU/A7yWcLaC+wqsfiHYVhnSZHGDao6+Oib/bSFNSVyQ=";
hash = "sha256-x7WosfqYApaY2Vv1X9+2at/A/KqfacuPy53MGtnxk9w=";
};
enableParallelBuilding = true;
@@ -85,13 +85,13 @@ in
stdenv.mkDerivation (finalAttrs: {
pname = "imagemagick";
version = "7.1.2-11";
version = "7.1.2-12";
src = fetchFromGitHub {
owner = "ImageMagick";
repo = "ImageMagick";
tag = finalAttrs.version;
hash = "sha256-RFiE23VW8AbVb7iglxjQMT6njDw+P7vLW6+nSKqN0p8=";
hash = "sha256-0X8Zpr4frknRbWzAu1nprok2ceScTHV8d4+ktnBpQF0=";
};
outputs = [
@@ -135,12 +135,16 @@ stdenv.mkDerivation {
]
++ lib.optional emojiSupport "--enable-wide-glyphs";
LDFLAGS = [
"-lfontconfig"
"-lXrender"
"-lpthread"
];
CFLAGS = [ "-I${freetype.dev}/include/freetype2" ];
env = {
LDFLAGS = toString [
"-lfontconfig"
"-lXrender"
"-lpthread"
];
CFLAGS = toString [
"-I${freetype.dev}/include/freetype2"
];
};
preConfigure = ''
# without this the terminfo won't be compiled by tic, see man tic
@@ -202,13 +202,32 @@ if [[ "$NIX_DONT_SET_RPATH_@suffixSalt@" != 1 && "$linkType" != static-pie ]]; t
# the link time chosen objects will be those of runtime linking.
declare -A rpaths
for dir in ${libDirs+"${libDirs[@]}"}; do
if [[ "$dir" =~ [/.][/.] ]] && dir2=$(readlink -f "$dir"); then
# If the path is in the store, do not resolve any symlinks and add it to the rpath.
# Resolving symlinks in the store breaks bootstrapping, see issue #454199.
# If it is outside the store, resolve symlinks step by step until it falls
# into the store or it becomes not a symlink.
# Always canonicalize the path before checking it is in the store or not.
if dir2=$(realpath -s "$dir"); then
dir="$dir2"
else
continue
fi
while [ -z "${rpaths[$dir]:-}" ] && [[ "$dir" != "${NIX_STORE:-}"/* ]] && [ -L "$dir" ]; do
if dir2=$(readlink "$dir"); then
dir="dir2"
else
break
fi
if dir2=$(realpath -s "$dir"); then
dir="dir2"
else
break
fi
done
# If the path turns out to be outside the store, we do not add it to rpath.
# This typically happens for libraries in /tmp that are later
# copied to $out/lib. If not, we're screwed.
if [ -n "${rpaths[$dir]:-}" ] || [[ "$dir" != "${NIX_STORE:-}"/* ]]; then
# If the path is not in the store, don't add it to the rpath.
# This typically happens for libraries in /tmp that are later
# copied to $out/lib. If not, we're screwed.
continue
fi
for path in "$dir"/*; do
@@ -1,7 +1,7 @@
[package]
name = "prefetch-npm-deps"
version = "0.1.0"
edition = "2021"
edition = "2024"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -11,7 +11,7 @@ backoff = "0.4.0"
data-encoding = "2.5.0"
digest = "0.10.7"
env_logger = "0.11.3"
isahc = { version = "1.7.2", default_features = false }
isahc = { version = "1.7.2", default-features = false }
log = "0.4.21"
nix-nar = "0.3.0"
rayon = "1.10.0"
@@ -22,3 +22,8 @@ sha2 = "0.10.8"
tempfile = "3.10.1"
url = { version = "2.5.0", features = ["serde"] }
walkdir = "2.5.0"
[profile.release]
codegen-units = 1
lto = true
opt-level = 3
@@ -38,7 +38,7 @@ fn cache_map_path() -> Option<PathBuf> {
/// `dependencies` key in v2 lockfiles designed for backwards compatibility with v1 parsers is removed because of inconsistent data.
fn fixup_lockfile(
mut lock: Map<String, Value>,
cache: &Option<HashMap<String, String>>,
cache: Option<&HashMap<String, String>>,
) -> anyhow::Result<Option<Map<String, Value>>> {
let mut fixed = false;
@@ -64,29 +64,29 @@ fn fixup_lockfile(
.ok_or_else(|| anyhow!("packages isn't a map"))?
.values_mut()
{
if let Some(Value::String(resolved)) = package.get("resolved") {
if let Some(Value::String(integrity)) = package.get("integrity") {
if resolved.starts_with("git+") {
if let Some(Value::String(resolved)) = package.get("resolved")
&& let Some(Value::String(integrity)) = package.get("integrity")
{
if resolved.starts_with("git+") {
fixed = true;
package
.as_object_mut()
.ok_or_else(|| anyhow!("package isn't a map"))?
.remove("integrity");
} else if let Some(cache_hashes) = cache {
let cache_hash = cache_hashes
.get(resolved)
.expect("dependency should have a hash");
if integrity != cache_hash {
fixed = true;
package
*package
.as_object_mut()
.ok_or_else(|| anyhow!("package isn't a map"))?
.remove("integrity");
} else if let Some(cache_hashes) = cache {
let cache_hash = cache_hashes
.get(resolved)
.expect("dependency should have a hash");
if integrity != cache_hash {
fixed = true;
*package
.as_object_mut()
.ok_or_else(|| anyhow!("package isn't a map"))?
.get_mut("integrity")
.unwrap() = Value::String(cache_hash.clone());
}
.get_mut("integrity")
.unwrap() = Value::String(cache_hash.clone());
}
}
}
@@ -99,17 +99,13 @@ fn fixup_lockfile(
v => bail!("unsupported lockfile version {v}"),
}
if fixed {
Ok(Some(lock))
} else {
Ok(None)
}
if fixed { Ok(Some(lock)) } else { Ok(None) }
}
// Recursive helper to fixup v1 lockfile deps
fn fixup_v1_deps(
dependencies: &mut Map<String, Value>,
cache: &Option<HashMap<String, String>>,
cache: Option<&HashMap<String, String>>,
fixed: &mut bool,
) {
for dep in dependencies.values_mut() {
@@ -117,31 +113,29 @@ fn fixup_v1_deps(
.as_object()
.expect("v1 dep must be object")
.get("resolved")
{
if let Some(Value::String(integrity)) = dep
&& let Some(Value::String(integrity)) = dep
.as_object()
.expect("v1 dep must be object")
.get("integrity")
{
if resolved.starts_with("git+ssh://") {
{
if resolved.starts_with("git+ssh://") {
*fixed = true;
dep.as_object_mut()
.expect("v1 dep must be object")
.remove("integrity");
} else if let Some(cache_hashes) = cache {
let cache_hash = cache_hashes
.get(resolved)
.expect("dependency should have a hash");
if integrity != cache_hash {
*fixed = true;
dep.as_object_mut()
*dep.as_object_mut()
.expect("v1 dep must be object")
.remove("integrity");
} else if let Some(cache_hashes) = cache {
let cache_hash = cache_hashes
.get(resolved)
.expect("dependency should have a hash");
if integrity != cache_hash {
*fixed = true;
*dep.as_object_mut()
.expect("v1 dep must be object")
.get_mut("integrity")
.unwrap() = Value::String(cache_hash.clone());
}
.get_mut("integrity")
.unwrap() = Value::String(cache_hash.clone());
}
}
}
@@ -185,26 +179,30 @@ fn main() -> anyhow::Result<()> {
process::exit(1);
}
if let Ok(jobs) = env::var("NIX_BUILD_CORES") {
if !jobs.is_empty() {
rayon::ThreadPoolBuilder::new()
.num_threads(
jobs.parse()
.expect("NIX_BUILD_CORES must be a whole number"),
)
.build_global()
.unwrap();
}
if let Ok(jobs) = env::var("NIX_BUILD_CORES")
&& !jobs.is_empty()
{
rayon::ThreadPoolBuilder::new()
.num_threads(
jobs.parse()
.expect("NIX_BUILD_CORES must be a whole number"),
)
.build_global()
.unwrap();
}
if args[1] == "--fixup-lockfile" {
let lock = serde_json::from_str(&fs::read_to_string(&args[2])?)?;
let cache = cache_map_path()
.map(|map_path| Ok::<_, anyhow::Error>(serde_json::from_slice(&fs::read(map_path)?)?))
.map(|map_path| {
Ok::<_, anyhow::Error>(serde_json::from_slice::<HashMap<String, String>>(
&fs::read(map_path)?,
)?)
})
.transpose()?;
if let Some(fixed) = fixup_lockfile(lock, &cache)? {
if let Some(fixed) = fixup_lockfile(lock, cache.as_ref())? {
println!("Fixing lockfile");
fs::write(&args[2], serde_json::to_string(&fixed)?)?;
@@ -345,7 +343,7 @@ mod tests {
hashes.insert(String::from("foo"), String::from("sha512-foo"));
assert_eq!(
fixup_lockfile(input.as_object().unwrap().clone(), &Some(hashes))?,
fixup_lockfile(input.as_object().unwrap().clone(), Some(hashes).as_ref())?,
Some(expected.as_object().unwrap().clone())
);
@@ -418,7 +416,7 @@ mod tests {
hashes.insert(String::from("foo"), String::from("sha512-foo"));
assert_eq!(
fixup_lockfile(input.as_object().unwrap().clone(), &Some(hashes))?,
fixup_lockfile(input.as_object().unwrap().clone(), Some(hashes).as_ref())?,
Some(expected.as_object().unwrap().clone())
);
@@ -1,8 +1,8 @@
use anyhow::{anyhow, bail, Context};
use anyhow::{Context, anyhow, bail};
use rayon::slice::ParallelSliceMut;
use serde::{
de::{self, Visitor},
Deserialize, Deserializer,
de::{self, Visitor},
};
use std::{
cmp::Ordering,
@@ -132,7 +132,7 @@ impl<'de> Deserialize<'de> for HashCollection {
struct HashCollectionVisitor;
impl<'de> Visitor<'de> for HashCollectionVisitor {
impl Visitor<'_> for HashCollectionVisitor {
type Value = HashCollection;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -161,7 +161,7 @@ impl Hash {
.ok_or_else(|| anyhow!("expected SRI hash, got {:?}", s.as_ref()))?
.0;
if ALGOS.iter().any(|&a| algo == a) {
if ALGOS.contains(&algo) {
Ok(Hash(s.as_ref().to_string()))
} else {
Err(anyhow!("unknown hash algorithm {algo:?}"))
@@ -215,7 +215,7 @@ fn to_new_packages(
if let UrlOrString::Url(v) = &package.version {
if v.scheme() == "npm" {
if let Some(UrlOrString::Url(ref url)) = &package.resolved {
if let Some(UrlOrString::Url(url)) = &package.resolved {
package.version = UrlOrString::Url(url.clone());
}
} else {
@@ -272,8 +272,8 @@ fn get_initial_url() -> anyhow::Result<Url> {
#[cfg(test)]
mod tests {
use super::{
get_initial_url, packages, to_new_packages, Hash, HashCollection, OldPackage, Package,
UrlOrString,
Hash, HashCollection, OldPackage, Package, UrlOrString, get_initial_url, packages,
to_new_packages,
};
use std::{
cmp::Ordering,
@@ -1,4 +1,4 @@
use anyhow::{anyhow, bail, Context};
use anyhow::{Context, anyhow, bail};
use lock::UrlOrString;
use log::{debug, info};
use rayon::prelude::*;
@@ -8,7 +8,7 @@ use std::{
io::Write,
process::{Command, Stdio},
};
use tempfile::{tempdir, TempDir};
use tempfile::{TempDir, tempdir};
use url::Url;
use crate::util;
@@ -33,7 +33,9 @@ pub fn lockfile(
.collect::<anyhow::Result<Vec<_>>>()?;
if packages.is_empty() && !force_empty_cache {
bail!("No cacheable dependencies were found. Please inspect the upstream `package-lock.json` file and ensure that remote dependencies have `resolved` URLs and `integrity` hashes. If the lockfile is missing this data, attempt to get upstream to fix it via a tool like <https://github.com/jeslie0/npm-lockfile-fix>. If generating an empty cache is intentional and you would like to do it anyways, set `forceEmptyCache = true`.");
bail!(
"No cacheable dependencies were found. Please inspect the upstream `package-lock.json` file and ensure that remote dependencies have `resolved` URLs and `integrity` hashes. If the lockfile is missing this data, attempt to get upstream to fix it via a tool like <https://github.com/jeslie0/npm-lockfile-fix>. If generating an empty cache is intentional and you would like to do it anyways, set `forceEmptyCache = true`."
);
}
let mut new = Vec::new();
@@ -49,7 +51,11 @@ pub fn lockfile(
let path = dir.path().join("package");
info!("recursively parsing lockfile for {} at {path:?}", pkg.name);
info!(
"recursively parsing lockfile for {} at {}",
pkg.name,
path.display()
);
let lockfile_contents = fs::read_to_string(path.join("package-lock.json"));
@@ -71,7 +77,10 @@ pub fn lockfile(
"prepare",
] {
if scripts.contains_key(typ) && lockfile_contents.is_err() && !force_git_deps {
bail!("Git dependency {} contains install scripts, but has no lockfile, which is something that will probably break. Open an issue if you can't feasibly patch this dependency out, and we'll come up with a workaround.\nIf you'd like to attempt to try to use this dependency anyways, set `forceGitDeps = true`.", pkg.name);
bail!(
"Git dependency {} contains install scripts, but has no lockfile, which is something that will probably break. Open an issue if you can't feasibly patch this dependency out, and we'll come up with a workaround.\nIf you'd like to attempt to try to use this dependency anyways, set `forceGitDeps = true`.",
pkg.name
);
}
}
}
@@ -310,7 +319,9 @@ fn get_hosted_git_url(url: &Url) -> anyhow::Result<Option<Url>> {
match get_url() {
Some(u) => Ok(Some(u)),
None => Err(anyhow!("This lockfile either contains a Git dependency with an unsupported host, or a malformed URL in the lockfile: {url}"))
None => Err(anyhow!(
"This lockfile either contains a Git dependency with an unsupported host, or a malformed URL in the lockfile: {url}"
)),
}
} else {
Ok(None)
@@ -327,15 +338,17 @@ mod tests {
for (input, expected) in [
(
"git+ssh://git@github.com/castlabs/electron-releases.git#fc5f78d046e8d7cdeb66345a2633c383ab41f525",
Some("https://codeload.github.com/castlabs/electron-releases/tar.gz/fc5f78d046e8d7cdeb66345a2633c383ab41f525"),
Some(
"https://codeload.github.com/castlabs/electron-releases/tar.gz/fc5f78d046e8d7cdeb66345a2633c383ab41f525",
),
),
(
"git+ssh://bitbucket.org/foo/bar#branch",
Some("https://bitbucket.org/foo/bar/get/branch.tar.gz")
Some("https://bitbucket.org/foo/bar/get/branch.tar.gz"),
),
(
"git+ssh://git.sr.ht/~foo/bar#branch",
Some("https://git.sr.ht/~foo/bar/archive/branch.tar.gz")
Some("https://git.sr.ht/~foo/bar/archive/branch.tar.gz"),
),
] {
assert_eq!(
@@ -1,10 +1,10 @@
use anyhow::bail;
use backoff::{retry, ExponentialBackoff};
use backoff::{ExponentialBackoff, retry};
use data_encoding::BASE64;
use digest::Digest;
use isahc::{
config::{CaCertificate, Configurable, RedirectPolicy, SslOption},
Body, Request, RequestExt,
config::{CaCertificate, Configurable, RedirectPolicy, SslOption},
};
use log::info;
use nix_nar::{Encoder, NarError};
@@ -22,18 +22,19 @@ pub fn get_url(url: &Url) -> Result<Body, anyhow::Error> {
let mut url = url.clone();
// Respect NIX_NPM_REGISTRY_OVERRIDES environment variable, which should be a JSON mapping in the shape of:
// `{ "registry.example.com": "my-registry.local", ... }`
if let Some(host) = url.host_str() {
if let Ok(npm_mirrors) = env::var("NIX_NPM_REGISTRY_OVERRIDES") {
if let Ok(mirrors) = serde_json::from_str::<Map<String, Value>>(&npm_mirrors) {
if let Some(mirror) = mirrors.get(host).and_then(serde_json::Value::as_str) {
let mirror_url = Url::parse(mirror)?;
url.set_path(&(mirror_url.path().to_owned() + url.path()));
url.set_host(Some(mirror_url.host_str().expect(format!("Mirror URL without host part: {mirror_url}").as_str())))?;
eprintln!("Replaced URL {url_} with {url}");
}
}
}
if let Some(host) = url.host_str()
&& let Ok(npm_mirrors) = env::var("NIX_NPM_REGISTRY_OVERRIDES")
&& let Ok(mirrors) = serde_json::from_str::<Map<String, Value>>(&npm_mirrors)
&& let Some(mirror) = mirrors.get(host).and_then(serde_json::Value::as_str)
{
let mirror_url = Url::parse(mirror)?;
url.set_path(&(mirror_url.path().to_owned() + url.path()));
url.set_host(Some(mirror_url.host_str().unwrap_or_else(|| {
panic!("Mirror URL without host part: {mirror_url}")
})))?;
eprintln!("Replaced URL {url_} with {url}");
}
let mut request = Request::get(url.as_str()).redirect_policy(RedirectPolicy::Limit(10));
// Respect SSL_CERT_FILE if environment variable exists
@@ -51,15 +52,13 @@ pub fn get_url(url: &Url) -> Result<Body, anyhow::Error> {
// Respect NIX_NPM_TOKENS environment variable, which should be a JSON mapping in the shape of:
// `{ "registry.example.com": "example-registry-bearer-token", ... }`
if let Some(host) = url.host_str() {
if let Ok(npm_tokens) = env::var("NIX_NPM_TOKENS") {
if let Ok(tokens) = serde_json::from_str::<Map<String, Value>>(&npm_tokens) {
if let Some(token) = tokens.get(host).and_then(serde_json::Value::as_str) {
info!("Found NPM token for {}. Adding authorization header to request.", host);
request = request.header("Authorization", format!("Bearer {token}"));
}
}
}
if let Some(host) = url.host_str()
&& let Ok(npm_tokens) = env::var("NIX_NPM_TOKENS")
&& let Ok(tokens) = serde_json::from_str::<Map<String, Value>>(&npm_tokens)
&& let Some(token) = tokens.get(host).and_then(serde_json::Value::as_str)
{
info!("Found NPM token for {host}. Adding authorization header to request.");
request = request.header("Authorization", format!("Bearer {token}"));
}
let res = request.body(())?.send()?;
+13
View File
@@ -54,6 +54,19 @@ let
dontInstall = false;
installPhase = "cp -pr --reflink=auto -- . $out";
# the original derivation might've set something like outputDev = "lib", but "lib" isn't an output anymore
# some things get confused and error if one of these is set to an output that doesn't exist
# ex: pkgs/build-support/setup-hooks/multiple-outputs.sh
outputDev = "out";
outputBin = "out";
outputInclude = "out";
outputLib = "out";
outputDoc = "out";
outputDevdoc = "out";
outputMan = "out";
outputDevman = "out";
outputInfo = "out";
};
in
+7 -5
View File
@@ -33,11 +33,13 @@ stdenv.mkDerivation rec {
# The fuloong2f is not supported by aalib still
preConfigure = ''
configureFlagsArray+=(
"--bindir=$bin/bin"
"--includedir=$dev/include"
# The configure script does the correct thing when 'system' is already set
# Export it explicitly in case __structuredAttrs is true.
export system
appendToVar configureFlags \
"--bindir=$bin/bin" \
"--includedir=$dev/include" \
"--libdir=$out/lib"
)
'';
buildInputs = [ ncurses ];
@@ -54,7 +56,7 @@ stdenv.mkDerivation rec {
postInstall = ''
mkdir -p $dev/bin
mv $bin/bin/aalib-config $dev/bin/aalib-config
substituteInPlace $out/lib/libaa.la --replace "${ncurses.dev}/lib" "${ncurses.out}/lib"
substituteInPlace $out/lib/libaa.la --replace-fail "${ncurses.dev}/lib" "${ncurses.out}/lib"
'';
meta = {
+5
View File
@@ -19,6 +19,11 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-SCQDORhmJmTb0CYm15zjEa7dkwc+lpW2s1d4DsMRovI=";
};
outputs = [
"out"
"dev"
];
cmakeFlags = [
(lib.cmakeBool "ABSL_BUILD_TEST_HELPERS" true)
(lib.cmakeBool "ABSL_USE_EXTERNAL_GOOGLETEST" true)
+2 -2
View File
@@ -10,11 +10,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "alsa-lib";
version = "1.2.14";
version = "1.2.15.1";
src = fetchurl {
url = "mirror://alsa/lib/alsa-lib-${finalAttrs.version}.tar.bz2";
hash = "sha256-vpyIoLNgQ2fddBZ6K3VKNeFC9nApKuR6L97yei7pejI=";
hash = "sha256-f5g8qJykIIcsoW6Kn4+X+2PbbBxuJYW5Fzegi7A/Vmw=";
};
patches = [
+2 -2
View File
@@ -9,11 +9,11 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "alsa-ucm-conf";
version = "1.2.14";
version = "1.2.15.1";
src = fetchurl {
url = "mirror://alsa/lib/alsa-ucm-conf-${finalAttrs.version}.tar.bz2";
hash = "sha256-MumAn1ktkrl4qhAy41KTwzuNDx7Edfk3Aiw+6aMGnCE=";
hash = "sha256-JGxdWdIXtvf0ehH9EPG3ZtJavLDZyZavMHm7nJrFobA=";
};
dontBuild = true;
+2 -2
View File
@@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "amf-headers";
version = "1.4.36";
version = "1.5.0";
src = fetchFromGitHub {
owner = "GPUOpen-LibrariesAndSDKs";
repo = "AMF";
tag = "v${version}";
sha256 = "sha256-0PgWEq+329/EhI0/CgPsCkJ4CiTsFe56w2O+AcjVUdc=";
sha256 = "sha256-ZVC1e4S5CNpfl3ewHR9aVfYwxDBE7/BJ6OyH2kF00fQ=";
};
installPhase = ''
+6
View File
@@ -48,6 +48,12 @@ clangStdenv.mkDerivation (finalAttrs: {
url = "https://gitlab.com/ananicy-cpp/ananicy-cpp/-/commit/b2589a9b1faa2ecf54aeede40ea781c33bfb09a8.patch";
hash = "sha256-nfyCdhvnWj446z5aPFCXGi79Xgja8W0Eopl6I30fOBM=";
})
# fix build w/ glibc-2.42 (don't conflict with sched_* API from glibc 2.41)
(fetchpatch {
url = "https://gitlab.com/ananicy-cpp/ananicy-cpp/-/commit/99e64815bacaf3baa28ad89d022e33ebede94fa9.patch";
hash = "sha256-V9yf0nUa91DXRufDYhufybQUTP6R1CUzF51SEBMdjmA=";
})
];
strictDeps = true;
@@ -16,7 +16,6 @@ let
STRIP_PNG_TEXT = "NO";
};
Description = if stdenvNoCC.hostPlatform.isMacOS then "macOS" else "iOS";
FamilyDisplayName = Description;
FamilyIdentifier = lib.toLower xcodePlatform;
FamilyName = Description;
Identifier = CFBundleIdentifier;
+9 -1
View File
@@ -7,6 +7,7 @@
pkg-config,
gobject-introspection,
buildPackages,
withDconf ? !stdenv.hostPlatform.isDarwin && lib.meta.availableOn stdenv.hostPlatform dconf,
withIntrospection ?
lib.meta.availableOn stdenv.hostPlatform gobject-introspection
&& stdenv.hostPlatform.emulatorAvailable buildPackages,
@@ -90,6 +91,13 @@ stdenv.mkDerivation rec {
]
++ lib.optionals (!systemdSupport) [
"-Duse_systemd=false"
]
++ lib.optionals (!withIntrospection) [
(lib.mesonEnable "introspection" false)
]
++ lib.optionals stdenv.hostPlatform.isStatic [
# The adaptor is only available as a shared object, as gtk2 loads it dynamically
(lib.mesonBool "gtk2_atk_adaptor" false)
];
passthru = {
@@ -102,7 +110,7 @@ stdenv.mkDerivation rec {
postFixup = ''
# Cannot use wrapGAppsHook'due to a dependency cycle
wrapProgram $out/libexec/at-spi-bus-launcher \
--prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules" \
${lib.optionalString withDconf ''--prefix GIO_EXTRA_MODULES : "${lib.getLib dconf}/lib/gio/modules"''} \
--prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}
'';
@@ -204,6 +204,36 @@ def find_dependency(soname: str, soarch: str, soabi: str) -> Optional[Path]:
return None
def find_first_matching_rpath_with_origin(binary: Path, lib_dir: Path, rpaths: list[str]) -> Optional[Path]:
"""
If lib_dir equals one of the existing $ORIGIN-based RPATH entries
(after resolving $ORIGIN relative to this binary), return that $ORIGIN
entry to preserve it; otherwise return None.
Note: we return a Path constructed from the RPATH string (which may
contain $ORIGIN). This is intentional so that the caller can treat it
uniformly with other Path entries when building the final RPATH string
(via Path.as_posix). We do not expect this Path to exist on the
filesystem; it functions as a display value.
"""
try:
# resolve(strict=False) does not require the path to exist, but may still
# raise RuntimeError (cycles) or OSError in odd environments. Guard those.
lib_dir_realpath = lib_dir.resolve()
except (OSError, RuntimeError):
return None
for rpath in rpaths:
if "$ORIGIN" not in rpath:
continue
try:
candidate_rpath_realpath = (binary.parent / rpath.replace("$ORIGIN", ".")).resolve()
except (OSError, RuntimeError):
continue
if candidate_rpath_realpath == lib_dir_realpath:
return Path(rpath)
return None
@dataclass
class Dependency:
file: Path # The file that contains the dependency
@@ -211,7 +241,7 @@ class Dependency:
found: bool = False # Whether it was found somewhere
def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list[Path] = [], keep_libc: bool = False, extra_args: list[str] = []) -> list[Dependency]:
def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list[Path] = [], keep_libc: bool = False, preserve_origin: bool = False, extra_args: list[str] = []) -> list[Dependency]:
try:
with open_elf(path) as elf:
@@ -242,6 +272,7 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list
file_is_dynamic_executable = is_dynamic_executable(elf)
file_dependencies = get_dependencies(elf) + get_dlopen_dependencies(elf)
existing_rpaths = get_rpath(elf)
except ELFError:
return []
@@ -279,7 +310,10 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list
# and resolved automatically by the dynamic linker, unless
# keep_libc is enabled.
# 3. If a candidate is found in our library dependencies, that
# dependency should be added to rpath.
# dependency should be added to rpath. If --preserve-origin
# is set and this file's existing RUNPATH/RPATH contains a $ORIGIN
# entry that resolves to the same directory, we add that $ORIGIN
# entry instead of an absolute path.
# 4. If all of the above fail, libc dependencies should still be
# considered found. This is in contrast to step 2, because
# enabling keep_libc should allow libc to be found in step 3
@@ -299,7 +333,8 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list
was_found = True
break
elif found_dependency := find_dependency(candidate.name, file_arch, file_osabi):
rpath.append(found_dependency)
origin_rpath_entry = find_first_matching_rpath_with_origin(path, found_dependency, existing_rpaths) if preserve_origin else None
rpath.append(origin_rpath_entry or found_dependency)
dependencies.append(Dependency(path, candidate, found=True))
print(f" {candidate} -> found: {found_dependency}")
was_found = True
@@ -315,6 +350,12 @@ def auto_patchelf_file(path: Path, runtime_deps: list[Path], append_rpaths: list
rpath.extend(append_rpaths)
# Keep any existing $ORIGIN entries that didn't match a discovered dependency (i.e. dlopen-only lookups)
if preserve_origin:
for existing_rpath in existing_rpaths:
if "$ORIGIN" in existing_rpath:
rpath.append(Path(existing_rpath))
# Dedup the rpath
rpath_str = ":".join(dict.fromkeys(map(Path.as_posix, rpath)))
@@ -335,6 +376,7 @@ def auto_patchelf(
ignore_missing: list[str] = [],
append_rpaths: list[Path] = [],
keep_libc: bool = False,
preserve_origin: bool = False,
add_existing: bool = True,
extra_args: list[str] = []) -> None:
@@ -351,7 +393,7 @@ def auto_patchelf(
dependencies = []
for path in chain.from_iterable(glob(p, '*', recursive) for p in paths_to_patch):
if not path.is_symlink() and path.is_file():
dependencies += auto_patchelf_file(path, runtime_deps, append_rpaths, keep_libc, extra_args)
dependencies += auto_patchelf_file(path, runtime_deps, append_rpaths, keep_libc, preserve_origin, extra_args)
missing = [dep for dep in dependencies if not dep.found]
@@ -431,6 +473,12 @@ def main() -> None:
action="store_true",
help="Attempt to search for and relink libc dependencies.",
)
parser.add_argument(
"--preserve-origin",
dest="preserve_origin",
action="store_true",
help="When possible, replace absolute RPATH entries with original $ORIGIN entries that resolve to the same directory.",
)
parser.add_argument(
"--ignore-existing",
dest="add_existing",
@@ -460,6 +508,7 @@ def main() -> None:
args.ignore_missing,
append_rpaths=args.append_rpaths,
keep_libc=args.keep_libc,
preserve_origin=args.preserve_origin,
add_existing=args.add_existing,
extra_args=args.extra_args)
File diff suppressed because it is too large Load Diff
-43
View File
@@ -1,43 +0,0 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "autobase";
version = "7.20.0";
src = fetchFromGitHub {
owner = "holepunchto";
repo = "autobase";
tag = "v${finalAttrs.version}";
hash = "sha256-SEeCbNja5BIgpQh0q0LKo452JClKQe6do5YHwRRBMcs=";
};
npmDepsHash = "sha256-H9Xy1VD7WQvi0+86v6CMcmc0L3mB6KuSCtgQSF4AlkY=";
dontNpmBuild = true;
# ERROR: Missing package-lock.json from src
# https://github.com/holepunchto/autobase/issues/315
# Copy vendored package-lock.json to src via postPatch
postPatch = ''
cp ${./package-lock.json} ./package-lock.json
'';
passthru.updateScript = nix-update-script {
extraArgs = [
"--generate-lockfile"
];
};
meta = {
description = "Concise multiwriter for data structures with Hypercore";
homepage = "https://github.com/holepunchto/autobase";
license = lib.licenses.mit;
maintainers = [ ];
teams = with lib.teams; [ ngi ];
};
})
@@ -0,0 +1,24 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Philip Taron <philip.taron@gmail.com>
Date: Wed, 7 Jan 2026 17:30:51 -0800
Subject: [PATCH] console: include termios.h explicitly
ncurses 6.6 moved the termios.h include inside #ifdef NCURSES_INTERNALS
in term.h, so applications can no longer rely on term.h to provide
termios symbols. Include termios.h explicitly.
---
src/console/conio.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/console/conio.c b/src/console/conio.c
index 2bea887..7ac61d6 100755
--- a/src/console/conio.c
+++ b/src/console/conio.c
@@ -56,6 +56,7 @@
#include <curses.h>
#include <term.h>
+#include <termios.h>
#ifdef HAVE_SUN_OS
#ifndef _TERM_H
+6
View File
@@ -21,6 +21,12 @@ stdenv.mkDerivation rec {
sha256 = "sha256-KUr9PS651bccPQ6I/fGetRO/24Q7KNNcBVLkrgYoJ6E=";
};
patches = [
# ncurses 6.6 moved the termios.h include inside #ifdef NCURSES_INTERNALS in term.h,
# so applications can no longer rely on term.h to provide termios symbols.
./0001-console-include-termios.h-explicitly.patch
];
# libtool.m4 only matches macOS 10.*
postPatch = lib.optionalString (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) ''
substituteInPlace configure \
+4 -2
View File
@@ -14,7 +14,7 @@
stdenv.mkDerivation rec {
pname = "bison";
version = "3.8.2";
version = "3.8.2"; # Check the note above doInstallCheck before updating.
src = fetchurl {
url = "mirror://gnu/${pname}/${pname}-${version}.tar.gz";
@@ -46,7 +46,9 @@ stdenv.mkDerivation rec {
# Normal check and install check largely execute the same test suite
doCheck = false;
doInstallCheck = true;
# Tests were disabled on LLVM/Darwin due to https://github.com/NixOS/nixpkgs/issues/463659
# TODO: enable doInstallCheck unconditionally when fixed upstream.
doInstallCheck = !stdenv.cc.isClang;
meta = {
homepage = "https://www.gnu.org/software/bison/";
+2 -2
View File
@@ -10,11 +10,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "bmake";
version = "20250804";
version = "20251111";
src = fetchurl {
url = "https://www.crufty.net/ftp/pub/sjg/bmake-${finalAttrs.version}.tar.gz";
hash = "sha256-C0kDdkSyUyBtLnENRuMoWeYt/ixsjnIYrkOfLvUN6K0=";
hash = "sha256-RaP4UVZ3uo85M9ghP0u2EaXDyIOAvi5GIi+kRwlQYGA=";
};
patches = [
+2
View File
@@ -8,6 +8,7 @@
libbfd,
libbfd_2_38,
elfutils,
openssl,
readline,
zlib,
python3,
@@ -50,6 +51,7 @@ stdenv.mkDerivation rec {
++ [
elfutils
zlib
openssl
readline
];
+10
View File
@@ -2,6 +2,7 @@
lib,
stdenv,
fetchFromGitHub,
fetchurl,
cmake,
python3Packages,
staticOnly ? stdenv.hostPlatform.isStatic,
@@ -19,6 +20,15 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-kl8ZHt71v17QR2bDP+ad/5uixf+GStEPLQ5ooFoC5i8=";
};
patches = [
# Fixes build on LoongArch64 & IA64
# https://github.com/google/brotli/commit/e230f474b87134e8c6c85b630084c612057f253e
(fetchurl {
url = "https://github.com/google/brotli/commit/e230f474b87134e8c6c85b630084c612057f253e.patch";
hash = "sha256-QERl8RHJz7tFr++hZIYwdj1/ogPpjArC+ia8S/bWxKk=";
})
];
nativeBuildInputs = [ cmake ];
cmakeFlags = lib.optional staticOnly "-DBUILD_SHARED_LIBS=OFF";
+2 -2
View File
@@ -23,7 +23,7 @@ let
lib.concatStringsSep "\n\n" extraCertificateStrings
);
srcVersion = "3.117";
srcVersion = "3.119.1";
version = if nssOverride != null then nssOverride.version else srcVersion;
meta = {
homepage = "https://curl.haxx.se/docs/caextract.html";
@@ -47,7 +47,7 @@ let
owner = "nss-dev";
repo = "nss";
rev = "NSS_${lib.replaceStrings [ "." ] [ "_" ] version}_RTM";
hash = "sha256-sAs0TiV3TK/WtgHvEjl2KFAgebyWZYmcRcmxjpn2AME=";
hash = "sha256-GxLTqHcVWGiFezcwdctXJ8k9wqizVJPHyLBPZzphLro=";
};
dontBuild = true;
+4 -4
View File
@@ -12,19 +12,19 @@
let
# this version may need to be updated along with package version
cargoVersion = "0.90.0";
cargoVersion = "0.93.0";
in
rustPlatform.buildRustPackage rec {
pname = "cargo-c";
version = "0.10.15";
version = "0.10.19";
src = fetchCrate {
inherit pname;
version = "${version}+cargo-${cargoVersion}";
hash = "sha256-szqDSHGihE+Oj8L3EBlC5XH4kSBYOptd0Xtk3MhXooQ=";
hash = "sha256-PrBmB+0tmU2MAUnRr+wx4g9hu0Y9i6WfR8U89bwiLVY=";
};
cargoHash = "sha256-36ygs/EhCktG1jmBnP9c7EgnfcWnGrqqcW3qAw+Yfy4=";
cargoHash = "sha256-EM/vAfW/ucOfK/XmAQn9Zk75eFb7pp8uZoByKbALCyo=";
nativeBuildInputs = [
pkg-config
+2 -2
View File
@@ -9,13 +9,13 @@
stdenv.mkDerivation rec {
pname = "catch2";
version = "3.11.0";
version = "3.12.0";
src = fetchFromGitHub {
owner = "catchorg";
repo = "Catch2";
tag = "v${version}";
hash = "sha256-7Dx7PhtRwkbo8vHF57sAns2fQZ442D3cMyCt25RvzJc=";
hash = "sha256-M1n2jWiA0hNCNqO3zSXRANiaMVCebn7/VU/4FfcjoA8=";
};
patches = lib.optionals stdenv.cc.isClang [
+2 -2
View File
@@ -7,11 +7,11 @@
stdenv.mkDerivation rec {
pname = "cmocka";
version = "1.1.8";
version = "2.0.1";
src = fetchurl {
url = "https://cmocka.org/files/${lib.versions.majorMinor version}/cmocka-${version}.tar.xz";
hash = "sha256-WENbVYdm1/THKboWO9867Di+07x2batoTjUm7Qqnx4A=";
hash = "sha256-PzUzOCuimrOr9cT0snt50WXw31HqWH3nSbEbaLQBkYA=";
};
patches = [
File diff suppressed because it is too large Load Diff
-39
View File
@@ -1,39 +0,0 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "corestore";
version = "7.4.7";
src = fetchFromGitHub {
owner = "holepunchto";
repo = "corestore";
tag = "v${finalAttrs.version}";
hash = "sha256-/UhiuEBoAJc1U2/VYVWLyEGcXUndH0QmM++FN4KCTHo=";
};
npmDepsHash = "sha256-hQYvQeTwlIWImdNhgpnJjDC24Fx4G0eST7tptWV1Xgw=";
dontNpmBuild = true;
# ERROR: Missing package-lock.json from src
# Upstream doesn't want to maintain a lockfile in their repo: https://github.com/holepunchto/corestore/issues/119
# Copy vendored package-lock.json to src via postPatch
postPatch = ''
cp ${./package-lock.json} ./package-lock.json
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Simple corestore that wraps a random-access-storage module";
homepage = "https://github.com/holepunchto/corestore";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ themadbit ];
teams = with lib.teams; [ ngi ];
};
})
+2 -2
View File
@@ -25,7 +25,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "cryptsetup";
version = "2.8.1";
version = "2.8.3";
outputs = [
"bin"
@@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
url =
"mirror://kernel/linux/utils/cryptsetup/v${lib.versions.majorMinor finalAttrs.version}/"
+ "cryptsetup-${finalAttrs.version}.tar.xz";
hash = "sha256-LDN563ZZfcq1CRFEmwE+JpfEv/zHFtu/DZsOj7u0b7Q=";
hash = "sha256-SoojuLnRoyUEUuQKzq1EIaA+RaOJVK0FlWNPQmaqgA8=";
};
patches = [
+2 -2
View File
@@ -27,13 +27,13 @@ assert useVulkan -> withExamples;
stdenv.mkDerivation rec {
pname = "dav1d";
version = "1.5.2";
version = "1.5.3";
src = fetchFromGitHub {
owner = "videolan";
repo = "dav1d";
rev = version;
hash = "sha256-rxRO5EWjrOUsCYXd2rDDhfcEZbfSuMfjujRAHTqUYhI=";
hash = "sha256-E3da/LJ8HNy1osExmupovqnL8JHgVNzPUCG5F8TJKXQ=";
};
outputs = [
+2 -2
View File
@@ -14,11 +14,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "ed";
version = "1.22.2";
version = "1.22.4";
src = fetchurl {
url = "mirror://gnu/ed/ed-${finalAttrs.version}.tar.lz";
hash = "sha256-9Y0VJCBW4Vr3bxPzTGDYkPoqLVywq++RwRXk2DeU/+M=";
hash = "sha256-mHoeu7rT/PY6H/qeKbP6feBlFQ0WMZ0KSd2LV/gdPpw=";
};
nativeBuildInputs = [ lzip ];
+2
View File
@@ -84,6 +84,8 @@ stdenv.mkDerivation rec {
installTargets = lib.singleton "install" ++ lib.optional stdenv.hostPlatform.is64bit "install64";
__structuredAttrs = true;
meta = {
description = "ERESI Reverse Engineering Software Interface";
license = lib.licenses.gpl2Only;
+2 -2
View File
@@ -7,13 +7,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "fast-float";
version = "8.1.0";
version = "8.2.2";
src = fetchFromGitHub {
owner = "fastfloat";
repo = "fast_float";
rev = "v${finalAttrs.version}";
hash = "sha256-kTLmk+mxfdN/+vKdyohcaNSeoAkhJf3uesaBOz123ag=";
hash = "sha256-IZCZZayK3INU5P8HwZvWfOJuRfBrbPYuMQCjgCjHCWE=";
};
nativeBuildInputs = [ cmake ];
+2 -2
View File
@@ -13,13 +13,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "fluidsynth";
version = "2.5.1";
version = "2.5.2";
src = fetchFromGitHub {
owner = "FluidSynth";
repo = "fluidsynth";
tag = "v${finalAttrs.version}";
hash = "sha256-gTkW2X7fcmxJwYf13Yma6cBigz4sbsb99dBSYTDlcyY=";
hash = "sha256-Ei6ts6gmC3jg1b7nORUCYxoAzoPoN3foyVnrmhpqHTs=";
fetchSubmodules = true;
};
+2 -19
View File
@@ -2,7 +2,6 @@
lib,
stdenv,
fetchurl,
fetchpatch,
libICE,
libXext,
libXi,
@@ -16,29 +15,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "freeglut";
version = "3.6.0";
version = "3.8.0";
src = fetchurl {
url = "mirror://sourceforge/freeglut/freeglut-${finalAttrs.version}.tar.gz";
sha256 = "sha256-nD1NZRb7+gKA7ck8d2mPtzA+RDwaqvN9Jp4yiKbD6lI=";
hash = "sha256-Z03K/yUBDgnkUK7EWLiHDZ6YxG+ZU420V6tlmzIdmYk=";
};
patches = [
(fetchpatch {
name = "freeglut-fix-cmake-4.patch";
url = "https://github.com/freeglut/freeglut/commit/2294389397912c9a6505a88221abb7dca0a4fb79.patch";
hash = "sha256-buNhlVUbDekklnar6KFWN/GUKE+jMEqTGrY3LY0LwVs=";
})
# Fix build with gcc15
# https://github.com/freeglut/freeglut/pull/187
(fetchpatch {
name = "freeglut-fix-fgPlatformDestroyContext-prototype-for-C23.patch";
url = "https://github.com/freeglut/freeglut/commit/800772e993a3ceffa01ccf3fca449d3279cde338.patch";
hash = "sha256-agXw3JHq81tx5514kkorvuU5mX4E3AV930hy1OJl4L0=";
})
];
outputs = [
"out"
"dev"
@@ -12,10 +12,7 @@
buildPackages,
# Run time
ncurses,
readline,
gmp,
mpfr,
expat,
libipt,
zlib,
@@ -24,14 +21,23 @@
dejagnu,
sourceHighlight,
libiconv,
xxHash,
withTui ? true,
ncurses,
withGmp ? true,
gmp,
withMpfr ? true,
mpfr,
withGuile ? false,
guile,
pythonSupport ? stdenv.hostPlatform == stdenv.buildPlatform && !stdenv.hostPlatform.isCygwin,
python3 ? null,
python3,
enableDebuginfod ? lib.meta.availableOn stdenv.hostPlatform elfutils,
elfutils,
guile ? null,
hostCpuOnly ? false,
enableSim ? false,
enableUbsan ? false,
safePaths ? [
# $debugdir:$datadir/auto-load are whitelisted by default by GDB
"$debugdir"
@@ -43,39 +49,45 @@
}:
let
basename = "gdb";
targetPrefix = lib.optionalString (
inherit (lib)
optional
optionals
optionalString
withFeature
enableFeature
withFeatureAs
;
targetPrefix = optionalString (
stdenv.targetPlatform != stdenv.hostPlatform
) "${stdenv.targetPlatform.config}-";
pname = targetPrefix + "gdb" + optionalString hostCpuOnly "-host-cpu-only";
in
assert pythonSupport -> python3 != null;
stdenv.mkDerivation rec {
pname = targetPrefix + basename + lib.optionalString hostCpuOnly "-host-cpu-only";
version = "16.3";
stdenv.mkDerivation (finalAttrs: {
inherit pname;
version = "17.1";
src = fetchurl {
url = "mirror://gnu/gdb/${basename}-${version}.tar.xz";
hash = "sha256-vPzQlVKKmHkXrPn/8/FnIYFpSSbMGNYJyZ0AQsACJMU=";
url = "mirror://gnu/gdb/gdb-${finalAttrs.version}.tar.xz";
hash = "sha256-FJlvX3TJ9o9aVD/cRbyngAIH+R+SrupsLnkYIsfG2HY=";
};
postPatch =
lib.optionalString stdenv.hostPlatform.isDarwin ''
optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace gdb/darwin-nat.c \
--replace '#include "bfd/mach-o.h"' '#include "mach-o.h"'
--replace-fail '#include "bfd/mach-o.h"' '#include "mach-o.h"'
''
+ lib.optionalString stdenv.hostPlatform.isMusl ''
substituteInPlace sim/erc32/erc32.c --replace sys/fcntl.h fcntl.h
substituteInPlace sim/erc32/interf.c --replace sys/fcntl.h fcntl.h
substituteInPlace sim/erc32/sis.c --replace sys/fcntl.h fcntl.h
substituteInPlace sim/ppc/emul_unix.c --replace sys/termios.h termios.h
+ optionalString stdenv.hostPlatform.isMusl ''
substituteInPlace sim/erc32/erc32.c --replace-fail sys/fcntl.h fcntl.h
substituteInPlace sim/erc32/interf.c --replace-fail sys/fcntl.h fcntl.h
substituteInPlace sim/erc32/sis.c --replace-fail sys/fcntl.h fcntl.h
substituteInPlace sim/ppc/emul_unix.c --replace-fail sys/termios.h termios.h
'';
patches = [
./debug-info-from-env.patch
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
++ optionals stdenv.hostPlatform.isDarwin [
./darwin-target-match.patch
];
@@ -89,20 +101,22 @@ stdenv.mkDerivation rec {
buildInputs = [
ncurses
readline
gmp
mpfr
expat
libipt
zlib
zstd
xz
guile
sourceHighlight
xxHash
dejagnu # for tests
]
++ lib.optional pythonSupport python3
++ lib.optional doCheck dejagnu
++ lib.optional enableDebuginfod (elfutils.override { enableDebuginfod = true; })
++ lib.optional stdenv.hostPlatform.isDarwin libiconv;
++ optional withTui ncurses
++ optional withMpfr mpfr
++ optional withGmp gmp
++ optional pythonSupport python3
++ optional withGuile guile
++ optional enableDebuginfod (elfutils.override { enableDebuginfod = true; })
++ optional stdenv.hostPlatform.isDarwin libiconv;
propagatedNativeBuildInputs = [ setupDebugInfoDirs ];
@@ -111,24 +125,23 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
# darwin build fails with format hardening since v7.12
hardeningDisable = lib.optionals stdenv.hostPlatform.isDarwin [ "format" ];
hardeningDisable = optionals stdenv.hostPlatform.isDarwin [ "format" ];
env.NIX_CFLAGS_COMPILE = "-Wno-format-nonliteral";
# Workaround for Apple Silicon, configurePlatforms must be disabled
configurePlatforms =
lib.optionals (!(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64))
[
"build"
"host"
"target"
];
configurePlatforms = optionals (!(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)) [
"build"
"host"
"target"
];
preConfigure = ''
# remove precompiled docs, required for man gdbinit to mention /etc/gdb/gdbinit
rm gdb/doc/*.info*
rm gdb/doc/*.5
rm gdb/doc/*.1
# fix doc build https://sourceware.org/bugzilla/show_bug.cgi?id=27808
rm gdb/doc/GDBvn.texi
@@ -146,33 +159,33 @@ stdenv.mkDerivation rec {
# subset of the platform description.
"--program-prefix=${targetPrefix}"
"--disable-werror"
(enableFeature true "werror")
(enableFeature true "64-bit-bfd")
(enableFeature false "install-libbfd")
(enableFeature withTui "tui")
(withFeature withTui "curses")
(enableFeature false "shared")
(enableFeature true "static")
(withFeature true "system-readline")
(withFeature true "system-zlib")
(withFeature true "expat")
(withFeatureAs true "libexpat-prefix" "${expat.dev}")
(withFeatureAs withGmp "gmp" "${gmp.dev}")
(withFeatureAs withMpfr "mpfr" "${mpfr.dev}")
(withFeature pythonSupport "python")
(withFeature withGuile "guile")
(enableFeature enableSim "sim")
(enableFeature enableUbsan "ubsan")
(withFeatureAs true "system-gdbinit" "/etc/gdb/gdbinit")
(withFeatureAs true "system-gdbinit-dir" "/etc/gdb/gdbinit.d")
(withFeatureAs true "auto-load-safe-path" (builtins.concatStringsSep ":" safePaths))
(withFeature enableDebuginfod "debuginfod")
(enableFeature (!stdenv.hostPlatform.isMusl) "nls")
(enableFeature (!hostCpuOnly) "targets=all")
(enableFeature (!stdenv.hostPlatform.isStatic) "inprocess-agent")
]
++ lib.optional (!hostCpuOnly) "--enable-targets=all"
++ [
"--enable-64-bit-bfd"
"--disable-install-libbfd"
"--disable-shared"
"--enable-static"
"--with-system-zlib"
"--with-system-readline"
"--with-system-gdbinit=/etc/gdb/gdbinit"
"--with-system-gdbinit-dir=/etc/gdb/gdbinit.d"
"--with-gmp=${gmp.dev}"
"--with-mpfr=${mpfr.dev}"
"--with-expat"
"--with-libexpat-prefix=${expat.dev}"
"--with-auto-load-safe-path=${builtins.concatStringsSep ":" safePaths}"
]
++ lib.optional (!pythonSupport) "--without-python"
++ lib.optional stdenv.hostPlatform.isMusl "--disable-nls"
++ lib.optional stdenv.hostPlatform.isStatic "--disable-inprocess-agent"
++ lib.optional enableDebuginfod "--with-debuginfod=yes"
++ lib.optional (!enableSim) "--disable-sim"
# Workaround for Apple Silicon, "--target" must be "faked", see eg: https://github.com/Homebrew/homebrew-core/pull/209753
++ lib.optional (
++ optional (
stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64
) "--target=x86_64-apple-darwin";
@@ -181,9 +194,6 @@ stdenv.mkDerivation rec {
rm -v $out/share/info/bfd.info
'';
# TODO: Investigate & fix the test failures.
doCheck = false;
passthru = {
updateScript = writeScript "update-gdb" ''
#!/usr/bin/env nix-shell
@@ -199,24 +209,19 @@ stdenv.mkDerivation rec {
};
meta = {
mainProgram = "gdb";
description = "GNU Project debugger";
mainProgram = "gdb";
longDescription = ''
GDB, the GNU Project debugger, allows you to see what is going
on `inside' another program while it executes -- or what another
program was doing at the moment it crashed.
'';
homepage = "https://www.gnu.org/software/gdb/";
license = lib.licenses.gpl3Plus;
platforms = with lib.platforms; linux ++ cygwin ++ freebsd ++ darwin;
maintainers = with lib.maintainers; [
pierron
globin
];
};
}
})
+1 -1
View File
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
configureFlags = lib.optional (!gifview) "--disable-gifview";
LDFLAGS = lib.optionalString static "-static";
env.LDFLAGS = lib.optionalString static "-static";
doCheck = true;
checkPhase = ''
+6 -1
View File
@@ -130,7 +130,12 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://lore.kernel.org/git/20251201031040.1120091-1-brianmlyles@gmail.com/raw";
hash = "sha256-vvhbvg74OIMzfksHiErSnjOZ+W0M/T9J8GOQ4E4wKbU=";
})
# Fixes t8020 test on big-endian
(fetchurl {
name = "last-modified-fix-bug-caused-by-inproper-initialized-memory.patch";
url = "https://lore.kernel.org/git/20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com/raw";
hash = "sha256-WdewOwD7hMhnahhUUEYAlM58tT3MkxUlBa3n8IwrESU=";
})
]
++ lib.optionals withSsh [
# Hard-code the ssh executable to ${pkgs.openssh}/bin/ssh instead of
+22 -31
View File
@@ -2,21 +2,20 @@
lib,
stdenv,
fetchFromGitHub,
bison,
cmake,
jq,
python3,
spirv-headers,
spirv-tools,
config,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "glslang";
version = "16.1.0";
src = fetchFromGitHub {
owner = "KhronosGroup";
repo = "glslang";
rev = version;
tag = finalAttrs.version;
hash = "sha256-cEREniYgSd62mnvKaQkgs69ETL5pLl5Gyv3hKOtSv3w=";
};
@@ -26,48 +25,40 @@ stdenv.mkDerivation rec {
"dev"
];
# These get set at all-packages, keep onto them for child drvs
passthru = {
spirv-tools = spirv-tools;
spirv-headers = spirv-headers;
};
nativeBuildInputs = [
cmake
python3
bison
jq
];
cmakeFlags = [ "-DBUILD_SHARED_LIBS=ON" ];
propagatedBuildInputs = [
spirv-tools
spirv-headers
];
postPatch = ''
cp --no-preserve=mode -r "${spirv-tools.src}" External/spirv-tools
ln -s "${spirv-headers.src}" External/spirv-tools/external/spirv-headers
'';
cmakeFlags = [
(lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic))
(lib.cmakeBool "BUILD_EXTERNAL" false)
(lib.cmakeBool "ALLOW_EXTERNAL_SPIRV_TOOLS" true)
];
# This is a dirty fix for lib/cmake/SPIRVTargets.cmake:51 which includes this directory
postInstall = ''
mkdir -p $dev/include/External
moveToOutput lib/pkgconfig "''${!outputDev}"
moveToOutput lib/cmake "''${!outputDev}"
'';
# Fix the paths in .pc, even though it's unclear if these .pc are really useful.
postFixup = ''
substituteInPlace $dev/lib/pkgconfig/*.pc \
--replace-fail '=''${prefix}//' '=/' \
--replace-fail "includedir=$dev/$dev" "includedir=$dev"
# add a symlink for backwards compatibility
ln -s $bin/bin/glslang $bin/bin/glslangValidator
'';
passthru = lib.optionalAttrs config.allowAliases {
# Added 2026-01-06, https://github.com/NixOS/nixpkgs/pull/477412
spirv-tools = throw "'glslang' no longer pins to specific 'spirv-tools'";
# Added 2026-01-06, https://github.com/NixOS/nixpkgs/pull/477412
spirv-headers = throw "'glslang' no longer pins to specific 'spirv-headers'";
};
meta = {
inherit (src.meta) homepage;
inherit (finalAttrs.src.meta) homepage;
description = "Khronos reference front-end for GLSL and ESSL";
license = lib.licenses.asl20;
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.ralith ];
};
}
})
+3 -3
View File
@@ -11,11 +11,11 @@
version ?
# This is a workaround for update-source-version to be able to update this
let
_version = "0-unstable-2025-09-18";
_version = "0-unstable-2025-10-08";
in
_version,
rev ? "81b24e01531ecf0eff12ec9359a555ec3944ec4e",
hash ? "sha256-sm5GWbkm3ua7EkCWTuY4TG6EXKe3asXTrH1APnNARJQ=",
rev ? "07d3c6f4dc290fae5ca6152ebcb37d6815c411ab",
hash ? "sha256-kIPhfuJBQSISdRjloe0N2JrqvuVrEkNijb92/9zSE9I=",
}:
stdenv.mkDerivation {
-2
View File
@@ -35,7 +35,6 @@
lvm2,
nilfs-utils,
ntfs3g,
reiserfsprogs,
udftools,
xfsprogs,
xfsdump,
@@ -97,7 +96,6 @@ stdenv.mkDerivation (finalAttrs: {
lvm2
nilfs-utils
ntfs3g
reiserfsprogs
udftools
xfsprogs
xfsdump
+19 -4
View File
@@ -17,9 +17,10 @@
libsForQt5,
qt6Packages,
python3,
testers,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "gpgme";
version = "2.0.1";
@@ -32,10 +33,16 @@ stdenv.mkDerivation rec {
outputBin = "dev"; # gpgme-config; not so sure about gpgme-tool
src = fetchurl {
url = "mirror://gnupg/gpgme/gpgme-${version}.tar.bz2";
url = "mirror://gnupg/gpgme/gpgme-${finalAttrs.version}.tar.bz2";
hash = "sha256-ghqwaVyELqtRdSqBmAySsEEMfq3QQQP3kdXSpSZ4SWY=";
};
postPatch = ''
# remove -unknown suffix from pkgconfig version
substituteInPlace autogen.sh \
--replace-fail 'tmp="-unknown"' 'tmp=""'
'';
patches = [
# Don't use deprecated LFS64 APIs (removed in musl 1.2.4)
# https://dev.gnupg.org/D600
@@ -92,6 +99,10 @@ stdenv.mkDerivation rec {
passthru.tests = {
inherit gpa;
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
versionCheck = true;
};
python = python3.pkgs.gpgme;
qt5 = libsForQt5.qgpgme;
qt6 = qt6Packages.qgpgme;
@@ -99,7 +110,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = "https://gnupg.org/software/gpgme/index.html";
changelog = "https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;f=NEWS;hb=gpgme-${version}";
changelog = "https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;f=NEWS;hb=gpgme-${finalAttrs.version}";
description = "Library for making GnuPG easier to use";
longDescription = ''
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
@@ -111,7 +122,11 @@ stdenv.mkDerivation rec {
lgpl21Plus
gpl3Plus
];
pkgConfigModules = [
"gpgme"
"gpgme-glib"
];
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ dotlambda ];
};
}
})
+15
View File
@@ -5,6 +5,7 @@
lib,
libgpg-error,
stdenv,
testers,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -16,6 +17,12 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-1HlgScBnCKJvMJb3SO8JU0fho8HlcFYXAf6VLD9WU4I=";
};
postPatch = ''
# remove -unknown suffix from pkgconfig version
substituteInPlace cmake/modules/G10GetFullVersion.cmake \
--replace-fail '"''${version}-unknown"' '"''${version}"'
'';
outputs = [
"out"
"dev"
@@ -35,12 +42,20 @@ stdenv.mkDerivation (finalAttrs: {
libgpg-error
];
passthru.tests = {
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
versionCheck = true;
};
};
meta = {
changelog = "https://dev.gnupg.org/source/gpgmepp/browse/master/NEWS;gpgmepp-${finalAttrs.version}?as=remarkup";
description = "C++ bindings/wrapper for GPGME";
homepage = "https://dev.gnupg.org/source/gpgmepp";
license = lib.licenses.lgpl21Plus;
maintainers = [ lib.maintainers.dotlambda ];
pkgConfigModules = [ "gpgmepp" ];
platforms = lib.platforms.unix;
};
})
@@ -0,0 +1,24 @@
commit e49b934b77a76443005f92a737dae7370b50e5f7
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
Date: Tue Jan 23 19:39:03 2024 -0600
[libgroff]: Fix underspecified getenv() prototype.
* src/libs/libgroff/getopt.c: Do it. Seen when building groff on a
non-glibc-based system (clang 17 complains).
---
Link: https://lists.libreplanet.org/archive/html/groff-commit/2024-01/msg00103.html
diff --git a/src/libs/libgroff/getopt.c b/src/libs/libgroff/getopt.c
index 6d4ee5b3a..77f8da1ed 100644
--- a/src/libs/libgroff/getopt.c
+++ b/src/libs/libgroff/getopt.c
@@ -124,7 +124,7 @@ static struct _getopt_data getopt_data;
whose names are inconsistent. */
#ifndef getenv
-extern char *getenv ();
+extern char *getenv (const char *);
#endif
#endif /* not __GNU_LIBRARY__ */
+6
View File
@@ -34,6 +34,12 @@ stdenv.mkDerivation rec {
hash = "sha256-a5dX9ZK3UYtJAutq9+VFcL3Mujeocf3bLTCuOGNRHBM=";
};
patches = [
# Backport e49b934 "Fix underspecified `getenv()` prototype." for non-glibc systems with C23
# This can be dropped in the next release, when the local getopt implementation in libgroff is removed
./fix-underspecified-getenv-prototype.patch
];
outputs = [
"out"
"man"
+2 -2
View File
@@ -34,11 +34,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "harfbuzz${lib.optionalString withIcu "-icu"}";
version = "12.2.0";
version = "12.3.0";
src = fetchurl {
url = "https://github.com/harfbuzz/harfbuzz/releases/download/${finalAttrs.version}/harfbuzz-${finalAttrs.version}.tar.xz";
hash = "sha256-7LYDqkJqiyRmVxhme9pkqEwVBNt0VO5Mrb02Lupk5UU=";
hash = "sha256-hmDr08J9lAf8hDO10XK6+6XwMXywu0M58o5TcMk9Qrc=";
};
postPatch = ''
+2 -2
View File
@@ -6,13 +6,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hwdata";
version = "0.402";
version = "0.403";
src = fetchFromGitHub {
owner = "vcrhonek";
repo = "hwdata";
rev = "v${finalAttrs.version}";
hash = "sha256-akLI2MdF6BDwvSoKt1jhlMyhKQv4TWxLFZWF7ivIezA=";
hash = "sha256-90Op2armm7Fg0Eyj5+Md0IMos915wqjv8cqTYVJF/NA=";
};
doCheck = false; # this does build machine-specific checks (e.g. enumerates PCI bus)
@@ -3,6 +3,7 @@
lib,
fetchurl,
fetchFromGitHub,
patchelfUnstable,
}:
buildNpmPackage {
@@ -30,6 +31,23 @@ buildNpmPackage {
})
];
nativeBuildInputs = [
patchelfUnstable # --clear-execstack is only available on 0.18
];
postInstall = ''
# glibc 2.41+ refuses to make the stack executable if it isn't executable,
# but a library loaded via `dlopen()` mandates it.
# According to https://github.com/holepunchto/sodium-native/issues/214
# this isn't necessary in this case.
while IFS= read -r -d ''' file; do
# Skip PEs with the same name
if patchelf --print-rpath "$file" &>/dev/null; then
patchelf "$file" --clear-execstack
fi
done < <(find $out/lib/node_modules -name 'sodium-native.node' -print0)
'';
meta = {
description = "HyperCmd Utils";
homepage = "https://github.com/holepunchto/hyper-cmd-utils";
File diff suppressed because it is too large Load Diff
-42
View File
@@ -1,42 +0,0 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "hypercore";
version = "11.13.0";
src = fetchFromGitHub {
owner = "holepunchto";
repo = "hypercore";
tag = "v${finalAttrs.version}";
hash = "sha256-YaSmKjJKWkA4UUK/1LF9wqS4PvdFHrrc+yzvz+QmL0A=";
};
npmDepsHash = "sha256-ZJxVmQWKgHyKkuYfGIlANXFcROjI7fibg6mxIhDZowM=";
dontNpmBuild = true;
postPatch = ''
cp ${./package-lock.json} ./package-lock.json
'';
passthru.updateScript = nix-update-script {
extraArgs = [
"--generate-lockfile"
];
};
meta = {
description = "Secure, distributed append-only log";
homepage = "https://github.com/holepunchto/hypercore";
license = lib.licenses.mit;
teams = with lib.teams; [ ngi ];
maintainers = [ lib.maintainers.goodylove ];
platforms = lib.platforms.all;
};
})
+18
View File
@@ -3,6 +3,7 @@
lib,
fetchurl,
fetchFromGitHub,
patchelfUnstable,
}:
buildNpmPackage rec {
@@ -28,8 +29,25 @@ buildNpmPackage rec {
})
];
nativeBuildInputs = [
patchelfUnstable # --clear-execstack is only available on 0.18
];
doInstallCheck = true;
postInstall = ''
# glibc 2.41+ refuses to make the stack executable if it isn't executable,
# but a library loaded via `dlopen()` mandates it.
# According to https://github.com/holepunchto/sodium-native/issues/214
# this isn't necessary in this case.
while IFS= read -r -d ''' file; do
# Skip PEs with the same name
if patchelf --print-rpath "$file" &>/dev/null; then
patchelf "$file" --clear-execstack
fi
done < <(find $out/lib/node_modules -name 'sodium-native.node' -print0)
'';
installCheckPhase = ''
$out/bin/hypershell --help
'';
+18
View File
@@ -3,6 +3,7 @@
fetchFromGitHub,
fetchurl,
lib,
patchelfUnstable,
}:
buildNpmPackage {
@@ -30,6 +31,23 @@ buildNpmPackage {
})
];
nativeBuildInputs = [
patchelfUnstable # --clear-execstack is only available on 0.18
];
postInstall = ''
# glibc 2.41+ refuses to make the stack executable if it isn't executable,
# but a library loaded via `dlopen()` mandates it.
# According to https://github.com/holepunchto/sodium-native/issues/214
# this isn't necessary in this case.
while IFS= read -r -d ''' file; do
# Skip PEs with the same name
if patchelf --print-rpath "$file" &>/dev/null; then
patchelf "$file" --clear-execstack
fi
done < <(find $out/lib/node_modules -name 'sodium-native.node' -print0)
'';
meta = {
description = "Run SSH over hyperswarm";
homepage = "https://github.com/mafintosh/hyperssh";
File diff suppressed because it is too large Load Diff
-41
View File
@@ -1,41 +0,0 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "hyperswarm";
version = "4.12.1";
src = fetchFromGitHub {
owner = "holepunchto";
repo = "hyperswarm";
tag = "v${finalAttrs.version}";
hash = "sha256-BQ1/kNJAFoxPJ2I3dyV7EHafKfbbDqCQw039VT4YLT8=";
};
npmDepsHash = "sha256-4ysUYFIFlzr57J7MdZit1yX3Dgpb2eY0rdYnwyppwK0=";
dontNpmBuild = true;
postPatch = ''
cp ${./package-lock.json} ./package-lock.json
'';
passthru.updateScript = nix-update-script {
extraArgs = [
"--generate-lockfile"
];
};
meta = {
description = "Distributed Networking Stack for Connecting Peers";
homepage = "https://github.com/holepunchto/hyperswarm";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
teams = with lib.teams; [ ngi ];
maintainers = [ ];
};
})
+1 -1
View File
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
# Explicitly link against libgcc_s, to work around the infamous
# "libgcc_s.so.1 must be installed for pthread_cancel to work".
LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux "-lgcc_s";
env.LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux "-lgcc_s";
buildInputs = [
ncurses
+1 -20
View File
@@ -2,7 +2,6 @@
lib,
stdenv,
fetchgit,
fetchpatch,
autoreconfHook,
pkg-config,
ell,
@@ -14,24 +13,6 @@
gitUpdater,
}:
let
# fix segfault in iwctl with readline-8.3
# https://lists.gnu.org/archive/html/bug-readline/2025-07/msg00007.htmlP
readline-patch = fetchpatch {
url = "https://lists.gnu.org/archive/html/bug-readline/2025-07/txtmA7rksnmmi.txt";
hash = "sha256-QSS1GUJ2i/bF2ksvUtw27oqFHuTHALi+7QwxMFt9ZaM=";
stripLen = 2;
};
myreadline = (
readline.overrideAttrs (
_final: prev: {
patches = (prev.patches or [ ]) ++ [ readline-patch ];
}
)
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "iwd";
version = "3.10";
@@ -66,7 +47,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
ell
python3Packages.python
myreadline
readline
];
nativeCheckInputs = [ openssl ];
+1 -1
View File
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
];
# See https://trac.macports.org/ticket/60656
LDFLAGS = if stdenv.hostPlatform.isDarwin then "-Wl,-w" else null;
env = lib.optionalAttrs stdenv.hostPlatform.isDarwin { LDFLAGS = "-Wl,-w"; };
meta = {
description = "Color management engine";
+3 -2
View File
@@ -11,7 +11,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "less";
version = "679";
version = "685";
# `less` is provided by the following sources:
# - meta.homepage
@@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: {
# homepage, and only those not marked as beta.
src = fetchurl {
url = "https://www.greenwoodsoftware.com/less/less-${finalAttrs.version}.tar.gz";
hash = "sha256-m2iCDDT6igr2sOAbdPApi83UCgSJxhZJtHBYkIoVPXg=";
hash = "sha256-JwEEHnZ+aX7kIM4IJWQc7cjyC1FXar6Z2SwWZtMy6dw=";
};
buildInputs = [
@@ -54,6 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
mainProgram = "less";
maintainers = with lib.maintainers; [
mdaniels5757
yiyu
];
platforms = lib.platforms.unix;
};
+2 -2
View File
@@ -23,7 +23,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libadwaita";
version = "1.8.2";
version = "1.8.3";
outputs = [
"out"
@@ -37,7 +37,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "GNOME";
repo = "libadwaita";
tag = finalAttrs.version;
hash = "sha256-bymC3B5mY4r7oteA6WRViWIyazt0YE6T+P+RHrYifyY=";
hash = "sha256-IrniaMcsM1ZADNNgAmT3ELbkcwPTpYIBf8lOY4TaLd0=";
};
depsBuildBuild = [
+2 -2
View File
@@ -32,13 +32,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "libapparmor";
version = "4.1.2";
version = "4.1.3";
src = fetchFromGitLab {
owner = "apparmor";
repo = "apparmor";
tag = "v${finalAttrs.version}";
hash = "sha256-CwWNfH2Ykv4e+8ONytdM7J+aItAMVrq0yYrYzRXAe1w=";
hash = "sha256-8L4skun873OMZISpGm25Ana4RzTzCmKhhK5tfyEmbd8=";
};
sourceRoot = "${finalAttrs.src.name}/libraries/libapparmor";
+11 -5
View File
@@ -23,6 +23,7 @@
cmake,
nix,
samba,
testers,
# for passthru.lore
binlore,
@@ -102,14 +103,15 @@ stdenv.mkDerivation (finalAttrs: {
acl
];
hardeningDisable = [ "strictflexarrays3" ];
hardeningDisable = [
"strictflexarrays3"
]
# some tests won't compile because this makes memcpy a macro:
# libarchive/test/test_write_format_mtree_preset_digests.c:2020:29: error: macro "memcpy" passed 66 arguments, but takes just 3
++ lib.optional stdenv.hostPlatform.isCygwin "fortify";
configureFlags = lib.optional (!xarSupport) "--without-xml2";
preBuild = lib.optionalString stdenv.hostPlatform.isCygwin ''
echo "#include <windows.h>" >> config.h
'';
# https://github.com/libarchive/libarchive/issues/1475
doCheck = !stdenv.hostPlatform.isMusl;
@@ -140,10 +142,14 @@ stdenv.mkDerivation (finalAttrs: {
maintainers = with lib.maintainers; [ jcumming ];
platforms = lib.platforms.all;
inherit (acl.meta) badPlatforms;
pkgConfigModules = [ "libarchive" ];
};
passthru.tests = {
inherit cmake nix samba;
pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
};
};
# bsdtar is detected as "cannot" because its exec is internal to
+6 -4
View File
@@ -29,10 +29,12 @@ stdenv.mkDerivation (finalAttrs: {
configureFlags = [ "--sysconfdir=/etc" ];
LDFLAGS = lib.optionals stdenv.hostPlatform.isStatic [
"-static-libgcc"
"-static"
];
env = lib.optionalAttrs stdenv.hostPlatform.isStatic {
LDFLAGS = toString [
"-static-libgcc"
"-static"
];
};
meta = {
description = "AX.25 library for hamradio applications";
+12 -4
View File
@@ -8,7 +8,7 @@
meson,
ninja,
withJava ? false,
jdk21_headless, # Newer JDK's depend on a release with a fix for https://code.videolan.org/videolan/libbluray/-/issues/46
jdk21, # Newer JDK's depend on a release with a fix for https://code.videolan.org/videolan/libbluray/-/issues/46
ant,
stripJavaArchivesHook,
withAACS ? false,
@@ -34,13 +34,21 @@ stdenv.mkDerivation rec {
hash = "sha256-d5N7rwfq3aSysxHPOvTFAmnS6jFlBB9YQ9lkdsTJJ3c=";
};
postPatch =
lib.optionalString withAACS ''
substituteInPlace src/libbluray/disc/aacs.c --replace-fail 'getenv("LIBAACS_PATH")' '"${libaacs}/lib/libaacs"'
''
+ lib.optionalString withBDplus ''
substituteInPlace src/libbluray/disc/bdplus.c --replace-fail 'getenv("LIBBDPLUS_PATH")' '"${libbdplus}/lib/libbdplus"'
'';
nativeBuildInputs = [
meson
ninja
pkg-config
]
++ lib.optionals withJava [
jdk21_headless
jdk21
ant
stripJavaArchivesHook
];
@@ -53,13 +61,13 @@ stdenv.mkDerivation rec {
propagatedBuildInputs = lib.optional withAACS libaacs;
env.JAVA_HOME = lib.optionalString withJava jdk21_headless.home; # Fails at runtime without this
env.NIX_LDFLAGS =
lib.optionalString withAACS "-L${libaacs}/lib -laacs"
+ lib.optionalString withBDplus " -L${libbdplus}/lib -lbdplus";
mesonFlags =
lib.optional (!withJava) "-Dbdj_jar=disabled"
++ lib.optional withJava "-Djdk_home=${jdk21.home}"
++ lib.optional (!withMetadata) "-dlibxml2=disabled"
++ lib.optional (!withFonts) "-Dfreetype=disabled";
@@ -67,7 +75,7 @@ stdenv.mkDerivation rec {
homepage = "http://www.videolan.org/developers/libbluray.html";
description = "Library to access Blu-Ray disks for video playback";
license = lib.licenses.lgpl21;
maintainers = [ ];
maintainers = [ lib.maintainers.amarshall ];
platforms = lib.platforms.unix;
};
+9
View File
@@ -23,6 +23,8 @@
squid,
tor,
uwsgi,
testers,
libcap,
}:
assert usePam -> pam != null;
@@ -127,6 +129,9 @@ stdenv.mkDerivation rec {
tor
uwsgi
;
pkg-config = testers.hasPkgConfigModules {
package = libcap;
};
};
meta = {
@@ -134,5 +139,9 @@ stdenv.mkDerivation rec {
homepage = "https://sites.google.com/site/fullycapable";
platforms = lib.platforms.linux;
license = lib.licenses.bsd3;
pkgConfigModules = [
"libcap"
"libpsx"
];
};
}
+2 -2
View File
@@ -16,13 +16,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libcdio";
version = "2.2.0";
version = "2.3.0";
src = fetchFromGitHub {
owner = "libcdio";
repo = "libcdio";
tag = finalAttrs.version;
hash = "sha256-izjZk2kz9PkLm9+INUdl1e7jMz3nUsQKdplKI9Io+CM=";
hash = "sha256-NZj6sMIhBORh2ZBs/WGI4BYri1REog4ovUug1t5p8Y8=";
};
env = lib.optionalAttrs stdenv.hostPlatform.is32bit {
+2 -2
View File
@@ -16,14 +16,14 @@
stdenv.mkDerivation rec {
pname = "libdecor";
version = "0.2.4";
version = "0.2.5";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "libdecor";
repo = "libdecor";
rev = version;
hash = "sha256-l0MmNpC+449BaluynbzG5d0/v57F5rltOIBzBagkYbc=";
hash = "sha256-sUktv/k+4IdJ55uH3F6z8XqaAOTic6miuyZ9U+NhtQQ=";
};
outputs = [
+2 -2
View File
@@ -16,11 +16,11 @@
stdenv.mkDerivation rec {
pname = "libdrm";
version = "2.4.129";
version = "2.4.131";
src = fetchurl {
url = "https://dri.freedesktop.org/${pname}/${pname}-${version}.tar.xz";
hash = "sha256-WXgYP5eNaX4mpQugZhdJZO+wq5fKoeyqG4Yfvl3fd9w=";
hash = "sha256-RbqZg7UciWQGo9ZU3oHTE7lTt25jkeJ5cHPVQ8X2F9U=";
};
outputs = [
+2 -2
View File
@@ -13,7 +13,7 @@
stdenv.mkDerivation rec {
pname = "libfabric";
version = "2.3.1";
version = "2.4.0";
enableParallelBuilding = true;
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
owner = "ofiwg";
repo = "libfabric";
rev = "v${version}";
sha256 = "sha256-Zaf7iGr2/HWiMcH7zERz5Y9YzJ0QpHCCs+bU+qmoQTI=";
sha256 = "sha256-C8k1caArVPBTtSggvAM7S660HpP99y9vac7oyf+HW2c=";
};
outputs = [
+2 -2
View File
@@ -19,13 +19,13 @@
stdenv.mkDerivation rec {
pname = "libnl";
version = "3.11.0";
version = "3.12.0";
src = fetchFromGitHub {
repo = "libnl";
owner = "thom311";
rev = "libnl${lib.replaceStrings [ "." ] [ "_" ] version}";
hash = "sha256-GuYV2bUOhLedB/o9Rz6Py/G5HBK2iNefwrlkZJXgbnI=";
hash = "sha256-K77WamOf+/3PNXe/hI+OYg0EBgBqvDfNDamXYXcK7P8=";
};
outputs = [
+2 -2
View File
@@ -17,7 +17,7 @@
stdenv.mkDerivation rec {
pname = "libopenmpt";
version = "0.8.3";
version = "0.8.4";
outputs = [
"out"
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz";
hash = "sha256-JdSGpNqXKIGSdO0JWf15ocY1iVRxDVTBQEfGRXyMqKw=";
hash = "sha256-Yn+b8RqsrmFaHyyYLH6IyyHxGy1vAmeUb3yCxerklDs=";
};
enableParallelBuilding = true;
+2 -2
View File
@@ -26,13 +26,13 @@
stdenv.mkDerivation rec {
pname = "libpcap";
version = "1.10.5";
version = "1.10.6";
__structuredAttrs = true;
src = fetchurl {
url = "https://www.tcpdump.org/release/${pname}-${version}.tar.gz";
hash = "sha256-N87ZChmjAqfzLkWCJKAMNlwReQXCzTWsVEtogKgUiPA=";
hash = "sha256-hy3REzf+GrAq2dT+4EfJ2iRNaVxt3zTi67cz79Ttiqk=";
};
outputs = [
+9
View File
@@ -7,6 +7,7 @@
ninja,
boost,
nlohmann_json,
fetchpatch,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -20,6 +21,14 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-YshU7G5Rov67CVwFbf5ENp2j5ptAvkVrlMu85KmnEpk=";
};
patches = [
# fix build with glibc 2.42 & -Werror
(fetchpatch {
url = "https://github.com/raspberrypi/libpisp/commit/f2bbf7e000d3f11cac235b8ea1291722080a016c.patch";
hash = "sha256-vrdmVadyjlAnZtmBahOs/hlKPrkh/BF3LvrTPM9D15Q=";
})
];
nativeBuildInputs = [
pkg-config
meson
+2 -2
View File
@@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libraw";
version = "0.21.4";
version = "0.21.5b";
src = fetchFromGitHub {
owner = "LibRaw";
repo = "LibRaw";
tag = finalAttrs.version;
hash = "sha256-JAGIM7A9RbK22F8KczRcb+29t4fDDXzoCA3a4s/z6Q8=";
hash = "sha256-CE7XB61bnjRhy0Ww2Q3pvvSJMobHHta5jn4F/i/oOEE=";
};
outputs = [

Some files were not shown because too many files have changed in this diff Show More