Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2026-08-14 18:18:33 +00:00
committed by GitHub
143 changed files with 1869 additions and 1894 deletions

View File

@@ -295,6 +295,11 @@
name = "6543";
keys = [ { fingerprint = "8722 B61D 7234 1082 553B 201C B8BE 6D61 0E61 C862"; } ];
};
_66HEX = {
name = "Marek Jóźwiak";
github = "66HEX";
githubId = 168720167;
};
_6AA4FD = {
email = "f6442954@gmail.com";
github = "6AA4FD";
@@ -8140,6 +8145,13 @@
githubId = 7494394;
name = "Karim Elatov";
};
eldios = {
email = "emanuele.lele.calo@gmail.com";
github = "eldios";
githubId = 483767;
name = "Emanuele 'Lele' Calo";
keys = [ { fingerprint = "AA6B C774 3F8F 9AD8 4BBA 15C7 2CCB F4B7 1EFF DD46"; } ];
};
eleanor = {
email = "dejan@proteansec.com";
github = "proteansec";
@@ -16145,7 +16157,11 @@
};
liamthexpl0rer = {
name = "Liam";
matrix = "@liamthexpl0rer:matrix.org";
matrix = "@liamthexpl0rer:l14mx.de";
keys = [
{ fingerprint = "3C0A 0FC8 E406 E602 50F3 FCFD 7633 7F2C A1CB 537D"; }
{ fingerprint = "CC53 895B 3CC7 7B29 AA46 55EF 6DF0 2F41 092A 9B30"; }
];
github = "liamthexpl0rer";
githubId = 119797945;
};
@@ -23866,6 +23882,12 @@
name = "Roland Conybeare";
keys = [ { fingerprint = "bw5Cr/4ul1C2UvxopphbZbFI1i5PCSnOmPID7mJ/Ogo"; } ];
};
rdk31 = {
email = "nixpkgs@rdk31.com";
github = "rdk31";
githubId = 16737959;
name = "rdk31";
};
rdnetto = {
email = "rdnetto@gmail.com";
github = "rdnetto";

View File

@@ -350,6 +350,7 @@
./programs/tsm-client.nix
./programs/turbovnc.nix
./programs/udevil.nix
./programs/upki.nix
./programs/usbtop.nix
./programs/vim.nix
./programs/virt-manager.nix

View File

@@ -0,0 +1,97 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.upki;
format = pkgs.formats.toml { };
configFile = format.generate "upki.toml" cfg.settings;
in
{
options.services.upki = {
enable = lib.mkEnableOption "upki certificate infrastructure cache updates";
package = lib.mkPackageOption pkgs "upki" { };
interval = lib.mkOption {
type = lib.types.str;
default = "2h";
example = "1h";
description = "How often to update the upki cache.";
};
settings = lib.mkOption {
inherit (format) type;
default = { };
description = "Settings written to the upki config file.";
example = lib.literalExpression ''
{
cache-dir = "/var/cache/upki";
revocation.fetch-url = "https://upki.rustls.dev/";
}
'';
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
services.upki.settings = {
cache-dir = lib.mkDefault "/var/cache/upki";
revocation.fetch-url = lib.mkDefault "https://upki.rustls.dev/";
};
users.users.upki = {
isSystemUser = true;
group = "upki";
};
users.groups.upki = { };
systemd.services.upki-fetch = {
description = "Update the upki cache";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${lib.getExe cfg.package} --config-file ${configFile} fetch";
User = "upki";
Group = "upki";
CacheDirectory = "upki";
CacheDirectoryMode = "0755";
UMask = "0022";
# Hardening
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateTmp = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectSystem = "strict";
RestrictAddressFamilies = [
"AF_UNIX"
"AF_INET"
"AF_INET6"
];
RestrictRealtime = true;
SystemCallArchitectures = "native";
SystemCallErrorNumber = "EPERM";
SystemCallFilter = "@system-service";
};
};
systemd.timers.upki-fetch = {
description = "Update the upki cache every ${cfg.interval}";
wantedBy = [ "timers.target" ];
timerConfig = {
OnActiveSec = "0";
OnUnitActiveSec = cfg.interval;
};
};
};
}

View File

@@ -85,16 +85,20 @@ in
(mkIf inInitrd {
boot.initrd.kernelModules = [ "btrfs" ];
boot.initrd.availableKernelModules = [
"crc32c"
]
++ optionals (config.boot.kernelPackages.kernel.kernelAtLeast "5.5") [
# The canonical names of these modules are not very stable, so use the algorithm names that the btrfs module expects.
# See: https://github.com/torvalds/linux/blob/v6.19-rc1/fs/btrfs/super.c#L2705-L2708
"xxhash64"
"sha256" # Should be baked into our kernel, just to be sure
"blake2b-256"
];
boot.initrd.availableKernelModules = (
mkIf (config.boot.kernelPackages.kernel.kernelOlder "7.0") (
[
"crc32c"
]
++ optionals (config.boot.kernelPackages.kernel.kernelAtLeast "5.5") [
# The canonical names of these modules are not very stable, so use the algorithm names that the btrfs module expects.
# See: https://github.com/torvalds/linux/blob/v6.19-rc1/fs/btrfs/super.c#L2705-L2708
"xxhash64"
"sha256" # Should be baked into our kernel, just to be sure
"blake2b-256"
]
)
);
boot.initrd.extraUtilsCommands = mkIf (!config.boot.initrd.systemd.enable) ''
copy_bin_and_libs ${pkgs.btrfs-progs}/bin/btrfs

View File

@@ -7464,6 +7464,21 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
herdr-splits-nvim = buildVimPlugin {
pname = "herdr-splits.nvim";
version = "0.5.2";
src = fetchFromGitHub {
owner = "lmilojevicc";
repo = "herdr-splits.nvim";
tag = "v0.5.2";
hash = "sha256-2h9HGQcIwKIE5uKuRVwtIfKNn0urQttvg5b95kavzgo=";
fetchSubmodules = true;
};
meta.homepage = "https://github.com/lmilojevicc/herdr-splits.nvim/";
meta.license = getLicenseFromSpdxId "MIT";
meta.hydraPlatforms = [ ];
};
hex-nvim = buildVimPlugin {
pname = "hex.nvim";
version = "0-unstable-2025-07-27";

View File

@@ -531,6 +531,7 @@ https://github.com/Zeioth/heirline-components.nvim/,,
https://github.com/rebelot/heirline.nvim/,,
https://github.com/qvalentin/helm-ls.nvim/,,
https://github.com/OXY2DEV/helpview.nvim/,,
https://github.com/lmilojevicc/herdr-splits.nvim/,,
https://github.com/RaafatTurki/hex.nvim/,,
https://github.com/Yggdroot/hiPairs/,,
https://github.com/tzachar/highlight-undo.nvim/,,

View File

@@ -18,7 +18,7 @@ vscode-utils.buildVscodeMarketplaceExtension {
# it does not matter which binary is fetched. Using only a single
# hash makes this easier to maintain.
arch = "linux-x64";
hash = "sha256-tt7EjsMp60Qs9rngWYHPMMV+rBUt6FTZwkPoGb6Sl0w=";
hash = "sha256-/dRXNWsYV1dGfwrcr6auLhqhm7tUbWizwPsYM5eARww=";
};
nativeBuildInputs = [

View File

@@ -10,11 +10,11 @@
buildMozillaMach rec {
pname = "firefox-beta";
binaryName = "firefox-beta";
version = "154.0b9";
version = "154.0b10";
applicationName = "Firefox Beta";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "a374ecaf21678f0cca685eed7a09763b3f14ac3d4415c27227a4e06f050042df5e31ade4188d3ab7191102b811b1161638336b41d9de82b9527d39049fe0d3d2";
sha512 = "ddbe3ff45217a16df9eecfac52fcb12425accae76457e7054b20bd085f5b22908940a20448f213c3dc62d1276bb1c81f38194432336ba97459b2c17393ebd3cd";
};
meta = {

View File

@@ -10,13 +10,13 @@
buildMozillaMach rec {
pname = "firefox-devedition";
binaryName = "firefox-devedition";
version = "154.0b9";
version = "154.0b10";
applicationName = "Firefox Developer Edition";
requireSigning = false;
branding = "browser/branding/aurora";
src = fetchurl {
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "83d15ab019fd49076f21574770c27e04d431b5b230d4bb3246a2c9190e26ae3f626bdb8241905bc91b87803586f312e4f6cfd7ce7908e5766fb1aa6a0669cff6";
sha512 = "e2275579e4769a0690010d8fbba528a0e347d86f0dc981d1702b3e627d9c73f3fd7399d3e618c514bf6a3c0059fa3aa5a29f9cdec802e52955a03b1122ca8d39";
};
# buildMozillaMach sets MOZ_APP_REMOTINGNAME during configuration, but

View File

@@ -225,9 +225,13 @@ stdenv.mkDerivation (finalAttrs: {
mkdir -p $out/opt/${binaryName}/modules/discord_krisp/KMS/logs
# Chromium 148 multiplies Plasma's GTK DPI scale by the native Wayland surface
# scale, which makes the UI too large. See #551645
wrapProgramShell $out/opt/${binaryName}/${binaryName} \
"''${gappsWrapperArgs[@]}" \
--run 'case ":''${XDG_CURRENT_DESKTOP:-}:" in *:KDE:*) discordKdeWayland=1 ;; *) unset discordKdeWayland ;; esac' \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \
--add-flags "\''${WAYLAND_DISPLAY:+\''${discordKdeWayland:+--force-device-scale-factor=1}}" \
${lib.strings.optionalString withTTS ''
--run 'if [[ "''${NIXOS_SPEECH:-default}" != "False" ]]; then NIXOS_SPEECH=True; else unset NIXOS_SPEECH; fi' \
--add-flags "\''${NIXOS_SPEECH:+--enable-speech-dispatcher}" \

View File

@@ -36,13 +36,13 @@ let
in
stdenv.mkDerivation rec {
pname = "advanced-scene-switcher";
version = "1.35.1";
version = "1.36.1";
src = fetchFromGitHub {
owner = "WarmUpTill";
repo = "SceneSwitcher";
rev = version;
hash = "sha256-gfJtkX6OGqy+hUXvLXaOETvfIX+TRNEj0IwZnE9t81E=";
hash = "sha256-padrHEGUtgXV0ee5mgIHSLHjh+6npL/vZAEJ8nARML0=";
};
nativeBuildInputs = [

View File

@@ -16,62 +16,48 @@
alsa-lib,
stdenv,
libxcb,
bzip2,
cmake,
fontconfig,
freetype,
pkg-config,
makeWrapper,
writeShellScript,
patchelf,
}:
let
version = "0.17.0";
# Patch for airshipper to install veloren
patch =
let
runtimeLibs = [
udev
alsa-lib
(lib.getLib stdenv.cc.cc)
libxkbcommon
libxcb
libx11
libxcursor
libxrandr
libxi
vulkan-loader
libGL
];
in
writeShellScript "patch" ''
echo "making binaries executable"
chmod +x {veloren-voxygen,veloren-server-cli}
echo "patching dynamic linkers"
${patchelf}/bin/patchelf \
--set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
veloren-server-cli
# Patch for airshipper to install veloren client
patchVoxygen =
runtimeLibs:
writeShellScript "voxygen-patch" ''
echo "making veloren-voxygen executable"
chmod +x veloren-voxygen
echo "patching veloren-voxygen dynamic linker"
${patchelf}/bin/patchelf \
--set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
--set-rpath "${lib.makeLibraryPath runtimeLibs}" \
veloren-voxygen
'';
# Patch for airshipper to install veloren server
patchServer = writeShellScript "server-cli-patch" ''
echo "making veloren-server-cli executable"
chmod +x veloren-server-cli
echo "patching veloren-server-cli dynamic linker"
${patchelf}/bin/patchelf \
--set-interpreter "${stdenv.cc.bintools.dynamicLinker}" \
veloren-server-cli
'';
in
rustPlatform.buildRustPackage {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "airshipper";
inherit version;
version = "0.17.0";
src = fetchFromGitLab {
owner = "Veloren";
repo = "airshipper";
tag = "v${version}";
tag = "v${finalAttrs.version}";
hash = "sha256-M89RswC08MZnNfk2T1+rtDajTpDGTnJoZ2U8bU5U2+0=";
};
cargoHash = "sha256-ry0hFvMDnotDQu6mqgyt+6hKOvGRJLmZKs3SxEVtDRg=";
buildInputs = [
fontconfig
openssl
wayland
wayland-protocols
@@ -80,9 +66,10 @@ rustPlatform.buildRustPackage {
libxrandr
libxi
libxcursor
vulkan-loader
libGL
];
nativeBuildInputs = [
cmake
pkg-config
makeWrapper
];
@@ -94,30 +81,40 @@ rustPlatform.buildRustPackage {
install -Dm444 "client/assets/net.veloren.airshipper.png" "$out/share/icons/net.veloren.airshipper.png"
'';
postFixup =
let
libPath = lib.makeLibraryPath [
libGL
vulkan-loader
wayland
wayland-protocols
bzip2
fontconfig
freetype
libxkbcommon
libx11
libxrandr
libxi
libxcursor
];
in
''
# We set LD_LIBRARY_PATH instead of using patchelf in order to propagate the libs
# to both Airshipper itself as well as the binaries downloaded by Airshipper.
wrapProgram "$out/bin/airshipper" \
--set VELOREN_PATCHER "${patch}" \
--prefix LD_LIBRARY_PATH : "${libPath}"
'';
passthru = {
inherit patchVoxygen patchServer;
runtimeLibs = [
udev
alsa-lib
(lib.getLib stdenv.cc.cc)
libxkbcommon
libxcb
libx11
libxcursor
libxrandr
libxi
vulkan-loader
libGL
wayland
wayland-protocols
];
};
postFixup = ''
${patchelf}/bin/patchelf \
--set-rpath ${
lib.makeLibraryPath (
finalAttrs.buildInputs
++ [
(lib.getLib stdenv.cc.cc)
stdenv.cc.libc
]
)
} "$out/bin/airshipper"
wrapProgram "$out/bin/airshipper" \
--set VELOREN_VOXYGEN_PATCHER "${finalAttrs.passthru.patchVoxygen finalAttrs.passthru.runtimeLibs}" \
--set VELOREN_SERVER_CLI_PATCHER "${finalAttrs.passthru.patchServer}"
'';
doCheck = false;
cargoBuildFlags = [
@@ -136,4 +133,4 @@ rustPlatform.buildRustPackage {
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ yusdacra ];
};
}
})

View File

@@ -5,14 +5,14 @@
}:
stdenv.mkDerivation (finalAttrs: {
version = "2.2.2";
version = "2.3.0";
pname = "antidote";
src = fetchFromGitHub {
owner = "mattmc3";
repo = "antidote";
tag = "v${finalAttrs.version}";
hash = "sha256-K2IzFUkiuAdEsm7p0u9HVFB5DTOy3v4wSZk8io7i8dU=";
hash = "sha256-qPkXbKm0EEivwtQyuVcKPfQYPAJ4MDY/9h3dMzUmDqI=";
};
dontPatch = true;

View File

@@ -1,18 +1,18 @@
{
"version": "2.1.1",
"version": "2.5.5",
"vscodeVersion": "1.107.0",
"sources": {
"x86_64-linux": {
"url": "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/2.1.1-6123990880747520/linux-x64/Antigravity%20IDE.tar.gz",
"sha256": "5b2cebf7d33a68d003fd8f1fa988d1600905ace22504a085e5384214290878bd"
"url": "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/2.5.5-4923483625488384/linux-x64/Antigravity%20IDE.tar.gz",
"sha256": "0c5233b297d2b3aebb61af49f8944012c2953d361a5ebb16978490636917f831"
},
"aarch64-linux": {
"url": "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/2.1.1-6123990880747520/linux-arm/Antigravity%20IDE.tar.gz",
"sha256": "c6b6fef97cfc078ae7f92d02f9483a12437b6602c7d322a7d445668c2f0c16a6"
"url": "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/2.5.5-4923483625488384/linux-arm/Antigravity%20IDE.tar.gz",
"sha256": "88c167108980c33a223a8d7f0aa6aaf4dec61f0cc3950235a2698e9ffc38a49e"
},
"aarch64-darwin": {
"url": "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/2.1.1-6123990880747520/darwin-arm/Antigravity%20IDE.zip",
"sha256": "3491f5bc9faad111e5be6d9126bf5d566a0c591bd159a61ef0dcdd30c58672aa"
"url": "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/2.5.5-4923483625488384/darwin-arm/Antigravity%20IDE.zip",
"sha256": "33338ced839cb00fcc779ab96e4cdc79e06c894bc21cdb02249715286700c648"
}
}
}

View File

@@ -11,13 +11,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ast-grep";
version = "0.45.0";
version = "0.45.1";
src = fetchFromGitHub {
owner = "ast-grep";
repo = "ast-grep";
tag = finalAttrs.version;
hash = "sha256-njMkegbthIvJAI0tlSVg1G+/wRwSqWwXu4ZjM216Lys=";
hash = "sha256-YNn49WuILwe3gyvHSKh3dH5BZKhtR+YeSCCGDu0qulg=";
};
# error: linker `aarch64-linux-gnu-gcc` not found
@@ -25,7 +25,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
rm .cargo/config.toml
'';
cargoHash = "sha256-1i5NK6B1bT5UAac5VPVZcReFI24r6wboy+d1eSdbfXU=";
cargoHash = "sha256-6ZqV9SJes6++TJxcj/Dmi8DyaoTa164CKi4C/EyfnuQ=";
nativeBuildInputs = [ installShellFiles ];

View File

@@ -12,13 +12,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ausweisapp";
version = "2.5.4";
version = "2.5.5";
src = fetchFromGitHub {
owner = "Governikus";
repo = "AusweisApp";
rev = finalAttrs.version;
hash = "sha256-y9F/dQZHbUFDRZDpdGtNCjTIypS2l4XJLbUZHjliEDA=";
hash = "sha256-rxlJ2+IG0XmZ2Oyfk5n1TGDF76KhLahe8KvJ70QX5tQ=";
};
postPatch = ''

View File

@@ -10,17 +10,17 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "aver";
version = "0.27.1";
version = "0.28.1";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "jasisz";
repo = "aver";
tag = "v${finalAttrs.version}";
hash = "sha256-pP9+PBScmufBfSpaLPyG1Wn8W4U5TYm707EK3VmCPsA=";
hash = "sha256-xHaxfQCNLAeuvuiYVzYBjNu8f7KKojVjcnhZfpvdHTk=";
};
cargoHash = "sha256-/xfEl8VN9gY8L4e5UKRT+WuLb16vRH6hQdQ47y4/3uU=";
cargoHash = "sha256-ls1whoSoEcIBWzMuEI4vnzc896oDbPjbkwLaHJpYDvQ=";
cargoBuildFlags = [
"--workspace"

View File

@@ -68,6 +68,20 @@ stdenv.mkDerivation (finalAttrs: {
]
);
# AWS-LC's generated *-targets.cmake files hardcode _IMPORT_PREFIX to $out
# and set INTERFACE_INCLUDE_DIRECTORIES to "$out/include", but headers live
# in $dev/include under multi-output splitting. Clear the broken claim so
# consumers fall back to stdenv's normal include-path propagation via
# buildInputs (which correctly resolves to $dev/include).
postFixup = ''
for f in $out/lib/{crypto,ssl}/cmake/*/*-targets.cmake; do
substituteInPlace "$f" \
--replace-fail \
'INTERFACE_INCLUDE_DIRECTORIES "\$<\$<BOOL:1>:>;''${_IMPORT_PREFIX}/include"' \
'INTERFACE_INCLUDE_DIRECTORIES ""'
done
'';
__darwinAllowLocalNetworking = true;
passthru = {

View File

@@ -11,14 +11,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "aws-sam-cli";
version = "1.163.0";
version = "1.165.0";
pyproject = true;
src = fetchFromGitHub {
owner = "aws";
repo = "aws-sam-cli";
tag = "v${version}";
hash = "sha256-ydyuQHdLWet5+HkPCmHiKqTFY8+nVOXTlPFfOckzOXE=";
hash = "sha256-tEsKNhEAMQCsFemsb2Epnc6pVd2kDvOEceMhldqNZn4=";
};
build-system = with python3.pkgs; [ setuptools ];

View File

@@ -0,0 +1,46 @@
{
lib,
buildGoModule,
fetchFromGitHub,
makeBinaryWrapper,
nix-update-script,
shellcheck,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "bashd";
version = "0.2.3";
src = fetchFromGitHub {
owner = "matkrin";
repo = "bashd";
tag = "v${finalAttrs.version}";
hash = "sha256-KTfoOEdgPWVe/1HQnBsTOzhZDK1DP5NRiJewTh+DGmg=";
};
vendorHash = "sha256-B4szacVckxUeF0xndHX3T6FnGTF0BkGo9k8uZUWURVM=";
nativeBuildInputs = [ makeBinaryWrapper ];
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
ldflags = [
"-X main.VERSION=${finalAttrs.version}"
];
preFixup = ''
wrapProgram "$out/bin/bashd" --prefix PATH : ${lib.makeBinPath [ shellcheck ]}
'';
passthru.updateScript = nix-update-script { };
__structuredAttrs = true;
meta = {
homepage = "https://github.com/matkrin/bashd";
description = "Bash language server";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ supermarin ];
mainProgram = "bashd";
};
})

View File

@@ -19,13 +19,13 @@ in
llvmPackages.stdenv.mkDerivation (finalAttrs: {
pname = "c3c${optionalString debug "-debug"}";
version = "0.8.2";
version = "0.8.3";
src = fetchFromGitHub {
owner = "c3lang";
repo = "c3c";
tag = "v${finalAttrs.version}";
hash = "sha256-6XUMlF9SRQ9aqVRl5BQdELVsj/DyXhCnH85QrbK8Xxo=";
hash = "sha256-zOKAXagdhtz8GZn5ss4v0kB8mdPbs6ki3JyL6vRGavE=";
};
cmakeBuildType = if debug then "Debug" else "Release";

View File

@@ -68,7 +68,7 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "FETCHCONTENT_FULLY_DISCONNECTED" true)
(lib.cmakeBool "PACKAGING_MODE" true)
(lib.cmakeBool "BUILD_TESTS" finalAttrs.doCheck)
(lib.cmakeBool "BUILD_TESTS" finalAttrs.finalPackage.doCheck)
];
nativeBuildInputs = [

View File

@@ -20,9 +20,10 @@ _ = gettext.translation(
# The following strings contain pieces of a nix-configuration file.
# They are adapted from the default config generated from the nixos-generate-config command.
cfghead = """# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
cfghead = """\
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, pkgs, ... }:
@@ -33,20 +34,23 @@ cfghead = """# Edit this configuration file to define what should be installed o
];
"""
cfgbootefi = """ # Bootloader.
cfgbootefi = """\
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
"""
cfgbootbios = """ # Bootloader.
cfgbootbios = """\
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
boot.loader.grub.device = "@@bootdev@@";
boot.loader.grub.useOSProber = true;
"""
cfgbootbiosbtrfs = """ # Bootloader.
cfgbootbiosbtrfs = """\
# Use the GRUB 2 boot loader.
boot.loader.grub.enable = true;
boot.loader.grub.device = "@@bootdev@@";
boot.loader.grub.useOSProber = true;
@@ -55,12 +59,14 @@ cfgbootbiosbtrfs = """ # Bootloader.
"""
cfgbootnone = """ # Disable bootloader.
cfgbootnone = """\
# Disable bootloader.
boot.loader.grub.enable = false;
"""
cfgbootgrubcrypt = """ # Setup keyfile
cfgbootgrubcrypt = """\
# Setup keyfile
boot.initrd.secrets = {
"/boot/crypto_keyfile.bin" = null;
};
@@ -69,7 +75,8 @@ cfgbootgrubcrypt = """ # Setup keyfile
"""
cfgnetwork = """ networking.hostName = "@@hostname@@"; # Define your hostname.
cfgnetwork = """\
networking.hostName = "@@hostname@@"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
@@ -78,32 +85,38 @@ cfgnetwork = """ networking.hostName = "@@hostname@@"; # Define your hostname.
"""
cfgnetworkmanager = """ # Enable networking
cfgnetworkmanager = """\
# Enable networking
networking.networkmanager.enable = true;
"""
cfgconnman = """ # Enable networking
cfgconnman = """\
# Enable networking
services.connman.enable = true;
"""
cfgnmapplet = """ # Enable network manager applet
cfgnmapplet = """\
# Enable network manager applet
programs.nm-applet.enable = true;
"""
cfgtime = """ # Set your time zone.
cfgtime = """\
# Set your time zone.
time.timeZone = "@@timezone@@";
"""
cfglocale = """ # Select internationalisation properties.
cfglocale = """\
# Select internationalisation properties.
i18n.defaultLocale = "@@LANG@@";
"""
cfglocaleextra = """ i18n.extraLocaleSettings = {
cfglocaleextra = """\
i18n.extraLocaleSettings = {
LC_ADDRESS = "@@LC_ADDRESS@@";
LC_IDENTIFICATION = "@@LC_IDENTIFICATION@@";
LC_MEASUREMENT = "@@LC_MEASUREMENT@@";
@@ -117,16 +130,15 @@ cfglocaleextra = """ i18n.extraLocaleSettings = {
"""
cfggnome = """ # Enable the X11 windowing system.
services.xserver.enable = true;
cfggnome = """\
# Enable the GNOME Desktop Environment.
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
"""
cfgplasma6 = """ # Enable the X11 windowing system.
cfgplasma6 = """\
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = true;
@@ -136,7 +148,8 @@ cfgplasma6 = """ # Enable the X11 windowing system.
"""
cfgxfce = """ # Enable the X11 windowing system.
cfgxfce = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the XFCE Desktop Environment.
@@ -145,7 +158,8 @@ cfgxfce = """ # Enable the X11 windowing system.
"""
cfgpantheon = """ # Enable the X11 windowing system.
cfgpantheon = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Pantheon Desktop Environment.
@@ -154,7 +168,8 @@ cfgpantheon = """ # Enable the X11 windowing system.
"""
cfgcinnamon = """ # Enable the X11 windowing system.
cfgcinnamon = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Cinnamon Desktop Environment.
@@ -163,7 +178,8 @@ cfgcinnamon = """ # Enable the X11 windowing system.
"""
cfgmate = """ # Enable the X11 windowing system.
cfgmate = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the MATE Desktop Environment.
@@ -172,7 +188,8 @@ cfgmate = """ # Enable the X11 windowing system.
"""
cfgenlightenment = """ # Enable the X11 windowing system.
cfgenlightenment = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Enlightenment Desktop Environment.
@@ -184,7 +201,8 @@ cfgenlightenment = """ # Enable the X11 windowing system.
"""
cfglxqt = """ # Enable the X11 windowing system.
cfglxqt = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the LXQT Desktop Environment.
@@ -193,7 +211,8 @@ cfglxqt = """ # Enable the X11 windowing system.
"""
cfglumina = """ # Enable the X11 windowing system.
cfglumina = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Lumina Desktop Environment.
@@ -202,7 +221,8 @@ cfglumina = """ # Enable the X11 windowing system.
"""
cfgbudgie = """ # Enable the X11 windowing system.
cfgbudgie = """\
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Budgie Desktop environment.
@@ -211,19 +231,22 @@ cfgbudgie = """ # Enable the X11 windowing system.
"""
cfgkeymap = """ # Configure keymap in X11
cfgkeymap = """\
# Configure keymap in X11
services.xserver.xkb = {
layout = "@@kblayout@@";
variant = "@@kbvariant@@";
};
"""
cfgconsole = """ # Configure console keymap
cfgconsole = """\
# Configure console keymap
console.keyMap = "@@vconsole@@";
"""
cfgmisc = """ # Enable CUPS to print documents.
cfgmisc = """\
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
@@ -237,16 +260,16 @@ cfgmisc = """ # Enable CUPS to print documents.
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
# Use the WirePlumber session manager
#wireplumber.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# services.libinput.enable = true;
"""
cfgusers = """ # Define a user account. Don't forget to set a password with passwd.
cfgusers = """\
# Define a user account. Don't forget to set a password with passwd.
users.users."@@username@@" = {
isNormalUser = true;
description = "@@fullname@@";
@@ -256,43 +279,43 @@ cfgusers = """ # Define a user account. Don't forget to set a password with
"""
cfgfirefox = """ # Install firefox.
cfgfirefox = """\
# Install firefox.
programs.firefox.enable = true;
"""
cfgautologin = """ # Enable automatic login for the user.
cfgautologin = """\
# Enable automatic login for the user.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "@@username@@";
"""
cfgautologingdm = """ # Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
"""
cfgautologintty = """ # Enable automatic login for the user.
cfgautologintty = """\
# Enable automatic login for the user.
services.getty.autologinUser = "@@username@@";
"""
cfgunfree = """ # Allow unfree packages
cfgunfree = """\
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
"""
cfgpkgs = """ # List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
];
cfgpkgs = """\
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
# environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
# ];
"""
cfgtail = """ # Some programs need SUID wrappers, can be configured further or are
cfgtail = """\
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
@@ -311,18 +334,35 @@ cfgtail = """ # Some programs need SUID wrappers, can be configured further or
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
# to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "@@nixosversion@@"; # Did you read the comment?
}
"""
cfglatestkernel = """ # Use latest kernel.
cfglatestkernel = """\
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
"""
@@ -880,8 +920,6 @@ def run():
and gs.value("packagechooser_packagechooser") != ""
):
cfg += cfgautologin
if gs.value("packagechooser_packagechooser") == "gnome":
cfg += cfgautologingdm
elif gs.value("autoLoginUser") is not None:
cfg += cfgautologintty

View File

@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-xwin";
version = "0.23.0";
version = "0.23.1";
src = fetchFromGitHub {
owner = "rust-cross";
repo = "cargo-xwin";
rev = "v${finalAttrs.version}";
hash = "sha256-pWaJKk4XgBeY4llRTHvuMg0mAfEV4GFpeWGaM8eYsN4=";
hash = "sha256-JQYAYCCN/dWvX1oqFX/MjvtPuCA3k8WbHmmGBxG9ylA=";
};
cargoHash = "sha256-iO0uAYdi8Vy9gi7lHsGRmhDsVNQCqo4E/nbTfI32jDs=";
cargoHash = "sha256-FRK4bCTPAPWGov8vEFr9XdqCNoeXeyFdyiWV5x+4WYY=";
meta = {
description = "Cross compile Cargo project to Windows MSVC target with ease";

View File

@@ -7,14 +7,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "cewler";
version = "1.3.1";
version = "1.4.1";
pyproject = true;
src = fetchFromGitHub {
owner = "roys";
repo = "cewler";
rev = "v${version}";
hash = "sha256-Od9O71122jVwqZ5ntoBQQtyNQjt2RRbZT8DzWFPUN84=";
hash = "sha256-9P8vFacbw0pgthYqJY/aPuV39VQuMAA8o7yJ8HkD7RQ=";
};
nativeBuildInputs = with python3.pkgs; [

View File

@@ -1,39 +1,43 @@
{
lib,
rustPlatform,
fetchFromGitHub,
rustPlatform,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "chainsaw";
version = "2.16.2";
version = "2.16.3";
src = fetchFromGitHub {
owner = "WithSecureLabs";
repo = "chainsaw";
tag = "v${finalAttrs.version}";
hash = "sha256-EKL2MTo5qirpY4TCWwBptpRWJRd6Yp/dLz/5sIsdsbg=";
hash = "sha256-dG3WxAWnMBMlV3HxI9E7EDvZgK+qYZwRiZVNRf7jekY=";
};
cargoHash = "sha256-bbgRqp3bNw2U69aVqwvJNWOKgW0YhR8SlqzH9jdrHZU=";
cargoHash = "sha256-t9Adw4W7m1jWsLhwEtIgJjAWDxRkpOzssKe98InOExQ=";
ldflags = [
"-w"
"-s"
];
ldflags = [ "-s" ];
nativeBuildInputs = [ rustPlatform.bindgenHook ];
nativeInstallCheckInputs = [ versionCheckHook ];
checkFlags = [
# failed
# Tests are failing
"--skip=analyse_srum_database_json"
"--skip=search_jq_simple_string"
"--skip=search_q_jsonl_simple_string"
"--skip=search_q_simple_string"
];
doInstallCheck = true;
meta = {
description = "Rapidly Search and Hunt through Windows Forensic Artefacts";
homepage = "https://github.com/WithSecureLabs/chainsaw";
changelog = "https://github.com/WithSecureLabs/chainsaw/releases/tag/v${finalAttrs.version}";
changelog = "https://github.com/WithSecureLabs/chainsaw/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "chainsaw";

View File

@@ -2,6 +2,9 @@
lib,
buildGoModule,
fetchFromGitHub,
getent,
versionCheckHook,
writableTmpDirAsHomeHook,
}:
buildGoModule (finalAttrs: {
@@ -21,12 +24,23 @@ buildGoModule (finalAttrs: {
subPackages = [ "apps/cnspec" ];
nativeInstallCheckInputs = [
getent
writableTmpDirAsHomeHook
versionCheckHook
];
ldflags = [
"-s"
"-w"
"-X=go.mondoo.com/cnspec.Version=${finalAttrs.version}"
"-X=go.mondoo.com/cnspec/v${(lib.versions.major finalAttrs.version)}.Version=${finalAttrs.version}"
];
doInstallCheck = true;
versionCheckKeepEnvironment = "HOME PATH";
versionCheckProgramArg = [ "version" ];
meta = {
description = "Open source, cloud-native security and policy project";
homepage = "https://github.com/mondoohq/cnspec";
@@ -36,5 +50,6 @@ buildGoModule (finalAttrs: {
fab
mariuskimmina
];
mainProgram = "cnspec";
};
})

View File

@@ -49,7 +49,7 @@ stdenv.mkDerivation (finalAttrs: {
];
cmakeFlags = [
(lib.cmakeBool "OPT_COMPILE_TESTS" finalAttrs.doCheck)
(lib.cmakeBool "OPT_COMPILE_TESTS" finalAttrs.finalPackage.doCheck)
];
doCheck = true;

View File

@@ -74,7 +74,7 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "comfyui";
version = "0.32.0";
version = "0.33.1";
strictDeps = true;
__structuredAttrs = true;
@@ -83,7 +83,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
owner = "Comfy-Org";
repo = "ComfyUI";
tag = "v${finalAttrs.version}";
hash = "sha256-LlJHF/wEL8HhJAKw2DaxsoMltLpV3DtFWDlTW3AZZuI=";
hash = "sha256-r6amApYXBjfE8+UvhiJ/7VcUibd4kd5i+JLPXxo8H9w=";
};
nativeBuildInputs = [ makeBinaryWrapper ];

View File

@@ -12,13 +12,13 @@
stdenv,
}:
let
version = "7.2.1";
version = "7.3.0";
src = fetchFromGitHub {
owner = "Athou";
repo = "commafeed";
tag = version;
hash = "sha256-yZ73RX9yqZ1RPBglqW33F5pfWzduMd1O7P5FWhCoY6I=";
hash = "sha256-VCN8NBVGQl7/D3fESxiw3ipUoK3qBM0SSnEYBB0E+64=";
};
frontend = buildNpmPackage {
@@ -28,7 +28,7 @@ let
sourceRoot = "${src.name}/commafeed-client";
npmDepsHash = "sha256-rx7tAk9X6X0hpGs1arsLl5ItNUOnwud+7EgNMp7LwtE=";
npmDepsHash = "sha256-usdJEjW/Oz993Ik8JZnEQ08ArqmLx/3hSdhlUJgCrig=";
nativeBuildInputs = [ biome ];
@@ -54,7 +54,7 @@ maven.buildMavenPackage {
pname = "commafeed";
mvnHash = "sha256-2s95x2wVe+dsxpohu2OaK7y+o3Om9C/IBuLFEGM3TfQ=";
mvnHash = "sha256-Gi+KMrdSXlnI34wvAYnJffVCa3WUYkPEFIv382+mwj4=";
mvnJdk = jdk25;
mvnParameters = lib.escapeShellArgs [

View File

@@ -31,7 +31,10 @@ buildGoModule (finalAttrs: {
description = "Prometheus exporter based on eBPF";
homepage = "https://github.com/coroot/coroot-node-agent";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ errnoh ];
maintainers = with lib.maintainers; [
errnoh
allsimon
];
mainProgram = "coroot-node-agent";
};
})

View File

@@ -1,22 +0,0 @@
diff --git a/meson.build b/meson.build
index e9bea380..53e4373e 100644
--- a/meson.build
+++ b/meson.build
@@ -206,10 +206,16 @@ if asapodep.found()
indexamajig_sources += ['src/im-asapo.c']
endif
+if build_machine.system() == 'darwin' or build_machine.system() == 'freebsd' or not cc.links('#include <argp.h>\nstatic error_t parse_opt (int key, char *arg, struct argp_state *state) { argp_usage(state); return 0; }; void main() {}')
+ argpdep = cc.find_library('argp')
+else
+ argpdep = dependency('', required : false)
+endif
+
indexamajig = executable('indexamajig', indexamajig_sources,
dependencies: [mdep, rtdep, libcrystfeldep, gsldep,
pthreaddep, zmqdep, asapodep, asapoproddep,
- fftwdep, cjsondep],
+ fftwdep, cjsondep, argpdep],
install: true,
install_rpath: crystfel_rpath)

View File

@@ -122,10 +122,10 @@ let
xgandalf = stdenv.mkDerivation rec {
pname = "xgandalf";
version = "c6c5003ff1086e8c0fb5313660b4f02f3a3aab7b";
version = "8a63600ec778b155031adc3c151424aaced6a0cc";
src = fetchurl {
url = "https://gitlab.desy.de/thomas.white/xgandalf/-/archive/${version}/xgandalf-${version}.tar.gz";
hash = "sha256-/uZlBwAINSoYqgLQFTMz8rS1Rpadu79JkO6Bu/+Nx9E=";
hash = "sha256-UhFbpv+4qMwxEQIJpVpMzSg46P0vm0dkEyJDzxVu6XY=";
};
nativeBuildInputs = [
@@ -138,10 +138,10 @@ let
pinkIndexer = stdenv.mkDerivation rec {
pname = "pinkindexer";
version = "15caa21191e27e989b750b29566e4379bc5cd21a";
version = "85f3883f8c1fe98a03e5f3d371f2da4fee97894e";
src = fetchurl {
url = "https://gitlab.desy.de/thomas.white/pinkindexer/-/archive/${version}/pinkindexer-${version}.tar.gz";
hash = "sha256-v/SCJiHAV05Lc905y/dE8uBXlW+lLX9wau4XORYdbQg=";
hash = "sha256-W4COYdeESP0S2KhB2UdaJSbxNiFm5yyapKkmICDtP0A=";
};
nativeBuildInputs = [
@@ -154,10 +154,10 @@ let
fdip = stdenv.mkDerivation rec {
pname = "fdip";
version = "5628fedddd79323b4b26df9b85e9543d83286d4c";
version = "631792e90ed2c3e226dce77bf97917305293ac66";
src = fetchurl {
url = "https://gitlab.desy.de/thomas.white/fdip/-/archive/${version}/fdip-${version}.tar.gz";
hash = "sha256-EaihnW7p//ecgMn+KKlfmBeXrnAqs+HdhN+ovuSrtiQ=";
hash = "sha256-nnvOPl35NgtJ13fgWWAuVhtWT/JOk2DyYmBgI0ojZ2o=";
};
nativeBuildInputs = [
@@ -221,10 +221,10 @@ let
in
stdenv.mkDerivation rec {
pname = "crystfel";
version = "0.12.0";
version = "0.13.0";
src = fetchurl {
url = "https://www.desy.de/~twhite/crystfel/crystfel-${version}.tar.gz";
sha256 = "sha256-H/caXhsIdgsiat3UTi1QMF9J22dtyEB6YEIn9f8wWB4=";
sha256 = "sha256-6Fz7W8kRKlaTmnL+21t20UgkTjr3oC08IOzAGOseaQU=";
};
nativeBuildInputs = [
meson
@@ -261,12 +261,6 @@ stdenv.mkDerivation rec {
]
++ lib.optionals withBitshuffle [ hdf5-external-filter-plugins ];
patches = [
# on darwin at least, we need to link to a separate argp library;
# this patch adds a test for this and the necessary linker options
./link-to-argp-standalone-if-needed.patch
];
# CrystFEL calls mosflm by searching PATH for it. We could've create a wrapper script that sets the PATH, but
# we'd have to do that for every CrystFEL executable (indexamajig, crystfel, partialator). Better to just
# hard-code mosflm's path once.

View File

@@ -10,13 +10,13 @@
buildGoModule (finalAttrs: {
pname = "doppler";
version = "3.76.1";
version = "3.76.4";
src = fetchFromGitHub {
owner = "dopplerhq";
repo = "cli";
rev = finalAttrs.version;
hash = "sha256-8df60dWV/8ZezCAXVT7wmzCCB/TyljzAszv8sy7qRjU=";
hash = "sha256-GkM4pSmMIjoyOMPmtb4GoSrZdz69kL1s1r+krRhedR8=";
};
vendorHash = "sha256-rDpr4qWhMWXEhgZrmoW5tzPZif3KAv3gDtJNtXzbVq0=";

View File

@@ -1,467 +0,0 @@
From 82d4d8c458b9f18a14e83a3f5181ec8237c47790 Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 6 Jul 2026 17:24:50 +0200
Subject: [PATCH 1/5] Revert "portal: Clear the environment via flatpak
arguments"
This reverts commit a57f6bc3721059e48060e102de3367c6297e9e51.
The run-environ from the calling instance is a host-like environment
(e.g. on NixOS it contains /nix/store paths). Passing it via --env
injects it into the sandbox payload environment where those paths don't
exist.
Revert the commit, so we pass run-environ as the envp for spawning
flatpak run again to let it make host-level decisions (DISPLAY,
FLATPAK_GL_DRIVERS, XDG_RUNTIME_DIR, etc.) without leaking into the
sandbox.
It also passes --clear-env unconditionally, because we'd build up the
environment, but the wrong one. We will implement --clear-env properly
again in the next few commits.
Closes: #6717
Fixes: a57f6bc3 ("portal: Clear the environment via flatpak arguments")
---
portal/flatpak-portal.c | 54 +++++++++++++++++++++--------------------
1 file changed, 28 insertions(+), 26 deletions(-)
diff --git a/portal/flatpak-portal.c b/portal/flatpak-portal.c
index f9304464a6..ddf4996e16 100644
--- a/portal/flatpak-portal.c
+++ b/portal/flatpak-portal.c
@@ -64,6 +64,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (PortalFlatpakUpdateMonitorSkeleton, g_object_unre
/* Should be roughly 2 seconds */
#define CHILD_STATUS_CHECK_ATTEMPTS 20
+static GStrv original_environ = NULL;
static GHashTable *client_pid_data_hash = NULL;
static GDBusConnection *session_bus = NULL;
static GNetworkMonitor *network_monitor = NULL;
@@ -907,22 +908,17 @@ handle_spawn (PortalFlatpak *object,
return G_DBUS_METHOD_INVOCATION_HANDLED;
}
- if ((flatpak = g_getenv ("FLATPAK_PORTAL_MOCK_FLATPAK")) != NULL)
- g_ptr_array_add (flatpak_argv, g_strdup (flatpak));
- else if ((flatpak = g_getenv ("FLATPAK")) != NULL)
- g_ptr_array_add (flatpak_argv, g_strdup (flatpak));
+ /* TODO: Ideally we should let `flatpak run` inherit the run environment
+ * of the instance, in case e.g. a LD_LIBRARY_PATH is needed to be able
+ * to run `flatpak run`, but tell it to start from a blank environment
+ * when running the Flatpak app; but this isn't currently possible, so
+ * for now we preserve existing behaviour. */
+ if (arg_flags & FLATPAK_SPAWN_FLAGS_CLEAR_ENV)
+ {
+ char *empty[] = { NULL };
+ env = g_strdupv (empty);
+ }
else
- g_ptr_array_add (flatpak_argv, g_strdup (FLATPAK_BINDIR "/flatpak"));
-
- g_ptr_array_add (flatpak_argv, g_strdup ("run"));
-
- /* If we don't clear the env, the flatpak portal service environment would
- * leak into the flatpak instance. By default we reuse the environment of
- * the calling instance by passing it as arguments after the --clear-env.
- */
- g_ptr_array_add (flatpak_argv, g_strdup ("--clear-env"));
-
- if (!(arg_flags & FLATPAK_SPAWN_FLAGS_CLEAR_ENV))
{
static const char * const mock_run_environ[] = { "FOO=bar", NULL };
@@ -935,8 +931,8 @@ handle_spawn (PortalFlatpak *object,
{
if (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
{
- g_warning ("Environment for \"flatpak run\" was not found, "
- "falling back to a clean environment");
+ g_warning ("Environment for \"flatpak run\" was not found, falling back to current environment");
+ env = g_strdupv (original_environ);
}
else
{
@@ -947,16 +943,17 @@ handle_spawn (PortalFlatpak *object,
return G_DBUS_METHOD_INVOCATION_HANDLED;
}
}
- else
- {
- for (i = 0; env != NULL && env[i] != NULL; i++)
- {
- g_string_append (env_string, env[i]);
- g_string_append_c (env_string, '\0');
- }
- }
}
+ if ((flatpak = g_getenv ("FLATPAK_PORTAL_MOCK_FLATPAK")) != NULL)
+ g_ptr_array_add (flatpak_argv, g_strdup (flatpak));
+ else if ((flatpak = g_getenv ("FLATPAK")) != NULL)
+ g_ptr_array_add (flatpak_argv, g_strdup (flatpak));
+ else
+ g_ptr_array_add (flatpak_argv, g_strdup (FLATPAK_BINDIR "/flatpak"));
+
+ g_ptr_array_add (flatpak_argv, g_strdup ("run"));
+
sandboxed = (arg_flags & FLATPAK_SPAWN_FLAGS_SANDBOX) != 0;
if (sandboxed)
@@ -1507,7 +1504,7 @@ handle_spawn (PortalFlatpak *object,
* to work around a deadlock in GLib < 2.60 */
if (!g_spawn_async_with_pipes (NULL,
(char **) flatpak_argv->pdata,
- NULL,
+ env,
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_LEAVE_DESCRIPTORS_OPEN,
child_setup_func, &child_setup_data,
&pid,
@@ -3017,6 +3014,10 @@ main (int argc,
{ NULL }
};
+ /* Save the enviroment before changing anything, so that subprocesses
+ * can get the unchanged version */
+ original_environ = g_get_environ ();
+
setlocale (LC_ALL, "");
g_setenv ("GIO_USE_VFS", "local", TRUE);
@@ -3119,5 +3120,6 @@ main (int argc,
main_loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (main_loop);
+ g_strfreev (original_environ);
return 0;
}
From 08bb74fde8d53fef1b236454c673c70f6d78bea4 Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 6 Jul 2026 17:36:13 +0200
Subject: [PATCH 2/5] portal: Clear error after warning to avoid issues on the
next error
---
portal/flatpak-portal.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/portal/flatpak-portal.c b/portal/flatpak-portal.c
index ddf4996e16..d59b3d6265 100644
--- a/portal/flatpak-portal.c
+++ b/portal/flatpak-portal.c
@@ -942,6 +942,8 @@ handle_spawn (PortalFlatpak *object,
error->message);
return G_DBUS_METHOD_INVOCATION_HANDLED;
}
+
+ g_clear_error (&error);
}
}
From 700f17e94c4e26cfea051c0fdc82314d8d10d009 Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 6 Jul 2026 17:36:41 +0200
Subject: [PATCH 3/5] portal: Pass run-environ to the spawned flatpak process,
not the sandbox
Instead of modifying the host-like run environment to clear the sandbox
environment, we'll use the new --clear-env flag which does the correct
thing.
Assisted-by: Claude:opus-4.6
Closes: #5271
---
portal/flatpak-portal.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/portal/flatpak-portal.c b/portal/flatpak-portal.c
index d59b3d6265..5cd2e98bff 100644
--- a/portal/flatpak-portal.c
+++ b/portal/flatpak-portal.c
@@ -908,17 +908,6 @@ handle_spawn (PortalFlatpak *object,
return G_DBUS_METHOD_INVOCATION_HANDLED;
}
- /* TODO: Ideally we should let `flatpak run` inherit the run environment
- * of the instance, in case e.g. a LD_LIBRARY_PATH is needed to be able
- * to run `flatpak run`, but tell it to start from a blank environment
- * when running the Flatpak app; but this isn't currently possible, so
- * for now we preserve existing behaviour. */
- if (arg_flags & FLATPAK_SPAWN_FLAGS_CLEAR_ENV)
- {
- char *empty[] = { NULL };
- env = g_strdupv (empty);
- }
- else
{
static const char * const mock_run_environ[] = { "FOO=bar", NULL };
@@ -956,6 +945,9 @@ handle_spawn (PortalFlatpak *object,
g_ptr_array_add (flatpak_argv, g_strdup ("run"));
+ if (arg_flags & FLATPAK_SPAWN_FLAGS_CLEAR_ENV)
+ g_ptr_array_add (flatpak_argv, g_strdup ("--clear-env"));
+
sandboxed = (arg_flags & FLATPAK_SPAWN_FLAGS_SANDBOX) != 0;
if (sandboxed)
From 04aa33fbb0f207aae43ef90c38d5b6bbaff0df62 Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 6 Jul 2026 17:40:49 +0200
Subject: [PATCH 4/5] portal: Cleanup getting the host-like environment for
flatpak-run
---
portal/flatpak-portal.c | 58 ++++++++++++++++++++++-------------------
1 file changed, 31 insertions(+), 27 deletions(-)
diff --git a/portal/flatpak-portal.c b/portal/flatpak-portal.c
index 5cd2e98bff..183d3fe477 100644
--- a/portal/flatpak-portal.c
+++ b/portal/flatpak-portal.c
@@ -908,33 +908,37 @@ handle_spawn (PortalFlatpak *object,
return G_DBUS_METHOD_INVOCATION_HANDLED;
}
- {
- static const char * const mock_run_environ[] = { "FOO=bar", NULL };
-
- if (testing)
- env = g_strdupv ((GStrv) mock_run_environ);
- else
- env = flatpak_instance_get_run_environ (instance, &error);
-
- if (env == NULL)
- {
- if (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
- {
- g_warning ("Environment for \"flatpak run\" was not found, falling back to current environment");
- env = g_strdupv (original_environ);
- }
- else
- {
- g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
- G_DBUS_ERROR_INVALID_ARGS,
- "Could not load environment for \"flatpak run\": %s",
- error->message);
- return G_DBUS_METHOD_INVOCATION_HANDLED;
- }
-
- g_clear_error (&error);
- }
- }
+ /* Pass the calling instance's run-environ as the envp for spawning
+ * flatpak run, so it can make host-level decisions (DISPLAY, GL drivers,
+ * XDG_RUNTIME_DIR, etc.) based on the original environment. This must NOT
+ * go into --env-fd, because run-environ is host-like and --env-fd injects
+ * into the sandbox payload environment.
+ */
+ {
+ static const char * const mock_run_environ[] = { "FOO=bar", NULL };
+
+ if (testing)
+ env = g_strdupv ((GStrv) mock_run_environ);
+ else
+ env = flatpak_instance_get_run_environ (instance, &error);
+
+ if (env == NULL)
+ {
+ if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
+ {
+ g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR,
+ G_DBUS_ERROR_INVALID_ARGS,
+ "Could not load environment for \"flatpak run\": %s",
+ error->message);
+ return G_DBUS_METHOD_INVOCATION_HANDLED;
+ }
+
+ g_clear_error (&error);
+ g_warning ("Environment for \"flatpak run\" was not found, "
+ "falling back to current environment");
+ env = g_strdupv (original_environ);
+ }
+ }
if ((flatpak = g_getenv ("FLATPAK_PORTAL_MOCK_FLATPAK")) != NULL)
g_ptr_array_add (flatpak_argv, g_strdup (flatpak));
From 254b24275567178626b5efb5d6ead2b0c2483cb7 Mon Sep 17 00:00:00 2001
From: Sebastian Wick <sebastian.wick@redhat.com>
Date: Mon, 29 Jun 2026 15:11:26 +0200
Subject: [PATCH 5/5] portal: Test that the different envs get created as
expected
Assisted-by: Claude:opus-4.6
---
tests/mock-flatpak.c | 15 +++++-
tests/test-portal.c | 113 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 127 insertions(+), 1 deletion(-)
diff --git a/tests/mock-flatpak.c b/tests/mock-flatpak.c
index c340c781c9..ac27c4d031 100644
--- a/tests/mock-flatpak.c
+++ b/tests/mock-flatpak.c
@@ -28,7 +28,8 @@
int
main (int argc,
- char **argv)
+ char **argv,
+ char **envp)
{
int i;
@@ -37,6 +38,18 @@ main (int argc,
for (i = 0; i < argc; i++)
g_print ("argv[%d] = %s\n", i, argv[i]);
+ for (i = 0; envp != NULL && envp[i] != NULL; i++)
+ {
+ const char *eq = strchr (envp[i], '=');
+
+ if (eq != NULL)
+ {
+ g_autofree char *key = g_strndup (envp[i], eq - envp[i]);
+
+ g_print ("inherited[%s] = %s\n", key, eq + 1);
+ }
+ }
+
for (i = 0; i < argc; i++)
{
if (g_str_has_prefix (argv[i], "--env-fd="))
diff --git a/tests/test-portal.c b/tests/test-portal.c
index 4d9e6385b8..40df8241a7 100644
--- a/tests/test-portal.c
+++ b/tests/test-portal.c
@@ -422,6 +422,118 @@ test_fd_passing (Fixture *f,
}
}
+static char *
+spawn_and_capture_output (Fixture *f,
+ guint flags,
+ GVariant *envs)
+{
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GUnixFDList) fds_in = g_unix_fd_list_new ();
+ g_autoptr(GUnixFDList) fds_out = NULL;
+ g_auto(GVariantBuilder) fd_map_builder = {};
+ g_autofree char *stdout_path = NULL;
+ glnx_autofd int stdout_fd = -1;
+ guint pid;
+ gboolean ok;
+ const char * const argv[] = { "hello", NULL };
+ gsize times_exited = 0;
+ gulong handler_id;
+ char *output;
+ int handle;
+
+ stdout_path = g_strdup ("/tmp/flatpak-portal-test.XXXXXX");
+ stdout_fd = g_mkstemp (stdout_path);
+ g_assert_no_errno (stdout_fd);
+ g_assert_no_errno (unlink (stdout_path));
+
+ g_variant_builder_init (&fd_map_builder, G_VARIANT_TYPE ("a{uh}"));
+
+ handle = g_unix_fd_list_append (fds_in, stdout_fd, &error);
+ g_assert_no_error (error);
+ g_variant_builder_add (&fd_map_builder, "{uh}",
+ (guint32) STDOUT_FILENO, (gint32) handle);
+
+ handler_id = g_signal_connect (f->proxy, "spawn-exited",
+ G_CALLBACK (count_successful_exit_cb),
+ &times_exited);
+
+ ok = portal_flatpak_call_spawn_sync (f->proxy,
+ "/",
+ argv,
+ g_variant_builder_end (&fd_map_builder),
+ envs,
+ flags,
+ g_variant_new ("a{sv}", NULL),
+ fds_in,
+ &pid,
+ &fds_out,
+ NULL,
+ &error);
+ g_assert_no_error (error);
+ g_assert_true (ok);
+
+ while (times_exited == 0)
+ g_main_context_iteration (NULL, TRUE);
+
+ g_signal_handler_disconnect (f->proxy, handler_id);
+
+ g_assert_no_errno (lseek (stdout_fd, 0, SEEK_SET));
+ output = glnx_fd_readall_utf8 (stdout_fd, NULL, NULL, &error);
+ g_assert_no_error (error);
+ g_assert_nonnull (output);
+
+ return output;
+}
+
+static void
+test_spawn_env (Fixture *f,
+ gconstpointer context G_GNUC_UNUSED)
+{
+ g_autofree char *output = NULL;
+
+ fixture_start_portal (f);
+
+ /* The mock run-environ (FOO=bar) should be in the spawned process
+ * environment, not injected into the sandbox via --env-fd */
+ output = spawn_and_capture_output (f, FLATPAK_SPAWN_FLAGS_NONE,
+ g_variant_new ("a{ss}", NULL));
+ g_test_message ("Output (default): %s", output);
+ g_assert_nonnull (strstr (output, "inherited[FOO] = bar"));
+ g_assert_null (strstr (output, "env[FOO] = bar"));
+ g_assert_null (strstr (output, "--clear-env"));
+ g_clear_pointer (&output, g_free);
+
+ /* With CLEAR_ENV, --clear-env should be passed to flatpak run, but
+ * the run-environ should still be in the spawned process environment */
+ output = spawn_and_capture_output (f, FLATPAK_SPAWN_FLAGS_CLEAR_ENV,
+ g_variant_new ("a{ss}", NULL));
+ g_test_message ("Output (clear-env): %s", output);
+ g_assert_nonnull (strstr (output, "inherited[FOO] = bar"));
+ g_assert_null (strstr (output, "env[FOO] = bar"));
+ g_assert_nonnull (strstr (output, "--clear-env"));
+ g_clear_pointer (&output, g_free);
+
+ /* Env vars passed explicitly via D-Bus arg_envs should end up in
+ * --env-fd (sandbox payload), not in the process environment */
+ {
+ g_auto(GVariantBuilder) env_builder = {};
+
+ g_variant_builder_init (&env_builder, G_VARIANT_TYPE ("a{ss}"));
+ g_variant_builder_add (&env_builder, "{ss}", "BAZ", "qux");
+
+ output = spawn_and_capture_output (f, FLATPAK_SPAWN_FLAGS_NONE,
+ g_variant_builder_end (&env_builder));
+ g_test_message ("Output (with arg_envs): %s", output);
+ g_assert_nonnull (strstr (output, "env[BAZ] = qux"));
+ g_assert_null (strstr (output, "inherited[BAZ] = qux"));
+ g_assert_nonnull (strstr (output, "inherited[FOO] = bar"));
+ g_clear_pointer (&output, g_free);
+ }
+
+ g_subprocess_send_signal (f->portal, SIGTERM);
+ g_subprocess_wait (f->portal, NULL, NULL);
+}
+
static void
test_replace (Fixture *f,
gconstpointer context G_GNUC_UNUSED)
@@ -478,6 +590,7 @@ main (int argc,
g_test_add ("/help", Fixture, NULL, setup, test_help, teardown);
g_test_add ("/basic", Fixture, NULL, setup, test_basic, teardown);
g_test_add ("/fd-passing", Fixture, NULL, setup, test_fd_passing, teardown);
+ g_test_add ("/spawn-env", Fixture, NULL, setup, test_spawn_env, teardown);
g_test_add ("/replace", Fixture, NULL, setup, test_replace, teardown);
return g_test_run ();

View File

@@ -80,7 +80,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "flatpak";
version = "1.18.0";
version = "1.18.1";
# TODO: split out lib once we figure out what to do with triggerdir
outputs = [
@@ -98,7 +98,7 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchurl {
url = "https://github.com/flatpak/flatpak/releases/download/${finalAttrs.version}/flatpak-${finalAttrs.version}.tar.xz";
hash = "sha256-pYV6ZsQDndoF2SvcsrAz14jNJYlhAWfw7F8OyNT6xvI=";
hash = "sha256-vGg/yRbtIcBSS7Bk81jCrBhYa47IjHby9/KJh3UhYxw=";
};
patches = [
@@ -115,10 +115,6 @@ stdenv.mkDerivation (finalAttrs: {
# https://github.com/NixOS/nixpkgs/issues/53441
./unset-env-vars.patch
# Fix portal flatpak-spawn environment handling regression
# https://github.com/flatpak/flatpak/pull/6721
./flatpak-spawn-env.patch
# The icon validator needs to access the gdk-pixbuf loaders in the Nix store
# and cannot bind FHS paths since those are not available on NixOS.
finalAttrs.passthru.icon-validator-patch

View File

@@ -0,0 +1,111 @@
{
lib,
fetchFromGitHub,
rustPlatform,
pkg-config,
makeWrapper,
alsa-lib,
ffmpeg,
fontconfig,
freetype,
libdrm,
libGL,
libx11,
libxcb,
libxkbcommon,
vulkan-loader,
wayland,
}:
let
cargoFlags = [
"--package"
"frame-app"
];
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "frame-media-converter";
version = "0.31.1";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "66HEX";
repo = "frame";
tag = finalAttrs.version;
hash = "sha256-QBwwa5z0BbNa0p7MbV2J+K+NOe0cFxXq9LyvalKTMFY=";
};
cargoHash = "sha256-HJZEY4noPypIXHB6ZMtPKuBawaMmmEpVbfo44v6tKws=";
cargoBuildFlags = cargoFlags;
cargoTestFlags = cargoFlags;
nativeBuildInputs = [
makeWrapper
pkg-config
];
buildInputs = [
alsa-lib
fontconfig
freetype
libdrm
libGL
libx11
libxcb
libxkbcommon
vulkan-loader
wayland
];
postInstall = ''
install -Dm444 frame-app/resources/frame.desktop.in \
$out/share/applications/frame.desktop
substituteInPlace $out/share/applications/frame.desktop \
--replace-fail '$APP_NAME' Frame \
--replace-fail '$APP_CLI' frame \
--replace-fail '$APP_ICON' frame
for icon in \
32:32x32.png \
64:64x64.png \
128:128x128.png \
256:128x128@2x.png \
512:icon.png
do
size="''${icon%%:*}"
file="''${icon#*:}"
install -Dm444 "frame-app/resources/app-icons/$file" \
"$out/share/icons/hicolor/''${size}x''${size}/apps/frame.png"
done
'';
postFixup = ''
patchelf $out/bin/frame --add-rpath ${
lib.makeLibraryPath [
libGL
vulkan-loader
wayland
]
}
wrapProgram $out/bin/frame \
--prefix PATH : ${lib.makeBinPath [ ffmpeg ]} \
--set FRAME_USE_SYSTEM_MEDIA_TOOLS 1 \
--set FRAME_UPDATE_EXPLANATION \
'This Nixpkgs build is managed by Nix. Install updates through your Nix profile, flake, or NixOS configuration.'
'';
meta = {
description = "Native desktop interface for FFmpeg media conversion";
homepage = "https://github.com/66HEX/frame";
changelog = "https://github.com/66HEX/frame/blob/${finalAttrs.version}/CHANGELOG.md";
license = lib.licenses.gpl3Plus;
mainProgram = "frame";
maintainers = [ lib.maintainers._66HEX ];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
};
})

View File

@@ -7,13 +7,13 @@
buildDotnetModule rec {
pname = "gh-gei";
version = "1.31.0";
version = "1.32.0";
src = fetchFromGitHub {
owner = "github";
repo = "gh-gei";
rev = "v${version}";
hash = "sha256-i79W9XYIwa0R0gsH9FwcBsY7UzMjACfjk9S4D9GWpsY=";
hash = "sha256-i7XWGYDB5izL6QH8BRCppz01xNuBDGNy0rMCxSuQFXU=";
};
dotnet-sdk = dotnetCorePackages.sdk_8_0_4xx;

View File

@@ -30,6 +30,10 @@ buildGoModule (finalAttrs: {
"-X=github.com/github/gh-stack/cmd.Version=${finalAttrs.version}"
];
postInstall = ''
install -Dm444 skills/gh-stack/SKILL.md $out/share/skills/gh-stack/gh-stack/SKILL.md
'';
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;

View File

@@ -7,16 +7,16 @@
}:
buildGoModule rec {
pname = "git-pkgs";
version = "0.18.2";
version = "0.19.0";
src = fetchFromGitHub {
owner = "git-pkgs";
repo = "git-pkgs";
tag = "v${version}";
hash = "sha256-C4T4xkNrMIMuRLhua0fTXDpIz0qq5EaqVnSKWUc7Sm0=";
hash = "sha256-G2YcixQ7NrljVKhpset7bc/dmqcc3cgQyMMWlJmKSDw=";
};
vendorHash = "sha256-d5Me/VgXXC2FyxG17rXg1FmOIi1fJqBmBU+bF5u0j/8=";
vendorHash = "sha256-r8VGoLtgE36UsV2Eg8kOJ62LG7qMTGR6/zDOayZ/aVI=";
subPackages = [ "." ];

View File

@@ -30,7 +30,7 @@ let
inherit (finalAttrs) pname version src;
inherit pnpm;
fetcherVersion = 4;
hash = "sha256-VAXSj+AYV6uEdCAD/sEzeydqn4cqNL+ITfrGq41jaLI=";
hash = "sha256-rduD3GqgdUlF95HTnKe8smToyHop4RrO6QDTRzh2RCk=";
};
nativeBuildInputs = [
@@ -53,13 +53,13 @@ let
in
buildGoModule (finalAttrs: {
pname = "gitea";
version = "1.27.1";
version = "1.27.2";
src = fetchFromGitHub {
owner = "go-gitea";
repo = "gitea";
tag = "v${finalAttrs.version}";
hash = "sha256-OCThp8432WAD+9v7c7phY2u4JndXAfve4XRbJTLdn6g=";
hash = "sha256-376YyRYcZGya/k5zg2zL2iqtrE7r2Q/DMd3DbOnKyOA=";
};
proxyVendor = true;

View File

@@ -10,17 +10,17 @@
buildGoModule (finalAttrs: {
pname = "go-mockery";
version = "3.5.5";
version = "3.7.2";
src = fetchFromGitHub {
owner = "vektra";
repo = "mockery";
tag = "v${finalAttrs.version}";
hash = "sha256-paoI7KkpLbpQyEwS/oW8Ck9KiJRTUxzFzihsnFyhrCw=";
hash = "sha256-lPyoWjLaRhE4SpVahJd8T3LsCyfdFMIsuxmWODRoLL0=";
};
proxyVendor = true;
vendorHash = "sha256-YOhlytIMgMHwj2BM/6vOeheyQd4nUuDWpkwLdCqru8c=";
vendorHash = "sha256-izMi4MqbfKX1PmNMWyCwBOWqiPZfth/ZSzsuEcTN6Pg=";
ldflags = [
"-s"
@@ -41,8 +41,11 @@ buildGoModule (finalAttrs: {
prePatch = ''
# remove test.ci's dependency on lint since we don't need it and
# it tries to use remote golangci-lint
# remove test.ci's git-state check, which runs `git diff --exit-code`;
# the source has no .git directory, so the check cannot work here
substituteInPlace Taskfile.yml \
--replace-fail "deps: [lint]" "" \
--replace-fail " - task: git-state" "" \
--replace-fail "go run gotest.tools/gotestsum" "gotestsum"
# patch scripts used in e2e testing

View File

@@ -1,34 +0,0 @@
diff --git a/src/rig-selector.c b/src/rig-selector.c
index 425d41a..e040c0e 100644
--- a/src/rig-selector.c
+++ b/src/rig-selector.c
@@ -46,7 +46,7 @@ static void add (GtkWidget *, gpointer);
static void delete (GtkWidget *, gpointer);
static void edit (GtkWidget *, gpointer);
static void cancel (GtkWidget *, gpointer);
-static void connect (GtkWidget *, gpointer);
+static void connectrig (GtkWidget *, gpointer);
static void selection_changed (GtkTreeSelection *sel, gpointer data);
static void render_civ (GtkTreeViewColumn *col,
@@ -191,7 +191,7 @@ rig_selector_execute ()
g_signal_connect (G_OBJECT (cancbut), "clicked",
G_CALLBACK (cancel), window);
g_signal_connect (G_OBJECT (conbut), "clicked",
- G_CALLBACK (connect), window);
+ G_CALLBACK (connectrig), window);
g_signal_connect (G_OBJECT (delbut), "clicked",
G_CALLBACK (delete), NULL);
g_signal_connect (G_OBJECT (newbut), "clicked",
@@ -439,7 +439,7 @@ static void cancel (GtkWidget *button, gpointer window)
* simply destroys the rig selector window and whereby control is returned
* to the main() function.
*/
-static void connect (GtkWidget *button, gpointer window)
+static void connectrig (GtkWidget *button, gpointer window)
{
--
2.47.0

View File

@@ -1,53 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
wrapGAppsHook3,
gtk2,
hamlib_4,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "grig";
version = "0.9.0";
src = fetchFromGitHub {
owner = "fillods";
repo = "grig";
rev = "GRIG-${lib.replaceStrings [ "." ] [ "_" ] finalAttrs.version}";
sha256 = "sha256-OgIgHW9NMW/xSSti3naIR8AQWUtNSv5bYdOcObStBlM=";
};
patches = [
# https://github.com/fillods/grig/issues/22
./0001-Fix-grig-for-hamlib-4.6.2.patch
];
nativeBuildInputs = [
autoreconfHook
pkg-config
wrapGAppsHook3
];
buildInputs = [
hamlib_4
gtk2
];
meta = {
description = "Simple Ham Radio control (CAT) program based on Hamlib";
mainProgram = "grig";
longDescription = ''
Grig is a graphical user interface for the Ham Radio Control Libraries.
It is intended to be simple and generic, presenting the user with the
same interface regardless of which radio they use.
'';
homepage = "https://groundstation.sourceforge.net/grig/";
license = lib.licenses.gpl2;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [
mafo
];
};
})

View File

@@ -8,14 +8,14 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "harper-desktop";
version = "2.7.0";
version = "2.8.0";
__structuredAttrs = true;
strictDeps = true;
src = fetchurl {
url = "https://github.com/Automattic/harper/releases/download/v${finalAttrs.version}/Harper_${finalAttrs.version}_universal.dmg";
hash = "sha256-/hVrBnfCun4nmx1k8eJZHdP5pZBJ52GpKkjt9gJ8FC0=";
hash = "sha256-qF9FGsSGzf9lD1jXutFgKTGmgKdgSDXKraFKPA3tvJY=";
};
sourceRoot = ".";

View File

@@ -9,7 +9,7 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "harper";
version = "2.7.0";
version = "2.8.0";
__structuredAttrs = true;
strictDeps = true;
@@ -17,10 +17,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
owner = "Automattic";
repo = "harper";
rev = "v${finalAttrs.version}";
hash = "sha256-neXBLfpqrrT7GWTEVs03AA5+ixSLIrRUuzRdXsXfS4Q=";
hash = "sha256-jbJ2bYLIhxd6troB6JAKYmhvfhU+kwmOSYZpWCIjxpQ=";
};
cargoHash = "sha256-dp2VPKoOVmB1rD8ET5I3zAvGKZQMmw5wdWUwr3TMk+k=";
cargoHash = "sha256-ZxRG79CggsM8MbeXMCKU5/N7vlng3xex/mAfYkkDwew=";
cargoBuildFlags = [
"--package=harper-cli"
@@ -33,8 +33,13 @@ rustPlatform.buildRustPackage (finalAttrs: {
];
passthru = {
tests = vscode-extensions.elijah-potter.harper;
updateScript = nix-update-script { };
tests.vscode = vscode-extensions.elijah-potter.harper;
updateScript = nix-update-script {
extraArgs = [
"--subpackage"
"tests.vscode"
];
};
};
nativeInstallCheckInputs = [

View File

@@ -111,7 +111,7 @@ stdenv.mkDerivation (finalAttrs: {
filecheck
];
postPatch = lib.optionalString finalAttrs.doCheck ''
postPatch = lib.optionalString finalAttrs.finalPackage.doCheck ''
# These tests don't run without setting UR_DPCXX,
# however they aren't properly excluded, causing lit to fail.
rm test/adapters/hip/lit.cfg.py
@@ -139,9 +139,9 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "UR_ENABLE_LATENCY_HISTOGRAM" true)
(lib.cmakeBool "UR_BUILD_TESTS" finalAttrs.doCheck)
(lib.cmakeBool "UR_BUILD_TESTS" finalAttrs.finalPackage.doCheck)
# The test hello_world.test depends on the hello_world example, so build examples when testing
(lib.cmakeBool "UR_BUILD_EXAMPLES" finalAttrs.doCheck)
(lib.cmakeBool "UR_BUILD_EXAMPLES" finalAttrs.finalPackage.doCheck)
(lib.cmakeBool "UR_BUILD_ADAPTER_L0" levelZeroSupport)
(lib.cmakeBool "UR_BUILD_ADAPTER_L0_V2" levelZeroSupport)

View File

@@ -10,7 +10,7 @@
}:
stdenv.mkDerivation rec {
version = "0.136.0";
version = "0.141.0";
pname = "jbang";
__structuredAttrs = true;
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
src = fetchzip {
url = "https://github.com/jbangdev/jbang/releases/download/v${version}/${pname}-${version}.tar";
sha256 = "sha256-MsP4iLquOwJWlV7EPxSuAPWuyTv1PPSyQCrVdq4lPlM=";
sha256 = "sha256-fw87WrmqdVH+NJ+rAnuMukz7qMTRg6CMgLVg/+JPahI=";
};
nativeBuildInputs = [ makeWrapper ];

View File

@@ -45,7 +45,7 @@ stdenv.mkDerivation (finalAttrs: {
cmakeFlags = [
(lib.cmakeBool "JRL_CMAKEMODULES_GENERATE_API_DOC" true)
(lib.cmakeBool "JRL_CMAKEMODULES_BUILD_TESTS" finalAttrs.doCheck)
(lib.cmakeBool "JRL_CMAKEMODULES_BUILD_TESTS" finalAttrs.finalPackage.doCheck)
];
doCheck = true;

View File

@@ -15,7 +15,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "lcevcdec";
version = "4.2.0";
version = "4.2.1";
outputs = [
"out"
@@ -27,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "v-novaltd";
repo = "LCEVCdec";
tag = finalAttrs.version;
hash = "sha256-EVp+ucydbBWlMMXbldkwDEbFlM88UIts8f/PspIqqSY=";
hash = "sha256-syVpcbBPpWGRZ/fRy1QKC/kCokQ9IXcteMfg883362E=";
};
postPatch = ''

View File

@@ -1,5 +1,8 @@
{
stdenvNoCC,
stdenv,
overrideCC,
buildPackages,
lib,
fetchFromGitHub,
enableStatic ? stdenv.hostPlatform.isStatic,
@@ -8,6 +11,33 @@
autoreconfHook,
}:
let
# With GCC NG, `libstdc++` links this rather than compiling its own copy,
# which puts it below the C++ standard library rather than above; built with
# the ordinary `stdenv` the two would create a cycle.
#
# I would rather this bootstrapping detail not leak into the `package.nix`,
# but I don't see another solution available since all-package.nix overrides
# of "by-name" packages are no longer allowed.
#
# TODO: hoist this back out to a `stdenvNoCXX` in `all-packages.nix`,
# where the next package needing a hosted-but-C++-free compiler can
# share it. `nixpkgs-vet` blocks that today: it wants `strictDeps` and
# `__structuredAttrs`, but this is only relevant for derivations made
# with `stdenv.mkDerivation` --- `stdenv` itself is *not* such a
# derivation!
stdenv' =
if stdenvNoCC.hostPlatform.useLLVM or false then
overrideCC stdenvNoCC buildPackages.llvmPackages.clangNoLibcxx
else if stdenvNoCC.hostPlatform.useGccNG or false then
overrideCC stdenvNoCC buildPackages.gccNGPackages.gccWithLibatomic
else
stdenv;
in
let
stdenv = stdenv';
in
stdenv.mkDerivation {
pname = "libbacktrace";
version = "0-unstable-2026-05-03";

View File

@@ -104,12 +104,17 @@ stdenv.mkDerivation (finalAttrs: {
sed -i 's,\(-lcap\),-L${libcap.lib}/lib \1,' $lib/lib/libgcrypt.la
'';
# TODO: figure out why this is even necessary and why the missing dylib only crashes
# random instead of every test
preCheck = lib.optionalString (stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isStatic) ''
mkdir -p $lib/lib
cp src/.libs/libgcrypt.20.dylib $lib/lib
'';
preCheck =
# glibc loads libgcc_s dynamically when a thread exits
lib.optionalString (stdenv.hostPlatform.isLinux && stdenv.cc.isClang) ''
export LD_LIBRARY_PATH="${buildPackages.stdenv.cc.cc.libgcc}/lib''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
''
# TODO: figure out why this is even necessary and why the missing dylib only crashes
# random instead of every test
+ lib.optionalString (stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isStatic) ''
mkdir -p $lib/lib
cp src/.libs/libgcrypt.20.dylib $lib/lib
'';
doCheck = true;
enableParallelChecking = true;

View File

@@ -3,15 +3,22 @@
stdenv,
fetchFromGitHub,
alsa-lib,
catch2_3,
cmake,
cppzmq,
ctestCheckHook,
doxygen,
ffmpeg,
# FIXME: unpin when libopenshot supports ffmpeg 9 (AVCodec.{pix_fmts,sample_fmts,...} removed)
ffmpeg_8,
glib,
imagemagick,
jsoncpp,
libopenshot-audio,
llvmPackages,
opencv4,
pipewire,
pkg-config,
protobuf,
python3,
qt6,
swig,
@@ -21,13 +28,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libopenshot";
version = "0.7.0-unstable-2026-04-21";
version = "0.7.0-unstable-2026-07-22";
src = fetchFromGitHub {
owner = "OpenShot";
repo = "libopenshot";
rev = "a58565292cb84438b1c6a039c343b4c65003bd82";
hash = "sha256-zUzyi/VydrxDLCY7E/LBr7+btthOjal3c7md6PTXQWA=";
rev = "eac81cf91555438c54fbadef7fdd05bf803f26ee";
hash = "sha256-XeEXvKi5O/0J6rEc8rZs4+x/ImF4X0GFw/dOWn9HCCQ=";
};
patches = lib.optionals stdenv.hostPlatform.isDarwin [
@@ -39,15 +46,19 @@ stdenv.mkDerivation (finalAttrs: {
cmake
doxygen
pkg-config
protobuf
swig
];
buildInputs = [
catch2_3
cppzmq
ffmpeg
ffmpeg_8
imagemagick
jsoncpp
libopenshot-audio
(opencv4.override { ffmpeg_8-headless = ffmpeg_8; })
protobuf
python3
qt6.qtbase
qt6.qtmultimedia
@@ -56,6 +67,8 @@ stdenv.mkDerivation (finalAttrs: {
]
++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
glib
pipewire
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
llvmPackages.openmp
@@ -68,6 +81,14 @@ stdenv.mkDerivation (finalAttrs: {
doCheck = true;
nativeCheckInputs = [ ctestCheckHook ];
# Spherical metadata is not round-tripped when writing/reading with FFmpeg 8
ctestFlags = [
"--exclude-regex"
"^SphericalMetadata"
];
cmakeFlags = [
(lib.cmakeBool "ENABLE_RUBY" false)
(lib.cmakeBool "ENABLE_PYTHON" true)

View File

@@ -1,6 +1,6 @@
{
lib,
gcc15Stdenv,
stdenv,
fetchFromGitHub,
gtk3,
jansson,
@@ -12,7 +12,7 @@
wrapGAppsHook3,
}:
gcc15Stdenv.mkDerivation {
stdenv.mkDerivation {
pname = "libresplit";
version = "0-unstable-2026-02-11";

View File

@@ -21,13 +21,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "lua-language-server";
version = "3.19.0";
version = "3.19.1";
src = fetchFromGitHub {
owner = "luals";
repo = "lua-language-server";
tag = finalAttrs.version;
hash = "sha256-TW7BkWNYl5Ndc5sx86Y8LsqVu3Qvh0LMqHyZyW36qso=";
hash = "sha256-3Sm958Fr5wn54B+aJMaK+cR/F10dPIcGvBrhjHTy2us=";
fetchSubmodules = true;
};

View File

@@ -14,13 +14,13 @@ assert lib.assertMsg (colors != [ ]) "The `colors` list can not be empty";
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "marble-shell-theme";
version = "48.3.2";
version = "50.0.0";
src = fetchFromGitHub {
owner = "imarkoff";
repo = "Marble-shell-theme";
tag = finalAttrs.version;
hash = "sha256-EYQmtVq852YG4Pmk6Nj4RF+aZUJmIZwhegHIR+Xxu8A=";
hash = "sha256-zvDVOLWdcKwSM0Y6bax5l7CdCb3alBCdL07hPCcYffY=";
};
nativeBuildInputs = [

View File

@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "mdbook-mermaid";
version = "0.17.0";
version = "0.17.1";
src = fetchFromGitHub {
owner = "badboy";
repo = "mdbook-mermaid";
tag = "v${finalAttrs.version}";
hash = "sha256-9aiu3mQaRgVVhtX/v2hMPzclnVQIhUz4gVy0Xc84zO8=";
hash = "sha256-hcvX664QoM1wo7oHM68O7rmH+KAkrQZvtXQiwWmm+e8=";
};
cargoHash = "sha256-MDtXgNiN4tVgP/98fbcL9WQXAJire+c3lmnc12KhQ50=";
cargoHash = "sha256-9uE3Xb4LhzGoB9lcusvyKm28X0uvgYVRzIju+Ozlc6A=";
meta = {
description = "Preprocessor for mdbook to add mermaid.js support";

View File

@@ -8,13 +8,13 @@
buildGoModule (finalAttrs: {
pname = "melange";
version = "0.41.1";
version = "0.58.0";
src = fetchFromGitHub {
owner = "chainguard-dev";
repo = "melange";
rev = "v${finalAttrs.version}";
hash = "sha256-qbbt5TDqyWqf0/TZfFJ9Nf1hmOq8Jh4husJpVEJy1o0=";
hash = "sha256-gv6Y+VImdXICrqt2YDr4ROoL6xJSuRE1XyAasSM3dW4=";
# populate values that require us to use git. By doing this in postFetch we
# can delete .git afterwards and maintain better reproducibility of the src.
leaveDotGit = true;
@@ -27,7 +27,7 @@ buildGoModule (finalAttrs: {
'';
};
vendorHash = "sha256-SfYzWPe6TaGrBhnnO9sFPhCsFwSCcr1TflDZD7ZNVL8=";
vendorHash = "sha256-cyhegU/jGLVRidAEAq2XY9agjmMr28u7Hf9cZ67um1g=";
subPackages = [ "." ];

View File

@@ -23,25 +23,25 @@ let
inputtino-src = fetchFromGitHub {
owner = "games-on-whales";
repo = "inputtino";
rev = "f4ce2b0df536ef309e9ff318f75b460f7097d7c1";
hash = "sha256-mAAXbIK7aNSLyN7OZX9YeesMvT6OZmT9uAx0md6pyRM=";
rev = "d28ec79eb63324e68d73a7de22bcb5ff0a6f6bf8";
hash = "sha256-xzDsJggQVX5e1twwNvqw5hDXei6OMYA4s5zU4zfp/H0=";
};
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "moonshine";
version = "0.13.5";
version = "0.15.0";
src = fetchFromGitHub {
owner = "hgaiser";
repo = "moonshine";
tag = "v${finalAttrs.version}";
hash = "sha256-DwRUVMAm4fSqZu6jECeasiRpnwBt7thWkXzztNRIjcs=";
hash = "sha256-TvL3s738wooQwZfBKyCqp0V8qcYFtJL98tsxlSX8fLM=";
};
__structuredAttrs = true;
strictDeps = true;
cargoHash = "sha256-M/VNPnccqK3koa0TeMd+tml79O7BKLxHmrGcGPemGhI=";
cargoHash = "sha256-PAC8PcGOXxFNN8Eeiik4JrXeH2H+YcqRaBpJVtUoZ44=";
# Build Moonshine binary and Vulkan layer
cargoBuildFlags = [
@@ -88,6 +88,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
# udev rules for input
install -Dm644 dist/60-moonshine.rules "$out/lib/udev/rules.d/60-moonshine.rules"
# polkit rule for sleep inhibitor
install -Dm644 dist/50-moonshine-inhibit-sleep.rules \
"$out/share/polkit-1/rules.d/50-moonshine-inhibit-sleep.rules"
'';
postFixup = ''
@@ -118,7 +122,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
homepage = "https://github.com/hgaiser/moonshine";
changelog = "https://github.com/hgaiser/moonshine/releases/tag/v${finalAttrs.version}";
license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ neobrain ];
maintainers = with lib.maintainers; [
neobrain
anish
];
mainProgram = "moonshine";
platforms = lib.platforms.linux;
};

View File

@@ -1,52 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
fuse,
libmtp,
glib,
libmad,
libid3tag,
unstableGitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "mtpfs";
version = "0-unstable-2024-12-10";
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
fuse
libmtp
glib
libid3tag
libmad
];
src = fetchFromGitHub {
owner = "cjd";
repo = "mtpfs";
rev = "1177d6cfd8916915f5db7d9b5c6fc9e6eafae6e6";
hash = "sha256-/84C8FUW+7U7u7yOzVB6ROoIUKtyIBG0wdD5t53yays=";
};
# Use unstable version to pull in gcc-15 fix until the next release
# is out: https://github.com/cjd/mtpfs/pull/28
passthru.updateScript = unstableGitUpdater {
};
meta = {
homepage = "https://github.com/cjd/mtpfs";
description = "FUSE Filesystem providing access to MTP devices";
platforms = lib.platforms.all;
license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.qknight ];
broken = stdenv.hostPlatform.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/mtpfs.x86_64-darwin
mainProgram = "mtpfs";
};
})

View File

@@ -9,18 +9,18 @@
buildNpmPackage (finalAttrs: {
pname = "multi-scrobbler";
version = "0.15.0";
version = "0.16.2";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "FoxxMD";
repo = "multi-scrobbler";
tag = finalAttrs.version;
hash = "sha256-vhda31xPLxGmnaU/3AnsrcafPvSE1IIbuRmj6xlttjc=";
hash = "sha256-R+CwL+Kp3C5wg1LFt0XlksMtRFt+7YItR3t4QPpND6w=";
};
npmDepsFetcherVersion = 2;
npmDepsHash = "sha256-dxNHz/r+ai8R9X+yVo5YaBWHPcvQKQUXa499HafAB00=";
npmDepsHash = "sha256-aqwiOajXjB6FbHzhXxTSpSxDBWkdYj9O+I1XqoEWgbE=";
nativeBuildInputs = [ makeWrapper ];

View File

@@ -1,381 +0,0 @@
From 41aa0b0c81d6e7b604c1646d52d8418ed2d8d99a Mon Sep 17 00:00:00 2001
From: Emily <hello@emily.moe>
Date: Mon, 15 Sep 2025 20:45:57 +0100
Subject: [PATCH] Platform: Core: Update to toml11 4.4.0
Comments are now preserved by default, and the APi gets a bit
simpler. Many Linux distributions have already moved to the new major
version, so this eases packaging.
---
src/platform/core/CMakeLists.txt | 4 +-
src/platform/core/include/platform/config.hpp | 4 +-
src/platform/core/src/config.cpp | 176 ++++++++----------
src/platform/qt/src/config.cpp | 88 ++++-----
src/platform/qt/src/config.hpp | 4 +-
5 files changed, 121 insertions(+), 155 deletions(-)
diff --git a/src/platform/core/CMakeLists.txt b/src/platform/core/CMakeLists.txt
index ddb4241f..02a97420 100644
--- a/src/platform/core/CMakeLists.txt
+++ b/src/platform/core/CMakeLists.txt
@@ -35,11 +35,11 @@ glad_add_library(glad_gl_core_33 STATIC
)
if(USE_SYSTEM_TOML11)
- find_package(toml11 3.7 REQUIRED)
+ find_package(toml11 4.0 REQUIRED)
else()
FetchContent_Declare(toml11
GIT_REPOSITORY https://github.com/ToruNiina/toml11.git
- GIT_TAG d4eb5f3c9d8557b3820c80d55c41068839341b27 # v3.8.1
+ GIT_TAG be08ba2be2a964edcdb3d3e3ea8d100abc26f286 # v4.4.0
)
set(toml11_INSTALL OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(toml11)
diff --git a/src/platform/core/include/platform/config.hpp b/src/platform/core/include/platform/config.hpp
index 89c6278a..7b0233d4 100644
--- a/src/platform/core/include/platform/config.hpp
+++ b/src/platform/core/include/platform/config.hpp
@@ -47,9 +47,7 @@ struct PlatformConfig : Config {
protected:
virtual void LoadCustomData(toml::value const& data) {}
- virtual void SaveCustomData(
- toml::basic_value<toml::preserve_comments>& data
- ) {};
+ virtual void SaveCustomData(toml::value& data) {}
};
} // namespace nba
diff --git a/src/platform/core/src/config.cpp b/src/platform/core/src/config.cpp
index be382c94..e6a8e221 100644
--- a/src/platform/core/src/config.cpp
+++ b/src/platform/core/src/config.cpp
@@ -29,124 +29,108 @@ void PlatformConfig::Load(std::string const& path) {
}
if(data.contains("general")) {
- auto general_result = toml::expect<toml::value>(data.at("general"));
-
- if(general_result.is_ok()) {
- auto general = general_result.unwrap();
- this->bios_path = toml::find_or<std::string>(general, "bios_path", "bios.bin");
- this->skip_bios = toml::find_or<toml::boolean>(general, "bios_skip", false);
- this->save_folder = toml::find_or<std::string>(general, "save_folder", "");
- }
+ auto general = data.at("general");
+ this->bios_path = toml::find_or<std::string>(general, "bios_path", "bios.bin");
+ this->skip_bios = toml::find_or<bool>(general, "bios_skip", false);
+ this->save_folder = toml::find_or<std::string>(general, "save_folder", "");
}
if(data.contains("cartridge")) {
- auto cartridge_result = toml::expect<toml::value>(data.at("cartridge"));
-
- if(cartridge_result.is_ok()) {
- auto cartridge = cartridge_result.unwrap();
- auto save_type = toml::find_or<std::string>(cartridge, "save_type", "detect");
-
- const std::map<std::string, Config::BackupType> save_types{
- { "detect", Config::BackupType::Detect },
- { "none", Config::BackupType::None },
- { "sram", Config::BackupType::SRAM },
- { "flash64", Config::BackupType::FLASH_64 },
- { "flash128", Config::BackupType::FLASH_128 },
- { "eeprom512", Config::BackupType::EEPROM_4 },
- { "eeprom8192", Config::BackupType::EEPROM_64 }
- };
-
- auto match = save_types.find(save_type);
-
- if(match == save_types.end()) {
- Log<Warn>("Config: backup type '{0}' is not valid, defaulting to auto-detect.", save_type);
- this->cartridge.backup_type = Config::BackupType::Detect;
- } else {
- this->cartridge.backup_type = match->second;
- }
-
- this->cartridge.force_rtc = toml::find_or<toml::boolean>(cartridge, "force_rtc", false);
- this->cartridge.force_solar_sensor = toml::find_or<toml::boolean>(cartridge, "force_solar_sensor", false);
- this->cartridge.solar_sensor_level = toml::find_or<int>(cartridge, "solar_sensor_level", 156);
+ auto cartridge = data.at("cartridge");
+ auto save_type = toml::find_or<std::string>(cartridge, "save_type", "detect");
+
+ const std::map<std::string, Config::BackupType> save_types{
+ { "detect", Config::BackupType::Detect },
+ { "none", Config::BackupType::None },
+ { "sram", Config::BackupType::SRAM },
+ { "flash64", Config::BackupType::FLASH_64 },
+ { "flash128", Config::BackupType::FLASH_128 },
+ { "eeprom512", Config::BackupType::EEPROM_4 },
+ { "eeprom8192", Config::BackupType::EEPROM_64 }
+ };
+
+ auto match = save_types.find(save_type);
+
+ if(match == save_types.end()) {
+ Log<Warn>("Config: backup type '{0}' is not valid, defaulting to auto-detect.", save_type);
+ this->cartridge.backup_type = Config::BackupType::Detect;
+ } else {
+ this->cartridge.backup_type = match->second;
}
+
+ this->cartridge.force_rtc = toml::find_or<bool>(cartridge, "force_rtc", false);
+ this->cartridge.force_solar_sensor = toml::find_or<bool>(cartridge, "force_solar_sensor", false);
+ this->cartridge.solar_sensor_level = toml::find_or<int>(cartridge, "solar_sensor_level", 156);
}
if(data.contains("video")) {
- auto video_result = toml::expect<toml::value>(data.at("video"));
-
- if(video_result.is_ok()) {
- auto video = video_result.unwrap();
+ auto video = data.at("video");
- const std::map<std::string, Video::Filter> filters{
- { "nearest", Video::Filter::Nearest },
- { "linear", Video::Filter::Linear },
- { "sharp", Video::Filter::Sharp },
- { "xbrz", Video::Filter::xBRZ },
- { "lcd1x", Video::Filter::Lcd1x }
- };
-
- const std::map<std::string, Video::Color> color_corrections{
- { "none", Video::Color::No },
- { "higan", Video::Color::higan },
- { "agb", Video::Color::AGB }
- };
-
- auto filter = toml::find_or<std::string>(video, "filter", "nearest");
- auto filter_match = filters.find(filter);
- if(filter_match != filters.end()) {
- this->video.filter = filter_match->second;
- }
-
- auto color_correction = toml::find_or<std::string>(video, "color_correction", "ags");
- auto color_correction_match = color_corrections.find(color_correction);
- if(color_correction_match != color_corrections.end()) {
- this->video.color = color_correction_match->second;
- }
-
- this->video.lcd_ghosting = toml::find_or<bool>(video, "lcd_ghosting", true);
+ const std::map<std::string, Video::Filter> filters{
+ { "nearest", Video::Filter::Nearest },
+ { "linear", Video::Filter::Linear },
+ { "sharp", Video::Filter::Sharp },
+ { "xbrz", Video::Filter::xBRZ },
+ { "lcd1x", Video::Filter::Lcd1x }
+ };
+
+ const std::map<std::string, Video::Color> color_corrections{
+ { "none", Video::Color::No },
+ { "higan", Video::Color::higan },
+ { "agb", Video::Color::AGB }
+ };
+
+ auto filter = toml::find_or<std::string>(video, "filter", "nearest");
+ auto filter_match = filters.find(filter);
+ if(filter_match != filters.end()) {
+ this->video.filter = filter_match->second;
}
+
+ auto color_correction = toml::find_or<std::string>(video, "color_correction", "ags");
+ auto color_correction_match = color_corrections.find(color_correction);
+ if(color_correction_match != color_corrections.end()) {
+ this->video.color = color_correction_match->second;
+ }
+
+ this->video.lcd_ghosting = toml::find_or<bool>(video, "lcd_ghosting", true);
}
if(data.contains("audio")) {
- auto audio_result = toml::expect<toml::value>(data.at("audio"));
-
- if(audio_result.is_ok()) {
- auto audio = audio_result.unwrap();
- auto resampler = toml::find_or<std::string>(audio, "resampler", "cosine");
-
- const std::map<std::string, Config::Audio::Interpolation> resamplers{
- { "cosine", Config::Audio::Interpolation::Cosine },
- { "cubic", Config::Audio::Interpolation::Cubic },
- { "sinc64", Config::Audio::Interpolation::Sinc_64 },
- { "sinc128", Config::Audio::Interpolation::Sinc_128 },
- { "sinc256", Config::Audio::Interpolation::Sinc_256 }
- };
-
- auto match = resamplers.find(resampler);
-
- if(match == resamplers.end()) {
- Log<Warn>("Config: unknown resampling algorithm: {} (defaulting to cosine).", resampler);
- this->audio.interpolation = Config::Audio::Interpolation::Cosine;
- } else {
- this->audio.interpolation = match->second;
- }
-
- this->audio.volume = toml::find_or<int>(audio, "volume", 100);
- this->audio.mp2k_hle_enable = toml::find_or<toml::boolean>(audio, "mp2k_hle_enable", false);
- this->audio.mp2k_hle_cubic = toml::find_or<toml::boolean>(audio, "mp2k_hle_cubic", true);
- this->audio.mp2k_hle_force_reverb = toml::find_or<toml::boolean>(audio, "mp2k_hle_force_reverb", true);
+ auto audio = data.at("audio");
+ auto resampler = toml::find_or<std::string>(audio, "resampler", "cosine");
+
+ const std::map<std::string, Config::Audio::Interpolation> resamplers{
+ { "cosine", Config::Audio::Interpolation::Cosine },
+ { "cubic", Config::Audio::Interpolation::Cubic },
+ { "sinc64", Config::Audio::Interpolation::Sinc_64 },
+ { "sinc128", Config::Audio::Interpolation::Sinc_128 },
+ { "sinc256", Config::Audio::Interpolation::Sinc_256 }
+ };
+
+ auto match = resamplers.find(resampler);
+
+ if(match == resamplers.end()) {
+ Log<Warn>("Config: unknown resampling algorithm: {} (defaulting to cosine).", resampler);
+ this->audio.interpolation = Config::Audio::Interpolation::Cosine;
+ } else {
+ this->audio.interpolation = match->second;
}
+
+ this->audio.volume = toml::find_or<int>(audio, "volume", 100);
+ this->audio.mp2k_hle_enable = toml::find_or<bool>(audio, "mp2k_hle_enable", false);
+ this->audio.mp2k_hle_cubic = toml::find_or<bool>(audio, "mp2k_hle_cubic", true);
+ this->audio.mp2k_hle_force_reverb = toml::find_or<bool>(audio, "mp2k_hle_force_reverb", true);
}
LoadCustomData(data);
}
void PlatformConfig::Save(std::string const& path) {
- toml::basic_value<toml::preserve_comments> data;
+ toml::value data;
if(std::filesystem::exists(path)) {
try {
- data = toml::parse<toml::preserve_comments>(path);
+ data = toml::parse(path);
} catch (std::exception& ex) {
Log<Error>("Config: error while parsing TOML configuration: {0}", ex.what());
return;
diff --git a/src/platform/qt/src/config.cpp b/src/platform/qt/src/config.cpp
index 7fbc712b..7a658fca 100644
--- a/src/platform/qt/src/config.cpp
+++ b/src/platform/qt/src/config.cpp
@@ -9,66 +9,52 @@
void QtConfig::LoadCustomData(toml::value const& data) {
if(data.contains("input")) {
- auto input_result = toml::expect<toml::value>(data.at("input"));
-
- if(input_result.is_ok()) {
- using Map = Input::Map;
-
- auto input_ = input_result.unwrap();
-
- input.controller_guid = toml::find_or<std::string>(input_, "controller_guid", "");
- input.hold_fast_forward = toml::find_or<bool>(input_, "hold_fast_forward", true);
-
- const auto get_map = [&](toml::value const& value, std::string key) {
- return Map::FromArray(toml::find_or<std::array<int, 5>>(value, key, {0, -1, -1, -1, 0}));
- };
-
- input.fast_forward = get_map(input_, "fast_forward");
-
- if(input_.contains("gba")) {
- auto gba_result = toml::expect<toml::value>(input_.at("gba"));
-
- if(gba_result.is_ok()) {
- auto gba = gba_result.unwrap();
-
- input.gba[0] = get_map(gba, "a");
- input.gba[1] = get_map(gba, "b");
- input.gba[2] = get_map(gba, "select");
- input.gba[3] = get_map(gba, "start");
- input.gba[4] = get_map(gba, "right");
- input.gba[5] = get_map(gba, "left");
- input.gba[6] = get_map(gba, "up");
- input.gba[7] = get_map(gba, "down");
- input.gba[8] = get_map(gba, "r");
- input.gba[9] = get_map(gba, "l");
- }
- }
+ using Map = Input::Map;
+
+ auto input_ = data.at("input");
+
+ input.controller_guid = toml::find_or<std::string>(input_, "controller_guid", "");
+ input.hold_fast_forward = toml::find_or<bool>(input_, "hold_fast_forward", true);
+
+ const auto get_map = [&](toml::value const& value, std::string key) {
+ return Map::FromArray(toml::find_or<std::array<int, 5>>(value, key, {0, -1, -1, -1, 0}));
+ };
+
+ input.fast_forward = get_map(input_, "fast_forward");
+
+ if(input_.contains("gba")) {
+ auto gba = input_.at("gba");
+
+ input.gba[0] = get_map(gba, "a");
+ input.gba[1] = get_map(gba, "b");
+ input.gba[2] = get_map(gba, "select");
+ input.gba[3] = get_map(gba, "start");
+ input.gba[4] = get_map(gba, "right");
+ input.gba[5] = get_map(gba, "left");
+ input.gba[6] = get_map(gba, "up");
+ input.gba[7] = get_map(gba, "down");
+ input.gba[8] = get_map(gba, "r");
+ input.gba[9] = get_map(gba, "l");
}
}
if(data.contains("window")) {
- auto window_result = toml::expect<toml::value>(data.at("window"));
-
- if(window_result.is_ok()) {
- auto window_ = window_result.unwrap();
-
- window.scale = toml::find_or<int>(window_, "scale", 2);
- window.maximum_scale = toml::find_or<int>(window_, "maximum_scale", 0);
- window.fullscreen = toml::find_or<bool>(window_, "fullscreen", false);
- window.fullscreen_show_menu = toml::find_or<bool>(window_, "fullscreen_show_menu", false);
- window.lock_aspect_ratio = toml::find_or<bool>(window_, "lock_aspect_ratio", true);
- window.use_integer_scaling = toml::find_or<bool>(window_, "use_integer_scaling", false);
- window.show_fps = toml::find_or<bool>(window_, "show_fps", false);
- window.pause_emulator_when_inactive = toml::find_or<bool>(window_, "pause_emulator_when_inactive", true);
- }
+ auto window_ = data.at("window");
+
+ window.scale = toml::find_or<int>(window_, "scale", 2);
+ window.maximum_scale = toml::find_or<int>(window_, "maximum_scale", 0);
+ window.fullscreen = toml::find_or<bool>(window_, "fullscreen", false);
+ window.fullscreen_show_menu = toml::find_or<bool>(window_, "fullscreen_show_menu", false);
+ window.lock_aspect_ratio = toml::find_or<bool>(window_, "lock_aspect_ratio", true);
+ window.use_integer_scaling = toml::find_or<bool>(window_, "use_integer_scaling", false);
+ window.show_fps = toml::find_or<bool>(window_, "show_fps", false);
+ window.pause_emulator_when_inactive = toml::find_or<bool>(window_, "pause_emulator_when_inactive", true);
}
recent_files = toml::find_or<std::vector<std::string>>(data, "recent_files", {});
}
-void QtConfig::SaveCustomData(
- toml::basic_value<toml::preserve_comments>& data
-) {
+void QtConfig::SaveCustomData(toml::value& data) {
data["input"]["controller_guid"] = input.controller_guid;
data["input"]["fast_forward"] = input.fast_forward.Array();
data["input"]["hold_fast_forward"] = input.hold_fast_forward;
diff --git a/src/platform/qt/src/config.hpp b/src/platform/qt/src/config.hpp
index 91af8291..b305bf79 100644
--- a/src/platform/qt/src/config.hpp
+++ b/src/platform/qt/src/config.hpp
@@ -117,9 +117,7 @@ struct QtConfig final : nba::PlatformConfig {
protected:
void LoadCustomData(toml::value const& data) override;
- void SaveCustomData(
- toml::basic_value<toml::preserve_comments>& data
- ) override;
+ void SaveCustomData(toml::value& data) override;
private:
auto GetConfigPath() const -> std::string {

View File

@@ -1,60 +1,56 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
fetchFromCodeberg,
cmake,
python3Packages,
libsForQt5,
SDL2,
fmt,
toml11,
libunarr,
qt6,
zlib,
bzip2,
xz,
gtk3,
}:
let
gladSrc = fetchFromGitHub {
owner = "Dav1dde";
repo = "glad";
rev = "v2.0.5";
hash = "sha256-Ba7nbd0DxDHfNXXu9DLfnxTQTiJIQYSES9CP5Bfq4K0=";
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "nanoboyadvance";
version = "1.8.2";
version = "1.8.3";
src = fetchFromGitHub {
src = fetchFromCodeberg {
owner = "nba-emu";
repo = "NanoBoyAdvance";
rev = "v${finalAttrs.version}";
hash = "sha256-IH2X0B3HwEG0/wvKacLVPBQad14W0HBy5VFHjk8vgJk=";
hash = "sha256-G/STYu8vOTqoGAGfpPelYV/m0Cth4xMMD1QJ6TbqAF4=";
};
patches = [
# <https://github.com/nba-emu/NanoBoyAdvance/pull/410>
./fix-toml11-4.0.patch
];
postPatch = ''
# dont install unarr library to the package output
substituteInPlace thirdparty/CMakeLists.txt \
--replace-fail 'add_subdirectory(unarr-1.1.1-patch)' 'add_subdirectory(unarr-1.1.1-patch EXCLUDE_FROM_ALL)'
'';
nativeBuildInputs = [
cmake
python3Packages.jinja2
libsForQt5.wrapQtAppsHook
qt6.wrapQtAppsHook
];
buildInputs = [
libsForQt5.qtbase
SDL2
fmt
toml11
libunarr
qt6.qtsvg
qt6.qtbase
zlib
bzip2
xz
gtk3
];
preConfigure = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
export AR="gcc-ar"
export RANLIB="gcc-ranlib"
'';
cmakeFlags = [
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_GLAD" "${gladSrc}")
(lib.cmakeBool "USE_SYSTEM_FMT" true)
(lib.cmakeBool "USE_SYSTEM_TOML11" true)
(lib.cmakeBool "USE_SYSTEM_UNARR" true)
(lib.cmakeBool "PORTABLE_MODE" false)
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
@@ -68,12 +64,23 @@ stdenv.mkDerivation (finalAttrs: {
ln -s "$out/Applications/NanoBoyAdvance.app/Contents/MacOS/NanoBoyAdvance" "$out/bin/NanoBoyAdvance"
'';
preFixup = ''
qtWrapperArgs+=(
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}"
--set QT_QPA_PLATFORM xcb
--set SDL_VIDEODRIVER x11
)
'';
meta = {
description = "Cycle-accurate Nintendo Game Boy Advance emulator";
homepage = "https://github.com/nba-emu/NanoBoyAdvance";
homepage = "https://nanoboyadvance.eu/";
license = lib.licenses.gpl3Plus;
mainProgram = "NanoBoyAdvance";
maintainers = with lib.maintainers; [ tomasajt ];
maintainers = with lib.maintainers; [
tomasajt
lukas-sgx
];
platforms = lib.platforms.all;
};
})

View File

@@ -5,20 +5,33 @@
openssl,
}:
let
# Atlas needs the dep in a certain place, easier to download and and place in deps/ folder
sat = fetchFromGitHub {
owner = "nim-lang";
repo = "sat";
# The atlas nimble file (https://github.com/nim-lang/atlas/blob/master/atlas.nimble) doesn't
# provide a version and upstream sat package has no version tags. This is the latest commit
# as of 2026-08-14
rev = "9d52513b3c68bfb929dbd687d4fb2836cfee6936";
hash = "sha256-y9kFjYFrmVejIE8fSh4AehaNnCO/UISssrnGwwcnJLk=";
};
in
buildNimPackage (
final: prev: {
final: prev: rec {
pname = "atlas";
version = "unstable-2023-09-22";
version = "0.14.12";
src = fetchFromGitHub {
owner = "nim-lang";
repo = "atlas";
rev = "ab22f997c22a644924c1a9b920f8ce207da9b77f";
hash = "sha256-TsZ8TriVuKEY9/mV6KR89eFOgYrgTqXmyv/vKu362GU=";
rev = "${version}";
hash = "sha256-7LPjxqsWlZ0tjsXfMF0q93O9VLDgT+7J20QrJ+1ihDg=";
};
buildInputs = [ openssl ];
prePatch = ''
rm config.nims
''; # never trust a .nims file
preConfigure = ''
mkdir deps
cp -r ${sat} deps/sat
'';
doCheck = false; # tests will clone repos
meta = final.src.meta // {
description = "Nim package cloner";

View File

@@ -36,7 +36,7 @@ let
in
effectiveStdenv.mkDerivation (finalAttrs: {
pname = "nixl";
version = "1.3.2";
version = "1.4.0";
__structuredAttrs = true;
strictDeps = true;
@@ -45,7 +45,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
owner = "ai-dynamo";
repo = "nixl";
tag = "v${finalAttrs.version}";
hash = "sha256-aSZ9kiEAQlVFW3+XJih5Ujk1mxOvaepX19u3Xfz4iSg=";
hash = "sha256-fOtPutRgKscP396J0Rh6V9PIQ+LsE7h71vtduviHvWI=";
};
postPatch =
@@ -64,17 +64,6 @@ effectiveStdenv.mkDerivation (finalAttrs: {
substituteInPlace src/plugins/ucx/ucx_backend.cpp \
--replace-fail 'io_->post(' 'asio::post(*io_, '
''
# Fix UB: explicit destructor call on lock_guard (GCC 15 -Werror=maybe-uninitialized)
# Replace lock_guard + manual destructor with unique_lock + unlock()
+ ''
substituteInPlace src/plugins/libfabric/libfabric_backend.cpp \
--replace-fail \
'std::lock_guard<std::mutex> lock(connection_state_mutex_);' \
'std::unique_lock<std::mutex> lock(connection_state_mutex_);' \
--replace-fail \
'lock.~lock_guard();' \
'lock.unlock();'
''
# Fix GDS plugin: Nix uses lib/ not lib64/
+ ''
substituteInPlace src/plugins/cuda_gds/meson.build src/plugins/gds_mt/meson.build \

View File

@@ -6,16 +6,16 @@
buildNpmPackage rec {
pname = "npm-check-updates";
version = "19.3.2";
version = "23.0.2";
src = fetchFromGitHub {
owner = "raineorshine";
repo = "npm-check-updates";
tag = "v${version}";
hash = "sha256-rQRBPfP7w9a2qCjOxNtl9mmSJiYZYbJyyOh3FEfckxk=";
hash = "sha256-XCUtMEYEkBvn5Y32uLrbvCdpSTXOEdq2Pf9tPo6JWLI=";
};
npmDepsHash = "sha256-wcpaJv8ji5Yr8Whp+fk+CYp4w3WcnYo20q/Injf/7Z8=";
npmDepsHash = "sha256-dsgvdgJzpxKhMjfIVO7Tnu4xxvTJYyk8Wjth7++ZHdo=";
postPatch = ''
sed -i '/"prepare"/d' package.json

View File

@@ -111,12 +111,12 @@ let
# vendored in-tree. Pre-stage the pin (tracks upstream's
# `LLAMA_CPP_VERSION` file) so the FetchContent step uses our copy
# instead of trying to clone over the network in the sandbox.
llamaCppVersion = "b10242";
llamaCppVersion = "b10380";
llamaCppSrc = fetchFromGitHub {
owner = "ggml-org";
repo = "llama.cpp";
tag = llamaCppVersion;
hash = "sha256-mBqO6h9eiSAXqiHy1H3aK2ACbz1aYagmjAN7IpXNTcw=";
hash = "sha256-HT0QuIFJz5cgH2qinxhtyLEL/RrUpziZuntj/EDQtzI=";
};
wrapperOptions = [
@@ -152,13 +152,13 @@ let
in
goBuild (finalAttrs: {
pname = "ollama";
version = "0.32.7";
version = "0.32.11";
src = fetchFromGitHub {
owner = "ollama";
repo = "ollama";
tag = "v${finalAttrs.version}";
hash = "sha256-dCUDeAdzJETCMumbSMSkmc6n3uQR36jvjBnn+gaVr/U=";
hash = "sha256-TD/EH1/0LholwtNxcM9IyQP8Zgh2+04k+lKZkCj5F4M=";
};
vendorHash = "sha256-HMwoaFBMbpoy8f0I+O+i7kIa9BslLu3FcVWeaIOkpvs=";
@@ -225,6 +225,10 @@ goBuild (finalAttrs: {
# OLLAMA_LLAMA_CPP_SKIP_COMPAT_PATCH=ON to the child build) the
# caller has to. The apply-patch.cmake script is idempotent so this
# is safe to re-run.
if [[ ${llamaCppVersion} != $(cat LLAMA_CPP_VERSION) ]]; then
echo "llama-cpp version mismatch, expected ${llamaCppVersion}, but found $(cat LLAMA_CPP_VERSION)"
exit 1
fi
cp -r ${llamaCppSrc} $TMPDIR/llama-cpp-src
chmod -R +w $TMPDIR/llama-cpp-src
( cd $TMPDIR/llama-cpp-src && \
@@ -377,6 +381,7 @@ goBuild (finalAttrs: {
service-rocm = nixosTests.ollama-rocm;
service-vulkan = nixosTests.ollama-vulkan;
};
updateScript = ./update.sh;
}
// lib.optionalAttrs (!enableRocm && !enableCuda && !enableVulkan) { updateScript = ./update.sh; };

View File

@@ -6,7 +6,6 @@
ncurses,
gettext,
pigeon,
go-mockery,
protoc-go-inject-tag,
libxcrypt,
vips,
@@ -20,7 +19,8 @@ let
bingoBinsMakefile = builtins.concatStringsSep "\n" (
lib.mapAttrsToList (n: v: "${n} := ${v}\n\\$(${n}):") {
GO_XGETTEXT = "xgettext";
MOCKERY = "mockery";
# no need to generate mocks, as they are in-repo already
MOCKERY = "true";
PIGEON = "pigeon";
PROTOC_GO_INJECT_TAG = "protoc-go-inject-tag";
}
@@ -76,7 +76,6 @@ buildGoModule (finalAttrs: {
ncurses
gettext
pigeon
go-mockery
protoc-go-inject-tag
pkg-config
];

View File

@@ -4,15 +4,37 @@
rustPlatform,
fetchFromGitHub,
cargo-bundle,
libicns,
resvg,
fontconfig,
freetype,
libGL,
libxcb,
libxkbcommon,
makeBinaryWrapper,
nix-update-script,
openssl,
pkg-config,
versionCheckHook,
vulkan-loader,
wayland,
}:
let
# crates/openlogi-gui/build.rs embeds gpui-component's themes, which live at
# that repo's root rather than inside the crate, so cargo vendoring drops them.
# Fetch the rev Cargo.lock pins and point build.rs's OPENLOGI_THEMES_DIR
# escape hatch at it. This pin follows Cargo.lock rather than openlogi's
# version, and nix-update does not maintain it.
gpuiComponentThemes = fetchFromGitHub {
owner = "longbridge";
repo = "gpui-component";
rev = "031555662e99a1b5a549990b47f246d475b8288a";
hash = "sha256-yOXdgxQgfvGN2/+OdDnl1pYti0DoGFvS3Tyqvj3Bkng=";
};
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "openlogi";
version = "0.3.4";
version = "0.6.25";
strictDeps = true;
__structuredAttrs = true;
@@ -21,12 +43,17 @@ rustPlatform.buildRustPackage (finalAttrs: {
owner = "AprilNEA";
repo = "OpenLogi";
tag = "v${finalAttrs.version}";
hash = "sha256-04o/Ry65CdNtycgJfqhXwTD5InUwfkr88xQ+I/5Pe4o=";
hash = "sha256-JziSstP3TdPVuqpZHtStT5fEy431tdFW7nB6bZvMyVA=";
};
cargoHash = "sha256-nKQRcRsEq5JJpn0DZIssS/wAwVsj4kq9J2WmQXJ3smY=";
cargoHash = "sha256-MVmPZ2IDss6+HmHKGdg4Q3g4W/fJgaQRGKoeUKDiEFU=";
postPatch = ''
grep -q 'gpui-component?rev=${gpuiComponentThemes.rev}' Cargo.lock || {
echo "ERROR: gpui-component revision needs update (must match Cargo.lock)"
exit 1
}
# gpui-component generates its IconName enum from a sibling assets directory,
# but cargo vendoring stores gpui-component-assets as a separate package.
for component in "$cargoDepsCopy"/source-git-*/gpui-component-[0-9]*; do
@@ -42,15 +69,33 @@ rustPlatform.buildRustPackage (finalAttrs: {
'';
nativeBuildInputs = [
cargo-bundle
libicns
resvg
rustPlatform.bindgenHook
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
cargo-bundle
]
++ lib.optionals stdenv.hostPlatform.isLinux [
makeBinaryWrapper
pkg-config
];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
fontconfig
freetype
libGL
libxcb
libxkbcommon
openssl
vulkan-loader
wayland
];
cargoBuildFlags = [
"--package=openlogi"
"--package=openlogi-gui"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"--package=openlogi-agent"
];
cargoTestFlags = [ "--workspace" ];
@@ -59,29 +104,14 @@ rustPlatform.buildRustPackage (finalAttrs: {
"gpui_platform/runtime_shaders"
];
# Upstream intentionally fetches optional device images on first launch
# unless OPENLOGI_BUNDLE_ASSETS is set while bundling.
preBuild = ''
iconset=$(mktemp -d)
for size in 16 32 128 256 512; do
resvg \
--width "$size" \
--height "$size" \
design/icon/openlogi.svg \
"$iconset/icon_''${size}x''${size}.png"
done
mkdir -p crates/openlogi-gui/icon
png2icns crates/openlogi-gui/icon/AppIcon.icns "$iconset"/*.png
rm -rf crates/openlogi-gui/assets
mkdir -p crates/openlogi-gui/assets
'';
env.OPENLOGI_THEMES_DIR = "${gpuiComponentThemes}/themes";
installPhase = ''
runHook preInstall
release_target="target/${stdenv.hostPlatform.rust.cargoShortTarget}/release"
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
mv "$release_target/openlogi-gui" target/release/openlogi-gui
pushd crates/openlogi-gui
@@ -92,10 +122,49 @@ rustPlatform.buildRustPackage (finalAttrs: {
mkdir -p "$out/Applications" "$out/bin"
mv "$app_path" "$out/Applications/"
install -Dm755 "$release_target/openlogi" "$out/bin/openlogi"
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
install -Dm755 "$release_target/openlogi" "$out/bin/openlogi"
install -Dm755 "$release_target/openlogi-gui" "$out/bin/openlogi-gui"
install -Dm755 "$release_target/openlogi-agent" "$out/bin/openlogi-agent"
# Upstream's own packaging inputs, installed verbatim rather than
# re-authored here (they are what the .deb/.rpm ship).
install -Dm644 packaging/linux/udev/70-openlogi.rules \
"$out/lib/udev/rules.d/70-openlogi.rules"
install -Dm644 packaging/linux/desktop/openlogi.desktop \
"$out/share/applications/openlogi.desktop"
install -Dm644 packaging/linux/systemd/openlogi-agent.service \
"$out/share/systemd/user/openlogi-agent.service"
# The unit hardcodes /usr/bin (upstream's install.sh rewrites it for a
# custom PREFIX); point it at the store path instead.
substituteInPlace "$out/share/systemd/user/openlogi-agent.service" \
--replace-fail "ExecStart=/usr/bin/openlogi-agent" \
"ExecStart=$out/bin/openlogi-agent"
install -Dm644 design/icon/openlogi.png \
"$out/share/icons/hicolor/1024x1024/apps/openlogi.png"
''
+ ''
runHook postInstall
'';
# GPUI (Blade) dlopen()s its Vulkan/Wayland/GL backends at runtime, so they
# are invisible to the linker and must be on the wrapper's search path.
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
wrapProgram "$out/bin/openlogi-gui" \
--suffix LD_LIBRARY_PATH : "${
lib.makeLibraryPath [
libGL
libxcb
libxkbcommon
vulkan-loader
wayland
]
}"
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
@@ -112,6 +181,9 @@ rustPlatform.buildRustPackage (finalAttrs: {
];
mainProgram = "openlogi";
maintainers = with lib.maintainers; [ imcvampire ];
platforms = lib.platforms.darwin;
platforms = lib.platforms.darwin ++ [
"aarch64-linux"
"x86_64-linux"
];
};
})

View File

@@ -14,8 +14,9 @@
libtiff,
mpfr,
nanoflann,
nix-update-script,
llvmPackages,
opencv,
openmp,
pkg-config,
python3Packages,
stdenv,
@@ -28,30 +29,32 @@ let
buildInputs = old.buildInputs ++ [ zstd ];
});
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
version = "2.4.0";
pname = "openmvs";
src = fetchFromGitHub {
owner = "cdcseacave";
repo = "openmvs";
rev = "v${version}";
hash = "sha256-0tL2tqHYBQMGL9k+NqTUxieWuDP3YB6X9DcXYnlGWWg=";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-0tL2tqHYBQMGL9k+NqTUxieWuDP3YB6X9DcXYnlGWWg=";
};
# SSE is enabled by default
cmakeFlags = [
(lib.cmakeFeature "Python3_EXECUTABLE" (lib.getExe python3Packages.python))
]
++ lib.optional (!stdenv.hostPlatform.isx86_64) "-DOpenMVS_USE_SSE=OFF";
postPatch = ''
substituteInPlace CMakeLists.txt --replace-fail \
'FIND_PACKAGE(Boost REQUIRED COMPONENTS iostreams program_options system serialization OPTIONAL_COMPONENTS ''${Boost_EXTRA_COMPONENTS})' \
'FIND_PACKAGE(Boost REQUIRED COMPONENTS iostreams program_options serialization OPTIONAL_COMPONENTS ''${Boost_EXTRA_COMPONENTS})'
'';
cmakeFlags = [
(lib.cmakeFeature "Python3_EXECUTABLE" (lib.getExe python3Packages.python))
]
# SSE is enabled by default
++ lib.optionals (!stdenv.hostPlatform.isx86_64) [
(lib.cmakeBool "OpenMVS_USE_SSE" false)
];
buildInputs = [
boostWithZstd
ceres-solver
@@ -66,7 +69,7 @@ stdenv.mkDerivation rec {
mpfr
nanoflann
opencv
openmp
llvmPackages.openmp
vcg
];
@@ -94,9 +97,12 @@ stdenv.mkDerivation rec {
runHook postCheck
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Open Multi-View Stereo reconstruction library";
homepage = "https://github.com/cdcseacave/openMVS";
changelog = "https://github.com/cdcseacave/openMVS/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.agpl3Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
@@ -104,4 +110,4 @@ stdenv.mkDerivation rec {
miniharinn
];
};
}
})

View File

@@ -10,12 +10,12 @@
python3Packages.buildPythonApplication (finalAttrs: {
pname = "openshot-qt";
version = "3.5.1-unstable-2026-04-22";
version = "3.5.1-unstable-2026-07-23";
src = fetchFromGitHub {
owner = "OpenShot";
repo = "openshot-qt";
rev = "930ff919762570eaf35a879574da8f8da9f196be";
hash = "sha256-o0BPEzkEAyoZkPkiR9G8i2nANgDFI4wjD5b9hGOqB0c=";
rev = "9cd2b3f3ee9024c3496487a2de30a402515ed659";
hash = "sha256-SoEt3tuydz+JUzhvUa7Pejxd1LYNia17YvGmVlnh48I=";
};
format = "setuptools";

View File

@@ -16,7 +16,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "parla";
version = "0.7.6";
version = "0.7.8";
__structuredAttrs = true;
strictDeps = true;
@@ -24,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "trufae";
repo = "parla";
tag = finalAttrs.version;
hash = "sha256-1gruDZCgGr8N8mWpYWs2p8HrXRX52DJ/rowvg/1/2Gk=";
hash = "sha256-hFAt2P6U9GtV80HeUBMVATv7T5UsCEGTOv9s1khChus=";
};
nativeBuildInputs = [

View File

@@ -69,6 +69,12 @@ buildNpmPackage (finalAttrs: {
runHook postBuild
'';
dontNpmPrune = true;
preInstall = ''
npm prune --omit=dev --no-save
'';
# npm workspace symlinks in the output point into packages/ which
# doesn't exist there. Replace runtime deps with built content and
# delete the rest.

View File

@@ -78,7 +78,7 @@ stdenvNoLibc.mkDerivation (finalAttrs: {
# rejects -ftls-model; fall back to non-thread-local errno.
(lib.mesonBool "thread-local-storage" false)
]
++ lib.optionals finalAttrs.doCheck [
++ lib.optionals finalAttrs.finalPackage.doCheck [
(lib.mesonBool "tests" true)
(lib.mesonBool "native-tests" canExecute)
(lib.mesonBool "native-math-tests" canExecute)

View File

@@ -0,0 +1,74 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
expat,
fontconfig,
freetype,
libGL,
libxkbcommon,
wayland,
libx11,
libxcursor,
libxi,
libxrandr,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "pinentry-egui";
version = "0-unstable-2026-07-10";
src = fetchFromGitHub {
owner = "dsociative";
repo = "pinentry-egui";
rev = "c81bf237048f5b296488751467bb2975982d05af";
hash = "sha256-xUhPaXiysXbOctM3FO6WgafVPUOQ+9lP2d4U9PBxCvk=";
};
__structuredAttrs = true;
cargoHash = "sha256-81W3NOQ6EOV3bMt7SYtg3AjAgmdHZ81gEtQkaOYVFIk=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [
expat
fontconfig
freetype
libGL
libxkbcommon
wayland
libx11
libxcursor
libxi
libxrandr
];
postFixup = ''
patchelf $out/bin/pinentry-egui \
--add-rpath ${
lib.makeLibraryPath [
libGL
libxkbcommon
wayland
]
}
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Modern, native Wayland pinentry implementation for GPG using egui";
homepage = "https://github.com/dsociative/pinentry-egui";
license =
with lib.licenses;
OR [
mit
asl20
];
maintainers = with lib.maintainers; [ colemickens ];
mainProgram = "pinentry-egui";
platforms = lib.platforms.linux;
};
})

View File

@@ -8,17 +8,18 @@
zeromq,
czmq,
libsodium,
runCommand,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "prime-server";
version = "0.7.0";
version = "0.13.1";
src = fetchFromGitHub {
owner = "kevinkreiser";
repo = "prime_server";
tag = finalAttrs.version;
sha256 = "0izmmvi3pvidhlrgfpg4ccblrw6fil3ddxg5cfxsz4qbh399x83w";
hash = "sha256-B6vy/y4PDEpnxXuMpAisBq5avNpW84q/+9zbuNBOnko=";
fetchSubmodules = true;
};
@@ -26,30 +27,39 @@ stdenv.mkDerivation (finalAttrs: {
cmake
pkg-config
];
buildInputs = [
buildInputs = [ libsodium ];
propagatedBuildInputs = [
curl
zeromq
czmq
libsodium
zeromq
];
env.NIX_CFLAGS_COMPILE = toString (
[
# https://github.com/kevinkreiser/prime_server/issues/95
"-Wno-error=unused-variable"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# logging.hpp calls sprintf, which the macOS SDK marks deprecated. The
# build uses -Werror, so the deprecation stops it.
"-Wno-error=deprecated-declarations"
]
);
passthru.tests.simple =
runCommand "prime-server-test"
{
nativeBuildInputs = [
finalAttrs.finalPackage
curl
];
}
''
prime_serverd tcp://127.0.0.1:8001 1 0 &
pid=$!
trap 'kill $pid' EXIT
test "$(curl -fsS --retry 30 --retry-delay 1 --retry-connrefused 'http://127.0.0.1:8001/is_prime?possible_prime=17')" = 17
touch "$out"
'';
meta = {
description = "Non-blocking (web)server API for distributed computing and SOA based on zeromq";
homepage = "https://github.com/kevinkreiser/prime_server";
license = lib.licenses.bsd2;
maintainers = [ lib.maintainers.Thra11 ];
maintainers = with lib.maintainers; [
Thra11
karlbeecken
];
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
})

View File

@@ -50,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
cmakeFlags = [
(lib.cmakeBool "BUILD_DOCUMENTATION" false)
(lib.cmakeBool "BUILD_EXAMPLES" false)
(lib.cmakeBool "BUILD_TESTING" finalAttrs.doCheck)
(lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck)
(lib.cmakeBool "BUILD_OMEMO" withOmemo)
(lib.cmakeBool "WITH_ENCRYPTION" withEncryption)
(lib.cmakeBool "WITH_GSTREAMER" withGstreamer)

View File

@@ -26,13 +26,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "radicle-desktop";
version = "0.14.0";
version = "0.15.0";
src = fetchFromRadicle {
seed = "seed.radicle.dev";
repo = "z4D5UCArafTzTQpDZNQRuqswh3ury";
tag = "releases/${finalAttrs.version}";
hash = "sha256-yT51MCHt00JEUbuC6rcXN3L4Vul3aBa8YCgpGVzM5rQ=";
hash = "sha256-L5QfFvswU/iPgObhh09/SAlMRy5w+Qs1kXDGpY31wjA=";
leaveDotGit = true;
postFetch = ''
git -C $out rev-parse --short HEAD > $out/.git_head
@@ -53,10 +53,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
npmDeps = fetchNpmDeps {
inherit (finalAttrs) src;
hash = "sha256-HsPz3S2TL7TJzDU7c7IWgT7kO+FkloMsAWc8g5ZKofw=";
hash = "sha256-4gRc/nNrOEi7PU+5bSsR22z3f55cINebSrlFQ1NGTfk=";
};
cargoHash = "sha256-BTSmfMrxNwAdoPuYn4hbx9C9myE1wJh+1FXPG78IgeU=";
cargoHash = "sha256-DZM1YX3lzCvKGtrSxxeJkinR91HFWe5SpdqQ+oP1Hgc=";
twemojiAssets = fetchFromGitHub {
owner = "twitter";

View File

@@ -0,0 +1,118 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
cargo-tauri,
alsa-lib,
dbus,
glib-networking,
libayatana-appindicator,
libsoup_3,
openssl,
pcsclite,
perl,
pkg-config,
udev,
webkitgtk_4_1,
wrapGAppsHook4,
}:
let
# Ratspeak resolves its protocol crates by relative path from sibling
# checkouts (../rsReticulum and friends). Upstream does not tag the
# siblings together with every app release, so each one is pinned to the
# revision current at the v1.0.25 release date.
rsReticulum = fetchFromGitHub {
owner = "ratspeak";
repo = "rsReticulum";
rev = "17e6107aa8fb9a5b0c2cac2f4fe4b68655593bd8";
hash = "sha256-0HjeGZ57eiz9z9akc+ESdZLAN+/uR9LyNaMLgYiTPO8=";
};
rsLXMF = fetchFromGitHub {
owner = "ratspeak";
repo = "rsLXMF";
rev = "393478019b3a076abc7af5f0d2c7b980b3329550";
hash = "sha256-uCoU4HtdRy6sB8vi5BtifKFAy0a7FPuHuuRb1EJTJ2c=";
};
rsLXST = fetchFromGitHub {
owner = "ratspeak";
repo = "rsLXST";
rev = "e3f80815bcf1c1d6af1c07135dfe05b6163d596a";
hash = "sha256-921xMNdneOTurUoUR5ImPEB8ztfEQLl9jCZY+s9Cjuo=";
};
lrgp-rs = fetchFromGitHub {
owner = "ratspeak";
repo = "lrgp-rs";
rev = "0b55361ebf91c1caa09d5ed8ab88ac0a6d955de6";
hash = "sha256-MZGWGCWLc+suHCD9NFV6m8A4EP4pLfogaqm93pMk/ss=";
};
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ratspeak";
version = "1.0.25";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "ratspeak";
repo = "Ratspeak";
tag = "v${finalAttrs.version}";
hash = "sha256-HJH31dAnmSK85AkX+ufvmo+Nmd9X6xmLO06Lys8kces=";
};
# The app expects the protocol repos next to its own checkout.
postUnpack = ''
cp -r ${rsReticulum} rsReticulum
cp -r ${rsLXMF} rsLXMF
cp -r ${rsLXST} rsLXST
cp -r ${lrgp-rs} lrgp-rs
chmod -R u+w rsReticulum rsLXMF rsLXST lrgp-rs
'';
cargoHash = "sha256-XumEJazJux0FFLS6qcruaXdOLsZ9hfn8Q/hA9Ot4RzM=";
cargoRoot = "src-tauri";
buildAndTestSubdir = finalAttrs.cargoRoot;
nativeBuildInputs = [
cargo-tauri.hook
perl
pkg-config
]
++ lib.optionals stdenv.hostPlatform.isLinux [ wrapGAppsHook4 ];
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
dbus
glib-networking
libayatana-appindicator
libsoup_3
openssl
pcsclite
udev
webkitgtk_4_1
];
# The dashboard ships modular CSS; the app serves the concatenated file.
preBuild = ''
bash dashboard/build-css.sh
'';
# The tray icon library is dlopened at runtime, not linked.
preFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
gappsWrapperArgs+=(
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libayatana-appindicator ]}
)
'';
passthru.updateScript = ./update.sh;
meta = {
description = "Reticulum and LXMF client with messaging, file sharing, voice calls and LoRa support";
homepage = "https://github.com/ratspeak/Ratspeak";
changelog = "https://github.com/ratspeak/Ratspeak/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [ eldios ];
platforms = lib.platforms.linux;
mainProgram = "ratspeak";
};
})

View File

@@ -0,0 +1,72 @@
#!/usr/bin/env bash
# Update ratspeak to the latest upstream release tag.
#
# Ratspeak resolves its protocol crates from sibling checkouts, so a version
# bump means updating five pins together: the app tag plus the four sibling
# revisions current at that tag's date. Requires: curl, jq, nix, sed.
set -euo pipefail
cd "$(dirname "$0")"
github_api() {
curl -sfL -H "Accept: application/vnd.github+json" \
${GITHUB_TOKEN:+-H "Authorization: Bearer $GITHUB_TOKEN"} \
"https://api.github.com/$1"
}
# Works both from the standalone packaging flake and from a nixpkgs checkout.
build() {
if [ -f flake.nix ]; then
nix build .#ratspeak
else
nix-build "$(git rev-parse --show-toplevel)" -A ratspeak --no-out-link
fi
}
prefetch() {
nix flake prefetch --json "github:ratspeak/$1/$2" | jq -r .hash
}
current=$(sed -nE 's/^ *version = "([^"]+)";$/\1/p' package.nix | head -1)
# releases/latest skips pre-releases (rc tags) on purpose.
tag=${RATSPEAK_TAG:-$(github_api repos/ratspeak/Ratspeak/releases/latest | jq -r .tag_name)}
new=${tag#v}
if [ "$new" = "$current" ] && [ -z "${RATSPEAK_TAG:-}" ]; then
echo "ratspeak is up to date ($current)"
exit 0
fi
tag_date=$(github_api "repos/ratspeak/Ratspeak/commits/$tag" | jq -r .commit.committer.date)
echo "updating ratspeak $current -> $new (tagged $tag_date)"
sed -i -E "s|^( *version = )\"[^\"]+\";|\1\"$new\";|" package.nix
app_hash=$(prefetch Ratspeak "$tag")
sed -i "/repo = \"Ratspeak\";/,/hash = / s|hash = \".*\";|hash = \"$app_hash\";|" package.nix
for repo in rsReticulum rsLXMF rsLXST lrgp-rs; do
rev=$(github_api "repos/ratspeak/$repo/commits?until=$tag_date&per_page=1" | jq -r '.[0].sha')
hash=$(prefetch "$repo" "$rev")
echo " $repo -> $rev"
sed -i \
-e "/repo = \"$repo\";/,/hash = / s|rev = \".*\";|rev = \"$rev\";|" \
-e "/repo = \"$repo\";/,/hash = / s|hash = \".*\";|hash = \"$hash\";|" \
package.nix
done
# Two-pass cargoHash: reset to the fake hash, read the real one from the
# vendor mismatch error, write it back. The build failure is expected here,
# so it must not trip set -e/pipefail.
fake="sha256-$(printf 'A%.0s' {1..43})="
sed -i -E "s|^( *cargoHash = )\".*\";|\1\"$fake\";|" package.nix
build_log=$(build 2>&1 || true)
cargo_hash=$(printf '%s\n' "$build_log" | sed -nE 's/^ *got: *(sha256-.*)$/\1/p' | head -1)
if [ -z "$cargo_hash" ]; then
echo "error: could not extract cargoHash from build output" >&2
exit 1
fi
sed -i -E "s|^( *cargoHash = )\".*\";|\1\"$cargo_hash\";|" package.nix
echo "verifying build..."
build
echo "ratspeak updated to $new"

View File

@@ -27,8 +27,8 @@ stdenv.mkDerivation (finalAttrs: {
};
postPatch = ''
substituteInPlace neo/extern/nvrhi/tools/shaderCompiler/CMakeLists.txt \
--replace "AppleClang" "Clang"
substituteInPlace neo/extern/ShaderMake/CMakeLists.txt \
--replace-fail "AppleClang" "Clang"
'';
nativeBuildInputs = [

View File

@@ -7,10 +7,10 @@
}:
let
pname = "remnote";
version = "1.27.19";
version = "1.27.32";
src = fetchurl {
url = "https://download2.remnote.io/remnote-desktop2/RemNote-${version}.AppImage";
hash = "sha256-efu5QQRzZan6S0mfNuxnCJMGnLCM+BSwMXpAqOPrqhI=";
hash = "sha256-CwiQFMu/N+Dj8pntSMy8OjjCfbgZBSV2pEBRPk7njfs=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in

View File

@@ -44,7 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
"install"
"install-lib-headers"
]
++ lib.optionals (!enableStatic) [
++ lib.optionals (!enableStatic && !stdenv.hostPlatform.isWindows) [
"install-lib-so-link"
];

View File

@@ -1,18 +0,0 @@
{ fetchurl }:
let
pname = "roam-research";
version = "0.0.24";
in
{
inherit pname version;
sources = {
aarch64-darwin = fetchurl {
url = "https://roam-electron-deploy.s3.us-east-2.amazonaws.com/Roam+Research-${version}-arm64.dmg";
hash = "sha256-fPtJAKfh65/dEryi0kdg+1hLfdvzBU87uS0y6eaaVy4=";
};
x86_64-linux = fetchurl {
url = "https://roam-electron-deploy.s3.us-east-2.amazonaws.com/${pname}_${version}_amd64.deb";
hash = "sha256-vpceynkr0/IOSqdmtVxKliSIJEGvLhczqgrsQyqPVIo=";
};
};
}

View File

@@ -1,42 +0,0 @@
{
lib,
stdenv,
_7zz,
fetchurl,
}:
let
common = import ./common.nix { inherit fetchurl; };
inherit (stdenv.hostPlatform) system;
in
stdenv.mkDerivation rec {
inherit (common) pname version;
src = common.sources.${system} or (throw "Source for ${pname} is not available for ${system}");
appName = "Roam Research";
sourceRoot = ".";
nativeBuildInputs = [ _7zz ];
installPhase = ''
runHook preInstall
mkdir -p "$out/Applications"
cp -R *.app "$out/Applications"
mkdir -p $out/bin
ln -s "$out/Applications/${appName}.app/Contents/MacOS/${appName}" "$out/bin/${appName}"
runHook postInstall
'';
meta = {
description = "Note-taking tool for networked thought";
homepage = "https://roamresearch.com/";
maintainers = with lib.maintainers; [ dbalan ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
platforms = [
"aarch64-darwin"
];
mainProgram = "roam-research";
};
}

View File

@@ -1,106 +0,0 @@
{
stdenv,
lib,
fetchurl,
alsa-lib,
atk,
cairo,
cups,
dbus,
dpkg,
expat,
gdk-pixbuf,
glib,
gtk3,
libx11,
libxscrnsaver,
libxcomposite,
libxcursor,
libxdamage,
libxext,
libxfixes,
libxi,
libxrandr,
libxrender,
libxtst,
libdrm,
libpulseaudio,
libxcb,
libxkbcommon,
libxshmfence,
libgbm,
nspr,
nss,
pango,
udev,
}:
let
common = import ./common.nix { inherit fetchurl; };
inherit (stdenv.hostPlatform) system;
libPath = lib.makeLibraryPath [
alsa-lib
atk
cairo
cups
dbus
expat
gdk-pixbuf
glib
gtk3
libx11
libxcomposite
libxdamage
libxext
libxfixes
libxi
libxrandr
libdrm
libxcb
libxkbcommon
libxshmfence
libgbm
nspr
nss
pango
stdenv.cc.cc
libxscrnsaver
libxcursor
libxrender
libxtst
libpulseaudio
udev
];
in
stdenv.mkDerivation rec {
inherit (common) pname version;
src = common.sources.${system} or (throw "Source for ${pname} is not available for ${system}");
nativeBuildInputs = [ dpkg ];
installPhase = ''
mkdir -p "$out/bin"
mv opt "$out/"
ln -s "$out/opt/Roam Research/roam-research" "$out/bin/roam-research"
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${libPath}:$out/opt/Roam Research:\$ORIGIN" "$out/opt/Roam Research/roam-research"
mv usr/* "$out/"
substituteInPlace $out/share/applications/roam-research.desktop \
--replace "/opt/Roam Research/roam-research" "roam-research"
'';
# autoPatchelfHook/patchelf are not used because they cause the binary to coredump.
dontPatchELF = true;
meta = {
description = "Note-taking tool for networked thought";
homepage = "https://roamresearch.com/";
maintainers = with lib.maintainers; [ dbalan ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ];
mainProgram = "roam-research";
};
}

View File

@@ -1,8 +0,0 @@
{ stdenv, callPackage, ... }@args:
let
extraArgs = removeAttrs args [ "callPackage" ];
in
if stdenv.hostPlatform.isDarwin then
callPackage ./darwin.nix (extraArgs // { })
else
callPackage ./linux.nix (extraArgs // { })

View File

@@ -7,13 +7,13 @@
buildGoModule (finalAttrs: {
pname = "routedns";
version = "0.1.226";
version = "0.1.233";
src = fetchFromGitHub {
owner = "folbricht";
repo = "routedns";
rev = "v${finalAttrs.version}";
hash = "sha256-pGAzdZDZeWgw+BIL5JmrqrllxN7w+Se9yWRVozzgt6s=";
hash = "sha256-2Cc7TDv6VxNwr9y+xOcBt1PzQMmq0lguLwQoRRkaasQ=";
};
vendorHash = "sha256-w8rZue6/cc8wg40Ey+P216cQGhbCznjSsLi1G4YfRsI=";

View File

@@ -1,12 +1,12 @@
{
fetchFromGitHub,
gcc15Stdenv,
stdenv,
lib,
nix-update-script,
pkg-config,
systemd,
}:
gcc15Stdenv.mkDerivation (finalAttrs: {
stdenv.mkDerivation (finalAttrs: {
pname = "runapp";
version = "0.5.1";

View File

@@ -4,25 +4,32 @@
fetchFromGitHub,
nix-update-script,
nixosTests,
ciMode ? true, # Override to false to run time-sensitive tests locally
}:
buildGoModule (finalAttrs: {
pname = "scion";
version = "0.12.0";
version = "0.15.1";
src = fetchFromGitHub {
owner = "scionproto";
repo = "scion";
tag = "v${finalAttrs.version}";
hash = "sha256-J51GIQQhS623wFUU5dI/TwT2rkDH69518lpdCLZ/iM0=";
hash = "sha256-UQgCjX9xYClsBviNwCmxHXAJ7MNce7olpzaCM2ybuc0=";
};
vendorHash = "sha256-Ew/hQM8uhaM89sCcPKUBbiGukDq3h5x+KID3w/8BDHg=";
__structuredAttrs = true;
# Tests bind to localhost
__darwinAllowLocalNetworking = true;
vendorHash = "sha256-A9K2/bWYUdMA8ypSisxk4NMOavHz51FaHEaxahz+0ek=";
excludedPackages = [
"acceptance"
"demo"
"tools"
"private/underlay/ebpf"
"pkg/private/xtest/graphupdater"
];
@@ -38,6 +45,11 @@ buildGoModule (finalAttrs: {
doCheck = true;
# Upstream disables time-sensitive tests and adjusts timeouts in CI
preCheck = lib.optionalString ciMode ''
export CI=42
'';
tags = [ "sqlite_mattn" ];
passthru = {

View File

@@ -42,7 +42,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "slurm";
version = "26-05-2-1";
version = "26-05-3-1";
# N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
# because the latter does not keep older releases.
@@ -51,7 +51,7 @@ stdenv.mkDerivation (finalAttrs: {
repo = "slurm";
# The release tags use - instead of .
tag = "slurm-${builtins.replaceStrings [ "." ] [ "-" ] finalAttrs.version}";
hash = "sha256-HkBHwN/j0do+CPpouG6qswZEOeY17owmA980wVubiw4=";
hash = "sha256-pyzESnZoFxy3A2p3b23SimTUurMlB63VV7dqcXZ43Hw=";
};
outputs = [

View File

@@ -0,0 +1,109 @@
{
lib,
stdenv,
fetchurl,
}:
let
version = "110.99.9";
arch = if stdenv.hostPlatform.is64bit then "64" else "32";
hashes = builtins.fromJSON (builtins.readFile ./hashes-legacy.json);
fetchSource =
name:
fetchurl {
url = "https://smlnj.cs.uchicago.edu/dist/working/${version}/${name}";
hash = hashes.${name};
};
bootSource = if stdenv.hostPlatform.is64bit then "boot.amd64-unix.tgz" else "boot.x86-unix.tgz";
sources = map fetchSource [
bootSource
"config.tgz"
"cm.tgz"
"compiler.tgz"
"runtime.tgz"
"system.tgz"
"MLRISC.tgz"
"smlnj-lib.tgz"
"old-basis.tgz"
"ckit.tgz"
"nlffi.tgz"
"cml.tgz"
"eXene.tgz"
"ml-lpt.tgz"
"ml-lex.tgz"
"ml-yacc.tgz"
"ml-burg.tgz"
"pgraph.tgz"
"trace-debug-profile.tgz"
"heap2asm.tgz"
"smlnj-c.tgz"
"doc.tgz"
"asdl.tgz"
];
in
stdenv.mkDerivation {
pname = "smlnj";
inherit version sources;
__structuredAttrs = true;
strictDeps = true;
unpackPhase = ''
for s in "''${sources[@]}"; do
b=$(basename $s)
cp $s ''${b#*-}
done
unpackFile config.tgz
mkdir base
./config/unpack $TMP runtime
'';
postPatch = ''
sed -i '/^PATH=/d' config/_arch-n-opsys base/runtime/config/gen-posix-names.sh
echo SRCARCHIVEURL="file:/$TMP" > config/srcarchiveurl
'';
buildPhase = ''
./config/install.sh -default ${arch}
'';
installPhase = ''
mkdir -pv $out
cp -rv bin lib $out
cd $out/bin
for i in *; do
sed -i "2iSMLNJ_HOME=$out/" $i
done
'';
passthru.updateScript = ./update-legacy.sh;
meta = {
description = "Standard ML of New Jersey, a compiler";
homepage = "https://smlnj.org";
downloadPage = "https://smlnj.org/dist/working/${version}/install.html";
changelog = "https://smlnj.org/dist/working/${version}/${version}-README.html";
license = lib.licenses.bsd3;
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryNativeCode
];
platforms = [
"x86_64-linux"
"i686-linux"
"aarch64-darwin"
];
maintainers = with lib.maintainers; [
skyesoss
thoughtpolice
];
mainProgram = "sml";
broken = !(stdenv.buildPlatform.canExecute stdenv.hostPlatform);
};
}

View File

@@ -6,8 +6,8 @@ set -euo pipefail
dir="$(dirname "$0")"
url="https://smlnj.cs.uchicago.edu/dist/working/"
hashfile="$dir/hashes.json"
nixfile="$dir/default.nix"
hashfile="$dir/hashes-legacy.json"
nixfile="$dir/package.nix"
version="$(curl --silent "$url" \
| sed -n 's:.*<b>\([0-9]\{3\}\.[0-9.-]\+\)</b>.*:\1:p' \

View File

@@ -37,7 +37,7 @@ stdenv.mkDerivation (
in
{
pname = "t3code-unwrapped";
version = "0.0.32";
version = "0.0.33";
strictDeps = true;
__structuredAttrs = true;
@@ -45,7 +45,7 @@ stdenv.mkDerivation (
owner = "pingdotgg";
repo = "t3code";
tag = "v${finalAttrs.version}";
hash = "sha256-Gmn3Fz0E32TnHPEun6cReXcW/dxfl6qI1TIFHzdWRzU=";
hash = "sha256-qZi9hMGzqpmnpqvvVtsQvkZIiVqTgOMWv1y15MiSAYg=";
};
postPatch = ''

View File

@@ -1,46 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
autoconf,
automake,
pkg-config,
gtk2,
libjack2,
libsndfile,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "timemachine";
version = "0.3.4";
src = fetchFromGitHub {
owner = "swh";
repo = "timemachine";
rev = "v${finalAttrs.version}";
sha256 = "16fgyw6jnscx9279dczv72092dddghwlp53rkfw469kcgvjhwx0z";
};
nativeBuildInputs = [
pkg-config
autoconf
automake
];
buildInputs = [
gtk2
libjack2
libsndfile
];
preConfigure = "./autogen.sh";
env.NIX_LDFLAGS = "-lm";
meta = {
description = "JACK audio recorder";
homepage = "http://plugin.org.uk/timemachine/";
license = lib.licenses.lgpl2;
platforms = lib.platforms.linux;
maintainers = [ lib.maintainers.nico202 ];
mainProgram = "timemachine";
};
})

View File

@@ -10,19 +10,19 @@
buildGoModule (finalAttrs: {
pname = "trivy";
version = "0.73.0";
version = "0.74.0";
src = fetchFromGitHub {
owner = "aquasecurity";
repo = "trivy";
tag = "v${finalAttrs.version}";
hash = "sha256-+iJb/Eg97kjNzg6OTuEWXAPJ/32FpfVU2ED4/6A4U+I=";
hash = "sha256-OXOT8qwqh8Gy+IJcvBza5nai5bvNMcAMeeT+b2zuWDg=";
};
# Hash mismatch on across Linux and Darwin
proxyVendor = true;
vendorHash = "sha256-0upMQ2fKKfaHAL/SVyzPpdRoBwMNS9PdHPHGAmEm148=";
vendorHash = "sha256-ajXgC6CCw0IaS/e3k0wGNIUOs9mTBIEuV21ZnwZj7SQ=";
subPackages = [ "cmd/trivy" ];

View File

@@ -46,7 +46,7 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optionals cudaSupport [
cudaPackages.cuda_cudart
]
++ lib.optionals finalAttrs.doCheck [
++ lib.optionals finalAttrs.finalPackage.doCheck [
numactl
gtest
gbenchmark
@@ -106,7 +106,7 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "UMF_BUILD_LIBUMF_POOL_JEMALLOC" useJemalloc)
(lib.cmakeBool "UMF_BUILD_TESTS" finalAttrs.doCheck)
(lib.cmakeBool "UMF_BUILD_TESTS" finalAttrs.finalPackage.doCheck)
# We won't be able to run these inside the sandbox, so no use in building them
(lib.cmakeBool "UMF_BUILD_GPU_TESTS" false)
(lib.cmakeBool "UMF_BUILD_BENCHMARKS" false)

View File

@@ -0,0 +1,103 @@
{
lib,
fetchFromGitHub,
rustPlatform,
buildPackages,
stdenv,
testers,
versionCheckHook,
rustc,
cacert,
pkg-config,
openssl,
cargo-c,
validatePkgConfig,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "upki";
version = "1.0.0-beta.3";
strictDeps = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "rustls";
repo = "upki";
tag = "upki-${finalAttrs.version}";
hash = "sha256-GZkXxidIjG76yIzAcMRsRorMVYpImFN5Q2pe2YgiEUs=";
};
cargoHash = "sha256-/z11KuGP3A3fh/Jk2Kx26x7okh6brHs+t/XC7BuPgcA=";
cargoBuildFlags = [
"--package=upki-cli"
"--package=upki-openssl"
];
cargoInstallFlags = [
"--package=upki-cli"
];
nativeBuildInputs = [
cargo-c
pkg-config
];
buildInputs = [ openssl ];
env.SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
postBuild = ''
${buildPackages.rust.envVars.setEnv} cargo cbuild --release --frozen \
--package=upki \
--prefix=$out \
--target=${stdenv.hostPlatform.rust.rustcTarget}
${buildPackages.rust.envVars.setEnv} cargo cbuild --release --frozen \
--package=upki-openssl \
--prefix=$out \
--target=${stdenv.hostPlatform.rust.rustcTarget}
'';
postInstall = ''
${buildPackages.rust.envVars.setEnv} cargo cinstall --release --frozen \
--package=upki \
--prefix=$out \
--target=${stdenv.hostPlatform.rust.rustcTarget}
${buildPackages.rust.envVars.setEnv} cargo cinstall --release --frozen \
--package=upki-openssl \
--prefix=$out \
--target=${stdenv.hostPlatform.rust.rustcTarget}
cp $out/include/upki/upki.h $out/include/upki_openssl/upki.h
'';
nativeInstallCheckInputs = [
pkg-config
versionCheckHook
validatePkgConfig
];
doInstallCheck = true;
passthru = {
updateScript = nix-update-script {
extraArgs = [ "--version=unstable" ];
};
tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
meta = {
description = "Platform-independent browser-grade certificate infrastructure";
homepage = "https://github.com/rustls/upki";
changelog = "https://github.com/rustls/upki/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.OR [
lib.licenses.mit
lib.licenses.asl20
];
maintainers = [ lib.maintainers.skyesoss ];
mainProgram = "upki";
pkgConfigModules = [
"upki"
"upki_openssl"
];
platforms = rustc.meta.platforms;
};
})

View File

@@ -7,11 +7,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "worker";
version = "5.2.2";
version = "5.3.1";
src = fetchurl {
url = "http://www.boomerangsworld.de/cms/worker/downloads/worker-${finalAttrs.version}.tar.gz";
hash = "sha256-xJxdOb6eEr8suf3u/vouYCGzTFugJpLtoKyCMeuoJv4=";
hash = "sha256-7w8Kpi1dzBZjHKzEwavPR/4Qwo+wl2FejSCDdORjALY=";
};
buildInputs = [ libx11 ];

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