Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot] 2025-06-27 12:07:20 +00:00 committed by GitHub
commit 465eb86dbb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
105 changed files with 3217 additions and 730 deletions

View File

@ -65,6 +65,7 @@ jobs:
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
retries: 3
script: |
const Bottleneck = require('bottleneck')
const path = require('node:path')
@ -147,8 +148,6 @@ jobs:
...context.repo,
workflow_id: 'pr.yml',
event: 'pull_request_target',
// In pull_request contexts the workflow is still running.
status: context.payload.pull_request ? undefined : 'success',
exclude_pull_requests: true,
head_sha: pull_request.head.sha
})).data.workflow_runs[0]?.id ??
@ -247,6 +246,7 @@ jobs:
.sort((a,b) => b-a)
.at(0) ?? item.created_at
)
log('latest_event_at', latest_event_at.toISOString())
const stale_at = new Date(new Date().setDate(new Date().getDate() - 180))
@ -390,7 +390,7 @@ jobs:
// so it should certainly be hit on the next iteration.
// TODO: Evaluate after a while, whether the above holds still true and potentially implement
// an overlap between runs.
page: total_runs % Math.ceil(total_pulls / 100)
page: (total_runs % Math.ceil(total_pulls / 100)) + 1
})).data
// Some items might be in both search results, so filtering out duplicates as well.

View File

@ -25915,6 +25915,12 @@
github = "TyberiusPrime";
githubId = 1257580;
};
tye-exe = {
name = "Tye";
email = "nixpkgs-fr@tye-home.xyz";
github = "tye-exe";
githubId = 131195812;
};
Tygo-van-den-Hurk = {
name = "Tygo van den Hurk";
github = "Tygo-van-den-Hurk";

View File

@ -5100,6 +5100,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
freeze-nvim = buildVimPlugin {
pname = "freeze.nvim";
version = "2025-03-25";
src = fetchFromGitHub {
owner = "charm-and-friends";
repo = "freeze.nvim";
rev = "590fdb0d724485f578e4fee0e3ae2b32040dfb1a";
sha256 = "1641xxp7yq4z25xck3l9vfcm0dvxcjvagawzixs4mvag214ndlam";
};
meta.homepage = "https://github.com/charm-and-friends/freeze.nvim/";
meta.hydraPlatforms = [ ];
};
friendly-snippets = buildVimPlugin {
pname = "friendly-snippets";
version = "2025-04-29";

View File

@ -16,6 +16,7 @@
mkYarnModules,
python3,
# Misc dependencies
charm-freeze,
code-minimap,
dailies,
dasht,
@ -1175,6 +1176,10 @@ in
dependencies = [ self.self ];
};
freeze-nvim = super.freeze-nvim.overrideAttrs {
runtimeDeps = [ charm-freeze ];
};
fruzzy =
let
# until https://github.com/NixOS/nixpkgs/pull/67878 is merged, there's no better way to install nim libraries with nix

View File

@ -390,6 +390,7 @@ https://github.com/jghauser/follow-md-links.nvim/,HEAD,
https://github.com/mhartington/formatter.nvim/,,
https://github.com/megaannum/forms/,,
https://github.com/rubiin/fortune.nvim/,HEAD,
https://github.com/charm-and-friends/freeze.nvim/,HEAD,
https://github.com/rafamadriz/friendly-snippets/,,
https://github.com/raghur/fruzzy/,,
https://github.com/SuperBo/fugit2.nvim/,HEAD,

View File

@ -3948,8 +3948,8 @@ let
mktplcRef = {
name = "prisma";
publisher = "Prisma";
version = "6.10.0";
hash = "sha256-+oYDEbDMltGhyjtyCJcDaR074SzVWW48vzoOlxklojU=";
version = "6.10.1";
hash = "sha256-3Qx5HAkRnxByRHyX99PIRlHwI7FeenVcK8v9T+d5++4=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/Prisma.prisma/changelog";
@ -4668,8 +4668,8 @@ let
mktplcRef = {
name = "svelte-vscode";
publisher = "svelte";
version = "109.8.1";
hash = "sha256-ILZ7YA7LngwpU3U+qsgHPd+oxyqLNGRiKUCFC/OMBAo=";
version = "109.9.0";
hash = "sha256-OgcFFYoJOtFVlOM12gYBG0AkliniawG6GdRtrFsjDIg=";
};
meta = {
changelog = "https://github.com/sveltejs/language-tools/releases";

View File

@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "claude-dev";
publisher = "saoudrizwan";
version = "3.17.14";
hash = "sha256-pYO1uy1Xd2+74rbc0D+MwK8xvSpmDeRLAVIjAR/F23w=";
version = "3.18.0";
hash = "sha256-h4A3tYCY3o89bF++YqOCUlahJsRE0XTdK7+NN/LbhgM=";
};
meta = {

View File

@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "snes9x";
version = "0-unstable-2025-06-13";
version = "0-unstable-2025-06-18";
src = fetchFromGitHub {
owner = "snes9xgit";
repo = "snes9x";
rev = "a93dd67c516061c3390506eb26e0457a264f86b6";
hash = "sha256-IOxYhDkrd9TgzEGiCM2HQxUiTv3Icmc0JE6216PqbYg=";
rev = "a168e789719d6bc8e06110d517d98c3d098d5834";
hash = "sha256-Kxi+/Uie0a7gmlNEj351Nlybb16W4A4joC8JSN1rvsU=";
};
makefile = "Makefile";

View File

@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "stella";
version = "0-unstable-2025-06-12";
version = "0-unstable-2025-06-26";
src = fetchFromGitHub {
owner = "stella-emu";
repo = "stella";
rev = "ee0b96cd87710ad19aa47156d39df5a92c156a34";
hash = "sha256-BnDF/UC3GiBC/06zBCDYrWA5cJPv7vtJ0grYgn5CcKo=";
rev = "c6ce6e80e87c828701629980e8a7119f3b08c5ab";
hash = "sha256-403Z0W9OQYbb8+O8kSWbpHkqywVhXbqqIyfsGlgEi+M=";
};
makefile = "Makefile";

View File

@ -8,17 +8,17 @@
rustPlatform.buildRustPackage rec {
pname = "kubectl-view-allocations";
version = "0.22.0";
version = "0.22.1";
src = fetchFromGitHub {
owner = "davidB";
repo = "kubectl-view-allocations";
tag = version;
hash = "sha256-MwTncyfR6knXss83sd3u879YRFUxWdDyNLpQO40sZ9c=";
hash = "sha256-6kHeILapewfyJjp5Xtq0rK5eHf8jymvc5xFGW8Qi9VU=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-bbNjOMShJMCWEcxU8F+R1BC6fqlLe2AK0y3N00HXjts=";
cargoHash = "sha256-evxwaZkToAjVvrnvOmz3HpOi+976sxPCOIlR8rmpYyo=";
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];

View File

@ -2,7 +2,7 @@
(callPackage ./generic.nix { }) {
channel = "edge";
version = "25.6.1";
sha256 = "0lpf9f5bj6x8b21xak6dzwscj0w9jcdvz83fl6nymy8z8y0dybq7";
version = "25.6.2";
sha256 = "0499zs1iq1a8i2xyg5yb59c8r08nw3zlahbn8w4rsrfb5099924p";
vendorHash = "sha256-ePioPHA9gps76VncdPkDEDE3sLUlrCxr7CFsXqoR6KM=";
}

View File

@ -13,16 +13,16 @@
buildGoModule rec {
pname = "netmaker";
version = "0.90.0";
version = "0.99.0";
src = fetchFromGitHub {
owner = "gravitl";
repo = pname;
rev = "v${version}";
hash = "sha256-/7tj3SuTa2lSMgN4f2/OutzoPvAN7ARK1RKTLlMw13Y=";
hash = "sha256-DUD6JTnTM3QVLhWIoRZ0Jc+Jre8GXtuKkV6MzLYCg4U=";
};
vendorHash = "sha256-Yd9vwdIwAGinIr/RLGdb4N9hsDeMu9aB2Z1EVnlxxtA=";
vendorHash = "sha256-QD9jkpsANzJeFHd4miShgACNOvI6sy38fs7pZNkPhms=";
inherit subPackages;

View File

@ -140,8 +140,6 @@ You can locally emulate the CI check using
$ ./ci/nixpkgs-vet.sh master
```
See [here](../../.github/workflows/nixpkgs-vet.yml) for more info.
## Recommendation for new packages with multiple versions
These checks of the `pkgs/by-name` structure can cause problems in combination:

View File

@ -2,7 +2,8 @@
lib,
fetchFromGitHub,
rustPlatform,
perl,
openssl,
pkg-config,
}:
rustPlatform.buildRustPackage (finalAttrs: {
@ -16,15 +17,18 @@ rustPlatform.buildRustPackage (finalAttrs: {
hash = "sha256-DFIiVNYom3LvU9IFA9w9FvXwm9gqfACDs8KaFKQR9Qs=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-/2i6GyBTKLf2oNFkizaBUHcLcCPgsy3g0p31D6cO+xg=";
nativeBuildInputs = [ perl ];
buildInputs = [ openssl ];
nativeBuildInputs = [ pkg-config ];
env.OPENSSL_NO_VENDOR = true;
meta = {
description = "Official launcher for AlterWare Call of Duty mods";
longDescription = "Our clients are designed to restore missing features that have been removed by the developers, as well as enhance the capabilities of the games";
homepage = "https://alterware.dev";
downloadPage = "https://github.com/alterware/alterware-launcher";
changelog = "https://github.com/alterware/alterware-launcher/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ andrewfield ];

View File

@ -4,7 +4,7 @@
gtksourceview5,
libspelling,
fetchFromGitHub,
python3Packages,
python312Packages,
nodePackages,
meson,
ninja,
@ -40,7 +40,10 @@ let
hash = "sha256-L6KVBw20K67lHT07Ws+ZC2DwdURahqyuyjAaK0kTgN0=";
};
in
python3Packages.buildPythonApplication {
# Requires telnetlib, and possibly others
# Try to remove in subsequent updates
python312Packages.buildPythonApplication {
inherit version src;
pname = "apostrophe";
pyproject = false;
@ -80,7 +83,7 @@ python3Packages.buildPythonApplication {
webkitgtk_6_0
];
propagatedBuildInputs = with python3Packages; [
dependencies = with python312Packages; [
pygobject3
pypandoc
chardet

View File

@ -8,13 +8,13 @@
buildGoModule rec {
pname = "bento";
version = "1.8.1";
version = "1.8.2";
src = fetchFromGitHub {
owner = "warpstreamlabs";
repo = "bento";
tag = "v${version}";
hash = "sha256-5AXXtjQU8GGepAlXWPAA32WfnkFtNmyJDaSqfbvoips=";
hash = "sha256-EAEeyMWXL/OL/LGgOQxvXtwrrVXtqY05AMeU5z86tks=";
};
proxyVendor = true;

View File

@ -1,12 +1,10 @@
{
lib,
buildPythonApplication,
python3Packages,
fetchFromGitHub,
pyserial,
halo,
}:
buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "btlejack";
version = "2.1.1";
@ -22,15 +20,15 @@ buildPythonApplication rec {
'';
propagatedBuildInputs = [
pyserial
halo
python3Packages.pyserial
python3Packages.halo
];
meta = with lib; {
meta = {
homepage = "https://github.com/virtualabs/btlejack";
description = "Bluetooth Low Energy Swiss-army knife";
mainProgram = "btlejack";
license = licenses.mit;
maintainers = with maintainers; [ oxzi ];
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ oxzi ];
};
}

View File

@ -11,12 +11,12 @@
stdenv.mkDerivation (finalAttrs: {
pname = "cannelloni";
version = "1.2.1";
version = "2.0.0";
src = fetchFromGitHub {
owner = "mguentner";
repo = "cannelloni";
tag = "v${finalAttrs.version}";
hash = "sha256-dhrB3qg/ljAP7nX+WpX+g7HaUEGj5pTPdDhY2Mi7pUo=";
hash = "sha256-b3pBC2XFK+pyONvnkPw/0YUXAG2cRD1OaN7k2ONzFV8=";
};
nativeBuildInputs = [

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "cctz";
version = "2.4";
version = "2.5";
src = fetchFromGitHub {
owner = "google";
repo = "cctz";
rev = "v${version}";
sha256 = "sha256-F4h8nT1karymV16FFHC0ldSbdOOx5AMstqi4Bc5m3UQ=";
sha256 = "sha256-YCE0DXuOT5tCOfLlemMH7I2F8c7HEK1NEUJvtfqnCg8=";
};
makeFlags = [ "PREFIX=$(out)" ];

View File

@ -6,17 +6,17 @@
rustPlatform.buildRustPackage rec {
pname = "comrak";
version = "0.39.0";
version = "0.39.1";
src = fetchFromGitHub {
owner = "kivikakk";
repo = "comrak";
rev = "v${version}";
sha256 = "sha256-hy/kn8hShwzLHvzp3x1eSGipYRSXjOYCMPHEM1xQEr0=";
sha256 = "sha256-czdX4Xfh5vD0d30QhxtTnzmwHkrX86fw8dVIx5b5J2c=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-MFSyxoNzPzIP2Yi3lCyEcsAx4DvNmk2Jr75oD/tX9iE=";
cargoHash = "sha256-QeMFaYpi8d88gpEbev485hGSCVTbEd7jbgkGSyGeM3g=";
meta = {
description = "CommonMark-compatible GitHub Flavored Markdown parser and formatter";

View File

@ -9,16 +9,16 @@
buildGoModule rec {
pname = "diffoci";
version = "0.1.6";
version = "0.1.7";
src = fetchFromGitHub {
owner = "reproducible-containers";
repo = "diffoci";
rev = "v${version}";
hash = "sha256-rCSLHlHUWS0wEnN8R2v1h+kQ7K62VQPfZmySHGSFZlQ=";
hash = "sha256-RBMgcTUdPO12rFUY82JkubXfaGjfB4oR+UqKwumFWs0=";
};
vendorHash = "sha256-udVigglpCgdYzJe9vdGZiQepZeOplQjqKB4Za8a+u6k=";
vendorHash = "sha256-NqYGehd+RcspQt5gQl9XH85Ds0dw+MU8W7xH/uzNjqU=";
ldflags = [
"-s"

View File

@ -15,13 +15,13 @@
stdenv.mkDerivation rec {
pname = "flowblade";
version = "2.20";
version = "2.22";
src = fetchFromGitHub {
owner = "jliljebl";
repo = "flowblade";
rev = "v${version}";
sha256 = "sha256-5w8mGFPOawbUwinzVLSCUZWGxuyxhi1/3tOrmQyfUUg=";
sha256 = "sha256-0puu0S4zONapjXaVBpPG5mH3UidQwre9yCSkjJVhdkc=";
};
buildInputs = [

View File

@ -8,13 +8,13 @@
buildNpmPackage rec {
pname = "fluidd";
version = "1.34.2";
version = "1.34.3";
src = fetchFromGitHub {
owner = "fluidd-core";
repo = "fluidd";
tag = "v${version}";
hash = "sha256-DbuUAHsRwAiXTGjAPxT1zEcsxNloCEFLuA62/wR4+yg=";
hash = "sha256-e3JM9QshQFHvDXvZznQBDFsOiwzxw2lz2hChw66lmMM=";
};
patches = [
@ -23,7 +23,7 @@ buildNpmPackage rec {
})
];
npmDepsHash = "sha256-ZOsPUON9/bBvSrc432SGHEKKLl9ZVCq9/Nkr9Xxba/g=";
npmDepsHash = "sha256-WDquc35cwyTyVM8Il5aVYWbJqSKhR8wsMNNFgexFKYg=";
installPhase = ''
mkdir -p $out/share/fluidd

View File

@ -64,8 +64,12 @@ python3Packages.buildPythonApplication rec {
install -Dm644 data/logos/gaphor-24x24.png $out/share/icons/hicolor/24x24/apps/org.gaphor.Gaphor.png
install -Dm644 data/logos/gaphor-48x48.png $out/share/icons/hicolor/48x48/apps/org.gaphor.Gaphor.png
install -Dm644 gaphor/ui/installschemas/org.gaphor.Gaphor.gschema.xml -t $out/share/glib-2.0/schemas/
glib-compile-schemas $out/share/glib-2.0/schemas/
GSCHEMA_PATH=$out/share/gsettings-schemas/$name/glib-2.0/schemas
install -Dm644 gaphor/ui/installschemas/org.gaphor.Gaphor.gschema.xml -t $GSCHEMA_PATH
glib-compile-schemas $GSCHEMA_PATH
substituteInPlace $out/${python3Packages.python.sitePackages}/gaphor/settings.py \
--replace-fail 'Gio.SettingsSchemaSource.get_default()' \
"Gio.SettingsSchemaSource.new_from_directory('$GSCHEMA_PATH', Gio.SettingsSchemaSource.get_default(), False)"
install -Dm644 data/org.gaphor.Gaphor.service -t $out/share/dbus-1/services/
substituteInPlace $out/share/dbus-1/services/org.gaphor.Gaphor.service \

View File

@ -1,6 +1,6 @@
{
lib,
clangStdenv,
stdenv,
fetchFromGitLab,
rustPlatform,
cargo,
@ -11,23 +11,17 @@
glib,
gtk4,
libadwaita,
zbar,
sqlite,
openssl,
pipewire,
gstreamer,
gst-plugins-base,
gst-plugins-bad,
gst-plugins-good,
gst-plugins-rs,
gst_all_1,
wrapGAppsHook4,
appstream-glib,
desktop-file-utils,
glycin-loaders,
nix-update-script,
}:
clangStdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "gnome-decoder";
version = "0.7.1";
@ -35,28 +29,21 @@ clangStdenv.mkDerivation rec {
domain = "gitlab.gnome.org";
owner = "World";
repo = "decoder";
rev = version;
tag = finalAttrs.version;
hash = "sha256-lLZ8tll/R9cwk3t/MULmrR1KWZ1e+zneXL93035epPE=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
inherit (finalAttrs) pname version src;
hash = "sha256-USfC7HSL1TtjP1SmBRTKkPyKE4DkSn6xeH4mzfIBQWg=";
};
preFixup = ''
gappsWrapperArgs+=(
# vp8enc preset
--prefix GST_PRESET_PATH : "${gst-plugins-good}/share/gstreamer-1.0/presets"
# See https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
--prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
)
'';
nativeBuildInputs = [
meson
ninja
pkg-config
glib
gtk4
wrapGAppsHook4
appstream-glib
desktop-file-utils
@ -70,28 +57,34 @@ clangStdenv.mkDerivation rec {
glib
gtk4
libadwaita
zbar
sqlite
openssl
pipewire
gstreamer
gst-plugins-base
gst-plugins-bad
gst-plugins-good
gst-plugins-rs # for gtk4paintablesink
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-rs # for gtk4paintablesink
];
# Adds vp8enc preset for camera enablement
preFixup = ''
gappsWrapperArgs+=(
--prefix GST_PRESET_PATH : "${gst_all_1.gst-plugins-good}/share/gstreamer-1.0/presets"
)
'';
passthru = {
updateScript = nix-update-script { };
};
meta = with lib; {
description = "Scan and Generate QR Codes";
meta = {
description = "Scan and generate QR codes";
homepage = "https://gitlab.gnome.org/World/decoder";
license = licenses.gpl3Plus;
platforms = platforms.linux;
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ zendo ];
mainProgram = "decoder";
maintainers = with maintainers; [ zendo ];
teams = [ teams.gnome-circle ];
platforms = lib.platforms.linux;
teams = [ lib.teams.gnome-circle ];
};
}
})

View File

@ -15,17 +15,17 @@ let
in
buildGoModule rec {
pname = "go-ethereum";
version = "1.15.11";
version = "1.16.0";
src = fetchFromGitHub {
owner = "ethereum";
repo = "go-ethereum";
rev = "v${version}";
hash = "sha256-2XGKkimwe9h8RxO3SzUta5Bh2Ooldl2LiHqUpn8FK7I=";
hash = "sha256-eu6VeG/vMdCOk15HWnKbtKRZbbYhH3y6SJrwEGxJs8w=";
};
proxyVendor = true;
vendorHash = "sha256-R9Qg6estiyjMAwN6tvuN9ZuE7+JqjEy+qYOPAg5lIJY=";
vendorHash = "sha256-Ggng6EDd5qRqcSbdycfivO8yiQcMOCSZt229JZcOlVs=";
doCheck = false;

View File

@ -8,16 +8,16 @@
buildGo124Module rec {
pname = "gowebly";
version = "3.0.3";
version = "3.0.4";
src = fetchFromGitHub {
owner = "gowebly";
repo = "gowebly";
tag = "v${version}";
hash = "sha256-iCdChT/eAWfeZyl5W1UHIjET3MGUD1YakjTToSS7iGs=";
hash = "sha256-oz/O5scGJigWjrmA2wnagDbf+epvwuyRI2CaSQY8K5I=";
};
vendorHash = "sha256-mFCNrcdwSExjVym4BN1Yb/lsfQHxCDrlWoa9vyQ74ko=";
vendorHash = "sha256-BDdH6cFicbjT2WOldNRc8NcFKrIaeqy+mw113PRnwa8=";
env.CGO_ENABLED = 0;

View File

@ -4,9 +4,7 @@
cmake,
desktopToDarwinBundle,
pkg-config,
qtbase,
qtsvg,
qtwayland,
qt6Packages,
gnuradioMinimal,
thrift,
mpir,
@ -14,7 +12,6 @@
alsa-lib,
libjack2,
wrapGAppsHook3,
wrapQtAppsHook,
# drivers (optional):
rtl-sdr,
hackrf,
@ -44,7 +41,7 @@ gnuradioMinimal.pkgs.mkDerivation rec {
nativeBuildInputs = [
cmake
pkg-config
wrapQtAppsHook
qt6Packages.wrapQtAppsHook
wrapGAppsHook3
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
@ -55,15 +52,15 @@ gnuradioMinimal.pkgs.mkDerivation rec {
fftwFloat
libjack2
gnuradioMinimal.unwrapped.boost
qtbase
qtsvg
qt6Packages.qtbase
qt6Packages.qtsvg
gnuradioMinimal.pkgs.osmosdr
rtl-sdr
hackrf
]
++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
qtwayland
qt6Packages.qtwayland
]
++ lib.optionals (gnuradioMinimal.hasFeature "gr-ctrlport") [
thrift
@ -92,7 +89,7 @@ gnuradioMinimal.pkgs.mkDerivation rec {
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = with lib; {
meta = {
description = "Software defined radio (SDR) receiver";
mainProgram = "gqrx";
longDescription = ''
@ -104,9 +101,9 @@ gnuradioMinimal.pkgs.mkDerivation rec {
homepage = "https://gqrx.dk/";
# Some of the code comes from the Cutesdr project, with a BSD license, but
# it's currently unknown which version of the BSD license that is.
license = licenses.gpl3Plus;
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux ++ lib.platforms.darwin;
maintainers = with lib.maintainers; [
bjornfor
fpletz
];

View File

@ -0,0 +1,38 @@
{
lib,
fetchFromGitHub,
rustPlatform,
openssl,
pkg-config,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "iw4x-launcher";
version = "0.10.10";
src = fetchFromGitHub {
owner = "iw4x";
repo = "launcher";
tag = "v${finalAttrs.version}";
hash = "sha256-VJxOkgk96DnmnlBh5jDFjKVDv7eMtx8RHg7qn0gQpaU=";
};
cargoHash = "sha256-nAqT4lkn9H9Yh87Ud+GtRAwgoFbAZNhJtWq2GgrcFbk=";
buildInputs = [ openssl ];
nativeBuildInputs = [ pkg-config ];
env.OPENSSL_NO_VENDOR = true;
meta = {
description = "Official launcher for the IW4x mod";
longDescription = "IW4x allows you to relive Call of Duty: Modern Warfare 2 (2009) in a secure environment with expanded modding capabilites";
homepage = "https://iw4x.dev";
downloadPage = "https://github.com/iw4x/launcher";
changelog = "https://github.com/iw4x/launcher/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ andrewfield ];
mainProgram = "iw4x-launcher";
platforms = lib.platforms.linux ++ lib.platforms.darwin;
};
})

View File

@ -61,7 +61,7 @@ python3Packages.buildPythonApplication rec {
# Tests output a few exceptions but still succeed
checkPhase = ''
runHook preCheck
stestr run
stestr run -e <(echo "test_load_ok")
runHook postCheck
'';

View File

@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "mcphost";
version = "0.13.1";
version = "0.18.1";
src = fetchFromGitHub {
owner = "mark3labs";
repo = "mcphost";
tag = "v${finalAttrs.version}";
hash = "sha256-vPho1fotkvGr1H+XiWpCukjgKifu3bALUQL6y5y+R08=";
hash = "sha256-5w42N2RJeZXyM7XiKuwYlGxwH6KIJajGnJ9HCHnBNZ8=";
};
vendorHash = "sha256-4jr73N8WcRQTRNvabOrUb2uRCW2LYxhGy0wshsZOcxc=";
vendorHash = "sha256-U/XtO4OhcioaSU2iGTNmvEilp9+Yu3TVafzNEaFcWEg=";
meta = {
description = "CLI host application that enables Large Language Models (LLMs) to interact with external tools through the Model Context Protocol (MCP)";

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "mcpp";
version = "2.7.2.1";
version = "2.7.2.2";
src = fetchFromGitHub {
owner = "museoa";
repo = "mcpp";
rev = finalAttrs.version;
hash = "sha256-T4feegblOeG+NU+c+PAobf8HT8KDSfcINkRAa1hNpkY=";
hash = "sha256-wz225bhBF0lFerOAhl8Rwmw8ItHd9BXQceweD9BqvEQ=";
};
env = lib.optionalAttrs stdenv.cc.isGNU {

View File

@ -4,21 +4,24 @@
fetchFromGitHub,
lib,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "micronucleus";
version = "2.04";
version = "2.6";
sourceRoot = "${src.name}/commandline";
sourceRoot = "${finalAttrs.src.name}/commandline";
src = fetchFromGitHub {
owner = "micronucleus";
repo = "micronucleus";
rev = version;
sha256 = "14msy9amlbflw5mqrbs57b7bby3nsgx43srr7215zyhfdgsla0in";
rev = "v${finalAttrs.version}";
sha256 = "sha256-IngVHeYgPUwSsboTZ5h55iLUxtdBSdugiLk5HbyHIvI=";
};
buildInputs = [ libusb-compat-0_1 ];
makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
makeFlags = [
"CC=${stdenv.cc.targetPrefix}cc"
"STATIC="
];
installPhase = ''
mkdir -p $out/bin
@ -27,11 +30,14 @@ stdenv.mkDerivation rec {
cp 49-micronucleus.rules $out/lib/udev
'';
meta = with lib; {
meta = {
description = "Upload tool for micronucleus";
mainProgram = "micronucleus";
homepage = "https://github.com/micronucleus/micronucleus";
license = licenses.gpl3;
maintainers = [ maintainers.cab404 ];
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [
cab404
kuflierl
];
};
}
})

View File

@ -6,13 +6,13 @@
}:
buildDotnetModule rec {
pname = "min-ed-launcher";
version = "0.12.0";
version = "0.12.1";
src = fetchFromGitHub {
owner = "rfvgyhn";
repo = "min-ed-launcher";
tag = "v${version}";
hash = "sha256-x3T88bhjxlf6K+COGfZGLsgwlEBSs9WR9zV+ZiTzh7g=";
hash = "sha256-/dzcWwpg1nIrqICAQIxzwMgfrCB1G9bu2bT7Cv1khFM=";
leaveDotGit = true; # During build the current commit is appended to the version
};

2063
pkgs/by-name/mi/minhtml/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,43 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "minhtml";
version = "0.16.4";
src = fetchFromGitHub {
owner = "wilsonzlin";
repo = "minify-html";
tag = "v${finalAttrs.version}";
hash = "sha256-SoCSHhgTLfztSfvzxxpZn/nQpXbKlkE4iiP0YZ0MVjY=";
};
# Upstream does not include a lock file so one has to be patched in.
cargoLock = {
lockFile = ./Cargo.lock;
};
postPatch = ''
cp ${./Cargo.lock} Cargo.lock
'';
# Ensures that only the correct package gets built, as upstream contains multiple.
cargoBuildFlags = [
"-p"
"minhtml"
];
cargoTestFlags = [
"-p"
"minhtml"
];
meta = {
description = "Minifier for HTML, JavaScript, and CSS";
mainProgram = "minhtml";
homepage = "https://github.com/wilsonzlin/minify-html";
changelog = "https://github.com/wilsonzlin/minify-html/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ tye-exe ];
};
})

View File

@ -1,57 +0,0 @@
--- a/src/nerofs.cpp
+++ b/src/nerofs.cpp
@@ -173,31 +173,19 @@
QString NeroFS::GetIcoextract()
{
- // TODO: this is for flexibility in sandboxed environments(?)
- // idk what the "good" path should be for Flatpak, so...
- if(QDir("/usr/bin").exists("icoextract")) {
- return "/usr/bin/icoextract";
- } else return "";
+ return QStandardPaths::findExecutable("icoextract");
}
QString NeroFS::GetIcoutils()
{
- // TODO: this is for flexibility in sandboxed environments(?)
- // idk what the "good" path should be for Flatpak, so...
- if(QDir("/usr/bin").exists("icotool")) {
- return "/usr/bin/icotool";
- } else return "";
+ return QStandardPaths::findExecutable("icotool");
}
QString NeroFS::GetUmU()
{
- // TODO: this is for flexibility in sandboxed environments(?)
- // idk what the "good" path should be for Flatpak, so...
- if(QDir("/usr/bin").exists("umu-run")) {
- return "/usr/bin/umu-run";
- } else return "";
+ return QStandardPaths::findExecutable("umu-run");
}
QString NeroFS::GetWinetricks(const QString &runner)
@@ -207,17 +195,13 @@
return protonsPath.path() + '/' + runner + "/protonfixes/winetricks";
else {
// fall back to system winetricks
- if(QDir("/usr/bin").exists("winetricks"))
- return "/usr/bin/winetricks";
- else return "";
+ return QStandardPaths::findExecutable("winetricks");
}
} else if(QDir(protonsPath.path() + '/' + currentRunner + "/protonfixes").exists("winetricks"))
return protonsPath.path() + '/' + currentRunner + "/protonfixes/winetricks";
else {
// fall back to system winetricks
- if(QDir("/usr/bin").exists("winetricks"))
- return "/usr/bin/winetricks";
- else return "";
+ return QStandardPaths::findExecutable("winetricks");
}
}

View File

@ -1,11 +0,0 @@
--- a/src/neroprefixsettings.cpp
+++ b/src/neroprefixsettings.cpp
@@ -598,7 +598,7 @@
tmpDir.mkdir("nero-manager");
QProcess process;
process.setWorkingDirectory(tmpDir.path()+"/nero-manager");
- process.start("/usr/bin/curl", { "-o", "bridge.zip", "-L", "https://github.com/EnderIce2/rpc-bridge/releases/latest/download/bridge.zip" });
+ process.start(QStandardPaths::findExecutable("curl"), { "-o", "bridge.zip", "-L", "https://github.com/EnderIce2/rpc-bridge/releases/latest/download/bridge.zip" });
printf("Downloading Discord RPC Bridge...\n");
NeroPrefixSettingsWindow::blockSignals(true);

View File

@ -18,13 +18,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "nero-umu";
version = "1.1.1";
version = "1.1.2";
src = fetchFromGitHub {
owner = "SeongGino";
repo = "Nero-umu";
tag = "v${finalAttrs.version}";
hash = "sha256-sX/Z/b5stauut8qg6IV/DdsCIkdx1N3+y1jwoXHr1LY=";
hash = "sha256-7Wmha/WsSmbEgD2Dw2izSRzw8ldIrWcRIdUMp2okHWY=";
};
#Replace quazip git submodule with pre-packaged quazip
@ -62,12 +62,6 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeFeature "NERO_QT_VERSION" "Qt6")
];
#Fixes to be able to find binaries for nix
patches = [
./nerofs.patch
./neroprefix.patch
];
installPhase = ''
runHook preInstall
install -Dm755 "nero-umu" "$out/bin/nero-umu"

View File

@ -8,16 +8,16 @@
buildGoModule rec {
pname = "netclient";
version = "0.90.0";
version = "0.99.0";
src = fetchFromGitHub {
owner = "gravitl";
repo = "netclient";
rev = "v${version}";
hash = "sha256-/drujpz0oeAZmV24Fxy3N6aqa5z72WiVxkjccbc6xmE=";
hash = "sha256-hSylhELMfiYNFHt03bJN1gTfy3EXSHJOj+ayUeU3+4w=";
};
vendorHash = "sha256-l2Vx1lD+LF/4N0QLVTDD1/TmWpR3JPAgMyrgw7aT2EQ=";
vendorHash = "sha256-bpXGXK97ohepYoAyJFZE49vo48ch3gAsVyax1+uLIfE=";
buildInputs = lib.optional stdenv.hostPlatform.isLinux libX11;

View File

@ -111,6 +111,10 @@ python3Packages.buildPythonApplication rec {
};
tests = {
with_reexec = nixos-rebuild-ng.override {
withReexec = true;
withNgSuffix = false;
};
with_nix_latest = nixos-rebuild-ng.override {
nix = nixVersions.latest;
};
@ -122,11 +126,9 @@ python3Packages.buildPythonApplication rec {
nix = nixVersions.nix_2_3;
};
with_lix_latest = nixos-rebuild-ng.override {
# oldest / minimum supported version in nixpkgs
nix = lixPackageSets.latest.lix;
};
with_lix_stable = nixos-rebuild-ng.override {
# oldest / minimum supported version in nixpkgs
nix = lixPackageSets.stable.lix;
};

View File

@ -3,17 +3,15 @@ import json
import logging
import os
import sys
from pathlib import Path
from subprocess import CalledProcessError, run
from typing import Final, assert_never
from . import nix, tmpdir
from . import nix
from .constants import EXECUTABLE, WITH_NIX_2_18, WITH_REEXEC, WITH_SHELL_FILES
from .models import Action, BuildAttr, Flake, ImageVariants, NixOSRebuildError, Profile
from .process import Remote, cleanup_ssh
from .utils import Args, LogFormatter, tabulate
NIXOS_REBUILD_ATTR: Final = "config.system.build.nixos-rebuild"
from .models import Action, BuildAttr, Flake, Profile
from .process import Remote
from .services import build_and_activate_system, reexec
from .utils import LogFormatter, tabulate
logger: Final = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
@ -271,72 +269,6 @@ def parse_args(
return args, args_groups
def reexec(
argv: list[str],
args: argparse.Namespace,
build_flags: Args,
flake_build_flags: Args,
) -> None:
drv = None
try:
# Parsing the args here but ignore ask_sudo_password since it is not
# needed and we would end up asking sudo password twice
if flake := Flake.from_arg(args.flake, Remote.from_arg(args.target_host, None)):
drv = nix.build_flake(
NIXOS_REBUILD_ATTR,
flake,
flake_build_flags | {"no_link": True},
)
else:
build_attr = BuildAttr.from_arg(args.attr, args.file)
drv = nix.build(
NIXOS_REBUILD_ATTR,
build_attr,
build_flags | {"no_out_link": True},
)
except CalledProcessError:
logger.warning(
"could not build a newer version of nixos-rebuild, using current version",
exc_info=logger.isEnabledFor(logging.DEBUG),
)
if drv:
new = drv / f"bin/{EXECUTABLE}"
current = Path(argv[0])
if new != current:
logger.debug(
"detected newer version of script, re-exec'ing, current=%s, new=%s",
current,
new,
)
# Manually call clean-up functions since os.execve() will replace
# the process immediately
cleanup_ssh()
tmpdir.TMPDIR.cleanup()
try:
os.execve(new, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"})
except Exception:
# Possible errors that we can have here:
# - Missing the binary
# - Exec format error (e.g.: another OS/CPU arch)
logger.warning(
"could not re-exec in a newer version of nixos-rebuild, "
"using current version",
exc_info=logger.isEnabledFor(logging.DEBUG),
)
# We already run clean-up, let's re-exec in the current version
# to avoid issues
os.execve(current, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"})
def validate_image_variant(image_variant: str, variants: ImageVariants) -> None:
if image_variant not in variants:
raise NixOSRebuildError(
"please specify one of the following supported image variants via "
"--image-variant:\n" + "\n".join(f"- {v}" for v in variants)
)
def execute(argv: list[str]) -> None:
args, args_groups = parse_args(argv)
@ -395,147 +327,20 @@ def execute(argv: list[str]) -> None:
| Action.BUILD_VM
| Action.BUILD_VM_WITH_BOOTLOADER
):
logger.info("building the system configuration...")
dry_run = action == Action.DRY_BUILD
no_link = action in (Action.SWITCH, Action.BOOT)
rollback = bool(args.rollback)
match action:
case Action.BUILD_IMAGE if flake:
variants = nix.get_build_image_variants_flake(
flake,
eval_flags=flake_common_flags,
)
validate_image_variant(args.image_variant, variants)
attr = f"config.system.build.images.{args.image_variant}"
case Action.BUILD_IMAGE:
variants = nix.get_build_image_variants(
build_attr,
instantiate_flags=common_flags,
)
validate_image_variant(args.image_variant, variants)
attr = f"config.system.build.images.{args.image_variant}"
case Action.BUILD_VM:
attr = "config.system.build.vm"
case Action.BUILD_VM_WITH_BOOTLOADER:
attr = "config.system.build.vmWithBootLoader"
case _:
attr = "config.system.build.toplevel"
match (action, rollback, build_host, flake):
case (Action.SWITCH | Action.BOOT, True, _, _):
path_to_config = nix.rollback(profile, target_host, sudo=args.sudo)
case (Action.TEST | Action.BUILD, True, _, _):
maybe_path_to_config = nix.rollback_temporary_profile(
profile,
target_host,
sudo=args.sudo,
)
if maybe_path_to_config: # kinda silly but this makes mypy happy
path_to_config = maybe_path_to_config
else:
raise NixOSRebuildError("could not find previous generation")
case (_, True, _, _):
raise NixOSRebuildError(
f"--rollback is incompatible with '{action}'"
)
case (_, False, Remote(_), Flake(_)):
path_to_config = nix.build_remote_flake(
attr,
flake,
build_host,
eval_flags=flake_common_flags,
flake_build_flags=flake_build_flags
| {"no_link": no_link, "dry_run": dry_run},
copy_flags=copy_flags,
)
case (_, False, None, Flake(_)):
path_to_config = nix.build_flake(
attr,
flake,
flake_build_flags=flake_build_flags
| {"no_link": no_link, "dry_run": dry_run},
)
case (_, False, Remote(_), None):
path_to_config = nix.build_remote(
attr,
build_attr,
build_host,
realise_flags=common_flags,
instantiate_flags=build_flags,
copy_flags=copy_flags,
)
case (_, False, None, None):
path_to_config = nix.build(
attr,
build_attr,
build_flags=build_flags
| {"no_out_link": no_link, "dry_run": dry_run},
)
case never:
# should never happen, but mypy is not smart enough to
# handle this with assert_never
# https://github.com/python/mypy/issues/16650
# https://github.com/python/mypy/issues/16722
raise AssertionError(
f"expected code to be unreachable, but got: {never}"
)
if not rollback:
nix.copy_closure(
path_to_config,
to_host=target_host,
from_host=build_host,
copy_flags=copy_flags,
)
if action in (Action.SWITCH, Action.BOOT):
nix.set_profile(
profile,
path_to_config,
target_host=target_host,
sudo=args.sudo,
)
# Print only the result to stdout to make it easier to script
def print_result(msg: str, result: str | Path) -> None:
print(msg, end=" ", file=sys.stderr, flush=True)
print(result, flush=True)
match action:
case Action.SWITCH | Action.BOOT | Action.TEST | Action.DRY_ACTIVATE:
nix.switch_to_configuration(
path_to_config,
action,
target_host=target_host,
sudo=args.sudo,
specialisation=args.specialisation,
install_bootloader=args.install_bootloader,
)
print_result("Done. The new configuration is", path_to_config)
case Action.BUILD:
print_result("Done. The new configuration is", path_to_config)
case Action.BUILD_VM | Action.BUILD_VM_WITH_BOOTLOADER:
# If you get `not-found`, please open an issue
vm_path = next(path_to_config.glob("bin/run-*-vm"), "not-found")
print_result(
"Done. The virtual machine can be started by running", vm_path
)
case Action.BUILD_IMAGE:
if flake:
image_name = nix.get_build_image_name_flake(
flake,
args.image_variant,
eval_flags=flake_common_flags,
)
else:
image_name = nix.get_build_image_name(
build_attr,
args.image_variant,
instantiate_flags=flake_common_flags,
)
disk_path = path_to_config / image_name
print_result("Done. The disk image can be found in", disk_path)
build_and_activate_system(
action=action,
args=args,
build_host=build_host,
target_host=target_host,
profile=profile,
flake=flake,
build_attr=build_attr,
build_flags=build_flags,
common_flags=common_flags,
copy_flags=copy_flags,
flake_build_flags=flake_build_flags,
flake_common_flags=flake_common_flags,
)
case Action.EDIT:
nix.edit(flake, flake_build_flags)
@ -561,9 +366,9 @@ def execute(argv: list[str]) -> None:
case Action.REPL:
if flake:
nix.repl_flake("toplevel", flake, flake_build_flags)
nix.repl_flake(flake, flake_build_flags)
else:
nix.repl("system", build_attr, build_flags)
nix.repl(build_attr, build_flags)
case _:
assert_never(action)

View File

@ -154,7 +154,7 @@ class Flake:
return cls(path, nixos_attr)
@classmethod
def from_arg(cls, flake_arg: Any, target_host: Remote | None) -> Self | None:
def from_arg(cls, flake_arg: Any, target_host: Remote | None) -> Self | None: # noqa: ANN401
match flake_arg:
case str(s):
return cls.parse(s, target_host)

View File

@ -545,14 +545,14 @@ def list_generations(profile: Profile) -> list[GenerationJson]:
)
def repl(attr: str, build_attr: BuildAttr, nix_flags: Args | None = None) -> None:
def repl(build_attr: BuildAttr, nix_flags: Args | None = None) -> None:
run_args = ["nix", "repl", "--file", build_attr.path]
if build_attr.attr:
run_args.append(build_attr.attr)
run_wrapper([*run_args, *dict_to_flags(nix_flags)])
def repl_flake(attr: str, flake: Flake, flake_flags: Args | None = None) -> None:
def repl_flake(flake: Flake, flake_flags: Args | None = None) -> None:
expr = Template(
files(__package__).joinpath(FLAKE_REPL_TEMPLATE).read_text()
).substitute(

View File

@ -0,0 +1,317 @@
import argparse
import logging
import os
import sys
from pathlib import Path
from subprocess import CalledProcessError
from typing import Final
from . import nix, tmpdir
from .constants import EXECUTABLE
from .models import Action, BuildAttr, Flake, ImageVariants, NixOSRebuildError, Profile
from .process import Remote, cleanup_ssh
from .utils import Args
NIXOS_REBUILD_ATTR: Final = "config.system.build.nixos-rebuild"
logger: Final = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
def reexec(
argv: list[str],
args: argparse.Namespace,
build_flags: Args,
flake_build_flags: Args,
) -> None:
drv = None
try:
# Parsing the args here but ignore ask_sudo_password since it is not
# needed and we would end up asking sudo password twice
if flake := Flake.from_arg(args.flake, Remote.from_arg(args.target_host, None)):
drv = nix.build_flake(
NIXOS_REBUILD_ATTR,
flake,
flake_build_flags | {"no_link": True},
)
else:
build_attr = BuildAttr.from_arg(args.attr, args.file)
drv = nix.build(
NIXOS_REBUILD_ATTR,
build_attr,
build_flags | {"no_out_link": True},
)
except CalledProcessError:
logger.warning(
"could not build a newer version of nixos-rebuild, using current version",
exc_info=logger.isEnabledFor(logging.DEBUG),
)
if drv:
new = drv / f"bin/{EXECUTABLE}"
current = Path(argv[0])
if new != current:
logger.debug(
"detected newer version of script, re-exec'ing, current=%s, new=%s",
current,
new,
)
# Manually call clean-up functions since os.execve() will replace
# the process immediately
cleanup_ssh()
tmpdir.TMPDIR.cleanup()
try:
os.execve(new, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"})
except Exception:
# Possible errors that we can have here:
# - Missing the binary
# - Exec format error (e.g.: another OS/CPU arch)
logger.warning(
"could not re-exec in a newer version of nixos-rebuild, "
"using current version",
exc_info=logger.isEnabledFor(logging.DEBUG),
)
# We already run clean-up, let's re-exec in the current version
# to avoid issues
os.execve(current, argv, os.environ | {"_NIXOS_REBUILD_REEXEC": "1"})
def _validate_image_variant(image_variant: str, variants: ImageVariants) -> None:
if image_variant not in variants:
raise NixOSRebuildError(
"please specify one of the following supported image variants via "
"--image-variant:\n" + "\n".join(f"- {v}" for v in variants)
)
def _get_system_attr(
action: Action,
args: argparse.Namespace,
flake: Flake | None,
build_attr: BuildAttr,
common_flags: Args,
flake_common_flags: Args,
) -> str:
match action:
case Action.BUILD_IMAGE if flake:
variants = nix.get_build_image_variants_flake(
flake,
eval_flags=flake_common_flags,
)
_validate_image_variant(args.image_variant, variants)
attr = f"config.system.build.images.{args.image_variant}"
case Action.BUILD_IMAGE:
variants = nix.get_build_image_variants(
build_attr,
instantiate_flags=common_flags,
)
_validate_image_variant(args.image_variant, variants)
attr = f"config.system.build.images.{args.image_variant}"
case Action.BUILD_VM:
attr = "config.system.build.vm"
case Action.BUILD_VM_WITH_BOOTLOADER:
attr = "config.system.build.vmWithBootLoader"
case _:
attr = "config.system.build.toplevel"
return attr
def _build_system(
attr: str,
action: Action,
args: argparse.Namespace,
build_host: Remote | None,
target_host: Remote | None,
profile: Profile,
flake: Flake | None,
build_attr: BuildAttr,
build_flags: Args,
common_flags: Args,
copy_flags: Args,
flake_build_flags: Args,
flake_common_flags: Args,
) -> Path:
dry_run = action == Action.DRY_BUILD
no_link = action in (Action.SWITCH, Action.BOOT)
match (action, args.rollback, build_host, flake):
case (Action.SWITCH | Action.BOOT, True, _, _):
path_to_config = nix.rollback(profile, target_host, sudo=args.sudo)
case (Action.TEST | Action.BUILD, True, _, _):
maybe_path_to_config = nix.rollback_temporary_profile(
profile,
target_host,
sudo=args.sudo,
)
if maybe_path_to_config: # kinda silly but this makes mypy happy
path_to_config = maybe_path_to_config
else:
raise NixOSRebuildError("could not find previous generation")
case (_, True, _, _):
raise NixOSRebuildError(f"--rollback is incompatible with '{action}'")
case (_, False, Remote(_), Flake(_)):
path_to_config = nix.build_remote_flake(
attr,
flake,
build_host,
eval_flags=flake_common_flags,
flake_build_flags=flake_build_flags
| {"no_link": no_link, "dry_run": dry_run},
copy_flags=copy_flags,
)
case (_, False, None, Flake(_)):
path_to_config = nix.build_flake(
attr,
flake,
flake_build_flags=flake_build_flags
| {"no_link": no_link, "dry_run": dry_run},
)
case (_, False, Remote(_), None):
path_to_config = nix.build_remote(
attr,
build_attr,
build_host,
realise_flags=common_flags,
instantiate_flags=build_flags,
copy_flags=copy_flags,
)
case (_, False, None, None):
path_to_config = nix.build(
attr,
build_attr,
build_flags=build_flags | {"no_out_link": no_link, "dry_run": dry_run},
)
case never:
# should never happen, but mypy is not smart enough to
# handle this with assert_never
# https://github.com/python/mypy/issues/16650
# https://github.com/python/mypy/issues/16722
raise AssertionError(f"expected code to be unreachable, but got: {never}")
if not args.rollback:
nix.copy_closure(
path_to_config,
to_host=target_host,
from_host=build_host,
copy_flags=copy_flags,
)
return path_to_config
def _activate_system(
path_to_config: Path,
action: Action,
args: argparse.Namespace,
target_host: Remote | None,
profile: Profile,
flake: Flake | None,
build_attr: BuildAttr,
flake_common_flags: Args,
common_flags: Args,
) -> None:
# Print only the result to stdout to make it easier to script
def print_result(msg: str, result: str | Path) -> None:
print(msg, end=" ", file=sys.stderr, flush=True)
print(result, flush=True)
match action:
case Action.SWITCH | Action.BOOT if not args.rollback:
nix.set_profile(
profile,
path_to_config,
target_host=target_host,
sudo=args.sudo,
)
nix.switch_to_configuration(
path_to_config,
action,
target_host=target_host,
sudo=args.sudo,
specialisation=args.specialisation,
install_bootloader=args.install_bootloader,
)
print_result("Done. The new configuration is", path_to_config)
case Action.SWITCH | Action.BOOT | Action.TEST | Action.DRY_ACTIVATE:
nix.switch_to_configuration(
path_to_config,
action,
target_host=target_host,
sudo=args.sudo,
specialisation=args.specialisation,
install_bootloader=args.install_bootloader,
)
print_result("Done. The new configuration is", path_to_config)
case Action.BUILD:
print_result("Done. The new configuration is", path_to_config)
case Action.BUILD_VM | Action.BUILD_VM_WITH_BOOTLOADER:
# If you get `not-found`, please open an issue
vm_path = next(path_to_config.glob("bin/run-*-vm"), "not-found")
print_result("Done. The virtual machine can be started by running", vm_path)
case Action.BUILD_IMAGE:
if flake:
image_name = nix.get_build_image_name_flake(
flake,
args.image_variant,
eval_flags=flake_common_flags,
)
else:
image_name = nix.get_build_image_name(
build_attr,
args.image_variant,
instantiate_flags=common_flags,
)
disk_path = path_to_config / image_name
print_result("Done. The disk image can be found in", disk_path)
def build_and_activate_system(
action: Action,
args: argparse.Namespace,
build_host: Remote | None,
target_host: Remote | None,
profile: Profile,
flake: Flake | None,
build_attr: BuildAttr,
build_flags: Args,
common_flags: Args,
copy_flags: Args,
flake_build_flags: Args,
flake_common_flags: Args,
) -> None:
logger.info("building the system configuration...")
attr = _get_system_attr(
action=action,
args=args,
flake=flake,
build_attr=build_attr,
common_flags=common_flags,
flake_common_flags=flake_common_flags,
)
path_to_config = _build_system(
attr,
action=action,
args=args,
build_host=build_host,
target_host=target_host,
profile=profile,
flake=flake,
build_attr=build_attr,
build_flags=build_flags,
common_flags=common_flags,
copy_flags=copy_flags,
flake_build_flags=flake_build_flags,
flake_common_flags=flake_common_flags,
)
_activate_system(
path_to_config,
action=action,
args=args,
target_host=target_host,
profile=profile,
flake=flake,
build_attr=build_attr,
common_flags=common_flags,
flake_common_flags=flake_common_flags,
)

View File

@ -65,10 +65,21 @@ extend-select = [
"ISC001",
"ISC002",
"ISC003",
# unused arguments
"ARG001",
"ARG002",
"ARG003",
"ARG004",
"ARG005",
]
ignore = [
[tool.ruff.lint.per-file-ignores]
"tests/*" = [
# allow unused arguments in tests (e.g., mocks)
"ARG001",
"ARG005",
# allow Any type
"ANN401"
"ANN401"
]
[tool.pytest.ini_options]

View File

@ -132,7 +132,7 @@ def test_parse_args() -> None:
@patch("os.execve", autospec=True)
@patch(get_qualified_name(nr.nix.build), autospec=True)
def test_reexec(mock_build: Mock, mock_execve: Mock, monkeypatch: MonkeyPatch) -> None:
monkeypatch.setattr(nr, "EXECUTABLE", "nixos-rebuild-ng")
monkeypatch.setattr(nr.services, "EXECUTABLE", "nixos-rebuild-ng")
argv = ["/path/bin/nixos-rebuild-ng", "switch", "--no-flake"]
args, _ = nr.parse_args(argv)
mock_build.return_value = Path("/path")
@ -141,7 +141,7 @@ def test_reexec(mock_build: Mock, mock_execve: Mock, monkeypatch: MonkeyPatch) -
mock_build.assert_has_calls(
[
call(
nr.NIXOS_REBUILD_ATTR,
nr.services.NIXOS_REBUILD_ATTR,
nr.models.BuildAttr(ANY, ANY),
{"build": True, "no_out_link": True},
)
@ -178,14 +178,14 @@ def test_reexec(mock_build: Mock, mock_execve: Mock, monkeypatch: MonkeyPatch) -
def test_reexec_flake(
mock_build: Mock, mock_execve: Mock, monkeypatch: MonkeyPatch
) -> None:
monkeypatch.setattr(nr, "EXECUTABLE", "nixos-rebuild-ng")
monkeypatch.setattr(nr.services, "EXECUTABLE", "nixos-rebuild-ng")
argv = ["/path/bin/nixos-rebuild-ng", "switch", "--flake"]
args, _ = nr.parse_args(argv)
mock_build.return_value = Path("/path")
nr.reexec(argv, args, {"build": True}, {"flake": True})
mock_build.assert_called_once_with(
nr.NIXOS_REBUILD_ATTR,
nr.services.NIXOS_REBUILD_ATTR,
nr.models.Flake(ANY, ANY),
{"flake": True, "no_link": True},
)
@ -536,7 +536,7 @@ def test_execute_nix_switch_flake(mock_run: Mock, tmp_path: Path) -> None:
)
@patch("subprocess.run", autospec=True)
@patch("uuid.uuid4", autospec=True)
@patch(get_qualified_name(nr.cleanup_ssh), autospec=True)
@patch(get_qualified_name(nr.services.cleanup_ssh), autospec=True)
@pytest.mark.skipif(
not WITH_NIX_2_18,
reason="Tests internal logic based on the assumption that Nix >= 2.18",
@ -755,7 +755,7 @@ def test_execute_nix_switch_build_target_host(
clear=True,
)
@patch("subprocess.run", autospec=True)
@patch(get_qualified_name(nr.cleanup_ssh), autospec=True)
@patch(get_qualified_name(nr.services.cleanup_ssh), autospec=True)
def test_execute_nix_switch_flake_target_host(
mock_cleanup_ssh: Mock,
mock_run: Mock,
@ -862,7 +862,7 @@ def test_execute_nix_switch_flake_target_host(
clear=True,
)
@patch("subprocess.run", autospec=True)
@patch(get_qualified_name(nr.cleanup_ssh), autospec=True)
@patch(get_qualified_name(nr.services.cleanup_ssh), autospec=True)
def test_execute_nix_switch_flake_build_host(
mock_cleanup_ssh: Mock,
mock_run: Mock,

View File

@ -579,18 +579,18 @@ def test_list_generations(mock_get_generations: Mock, tmp_path: Path) -> None:
@patch(get_qualified_name(n.run_wrapper, n), autospec=True)
def test_repl(mock_run: Mock) -> None:
n.repl("attr", m.BuildAttr("<nixpkgs/nixos>", None), {"nix_flag": True})
n.repl(m.BuildAttr("<nixpkgs/nixos>", None), {"nix_flag": True})
mock_run.assert_called_with(
["nix", "repl", "--file", "<nixpkgs/nixos>", "--nix-flag"]
)
n.repl("attr", m.BuildAttr(Path("file.nix"), "myAttr"))
n.repl(m.BuildAttr(Path("file.nix"), "myAttr"))
mock_run.assert_called_with(["nix", "repl", "--file", Path("file.nix"), "myAttr"])
@patch(get_qualified_name(n.run_wrapper, n), autospec=True)
def test_repl_flake(mock_run: Mock) -> None:
n.repl_flake("attr", m.Flake(Path("flake.nix"), "myAttr"), {"nix_flag": True})
n.repl_flake(m.Flake(Path("flake.nix"), "myAttr"), {"nix_flag": True})
# See nixos-rebuild-ng.tests.repl for a better test,
# this is mostly for sanity check
assert mock_run.call_count == 1

View File

@ -117,17 +117,17 @@ in
goBuild (finalAttrs: {
pname = "ollama";
# don't forget to invalidate all hashes each update
version = "0.9.2";
version = "0.9.3";
src = fetchFromGitHub {
owner = "ollama";
repo = "ollama";
tag = "v${finalAttrs.version}";
hash = "sha256-2mvaIEfto/w2yjaJxopn5L2rn8pCTHfQvo8mmzTO4i0=";
hash = "sha256-bAxvlFeCxrxE8PuLbsjAwJYDeZfKb8BDuGBgX8uMgr8=";
fetchSubmodules = true;
};
vendorHash = "sha256-t7+GLNC6mRcXq9ErxN6gGki5WWWoEcMfzRVjta4fddA=";
vendorHash = "sha256-oHTo8EQGfrKOwg6SRPrL23qSH+p+clBxxiXsuO1auLk=";
env =
lib.optionalAttrs enableRocm {

View File

@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "opencryptoki";
version = "3.24.0";
version = "3.25.0";
src = fetchFromGitHub {
owner = "opencryptoki";
repo = "opencryptoki";
tag = "v${finalAttrs.version}";
hash = "sha256-GIcUI5Gjk+whwlD9dBiB2N7q6sPYFnhj5VvyQvc2Z2A=";
hash = "sha256-JIDy5LY2rJqMM1uWDWn6Q62kJ+7pYU4G7zptkbyvf9Q=";
};
nativeBuildInputs = [

View File

@ -8,13 +8,13 @@
stdenv,
}:
let
version = "0.23.1";
version = "0.24.0";
parca-src = fetchFromGitHub {
owner = "parca-dev";
repo = "parca";
tag = "v${version}";
hash = "sha256-UCYBT+KegoXpMRMoA3iuX8WiXhkX43JVOmhHksH5Pwk=";
hash = "sha256-MyI3pyfsdw17K03FOSckVzLSRNbwSm3FwYIHMr/SbWo=";
};
ui = stdenv.mkDerivation (finalAttrs: {
@ -24,7 +24,7 @@ let
pnpmDeps = pnpm_9.fetchDeps {
inherit (finalAttrs) pname src version;
hash = "sha256-MByoIJtynv38TFNVDdZWjkJJpABCjJU2wBrChxM2rdE=";
hash = "sha256-gczEkCU9xESn9T1eVOmGAufh+24mOsYCMO6f5tcbdmQ=";
};
nativeBuildInputs = [
@ -56,7 +56,7 @@ buildGoModule rec {
pname = "parca";
src = parca-src;
vendorHash = "sha256-O7dzdMGZ1l+cmVA3svbh/Ig1SbXXiMwJ7TXmrT2IM+g=";
vendorHash = "sha256-2CVXXCWKa21cToe5flxIMtSBPc3HkxWDNkJAWCI4ORw=";
ldflags = [
"-X=main.version=${version}"

View File

@ -8,16 +8,16 @@
buildNpmPackage (finalAttrs: {
pname = "particle-cli";
version = "3.36.2";
version = "3.37.0";
src = fetchFromGitHub {
owner = "particle-iot";
repo = "particle-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-KLcQmbIuhp71dpJttKA0tWAn2Qf+zl6njBypFkaLmzE=";
hash = "sha256-TMyXCTyihUBP2emY0UzedHAsO945eWJ7w7relP7wBaU=";
};
npmDepsHash = "sha256-oQch+7hH+URMI15YOA3iz4FVPwckJ3K/DOC1PfrA2dU=";
npmDepsHash = "sha256-4PeHMhzcCcXFNV0cS0JVAvpkMyo2w6RDmlIO2/MRy8k=";
buildInputs = [
udev

View File

@ -12,14 +12,14 @@
python3Packages.buildPythonApplication rec {
pname = "pdfarranger";
version = "1.12.0";
version = "1.12.1";
pyproject = true;
src = fetchFromGitHub {
owner = "pdfarranger";
repo = "pdfarranger";
tag = version;
hash = "sha256-//JjIPDeyI+JZoFT2GU+wCP+tkKCchgS9ftMT5rUEOM=";
hash = "sha256-of1itPubf6LBJ4rSh1bca3yoNTiz5Qt9ar9XDe4nhxI=";
};
nativeBuildInputs = [ wrapGAppsHook3 ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ gettext ];

View File

@ -0,0 +1,49 @@
{
lib,
stdenvNoCC,
stdenv, # for tests
fetchFromGitHub,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "pdqsort";
version = "0-unstable-2021-03-14";
src = fetchFromGitHub {
owner = "orlp";
repo = "pdqsort";
rev = "b1ef26a55cdb60d236a5cb199c4234c704f46726";
hash = "sha256-xn3Jjn/jxJBckpg1Tx3HHVAWYPVTFMiDFiYgB2WX7Sc=";
};
installPhase = ''
runHook preInstall
mkdir -p $out/include
cp -r *.h $out/include/
runHook postInstall
'';
# The benchmark takes too long to run as a regular checkPhase here.
passthru.tests.bench = stdenv.mkDerivation {
pname = "pdqsort-bench";
inherit (finalAttrs) version src;
doCheck = true;
checkPhase = ''
c++ bench/bench.cpp -o bench/bench
./bench/bench > $out
'';
meta.platforms = lib.platforms.x86_64;
};
meta = {
description = "Novel sorting algorithm that combines the fast average case of randomized quicksort with the fast worst case of heapsort";
homepage = "https://github.com/orlp/pdqsort";
license = lib.licenses.zlib;
maintainers = with lib.maintainers; [ jherland ];
};
})

View File

@ -6,16 +6,16 @@
buildGoModule rec {
pname = "pgscv";
version = "0.14.0";
version = "0.14.1";
src = fetchFromGitHub {
owner = "CHERTS";
repo = "pgscv";
tag = "v${version}";
hash = "sha256-BWGRighkezG3zjhyiYEFTeVvWps4q9+9xjk9EPHI/B0=";
hash = "sha256-jUTHaZvJ6O3dVhBGO+ZFT9A7KmKieR2viGhZXwOv5S8=";
};
vendorHash = "sha256-UEqJz7xKBQaBrBI3mV8W+WtLGDDf3EaV7NzEPofW+TE=";
vendorHash = "sha256-v4Xi2R+q2jGD3Fy6xvKNRaf+P725acr+tvdDxod2KiI=";
ldflags = [
"-X=main.appName=pgscv"

View File

@ -17,11 +17,11 @@
stdenv.mkDerivation rec {
pname = "photoqt";
version = "4.9.1";
version = "4.9.2";
src = fetchurl {
url = "https://photoqt.org/pkgs/photoqt-${version}.tar.gz";
hash = "sha256-dAqAM9zsFWPiGF7njhy7SM6f/5S19jMyTv57JadgHu8=";
hash = "sha256-kPhxWekecE57wY45qLy/EnfmjFLn0cEmZ+4qWHGbL4U=";
};
nativeBuildInputs = [

View File

@ -40,14 +40,14 @@ stdenv.mkDerivation (finalAttrs: {
+ lib.optionalString enableQt "-qt"
+ lib.optionalString (!enableQt) "-sdl"
+ lib.optionalString forceWayland "-wayland";
version = "1.18.1";
version = "1.19.2";
src = fetchFromGitHub {
owner = "hrydgard";
repo = "ppsspp";
rev = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-X5Sb6oxjjhlsm1VN9e0Emk4SqiHTe3G3ZiuIgw5DSds=";
hash = "sha256-HwZHV5x60V/H4wx5wgC6VAZY7zHjMt0ZVRDWAnXDvj4=";
};
patches = lib.optionals useSystemFfmpeg [

View File

@ -6,12 +6,8 @@
cmake,
libxslt,
docbook_xsl_ns,
wrapQtAppsHook,
libsForQt5,
libusb1,
qtlocation,
qtserialport,
qttools,
qtbase,
yaml-cpp,
}:
@ -33,16 +29,16 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
cmake
libxslt
wrapQtAppsHook
libsForQt5.wrapQtAppsHook
installShellFiles
];
buildInputs = [
libusb1
qtlocation
qtserialport
qttools
qtbase
libsForQt5.qtlocation
libsForQt5.qtserialport
libsForQt5.qttools
libsForQt5.qtbase
yaml-cpp
];

View File

@ -20,13 +20,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "readest";
version = "0.9.60";
version = "0.9.61";
src = fetchFromGitHub {
owner = "readest";
repo = "readest";
tag = "v${finalAttrs.version}";
hash = "sha256-CEY3q9IT2miEO5Q77Mw2BkiyUWuImmCtDrVyjK6HApo=";
hash = "sha256-vtswHOG3/9oao+KrHWJi3NLsFghczmyLfT276kq5Llg=";
fetchSubmodules = true;
};
@ -39,14 +39,14 @@ rustPlatform.buildRustPackage (finalAttrs: {
pnpmDeps = pnpm_9.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "sha256-Tt1Gm/tlxceQnTd6eStgwboHCDetXdUNtdDShHmB5+M=";
hash = "sha256-9YG0l/cIjk5imkoly/pNmTVN7N+K56tpWnD7HDFSqiw=";
};
pnpmRoot = "../..";
useFetchCargoVendor = true;
cargoHash = "sha256-9y/ZR+vbjp56F/EuX7tAp3W1/jwFLYlnBKfyLNx0/Qg=";
cargoHash = "sha256-35REIeZy/D9UWzSI6yQZc1MRYwlAnjzsk5T7KOAhWVw=";
cargoRoot = "../..";

View File

@ -0,0 +1,37 @@
{
lib,
python3,
fetchFromGitHub,
}:
python3.pkgs.buildPythonApplication {
pname = "regippy";
version = "2.0.1";
pyproject = true;
src = fetchFromGitHub {
owner = "airbus-cert";
repo = "regrippy";
rev = "05c9db999853c47af1d15f92f1a34aa2441e8882";
hash = "sha256-gS7qVPlXwn6UXRXPN5ahPmQL3JpwmESUEi0KKAzOo+8=";
};
postInstall = ''
mv $out/bin/regrip.py $out/bin/regrippy
'';
build-system = [ python3.pkgs.setuptools ];
dependencies = [
python3.pkgs.importlib-resources
python3.pkgs.python-registry
];
meta = {
description = "Modern Python-3-based alternative to RegRipper";
homepage = "https://github.com/airbus-cert/regrippy";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ mikehorn ];
mainProgram = "regrippy";
};
}

View File

@ -9,13 +9,13 @@
}:
rustPlatform.buildRustPackage rec {
pname = "sentry-cli";
version = "2.45.0";
version = "2.46.0";
src = fetchFromGitHub {
owner = "getsentry";
repo = "sentry-cli";
rev = version;
hash = "sha256-nuqjlckrM4i4+cYJ3+oBoDB2g7PitAkkHv2CiI6Ttqc=";
hash = "sha256-IWDMcmpwKCIE7ogo5upGTtWuF00pFlUwj6RRXTC+RDQ=";
};
doCheck = false;
@ -29,7 +29,7 @@ rustPlatform.buildRustPackage rec {
];
useFetchCargoVendor = true;
cargoHash = "sha256-cRK8olhz/3DdEvfXX5PBMgPsVihr5VFOdFZIkCy1r/0=";
cargoHash = "sha256-PDDlt0KmPhJWH3Hd9no/cqYdL/QPGdAE2pIj0EXXc70=";
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd sentry-cli \

View File

@ -10,13 +10,13 @@
stdenv.mkDerivation rec {
pname = "sentry-native";
version = "0.9.0";
version = "0.9.1";
src = fetchFromGitHub {
owner = "getsentry";
repo = "sentry-native";
tag = version;
hash = "sha256-PFWCC0eaHnwRZ+i2n0O17kTg9jXlgIuzgTB53Dn40iQ=";
hash = "sha256-jB744MO5GaZMQWIToyv1g4WzVu99qt/Cx0shvK7SW/c=";
};
nativeBuildInputs = [

View File

@ -7,11 +7,11 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "sof-firmware";
version = "2025.01.1";
version = "2025.05";
src = fetchurl {
url = "https://github.com/thesofproject/sof-bin/releases/download/v${finalAttrs.version}/sof-bin-${finalAttrs.version}.tar.gz";
hash = "sha256-o2IQ2cJF6BsNlnTWsn0f1BIpaM+SWu/FW0htNlD4gyM=";
hash = "sha256-4vJgOw04x8vbFnKQGGP7+EtNtJIfQFlSojaRXLioa8w=";
};
dontFixup = true; # binaries must not be stripped or patchelfed

View File

@ -2,23 +2,29 @@
stdenv,
lib,
rustPlatform,
fetchCrate,
fetchFromGitHub,
pkg-config,
alsa-lib,
rust,
udevCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "speakersafetyd";
version = "1.0.2";
version = "1.1.2";
src = fetchCrate {
inherit pname version;
hash = "sha256-3DzBNebg1y/+psD2zOpDsnRJmabQLeO1UMxPq9M0CsU=";
src = fetchFromGitHub {
owner = "AsahiLinux";
repo = "speakersafetyd";
tag = finalAttrs.version;
hash = "sha256-sSGoF2c5HfPM2FBrBJwJ9NvExYijGx6JH1bJp3epfe0=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-DnOnqi60JsRX8yqEM/5zZ3yX/rk85/ruwL3aW1FRXKg=";
cargoHash = "sha256-9XbrIY1VwnHtqi/ZfS952SyjNjA/TJRdOqCsPReZI8o=";
patches = [
./remove-install-paths.patch
];
nativeBuildInputs = [
pkg-config
@ -27,32 +33,41 @@ rustPlatform.buildRustPackage rec {
buildInputs = [ alsa-lib ];
postPatch = ''
substituteInPlace speakersafetyd.service --replace "/usr" "$out"
substituteInPlace Makefile --replace "target/release" "target/${stdenv.hostPlatform.rust.cargoShortTarget}/$cargoBuildType"
# creating files in /var does not make sense in a nix package
substituteInPlace Makefile --replace 'install -dDm0755 $(DESTDIR)/$(VARDIR)/lib/speakersafetyd/blackbox' ""
substituteInPlace speakersafetyd.service \
--replace-fail "/usr" \
"$out"
substituteInPlace Makefile \
--replace-fail "target/release" \
"target/${stdenv.hostPlatform.rust.cargoShortTarget}/$cargoBuildType" \
'';
installFlags = [
"BINDIR=$(out)/bin"
"UNITDIR=$(out)/lib/systemd/system"
"UDEVDIR=$(out)/lib/udev/rules.d"
"SHAREDIR=$(out)/share"
"TMPFILESDIR=$(out)/lib/tmpfiles.d"
"DESTDIR=$(out)"
"BINDIR=bin"
"UNITDIR=lib/systemd/system"
"UDEVDIR=lib/udev/rules.d"
"SHAREDIR=share"
"TMPFILESDIR=lib/tmpfiles.d"
];
dontCargoInstall = true;
doInstallCheck = true;
meta = with lib; {
description = "Userspace daemon written in Rust that implements an analogue of the Texas Instruments Smart Amp speaker protection model";
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Userspace daemon that implements the Smart Amp protection model";
mainProgram = "speakersafetyd";
homepage = "https://github.com/AsahiLinux/speakersafetyd";
maintainers = with maintainers; [
maintainers = with lib.maintainers; [
normalcea
flokli
yuka
];
license = licenses.mit;
platforms = platforms.linux;
license = lib.licenses.mit;
platforms = lib.platforms.linux;
};
}
})

View File

@ -0,0 +1,16 @@
diff --git a/Makefile b/Makefile
index 41bf7b4..ca14be7 100644
--- a/Makefile
+++ b/Makefile
@@ -24,11 +24,8 @@ install-data:
install -pm0644 95-speakersafetyd.rules $(DESTDIR)/$(UDEVDIR)/95-speakersafetyd.rules
install -dDm0755 $(DESTDIR)/$(SHAREDIR)/speakersafetyd/apple
install -pm0644 -t $(DESTDIR)/$(SHAREDIR)/speakersafetyd/apple $(wildcard conf/apple/*)
- install -dDm0755 -o $(SPEAKERSAFETYD_USER) -g $(SPEAKERSAFETYD_GROUP) $(DESTDIR)/$(VARDIR)/lib/speakersafetyd
- install -dDm0700 -o $(SPEAKERSAFETYD_USER) -g $(SPEAKERSAFETYD_GROUP) $(DESTDIR)/$(VARDIR)/lib/speakersafetyd/blackbox
install -dDm0755 $(DESTDIR)/$(TMPFILESDIR)
install -pm0644 speakersafetyd.tmpfiles $(DESTDIR)/$(TMPFILESDIR)/speakersafetyd.conf
- install -dDm0755 -o $(SPEAKERSAFETYD_USER) -g $(SPEAKERSAFETYD_GROUP) $(DESTDIR)/run/speakersafetyd
uninstall:
rm -f $(DESTDIR)/$(BINDIR)/speakersafetyd $(DESTDIR)/$(UNITDIR)/speakersafetyd.service $(DESTDIR)/$(UDEVDIR)/95-speakersafetyd.rules $(DESTDIR)/$(TMPFILESDIR)/speakersafetyd.conf

View File

@ -2,22 +2,22 @@
lib,
buildGoModule,
fetchFromGitHub,
unstableGitUpdater,
nix-update-script,
}:
buildGoModule {
pname = "typescript-go";
version = "0-unstable-2025-06-09";
version = "0-unstable-2025-06-26";
src = fetchFromGitHub {
owner = "microsoft";
repo = "typescript-go";
rev = "f7d02dd5cc61be86f4f61018171c370cefebe3fd";
hash = "sha256-19+t/Yq73Ih8yCoMJe4r65iejOeAeKYEWacMzqGs6jQ=";
rev = "ff49e725dff18d63dd932de7646e35a8efbb54ff";
hash = "sha256-L5MFedjlAP7EiC3T5FDdLCs06HwJ03qGIp/2ZT6QKWY=";
fetchSubmodules = false;
};
vendorHash = "sha256-SoBlxQfMg59UOO+99HPeKqEPxD2p7JauLMTpQ7Jl03s=";
vendorHash = "sha256-9gZ1h/rsJ5DEcU8CJGKszE98GzZqfs2ELp1lbXsliYk=";
ldflags = [
"-s"
@ -41,7 +41,9 @@ buildGoModule {
'';
passthru = {
updateScript = unstableGitUpdater { };
updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
};
meta = {

View File

@ -11,16 +11,16 @@
buildGoModule rec {
pname = "updatecli";
version = "0.101.0";
version = "0.102.0";
src = fetchFromGitHub {
owner = "updatecli";
repo = "updatecli";
rev = "v${version}";
hash = "sha256-anuP3od1cuuB9Y5wUn8CldvMZZFfD9ISyIma97oksjo=";
hash = "sha256-ek8kJAGf51NZ4YOexwOovgIQ9I0WfQDk0KWIJsZRKQk=";
};
vendorHash = "sha256-J8D02rkh+NJJQvk9ORV6WwoWtTKfbLtiL1bAZRVhLnI=";
vendorHash = "sha256-gL2ZukNJROEQc0fv0k/XIvpnHmGywCgRgfKCPcP01Hg=";
# tests require network access
doCheck = false;

View File

@ -4,7 +4,7 @@
lib,
pkg-config,
jansson,
pcre,
pcre2,
libxcrypt,
expat,
zlib,
@ -103,7 +103,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs =
[
jansson
pcre
pcre2
libxcrypt
]
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [

View File

@ -110,7 +110,7 @@ stdenv.mkDerivation rec {
maintainers = [ lib.maintainers.eelco ];
platforms =
with lib.platforms;
lib.intersectLists (x86 ++ power ++ s390x ++ armv7 ++ aarch64 ++ mips) (
lib.intersectLists (x86 ++ power ++ s390x ++ armv7 ++ aarch64 ++ mips ++ riscv64) (
darwin ++ freebsd ++ illumos ++ linux
);
badPlatforms = [ lib.systems.inspect.platformPatterns.isStatic ];

View File

@ -0,0 +1,44 @@
{
lib,
buildNpmPackage,
fetchFromGitHub,
typescript,
}:
buildNpmPackage (finalAttrs: {
pname = "vscode-json-languageserver";
version = "1.3.4";
src = fetchFromGitHub {
owner = "microsoft";
repo = "vscode";
tag = "1.101.2";
hash = "sha256-wdI6VlJ4WoSNnwgkb6dkVYcq/P/yzflv5mE9PuYBVx4=";
};
sourceRoot = "${finalAttrs.src.name}/extensions/json-language-features/server";
npmDepsHash = "sha256-akQukdYTe6um4xo+7T3wHxx+WrXfKYl5a1qwmqX72HQ=";
nativeBuildInputs = [ typescript ];
buildPhase = ''
runHook preBuild
tsc -p .
runHook postBuild
'';
dontNpmBuild = true;
postInstall = ''
ln -s $out/bin/vscode-json-languageserver $out/bin/vscode-json-language-server
'';
meta = {
description = "JSON language server";
homepage = "https://github.com/microsoft/vscode/tree/${finalAttrs.src.tag}/extensions/json-language-features/server";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ryota2357 ];
mainProgram = "vscode-json-languageserver";
};
})

View File

@ -2,7 +2,7 @@
coreutils,
fetchFromGitHub,
lib,
python3,
python312,
bash,
openssl,
nixosTests,
@ -10,7 +10,7 @@
}:
let
python = python3;
python = python312;
in
python.pkgs.buildPythonApplication rec {

View File

@ -17,7 +17,7 @@
}:
let
rev = "1.1.2";
rev = "1.2.0";
in
buildDotnetModule rec {
pname = "XIVLauncher";
@ -27,7 +27,7 @@ buildDotnetModule rec {
owner = "goatcorp";
repo = "XIVLauncher.Core";
inherit rev;
hash = "sha256-QkA18C3oWxcW0vK6sji7vbm4bY5LxwIWierAg5qf38Q=";
hash = "sha256-2ZL3giUrc4mUNh8rr+yI+k2Sx5rZsoFGR1ZBlTugH6M=";
fetchSubmodules = true;
};

View File

@ -61,23 +61,23 @@ let
# and often with different versions. We write them on three lines
# like this (rather than using {}) so that the updater script can
# find where to edit them.
versions.aarch64-darwin = "6.4.12.56699";
versions.x86_64-darwin = "6.4.12.56699";
versions.x86_64-linux = "6.4.13.2309";
versions.aarch64-darwin = "6.5.1.58208";
versions.x86_64-darwin = "6.5.1.58208";
versions.x86_64-linux = "6.5.1.2550";
srcs = {
aarch64-darwin = fetchurl {
url = "https://zoom.us/client/${versions.aarch64-darwin}/zoomusInstallerFull.pkg?archType=arm64";
name = "zoomusInstallerFull.pkg";
hash = "sha256-rsO4HAvA6hCiGDBuLQj/qYWHR6Dlo+G9rkfhxvKBp4g=";
hash = "sha256-hIYZ2OU5lww4MyRZOhcV4qQDGEN8Hdolw6a4g/ItcFQ=";
};
x86_64-darwin = fetchurl {
url = "https://zoom.us/client/${versions.x86_64-darwin}/zoomusInstallerFull.pkg";
hash = "sha256-MZ5dPHKH1uQuFA8Vej8Hh4CFZAjJFZe04le+e4LPDJc=";
hash = "sha256-t/xIrVfjAl6dM9RWa+imyFHqS2KIJsKnoU0fiDQL9dQ=";
};
x86_64-linux = fetchurl {
url = "https://zoom.us/client/${versions.x86_64-linux}/zoom_x86_64.pkg.tar.xz";
hash = "sha256-gBUpsIUcsn+5u/1CchuS9mggnAFD8VW5J4RBv0Ziu+Y=";
hash = "sha256-1YcbAlnUEk9R95r7RIuxAxNfRymdIOAjKkCw7a+1Lm4=";
};
};

View File

@ -274,6 +274,7 @@ mapAliases {
inherit (pkgs) vsc-leetcode-cli; # Added 2023-08-30
vscode-css-languageserver-bin = throw "vscode-css-languageserver-bin has been removed since the upstream repository is archived; consider using vscode-langservers-extracted instead."; # added 2024-06-26
vscode-html-languageserver-bin = throw "vscode-html-languageserver-bin has been removed since the upstream repository is archived; consider using vscode-langservers-extracted instead."; # added 2024-06-26
inherit (pkgs) vscode-json-languageserver; # added 2025-06-19
vscode-json-languageserver-bin = throw "vscode-json-languageserver-bin has been removed since the upstream repository is archived; consider using vscode-langservers-extracted instead."; # added 2024-06-26
vscode-langservers-extracted = pkgs.vscode-langservers-extracted; # Added 2023-05-27
vue-language-server = self.vls; # added 2023-08-20

View File

@ -40,5 +40,4 @@
purs-tidy = "purs-tidy";
purty = "purty";
pscid = "pscid";
vscode-json-languageserver = "vscode-json-languageserver";
}

View File

@ -154,7 +154,6 @@
, "vega-cli"
, "vega-lite"
, "vercel"
, "vscode-json-languageserver"
, "wavedrom-cli"
, "webpack"
, "wring"

View File

@ -63785,56 +63785,6 @@ in
bypassCache = true;
reconstructLock = true;
};
vscode-json-languageserver = nodeEnv.buildNodePackage {
name = "vscode-json-languageserver";
packageName = "vscode-json-languageserver";
version = "1.3.4";
src = fetchurl {
url = "https://registry.npmjs.org/vscode-json-languageserver/-/vscode-json-languageserver-1.3.4.tgz";
sha512 = "+ghebnslXk6fVDySBrT0BVqozLDdmKY/qxgkDD4JtOQcU2vXc3e7jh7YyMxvuvE93E9OLvBqUrvajttj8xf3BA==";
};
dependencies = [
sources."agent-base-4.3.0"
sources."debug-3.1.0"
sources."es6-promise-4.2.8"
sources."es6-promisify-5.0.0"
sources."http-proxy-agent-2.1.0"
sources."https-proxy-agent-2.2.4"
sources."jsonc-parser-3.3.1"
sources."ms-2.0.0"
sources."request-light-0.4.0"
(
sources."vscode-json-languageservice-4.2.1"
// {
dependencies = [
sources."vscode-nls-5.2.0"
];
}
)
sources."vscode-jsonrpc-6.0.0"
sources."vscode-languageserver-7.0.0"
(
sources."vscode-languageserver-protocol-3.16.0"
// {
dependencies = [
sources."vscode-languageserver-types-3.16.0"
];
}
)
sources."vscode-languageserver-textdocument-1.0.12"
sources."vscode-languageserver-types-3.17.5"
sources."vscode-nls-4.1.2"
sources."vscode-uri-3.1.0"
];
buildInputs = globalBuildInputs;
meta = {
description = "JSON language server";
license = "MIT";
};
production = true;
bypassCache = true;
reconstructLock = true;
};
wavedrom-cli = nodeEnv.buildNodePackage {
name = "wavedrom-cli";
packageName = "wavedrom-cli";

View File

@ -13,7 +13,7 @@
}:
let
version = "2.3.0";
version = "2.5.0";
tag = "v${version}";
in
buildPythonPackage {
@ -25,7 +25,7 @@ buildPythonPackage {
owner = "elevenlabs";
repo = "elevenlabs-python";
inherit tag;
hash = "sha256-vj4ZmtumLq7Jveq7ID/FoPjlIz7Dv8uqMN4Nq6tSW/E=";
hash = "sha256-GA+CQR5QPbXWpOMOp+P6fOjBiJemI2vOctM7zCnfmk4=";
};
build-system = [ poetry-core ];

View File

@ -20,7 +20,7 @@
buildPythonPackage rec {
pname = "evaluate";
version = "0.4.3";
version = "0.4.4";
pyproject = true;
disabled = pythonOlder "3.7";
@ -29,7 +29,7 @@ buildPythonPackage rec {
owner = "huggingface";
repo = "evaluate";
tag = "v${version}";
hash = "sha256-G/SK0nMpkpCEzX8AX/IJqpOPZWAQhP8tyr7TJ+F0NCE=";
hash = "sha256-zN0Kud4CJMM5gazWKOR9kmwTVHYgT7DsZqbHjFIe47w=";
};
build-system = [ setuptools ];
@ -56,7 +56,7 @@ buildPythonPackage rec {
meta = with lib; {
homepage = "https://huggingface.co/docs/evaluate/index";
description = "Easily evaluate machine learning models and datasets";
changelog = "https://github.com/huggingface/evaluate/releases/tag/v${version}";
changelog = "https://github.com/huggingface/evaluate/releases/tag/${src.tag}";
license = licenses.asl20;
maintainers = with maintainers; [ bcdarwin ];
mainProgram = "evaluate-cli";

View File

@ -20,7 +20,7 @@
buildPythonPackage rec {
pname = "google-cloud-pubsub";
version = "2.29.1";
version = "2.30.0";
pyproject = true;
disabled = pythonOlder "3.7";
@ -28,7 +28,7 @@ buildPythonPackage rec {
src = fetchPypi {
pname = "google_cloud_pubsub";
inherit version;
hash = "sha256-X0sFNMWHOU3SBTjBuuq31OvO14lWEFhzlVXrRNeSTOQ=";
hash = "sha256-Jpde1yjSIJR59PsmZ+OzvXDedgWrrfSzAcZRw57YMEI=";
};
build-system = [ setuptools ];

View File

@ -10,14 +10,14 @@
buildPythonPackage rec {
pname = "inject";
version = "5.2.1";
version = "5.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "ivankorobkov";
repo = "python-inject";
tag = "v${version}";
hash = "sha256-Ws296ESjb+a322imiRRWTS43w32rJc/7Y//OBQXOwnw=";
hash = "sha256-c/OpEsT9KF7285xfD+VRorrNHn3r9IPp/ts9JHyGK9s=";
};
build-system = [

View File

@ -0,0 +1,66 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
hatchling,
igraph,
matplotlib,
networkx,
numpy,
pandas,
pylint,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "iplotx";
version = "0.3.1";
pyproject = true;
src = fetchFromGitHub {
owner = "fabilab";
repo = "iplotx";
tag = version;
hash = "sha256-3Nn/sz1yUaxhGFr0hMGoLEBF5pNs+tz/KpsGtKkYujo=";
};
build-system = [ hatchling ];
dependencies = [
matplotlib
numpy
pandas
pylint
];
pythonRelaxDeps = [ "pylint" ];
optional-dependencies = {
igraph = [ igraph ];
networkx = [ networkx ];
};
postPatch = ''
# silence matplotlib warning
export MPLCONFIGDIR=$(mktemp -d)
'';
# These four tests result in an ImageComparisonFailure
disabledTests = [
"test_labels"
"test_complex"
"test_display_shortest_path"
"test_labels_and_colors"
];
nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
pythonImportsCheck = [ "iplotx" ];
meta = {
description = "Plot networkx from igraph and networkx";
homepage = "https://iplotx.readthedocs.io/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ jboy ];
};
}

View File

@ -8,12 +8,12 @@
buildPythonPackage rec {
pname = "litestar-htmx";
version = "0.4.1";
version = "0.5.0";
src = fetchPypi {
pname = "litestar_htmx";
inherit version;
hash = "sha256-uiU3AI64zBi/yL7lzssoCSTHgYuxwGbXnq5LIhaWygg=";
hash = "sha256-4C0aOpIXLIdINfo+Z0nWWun8Ym0N9GcZSQoWKT4hRvs=";
};
pyproject = true;

View File

@ -10,14 +10,14 @@
buildPythonPackage {
pname = "migen";
version = "0.9.2-unstable-2025-02-07";
version = "0.9.2-unstable-2025-06-10";
pyproject = true;
src = fetchFromGitHub {
owner = "m-labs";
repo = "migen";
rev = "2828df54594673653a641ab551caf6c6b1bfeee5";
hash = "sha256-GproDJowtcgbccsT+I0mObzFhE483shcS8MSszKXwlc=";
rev = "6e3a9e150fb006dabc4b55043d3af18dbfecd7e8";
hash = "sha256-NshlPiORBHWljSUP5bB7YBxe7k8dW0t8UXOsIq2EK8I=";
};
nativeBuildInputs = [ setuptools ];

View File

@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "notion-client";
version = "2.3.0";
version = "2.4.0";
pyproject = true;
disabled = pythonOlder "3.7";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "ramnes";
repo = "notion-sdk-py";
tag = version;
hash = "sha256-oqYBT7K0px0QvShSx1fnr2181h+QXz7I8sdURsBRgWw=";
hash = "sha256-vzgFW37pA4LRS+Rqz1QN92EuLTrlWnJqA/H+IhSHQi8=";
};
nativeBuildInputs = [ setuptools ];
@ -51,7 +51,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "Python client for the official Notion API";
homepage = "https://github.com/ramnes/notion-sdk-py";
changelog = "https://github.com/ramnes/notion-sdk-py/releases/tag/${version}";
changelog = "https://github.com/ramnes/notion-sdk-py/releases/tag/${src.tag}";
license = licenses.mit;
maintainers = with maintainers; [ jpetrucciani ];
};

View File

@ -5,7 +5,6 @@
dulwich,
pbr,
sphinx,
pythonAtLeast,
setuptools,
}:
@ -14,8 +13,6 @@ buildPythonPackage rec {
version = "3.5.0";
pyproject = true;
disabled = pythonAtLeast "3.13";
src = fetchPypi {
inherit pname version;
hash = "sha256-3h1dXtIMk1/CgbUP30ppUo+Q8qdb7PQtGIRD9eGWwJ8=";

View File

@ -0,0 +1,57 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
hatchling,
typing-extensions,
numpy,
beartype,
pytestCheckHook,
pythonOlder,
}:
buildPythonPackage rec {
pname = "optype";
version = "0.10.0";
pyproject = true;
src = fetchFromGitHub {
owner = "jorenham";
repo = "optype";
tag = "v${version}";
hash = "sha256-F6nkbSSmAHIs2I/Yi1+PPtEsSSTnCO8Hsws7JyleJsM=";
};
disabled = pythonOlder "3.11";
build-system = [
hatchling
];
dependencies = [
typing-extensions
];
optional-dependencies = {
numpy = [
numpy
];
};
pythonImportsCheck = [
"optype"
];
nativeCheckInputs = [
pytestCheckHook
numpy
beartype
];
meta = {
description = "Opinionated typing package for precise type hints in Python";
homepage = "https://github.com/jorenham/optype";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ jolars ];
};
}

View File

@ -69,8 +69,9 @@ buildPythonPackage rec {
disabledTests = [
# not compatible with sandbox
"test_logging_handle_error"
# File which is used doesn't seem not to be present
"test_log_config_append_invalid"
# Incompatible Exception Representation, displaying natively
"test_rate_limit"
"test_rate_limit_except_level"
];
pythonImportsCheck = [ "oslo_log" ];

View File

@ -18,6 +18,7 @@
typing-extensions,
ujson,
distutils,
huggingface-hub,
}:
let
@ -49,14 +50,14 @@ let
in
buildPythonPackage rec {
pname = "paddlex";
version = "3.0.1";
version = "3.0.3";
pyproject = true;
src = fetchFromGitHub {
owner = "PaddlePaddle";
repo = "PaddleX";
tag = "v${version}";
hash = "sha256-qov5nqGIsSfaho2dcWVsyWKQlJsIJgdX3rDz66JtLDI=";
hash = "sha256-uIpt2I6Lx/nJDh4sZYBI6dL8IveQf6aOxA/9vKFU2nU=";
};
build-system = [ setuptools ];
@ -82,6 +83,7 @@ buildPythonPackage rec {
typing-extensions
ujson
gputil
huggingface-hub
];
meta = {

View File

@ -16,7 +16,7 @@
buildPythonPackage rec {
pname = "panel";
version = "1.6.3";
version = "1.7.1";
format = "wheel";
@ -25,7 +25,7 @@ buildPythonPackage rec {
# tries to fetch even more artifacts
src = fetchPypi {
inherit pname version format;
hash = "sha256-zNKgWHqzgr1VuOoJlwbzG2Sq2saXuKQZI9Oxi57WGNY=";
hash = "sha256-gM67iOMxCIfThsiC+JSxN6N3A1VhoGCZCP4tH1QrWIw=";
dist = "py3";
python = "py3";
};

View File

@ -19,14 +19,14 @@
buildPythonPackage rec {
pname = "posthog";
version = "5.0.0";
version = "5.4.0";
pyproject = true;
src = fetchFromGitHub {
owner = "PostHog";
repo = "posthog-python";
tag = "v${version}";
hash = "sha256-pNnttrp6s9T+tmDFJ9S3DZ/HcMTifYkr6Rs8E/8+G5c=";
hash = "sha256-UUINopWw2q5INuFiveI5si7jPRLT0Mad3hnfbykHs6M=";
};
build-system = [ setuptools ];

View File

@ -9,12 +9,12 @@
buildPythonPackage rec {
pname = "pyaml";
version = "25.1.0";
version = "25.5.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-M6k6xJIY9X4CC4HigNJwbOpVSsWnZEWsea3XYNAZxwk=";
hash = "sha256-V5lWDHscna81p6RTX1PiwwMj90y9fLTy5xWxbdaBpYo=";
};
nativeBuildInputs = [ setuptools ];

View File

@ -19,6 +19,7 @@
libpulseaudio,
harfbuzz,
mesa,
apple-sdk,
}:
buildPythonPackage rec {
@ -41,7 +42,7 @@ buildPythonPackage rec {
let
ext = stdenv.hostPlatform.extensions.sharedLibrary;
in
''
lib.optionalString stdenv.isLinux ''
cat > pyglet/lib.py <<EOF
import ctypes
def load_library(*names, **kwargs):
@ -85,6 +86,34 @@ buildPythonPackage rec {
return ctypes.cdll.LoadLibrary(path)
raise Exception("Could not load library {}".format(names))
EOF
''
+ lib.optionalString stdenv.isDarwin ''
cat > pyglet/lib.py <<EOF
import os
import ctypes
def load_library(*names, **kwargs):
path = None
framework = kwargs.get('framework')
if framework is not None:
path = '${apple-sdk}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/{framework}.framework/{framework}'.format(framework=framework)
else:
names = kwargs.get('darwin', names)
if not isinstance(names, tuple):
names = (names,)
for name in names:
if name == "libharfbuzz.0.dylib":
path = '${harfbuzz}/lib/%s' % name
break
elif name.startswith('avutil'):
path = '${lib.getLib ffmpeg-full}/lib/lib%s.dylib' % name
if not os.path.exists(path):
path = None
else:
break
if path is not None:
return ctypes.cdll.LoadLibrary(path)
raise ImportError("Could not load library {}".format(names))
EOF
'';
nativeBuildInputs = [ unzip ];
@ -95,9 +124,10 @@ buildPythonPackage rec {
nativeCheckInputs = [ pytestCheckHook ];
preCheck = ''
export PYGLET_HEADLESS=True
'';
preCheck = # libEGL only available on Linux (despite meta.platforms on libGL)
lib.optionalString stdenv.isLinux ''
export PYGLET_HEADLESS=True
'';
# test list taken from .travis.yml
disabledTestPaths = [
@ -109,11 +139,11 @@ buildPythonPackage rec {
pythonImportsCheck = [ "pyglet" ];
meta = with lib; {
meta = {
homepage = "http://www.pyglet.org/";
description = "Cross-platform windowing and multimedia library";
license = licenses.bsd3;
# The patch needs adjusting for nonLinux platforms.
platforms = platforms.linux;
license = lib.licenses.bsd3;
# The patch needs adjusting for other platforms.
platforms = with lib.platforms; linux ++ darwin;
};
}

View File

@ -33,7 +33,7 @@ in
buildPythonPackage rec {
pname = "python-arango";
version = "8.1.6";
version = "8.2.0";
format = "pyproject";
disabled = pythonOlder "3.9";
@ -42,7 +42,7 @@ buildPythonPackage rec {
owner = "arangodb";
repo = "python-arango";
tag = version;
hash = "sha256-y+ECfrLoenjXl71hty7snNdu6tN5q8XTGtBlXtkSg7g=";
hash = "sha256-DPyCHa9tAnxKYeieiHe10UV7EPnF7octbDm23dSlIb0=";
};
nativeBuildInputs = [

View File

@ -76,6 +76,7 @@ buildPythonPackage rec {
cinderclient.tests.unit.test_client.ClientTest.test_sessionclient_request_method_raises_badrequest
cinderclient.tests.unit.test_client.ClientTest.test_sessionclient_request_method_raises_overlimit
cinderclient.tests.unit.test_shell.ShellTest.test_password_prompted
cinderclient.tests.unit.test_shell.TestLoadVersionedActions.test_load_versioned_actions_with_help
")
runHook postCheck

View File

@ -24,8 +24,8 @@ let
pname = "python-glanceclient";
version = "4.8.0";
# Skip tests which require networking.
disabledTests = [
# Skip tests which require networking.
"test_http_chunked_response"
"test_v1_download_has_no_stray_output_to_stdout"
"test_v2_requests_valid_cert_verification"
@ -40,6 +40,9 @@ let
"test_v2_requests_valid_cert_no_key"
"test_v2_requests_valid_cert_verification_no_compression"
"test_log_request_id_once"
# asserts exact amount of mock calls
"test_cache_schemas_gets_when_forced"
"test_cache_schemas_gets_when_not_exists"
];
in
buildPythonPackage {

View File

@ -11,14 +11,14 @@
buildPythonPackage rec {
pname = "tskit";
version = "0.6.3";
version = "0.6.4";
pyproject = true;
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-bbo89pMhTDEF2M3c1pauDjECNmk34CmmqmXNmOcbVfI=";
hash = "sha256-vawbt+OuPR9WLsGRtdhAFW4ILdKtxq98QbFwxPsb55I=";
};
postPatch = ''

View File

@ -19,14 +19,14 @@
buildPythonPackage rec {
pname = "ufo2ft";
version = "3.4.3";
version = "3.5.0";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchPypi {
inherit pname version;
hash = "sha256-jGMH1VZQAUszd8uxH+3mRAfudTiOEoBXSnGOUcqPXao=";
hash = "sha256-mAuMJzuXxO00j0YqxZ21qk+HTAwBhPCws6DUhE9vIrs=";
};
build-system = [

View File

@ -77,7 +77,7 @@ buildPythonPackage rec {
meta = with lib; {
description = "Strict, predictable, and typed datetimes";
homepage = "https://github.com/ariebovenberg/whenever";
changelog = "https://github.com/ariebovenberg/whenever/blob/${src.rev}/CHANGELOG.rst";
changelog = "https://github.com/ariebovenberg/whenever/blob/${src.rev}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ pbsds ];
};

View File

@ -43,13 +43,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "prl-tools";
version = "20.3.2-55975";
version = "20.4.0-55980";
# We download the full distribution to extract prl-tools-lin.iso from
# => ${dmg}/Parallels\ Desktop.app/Contents/Resources/Tools/prl-tools-lin.iso
src = fetchurl {
url = "https://download.parallels.com/desktop/v${lib.versions.major finalAttrs.version}/${finalAttrs.version}/ParallelsDesktop-${finalAttrs.version}.dmg";
hash = "sha256-eazDR+eSUcp81XdRfYRHIt7E4FNCEjsh0M0wYQQYmMQ=";
hash = "sha256-FTlQNTdR5SpulF9f0qtmm+ynovaD4thTNAk96HbIzFQ=";
};
hardeningDisable = [

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