Merge master into staging-next
This commit is contained in:
@@ -49,7 +49,7 @@ jobs:
|
||||
|
||||
- name: Create backport PRs
|
||||
id: backport
|
||||
uses: korthout/backport-action@ad30f01dbe543be4a24431001c38f3617af8c745 # v4.4.0
|
||||
uses: korthout/backport-action@7c3f6cd5843cac11bc59a04a1b7699af93261670 # v4.5.0
|
||||
with:
|
||||
# Config README: https://github.com/korthout/backport-action#backport-action
|
||||
add_author_as_reviewer: true
|
||||
|
||||
@@ -28,7 +28,7 @@ in
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
name = "dadada's repos";
|
||||
name = "user's repos";
|
||||
log_format = "text";
|
||||
ssh = {
|
||||
listen_addr = ":23231";
|
||||
@@ -60,10 +60,12 @@ in
|
||||
DynamicUser = true;
|
||||
Restart = "always";
|
||||
ExecStart = "${lib.getExe cfg.package} serve";
|
||||
|
||||
# Hooks must be executable, but DynamicUser mounts /var/lib/private as noexec
|
||||
ExecPaths = "${stateDir}/repos";
|
||||
|
||||
StateDirectory = "soft-serve";
|
||||
WorkingDirectory = stateDir;
|
||||
RuntimeDirectory = "soft-serve";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
ProcSubset = "pid";
|
||||
ProtectProc = "invisible";
|
||||
UMask = "0027";
|
||||
@@ -86,7 +88,6 @@ in
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
RestrictRealtime = true;
|
||||
RemoveIPC = true;
|
||||
PrivateMounts = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
|
||||
@@ -46,6 +46,22 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
environmentFile = mkOption {
|
||||
default = null;
|
||||
description = ''
|
||||
Environment file (see {manpage}`systemd.exec(5)` "EnvironmentFile="
|
||||
section for the syntax) passed to the service. This option is the
|
||||
recommended way to pass secrets to Send.
|
||||
|
||||
This is especially important for users using a cloud storage backend.
|
||||
|
||||
A list of environment variables recognized by Send can be found here:
|
||||
<https://github.com/timvisee/send/blob/master/docs/docker.md>
|
||||
'';
|
||||
example = "/run/secrets/send";
|
||||
type = with types; nullOr path;
|
||||
};
|
||||
|
||||
dataDir = lib.mkOption {
|
||||
type = types.path;
|
||||
readOnly = true;
|
||||
@@ -159,6 +175,7 @@ in
|
||||
LoadCredential = lib.optionalString (
|
||||
cfg.redis.passwordFile != null
|
||||
) "redis-password:${cfg.redis.passwordFile}";
|
||||
EnvironmentFile = cfg.environmentFile;
|
||||
|
||||
# Hardening
|
||||
RestrictAddressFamilies = [
|
||||
|
||||
@@ -18,7 +18,7 @@ in
|
||||
name = "kanidm-provisioning-${kanidmPackage.version}";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ oddlama ];
|
||||
|
||||
_module.args.kanidmPackage = pkgs.lib.mkDefault pkgs.kanidmWithSecretProvisioning_1_8;
|
||||
_module.args.kanidmPackage = pkgs.lib.mkDefault pkgs.kanidmWithSecretProvisioning_1_10;
|
||||
|
||||
nodes.provision =
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
@@ -22,7 +22,7 @@ in
|
||||
oddlama
|
||||
];
|
||||
|
||||
_module.args.kanidmPackage = pkgs.lib.mkDefault pkgs.kanidm_1_8;
|
||||
_module.args.kanidmPackage = pkgs.lib.mkDefault pkgs.kanidm_1_10;
|
||||
|
||||
nodes.server =
|
||||
{ pkgs, ... }:
|
||||
|
||||
+2
-2
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension (finalAttrs: {
|
||||
mktplcRef = {
|
||||
name = "amazon-q-vscode";
|
||||
publisher = "AmazonWebServices";
|
||||
version = "2.0.0";
|
||||
hash = "sha256-XK0xCwvG5HBqTrERRkjpzbZCiAiK54d9vOt0Na3fzRI=";
|
||||
version = "2.1.0";
|
||||
hash = "sha256-DTh8IoJfKuAoNx5XS41wZlafoJwi68g0oJn0vXbEGDo=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "ms-python";
|
||||
name = "flake8";
|
||||
version = "2025.2.0";
|
||||
hash = "sha256-DbPm/ekturW31jqZw0fvVOvzxAY286eJmgDcahDt0K0=";
|
||||
version = "2026.4.0";
|
||||
hash = "sha256-2o6a0wPYVFa+XWQoKBxKcWxlH8IPOzKxtXNt7qUi9mM=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "ms-python";
|
||||
name = "pylint";
|
||||
version = "2025.2.0";
|
||||
hash = "sha256-3RqY/uugtJvT2lWxsA8NWFWel/CxMZzo7PnS9SaRdGg=";
|
||||
version = "2026.4.0";
|
||||
hash = "sha256-yWp7poC1PCoou+1XADmW0ftzyQDtJbqb3YyMf24Jprc=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/ms-python.pylint/changelog";
|
||||
|
||||
@@ -18,16 +18,16 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "basedpyright";
|
||||
version = "1.38.2";
|
||||
version = "1.39.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "detachhead";
|
||||
repo = "basedpyright";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-99oLlGZRFvIf6kNdDErVKYZbnqrJhwYogHdULayoX2k=";
|
||||
hash = "sha256-80RQO0UwDA9ZxIGQ0/8WaEj9QlqrQ4g7m9+WJDZrZbI=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-aZ9kfkW+S6Hjt59Z4Fc5joghs7OQ32354IYevFuKNeo=";
|
||||
npmDepsHash = "sha256-jut63CiYGTNIP27wYCPZnE/Ab90EWJnVkx58Oy3uo9o=";
|
||||
npmWorkspace = "packages/pyright";
|
||||
|
||||
preBuild = ''
|
||||
|
||||
@@ -14,21 +14,27 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "tauri";
|
||||
version = "2.9.6";
|
||||
version = "2.11.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tauri-apps";
|
||||
repo = "tauri";
|
||||
tag = "tauri-cli-v${finalAttrs.version}";
|
||||
hash = "sha256-VtZxFkxOLMNwl3A/2qoNJ/HXr5FXFKQYw+ri5Yp8eOE=";
|
||||
hash = "sha256-hbTpLeWMc5nSJeq1vWKbVpfhp1KZjiBgmaiQMUs/MIQ=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-uAjEQBHDpVv73MbeoU86tObiXSUKKjImpMTLHXKMRNs=";
|
||||
cargoHash = "sha256-PrvlPfK/9qyBWOs6hG3C3w9TMK7p1TCoKpjSWkhN2rY=";
|
||||
|
||||
nativeBuildInputs = lib.optionals (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isLinux) [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
# Explicitly enable optional `rustls` dependency.
|
||||
postPatch = ''
|
||||
substituteInPlace crates/tauri/Cargo.toml \
|
||||
--replace-fail 'dep:rustls' 'rustls'
|
||||
'';
|
||||
|
||||
buildInputs =
|
||||
# Required for tauri-macos-sign and RPM support in tauri-bundler
|
||||
lib.optionals (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isLinux) [
|
||||
|
||||
@@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
pnpm = pnpm_9;
|
||||
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-/g+2jZQq3nTJnKpj0PlT6zB3UcUBE2ND8797XRwVZ0s=";
|
||||
hash = "sha256-DiRho0tmR/4XJi7cAZxesVA1iR8uiwknCfmIP2x9i5I=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -19,6 +19,8 @@ cargo-tauri.overrideAttrs (
|
||||
|
||||
patches = [ ];
|
||||
|
||||
postPatch = "";
|
||||
|
||||
# Manually specify the sourceRoot since this crate depends on other crates in the workspace. Relevant info at
|
||||
# https://discourse.nixos.org/t/difficulty-using-buildrustpackage-with-a-src-containing-multiple-cargo-workspaces/10202
|
||||
sourceRoot = "${finalAttrs.src.name}/tooling/cli";
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "chhoto-url";
|
||||
version = "6.5.9";
|
||||
version = "6.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SinTan1729";
|
||||
repo = "chhoto-url";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-mpFyvzvAL/8vSM3gmS0+vaXEB0TxBdBXQtfcYdFrcEk=";
|
||||
hash = "sha256-IJ7KUYUdLkaE8XP53SjSORzQYR7HiNoNgafktutnHzo=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/actix";
|
||||
@@ -24,7 +24,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
--replace-fail "./resources/" "${placeholder "out"}/share/chhoto-url/resources/"
|
||||
'';
|
||||
|
||||
cargoHash = "sha256-bn+u5KPZ8tk7iMSygFdIYQsczUahblsfZNgYrxA+CyI=";
|
||||
cargoHash = "sha256-PZHynhVBqMqpUD/COro3F3nvaolSC3Eq9z/tUdXpQoA=";
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/chhoto-url
|
||||
|
||||
@@ -6,16 +6,18 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "clock-rs";
|
||||
version = "0.1.216";
|
||||
version = "0.2.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Oughie";
|
||||
repo = "clock-rs";
|
||||
tag = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-sSofMZThR025O2J4PnOMWVEuBt/+oZ01yDAQAijca0A=";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-mC7jZ0ZCSfjpF+p2TtNjt7oRowYkOujSkbuFzChYJ3U=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-7gpD7aAma9Ye7sxqm1wGekcovXxdd11XOMf7fKWZrcA=";
|
||||
cargoHash = "sha256-K5AdTjRz1GEWmbqW/D/7faYABUo71tpiyyOrCjHd1GM=";
|
||||
|
||||
meta = {
|
||||
description = "Modern, digital clock that effortlessly runs in your terminal";
|
||||
|
||||
@@ -71,11 +71,11 @@ in
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "copyparty${nameSuffix}";
|
||||
version = "1.20.13";
|
||||
version = "1.20.14";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/9001/copyparty/releases/download/v${version}/copyparty-${version}.tar.gz";
|
||||
hash = "sha256-sq+SUPfvl6XfJt9BLuCCxtK+DwzTHVebT7tqovPlwnE=";
|
||||
hash = "sha256-h4Pcg5C+F2c9MG9CTnoo3Z+bT84AXjVzTTDBspZwfBI=";
|
||||
};
|
||||
|
||||
pyproject = true;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ mkDprintPlugin }:
|
||||
mkDprintPlugin {
|
||||
description = "Biome (JS/TS/JSON) wrapper plugin";
|
||||
hash = "sha256-dje/9QfRL9D16J6NXErK1HdJyMZaLpI/L/lq3WdyQso=";
|
||||
hash = "sha256-SRUOPwe3n15jluYzRi+SKRN9KSRF9KSSWoi898tMC18=";
|
||||
initConfig = {
|
||||
configExcludes = [ "**/node_modules" ];
|
||||
configKey = "biome";
|
||||
@@ -17,6 +17,6 @@ mkDprintPlugin {
|
||||
};
|
||||
pname = "dprint-plugin-biome";
|
||||
updateUrl = "https://plugins.dprint.dev/dprint/biome/latest.json";
|
||||
url = "https://plugins.dprint.dev/biome-0.12.8.wasm";
|
||||
version = "0.12.8";
|
||||
url = "https://plugins.dprint.dev/biome-0.12.9.wasm";
|
||||
version = "0.12.9";
|
||||
}
|
||||
|
||||
@@ -23,13 +23,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "drawterm";
|
||||
version = "0-unstable-2026-04-14";
|
||||
version = "0-unstable-2026-04-24";
|
||||
|
||||
src = fetchFrom9Front {
|
||||
owner = "plan9front";
|
||||
repo = "drawterm";
|
||||
rev = "aeb3be64bfc4c8d8c0b5fce70b26d12f7a59156a";
|
||||
hash = "sha256-YHcdAjM5+NEuyjz2sYFZEFhr0nQzstfdJtZ/HvksNHQ=";
|
||||
rev = "10b439425b074ec0934ee6145331e6f31423f00f";
|
||||
hash = "sha256-jkjbLuJ2BstAdA8Gu2R8XKtw2MgFABYYurHcpM59HR8=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "esphome-dashboard";
|
||||
version = "20260210.0";
|
||||
version = "20260408.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "esphome";
|
||||
repo = "dashboard";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-Edd2ZOSBAZSrGVjbncyPhhjFjE0CxBHz16ZHXyzx9LI=";
|
||||
hash = "sha256-OY7s/b0rWmjI9QfmEwj3VxbTFrj99fyf9x1tPl24RbI=";
|
||||
};
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
|
||||
@@ -31,16 +31,16 @@ let
|
||||
};
|
||||
};
|
||||
in
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
python.pkgs.buildPythonApplication (finalAttrs: {
|
||||
pname = "esphome";
|
||||
version = "2026.3.3";
|
||||
version = "2026.4.3";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "esphome";
|
||||
repo = "esphome";
|
||||
tag = version;
|
||||
hash = "sha256-yMPHz6IZIGM4oJw1wspEL3lIIiPv4WZALUJ7J1UWukY=";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-+esSczOBIT4dJEyzqmEv6YMU4wGkN4lFGmuZKRp5/bo=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -49,6 +49,10 @@ python.pkgs.buildPythonApplication rec {
|
||||
# own python environment through `python -m esptool` and then fails to find
|
||||
# the esptool library.
|
||||
./esp32-post-build-esptool-reference.patch
|
||||
# Call the platformio binary directly instead of `python -m
|
||||
# esphome.platformio_runner`, which tries to import platformio as a Python
|
||||
# module.
|
||||
./platformio-binary-reference.patch
|
||||
];
|
||||
|
||||
build-system = with python.pkgs; [
|
||||
@@ -119,7 +123,7 @@ python.pkgs.buildPythonApplication rec {
|
||||
}"
|
||||
# The dashboard requires esphome to be importable
|
||||
# dependencies are added to show better error messages
|
||||
"--prefix PYTHONPATH : $out/${python.sitePackages}:${python.pkgs.makePythonPath dependencies}"
|
||||
"--prefix PYTHONPATH : $out/${python.sitePackages}:${python.pkgs.makePythonPath finalAttrs.passthru.dependencies}"
|
||||
"--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ stdenv.cc.cc ]}"
|
||||
"--set ESPHOME_USE_SUBPROCESS ''"
|
||||
# https://github.com/NixOS/nixpkgs/issues/362193
|
||||
@@ -173,9 +177,10 @@ python.pkgs.buildPythonApplication rec {
|
||||
"test_clean_all"
|
||||
"test_clean_all_partial_exists"
|
||||
# tries to use esptool, which is wrapped in an fhsenv
|
||||
"test_upload_using_esptool_path_conversion"
|
||||
"test_upload_using_esptool_with_file_path"
|
||||
"test_upload_using_esptool_passes_crystal_callback"
|
||||
"test_upload_using_esptool_path_conversion"
|
||||
"test_upload_using_esptool_skips_missing_extra_flash_images"
|
||||
"test_upload_using_esptool_with_file_path"
|
||||
# AssertionError: Expected 'run_external_command' to have been called once. Called 0 times.
|
||||
"test_run_platformio_cli_sets_environment_variables"
|
||||
# Expects a full git clone
|
||||
@@ -190,7 +195,7 @@ python.pkgs.buildPythonApplication rec {
|
||||
};
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/esphome/esphome/releases/tag/${version}";
|
||||
changelog = "https://github.com/esphome/esphome/releases/tag/${finalAttrs.src.tag}";
|
||||
description = "Make creating custom firmwares for ESP32/ESP8266 super easy";
|
||||
homepage = "https://esphome.io/";
|
||||
license = with lib.licenses; [
|
||||
@@ -201,7 +206,8 @@ python.pkgs.buildPythonApplication rec {
|
||||
hexa
|
||||
picnoir
|
||||
thanegill
|
||||
karlbeecken
|
||||
];
|
||||
mainProgram = "esphome";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/esphome/platformio_api.py b/esphome/platformio_api.py
|
||||
index fc21977f..e5059f1d 100644
|
||||
--- a/esphome/platformio_api.py
|
||||
+++ b/esphome/platformio_api.py
|
||||
@@ -63,7 +63,7 @@ def run_platformio_cli(*args, **kwargs) -> str | int:
|
||||
os.environ.setdefault("PYTHONWARNINGS", "ignore::SyntaxWarning")
|
||||
# Increase uv retry count to handle transient network errors (default is 3)
|
||||
os.environ.setdefault("UV_HTTP_RETRIES", "10")
|
||||
- cmd = [sys.executable, "-m", "esphome.platformio_runner"] + list(args)
|
||||
+ cmd = ["platformio"] + list(args)
|
||||
|
||||
return run_external_process(*cmd, **kwargs)
|
||||
|
||||
@@ -17,16 +17,16 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "0.305.1";
|
||||
version = "0.306.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "evcc-io";
|
||||
repo = "evcc";
|
||||
tag = version;
|
||||
hash = "sha256-XRaowjOErq+gAarBNcSydWbjuq4KUQkXb4YBbL7pCas=";
|
||||
hash = "sha256-zg/DIh/HKJZraMIGcB2KKxiRQhuSrRDDcAEoL2prhFg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-dQwbg1gTpDVnNGAN3scvohfsy2LCe4v9eGtNBVdZ1Hs=";
|
||||
vendorHash = "sha256-0X8rzETUgLa83EA/GQnZUrWXUYnAm8H60kk6ZKsH9Yo=";
|
||||
|
||||
commonMeta = {
|
||||
license = lib.licenses.mit;
|
||||
@@ -52,7 +52,7 @@ buildGo126Module rec {
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
inherit src;
|
||||
hash = "sha256-9txp8CgwWRDiNt9ulIpvaWg41N4lsvJ05AyVBT15ESM=";
|
||||
hash = "sha256-PL16KEA5XaJjE5SvziMxdjlG2j7fQutfOoSvruxGJHQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "exploitdb";
|
||||
version = "2026-04-30";
|
||||
version = "2026-05-01";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "exploit-database";
|
||||
repo = "exploitdb";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-ApOecbOVoriicvhtQ87n+8jnwbKlQqbZsmBwsI0A9B0=";
|
||||
hash = "sha256-BZ1X9SpXf+HSY/4xz9imnCwK3si7c130Havg/ATI/LQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "ffmpeg-normalize";
|
||||
version = "1.37.3";
|
||||
version = "1.37.6";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit version;
|
||||
pname = "ffmpeg_normalize";
|
||||
hash = "sha256-mN4vmiST+LV5Bv/QZ9Pvo3qzhTaeD3MpDa8sLNqjeW0=";
|
||||
hash = "sha256-zsfWqdGyEI8OT4/L0wTxkmdqcI6NEfr5SAc7+O7FYu4=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [ uv-build ];
|
||||
@@ -29,9 +29,6 @@ python3Packages.buildPythonApplication rec {
|
||||
|
||||
postPatch = with python3Packages; ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail \
|
||||
'requires = ["uv_build>=0.8.14,<0.9.0"]' \
|
||||
'requires = ["uv_build==${uv-build.version}"]' \
|
||||
--replace-fail \
|
||||
'colorlog==6.7.0' \
|
||||
'colorlog==${colorlog.version}'
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "ghciwatch";
|
||||
version = "1.3.2";
|
||||
version = "1.3.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MercuryTechnologies";
|
||||
repo = "ghciwatch";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-3S9nw2wvl/ORwPGfWknqhsooH3XkF87OyiGFVLK/YqA=";
|
||||
hash = "sha256-ivSn1q/E0akz2JEkGcfB8i46Vom8/Pp/DlFBI+Zmo5Q=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-3vv6WPbxvZdcAr/ynzbmh6xHAPFB2Z/1TS7fMrq0EHE=";
|
||||
cargoHash = "sha256-LZIBQ5dKtqTsMjLrhBucsgSAdmsGKkhOFtMCGh3clPk=";
|
||||
|
||||
# integration tests are not run but the macros need this variable to be set
|
||||
env.GHC_VERSIONS = "";
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
{
|
||||
"version": "1.0.32",
|
||||
"version": "1.0.40",
|
||||
"x86_64-linux": {
|
||||
"name": "copilot-linux-x64",
|
||||
"hash": "sha256-K0UH4DsBNpKnypnOWjyVBF/tKQFRC/Se06RA1eZPt3M="
|
||||
"hash": "sha256-ETlF92PA96vJX3oEBeQpxYV6oKhCK0EwAEiy35kGzPY="
|
||||
},
|
||||
"aarch64-linux": {
|
||||
"name": "copilot-linux-arm64",
|
||||
"hash": "sha256-9snR+MC8EZESZde/xRQ28z8h/5vTFDMboAm60gOjilk="
|
||||
"hash": "sha256-PxO+OiogtG0S8OChIVAh1WXC4UJSMn67cayiDtMKwAs="
|
||||
},
|
||||
"x86_64-darwin": {
|
||||
"name": "copilot-darwin-x64",
|
||||
"hash": "sha256-fGY8ahkymJXAlcREgVB8UkICtn3zP52w1Lhur+F7LaY="
|
||||
"hash": "sha256-kbP/ZMXUcG2kpdmsoBlUT+/I0paFSVymlkii5raiLkU="
|
||||
},
|
||||
"aarch64-darwin": {
|
||||
"name": "copilot-darwin-arm64",
|
||||
"hash": "sha256-8Lzl6JJc1tpR1hO9gv/ck+zRy4zO7/ieLwfnppgKsLM="
|
||||
"hash": "sha256-hmyWfR8EBLvKZ4we9DkEOgblkS8IZQvoLqTBlZWIauM="
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,17 +9,17 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "go-sendxmpp";
|
||||
version = "0.15.5";
|
||||
version = "0.15.6";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "salsa.debian.org";
|
||||
owner = "mdosch";
|
||||
repo = "go-sendxmpp";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-uOJ7pI+6ETjb0iRMM3XDeztXHjxNQlU05ODTiBi72LY=";
|
||||
hash = "sha256-HoK13rhsH5OyRHLuuCC+zGpcrK1591Zqy0hUinHbhcE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-tt70h/JG8t9tbhqJoPu0KPVJ8ZbNKq0h7oLfiPAL4jg=";
|
||||
vendorHash = "sha256-Zy3oewVeoKEIOmh2lxyjBIHNCJX/YtWxuGOk6IM9CXs=";
|
||||
|
||||
passthru = {
|
||||
tests = { inherit (nixosTests) ejabberd prosody; };
|
||||
|
||||
@@ -44,9 +44,10 @@ buildGoModule rec {
|
||||
homepage = "https://git.sr.ht/~whynothugo/ImapGoose";
|
||||
changelog = "https://git.sr.ht/~whynothugo/ImapGoose/refs/v${version}";
|
||||
license = lib.licenses.isc;
|
||||
platforms = lib.platforms.linux;
|
||||
platforms = lib.platforms.unix;
|
||||
mainProgram = "imapgoose";
|
||||
maintainers = with lib.maintainers; [
|
||||
philocalyst
|
||||
bobberb
|
||||
];
|
||||
};
|
||||
|
||||
@@ -4,25 +4,25 @@
|
||||
fetchFromGitHub,
|
||||
nixosTests,
|
||||
fetchNpmDeps,
|
||||
nodejs_20,
|
||||
nodejs,
|
||||
npmHooks,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "isso";
|
||||
version = "0.13.0";
|
||||
version = "0.14.0";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "posativ";
|
||||
repo = "isso";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-kZNf7Rlb1DZtQe4dK1B283OkzQQcCX+pbvZzfL65gsA=";
|
||||
hash = "sha256-8kXqqiMXxF0wCJ+AzYT8j0rjuhlXO3F6UJbump672b4=";
|
||||
};
|
||||
|
||||
npmDeps = fetchNpmDeps {
|
||||
inherit (finalAttrs) src;
|
||||
hash = "sha256-RBpuhFI0hdi8bB48Pks9Ac/UdcQ/DJw+WFnNj5f7IYE=";
|
||||
hash = "sha256-e3r5iZLmXlf5YBPGgeNBDkdgfbNcIZIXbRLyyoyJiTU=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
@@ -40,6 +40,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
itsdangerous
|
||||
jinja2
|
||||
misaka
|
||||
mistune
|
||||
html5lib
|
||||
werkzeug
|
||||
bleach
|
||||
@@ -50,7 +51,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
python3Packages.cffi
|
||||
python3Packages.sphinxHook
|
||||
python3Packages.sphinx
|
||||
nodejs_20
|
||||
nodejs
|
||||
npmHooks.npmConfigHook
|
||||
];
|
||||
|
||||
|
||||
@@ -8,19 +8,20 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "iwe";
|
||||
version = "0.0.67";
|
||||
version = "0.0.70";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "iwe-org";
|
||||
repo = "iwe";
|
||||
tag = "iwe-v${finalAttrs.version}";
|
||||
hash = "sha256-/irCQgMDuO2boitdTyl4OlkMvuyFPfsTx8Jo/VhLYuw=";
|
||||
hash = "sha256-ehRth5vBUjswn9oM97WuMYvHs0LohXBwrdN23VRELa0=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-oAIF+ekKzvfT7WzQ+PE4RWUUMMDkBOFBdgwUMXBZsFk=";
|
||||
cargoHash = "sha256-rQre02fRRcf0FCmRpWh1UHsvCpp/iLqCA4QHvSZYBwA=";
|
||||
|
||||
cargoBuildFlags = [
|
||||
"--package=iwe"
|
||||
"--package=iwec"
|
||||
"--package=iwes"
|
||||
];
|
||||
|
||||
|
||||
@@ -12,14 +12,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "jfsw";
|
||||
version = "20240303";
|
||||
version = "20260105";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jonof";
|
||||
repo = "jfsw";
|
||||
tag = finalAttrs.version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-bOUgRa9zWufTFEj5huXAKeRerV8PqfqQVDoVUvRrj2I=";
|
||||
hash = "sha256-L/EtdbyU6uZbSajQkI8IclskIfzm15uikSK2EZZZHXA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -47,14 +47,14 @@ in
|
||||
# as bootloader for various platforms and corresponding binary and helper files.
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "limine";
|
||||
version = "12.0.2";
|
||||
version = "12.1.0";
|
||||
|
||||
# We don't use the Git source but the release tarball, as the source has a
|
||||
# `./bootstrap` script performing network access to download resources.
|
||||
# Packaging that in Nix is very cumbersome.
|
||||
src = fetchurl {
|
||||
url = "https://github.com/Limine-Bootloader/Limine/releases/download/v${finalAttrs.version}/limine-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-bHHBqQrQLY0J+8RkfS9qsyRGk4fw21xsb0nB2HVkKwg=";
|
||||
hash = "sha256-DcVL7SYEIZKgY/TTsX8mW6wjAituCF+eBeISt6gMZhk=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "mint-l-theme";
|
||||
version = "2.0.6";
|
||||
version = "2.0.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = "mint-l-theme";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-Lss8P0L6gxbP88MiTfv3VfOFkvkEUDXIPBoFHPxLWqE=";
|
||||
hash = "sha256-Wk480v9AHUfcaZP9sm/boIFWcbuhmJ5cH14qV4BRtuw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "mint-themes";
|
||||
version = "2.3.8";
|
||||
version = "2.3.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = "mint-themes";
|
||||
rev = version;
|
||||
hash = "sha256-cIXEg6Crq4DrHBeJUgwCF5k8A5bsR4trO0UC5wMZLpk=";
|
||||
hash = "sha256-Zvy/qqyzc6Yu6TJC+vbJ660MYeyX27LIm1TovwbRjMs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "moor";
|
||||
version = "2.12.1";
|
||||
version = "2.12.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "walles";
|
||||
repo = "moor";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Z2N8zEeP3wSrq3PPBXQgEEGz6EZnuzdLAu/Ce5c9JvA=";
|
||||
hash = "sha256-nqwdWDJ4lpWJL79Bjk17U81xqz4l0Q75jG2tJfYmV/w=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-fHOatNwedbDNGp7V8ynW1NiTkqSJmo8vrv6S64gUQqM=";
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
cargo-tauri,
|
||||
desktop-file-utils,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
fetchurl,
|
||||
fetchYarnDeps,
|
||||
glib,
|
||||
gtk3,
|
||||
@@ -18,18 +20,21 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "noriskclient-launcher-unwrapped";
|
||||
version = "0.6.19";
|
||||
version = "0.6.20";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NoRiskClient";
|
||||
repo = "noriskclient-launcher";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-SHLYCpflIjslCuCPROyuVsIdNIkHWl2BVflgxAz3RYg=";
|
||||
hash = "sha256-VChMA6XXKgtytLFOORxnpNnTrunKaIJkFge2Xu4FjG0=";
|
||||
};
|
||||
|
||||
yarnOfflineCache = fetchYarnDeps {
|
||||
yarnLock = "${finalAttrs.src}/yarn.lock";
|
||||
hash = "sha256-tRvtYeOUn3xm7dhLWnzlpS8SK8NVVQAtNgvyiM48X28=";
|
||||
yarnLock = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/NoRiskClient/noriskclient-launcher/937b275341191552a08757c9b4e5eb7802d54945/yarn.lock";
|
||||
hash = "sha256-IqhgDMthwEAd/rzat119Ajaf8p8LgTDEj/KrS2xVFuQ=";
|
||||
};
|
||||
hash = "sha256-VWl6YqTiBRz85GICFKGwDZRBcITGQdWE7EUzW58wHdY=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -38,6 +43,13 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
|
||||
# Make the launcher find java from PATH, instead of downloading its own, which is not going to work on NixOS.
|
||||
./java-from-path.patch
|
||||
|
||||
# The version of tauri in Cargo.toml and in package.json aren't matching, causing the build to fail. Upstream PR is https://github.com/NoRiskClient/noriskclient-launcher/pull/222.
|
||||
(fetchpatch {
|
||||
name = "fix-tauri-version-mismatch";
|
||||
url = "https://github.com/NoRiskClient/noriskclient-launcher/commit/937b275341191552a08757c9b4e5eb7802d54945.patch";
|
||||
hash = "sha256-jI0KnvUpSJU739BfZeYFMhtZKjno1UrWWGwMLS3I6ag=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
@@ -45,7 +57,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
--replace-fail "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
|
||||
'';
|
||||
|
||||
cargoHash = "sha256-j41whr62i0FlTe/fWoPsMS9kX5aPgCjM9TckeZpnwgw=";
|
||||
cargoHash = "sha256-FiM1FuWeGmfZlnKiIImGOsJnKt3qsLqvY6oRUvOSBWM=";
|
||||
|
||||
cargoRoot = "src-tauri";
|
||||
buildAndTestSubdir = finalAttrs.cargoRoot;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
let
|
||||
pname = "notesnook";
|
||||
version = "3.3.15";
|
||||
version = "3.3.16";
|
||||
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
throwSystem = throw "Unsupported system: ${system}";
|
||||
@@ -27,10 +27,10 @@ let
|
||||
url = "https://github.com/streetwriters/notesnook/releases/download/v${version}/notesnook_${suffix}";
|
||||
hash =
|
||||
{
|
||||
x86_64-linux = "sha256-CGFLiDxhr9VC9U1fppjJX/x0ZWgDWKPymLY4LJAnGxY=";
|
||||
aarch64-linux = "sha256-dqpYjvxjSb/rSJ4wLJsPGPzdPPOxzpa8LUsdqlPzT/M=";
|
||||
x86_64-darwin = "sha256-hLKA3z1HDhPzMCBVxDl05DsDexG73rcKHhR5ERQCgJo=";
|
||||
aarch64-darwin = "sha256-j1SQ/hn/IZ7aZQiIx6UgkOSxs6vqPGS0y4AXkXWcFGM=";
|
||||
x86_64-linux = "sha256-zwAGZHNbD58s5dsn2N76VQJlyCuYUtNNEEMJJh/yxqc=";
|
||||
aarch64-linux = "sha256-AEY1s7K/HKEmWYU16ibE3qXZL2EyETsr6Wzhz2hiSdk=";
|
||||
x86_64-darwin = "sha256-HXcrlOwHqYASVobtoES1+A1jXvGBPI/hPNp3MSjSRjg=";
|
||||
aarch64-darwin = "sha256-a4S/9U/wc9XGiWh1YS7AeEP3bAGwCLcgGWJ+qL7cTJA=";
|
||||
}
|
||||
.${system} or throwSystem;
|
||||
};
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "nwg-displays";
|
||||
version = "0.3.28";
|
||||
version = "0.4.0";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = "nwg-displays";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-PiE3d/o3ym2WmOzRsq7VRKt8TDQ4KCnePVObeI7+oKo=";
|
||||
hash = "sha256-e1vAVJ6wsPWbKWnVQcp1f1Z+TP3whoMHopN0N0aS9fE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -26,14 +26,14 @@ in
|
||||
|
||||
py.pkgs.buildPythonApplication (finalAttrs: {
|
||||
pname = "oci-cli";
|
||||
version = "3.80.0";
|
||||
version = "3.81.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "oracle";
|
||||
repo = "oci-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-ss7nKT4dIyJxJNBK8HgAPXG0lS5MMZw7sw8hPjLqYUQ=";
|
||||
hash = "sha256-8fZxGvgk46BDeNraEfzA4V/Lptk4QpjlZ+2mvfsWMb0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
@@ -19,6 +19,7 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
|
||||
sourceRoot = "${finalAttrs.src.name}/src";
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"openapi-spec-validator"
|
||||
"rich"
|
||||
"setuptools"
|
||||
"tenacity"
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "opencode";
|
||||
version = "1.14.30";
|
||||
version = "1.14.31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "anomalyco";
|
||||
repo = "opencode";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-pRMPa0ba71wLo4ZumbV18+y80GbcoU7NN6+P3e8LUTM=";
|
||||
hash = "sha256-VHznPS2OuJ8urQqGK3K0ysQLCk+O8JV7/UCDdFyqafQ=";
|
||||
};
|
||||
|
||||
node_modules = stdenvNoCC.mkDerivation {
|
||||
@@ -75,7 +75,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
# NOTE: Required else we get errors that our fixed-output derivation references store paths
|
||||
dontFixup = true;
|
||||
|
||||
outputHash = "sha256-0dBgIXkGplKmq/sbXwhLoKUGwTIZU+TeC74YkByNOYk=";
|
||||
outputHash = "sha256-f/cWCr6Oqnq21u9+UyhwE5PGqE9X5K+NtjEGbZ4ORPg=";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHashMode = "recursive";
|
||||
};
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
nodejs_20,
|
||||
nodejs,
|
||||
pnpm_9,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
@@ -30,7 +30,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs_20
|
||||
nodejs
|
||||
pnpmConfigHook
|
||||
pnpm_9
|
||||
makeWrapper
|
||||
@@ -51,7 +51,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
mkdir -p $out/bin $out/lib/openspec
|
||||
|
||||
substituteInPlace bin/openspec.js \
|
||||
--replace '#!/usr/bin/env node' '#!${nodejs_20}/bin/node' \
|
||||
--replace '#!/usr/bin/env node' '#!${nodejs}/bin/node' \
|
||||
--replace "../dist" "$out/lib/openspec/dist"
|
||||
install -Dm755 bin/openspec.js $out/bin/openspec
|
||||
|
||||
|
||||
@@ -30,7 +30,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
outputs = [ "out" ] ++ lib.optionals stdenv.hostPlatform.isLinux [ "dev" ];
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs --build ./autogen.pl
|
||||
|
||||
@@ -11,16 +11,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "rumdl";
|
||||
version = "0.1.80";
|
||||
version = "0.1.86";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rvben";
|
||||
repo = "rumdl";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Xa5mk62VUdsZVipD1gwTK9kR5GSXEyxu02t6zcMff0E=";
|
||||
hash = "sha256-DtI1GIljCksY4zQf6eCf1J5iF/jWSs0yT8QGepEDawI=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-zxj60PE3CpNnF/h3nTHX4yKh2QfR8TLZkl1Purc058k=";
|
||||
cargoHash = "sha256-mJHsMt+Hv4t20iKZezQqhyPpqWjQRIYSDfUSx6Fog0A=";
|
||||
|
||||
cargoBuildFlags = [
|
||||
"--bin=rumdl"
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "serie";
|
||||
version = "0.7.2";
|
||||
version = "0.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lusingander";
|
||||
repo = "serie";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-/w/LKU2ObPjoO7RQ5HehCAqWv3Hfu7a+6Rk+rPx5MSM=";
|
||||
hash = "sha256-+kiNeMhturrWWxU9/GrQnen4vxZEaxQEUbA8sCYHvk8=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-JeK2UIlG4MmOxGPxy2HbFTgpi14/zyibuFQyrQooItg=";
|
||||
cargoHash = "sha256-0VkBnKF3DEkaoqn4r6aUMteUSzabpoHyCrqBXQ0UELs=";
|
||||
|
||||
nativeCheckInputs = [ gitMinimal ];
|
||||
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "silver-platter";
|
||||
version = "0.8.3";
|
||||
version = "0.8.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jelmer";
|
||||
repo = "silver-platter";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-u/OmHvmMyBS+e3FzgIAtWQINzikFGHlBpLB1mbzwDs0=";
|
||||
hash = "sha256-KafDAd457Kp2SK9ZCmslaTMd6Wx45fszQ0tzuqInT+o=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-hh9kjr2XN0g2QUznn8aJfDHNzgXdWJzY3Z6PxWOVmd0=";
|
||||
cargoHash = "sha256-j+zKH4ZLYdaJnHp2vU1yZXEx0k17dwb7iZmC2najFPk=";
|
||||
|
||||
buildInputs = [
|
||||
python3
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "sub-store-frontend";
|
||||
version = "2.16.59";
|
||||
version = "2.16.79";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sub-store-org";
|
||||
repo = "Sub-Store-Front-End";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-dTjKRkYtt7BA2Q95skXdn2TZNEt1NnXlVzRGUlRdly4=";
|
||||
hash = "sha256-CwLvnxR6MSX+ZwogXEgQHny+IsH4sZrItChXWho3ZP8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -32,7 +32,7 @@ buildNpmPackage (finalAttrs: {
|
||||
inherit (finalAttrs) pname version src;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-gQe5AMRZgjp1G95bFgCBMlhVql+ZHgPfJ2DOklFyk2k=";
|
||||
hash = "sha256-L3uoUFks3QonOQl0kOHYwOM1deFiNSqe0chv5YFpH4o=";
|
||||
};
|
||||
|
||||
npmConfigHook = pnpmConfigHook;
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "sub-store";
|
||||
version = "2.22.6";
|
||||
version = "2.22.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sub-store-org";
|
||||
repo = "Sub-Store";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-bK9N1/HodME8XEHA07h8IEMXDtnBKzBf8waMBQsEYbA=";
|
||||
hash = "sha256-bgqIJagIdP9NJAcfGxoAVgKEWiR2t+gu1QWDiCfCPjE=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/backend";
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
}:
|
||||
let
|
||||
pname = "swagger-typescript-api";
|
||||
version = "13.6.5";
|
||||
version = "13.7.2";
|
||||
|
||||
node-modules-hash = {
|
||||
"x86_64-linux" = "sha256-N19ocmrqQ8SpDNhmpCNC1wdWGrkBXCdio+ZfEXceaUA=";
|
||||
"x86_64-linux" = "sha256-1Wy9RWNvMmxSY72Qcam/jCVwurGk4ms9PTR5tt6t03I=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -22,19 +22,27 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "acacode";
|
||||
repo = "swagger-typescript-api";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-DAgE88JBJLNkg9WOO2qVI2dpdfNFvvBIcy++S/PX2NY=";
|
||||
hash = "sha256-2sAE3wD/vUjaxvlhfrBRSErB3PsjQfi4UAcc4tU0le4=";
|
||||
};
|
||||
|
||||
node_modules = stdenv.mkDerivation {
|
||||
inherit (finalAttrs) src version;
|
||||
pname = "${pname}-node_modules";
|
||||
|
||||
impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [
|
||||
"GIT_PROXY_COMMAND"
|
||||
"SOCKS_SERVER"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
bun
|
||||
writableTmpDirAsHomeHook
|
||||
];
|
||||
|
||||
dontConfigure = true;
|
||||
# Prevent patchShebangs from rewriting node_modules/.bin shebangs to store
|
||||
# paths, which would make this fixed-output derivation's output hash unstable.
|
||||
dontPatchShebangs = true;
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "vencord";
|
||||
version = "1.14.10";
|
||||
version = "1.14.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Vendicated";
|
||||
|
||||
@@ -25,7 +25,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
# Update only together with voicevox and voicevox-engine
|
||||
# nixpkgs-update: no auto update
|
||||
version = "0.16.2";
|
||||
passthru.modelVersion = "0.16.3";
|
||||
passthru.modelVersion = "0.16.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "VOICEVOX";
|
||||
@@ -70,7 +70,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "VOICEVOX";
|
||||
repo = "voicevox_vvm";
|
||||
tag = finalAttrs.passthru.modelVersion;
|
||||
hash = "sha256-VqSNEHJV/g9R+4XknRGi/s4C7/uXEGCK5/NC2XwiPcI=";
|
||||
hash = "sha256-/NU9CZcb+gHXHeno3NLF0EgPLw+6f8XyiAE2b9XJmuE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ python3 ];
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "voicevox-engine";
|
||||
version = "0.25.1";
|
||||
version = "0.25.2";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "VOICEVOX";
|
||||
repo = "voicevox_engine";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-4pZs5f6Fe4kHIKcyww1eq9uRTf7rk5KAr/00H8aH9qA=";
|
||||
hash = "sha256-A+ym/ZfHUHqXSGOiIndUeozrK64uJILCmRUm+qSsSNE=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -103,7 +103,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
owner = "VOICEVOX";
|
||||
repo = "voicevox_resource";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-YaUVlZnpxu/IhLrp1XdcxDyus7DRhyzu4VKfabTsPUY=";
|
||||
hash = "sha256-Byv9ASl1qCeGWJiBtpGoPFgpbwtSdn48XvzIDS0SHN4=";
|
||||
};
|
||||
|
||||
pyopenjtalk = python3Packages.callPackage ./pyopenjtalk.nix { };
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "voicevox";
|
||||
version = "0.25.1";
|
||||
version = "0.25.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "VOICEVOX";
|
||||
repo = "voicevox";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-l9aFuhOylcQrHa+0R0P4Jy5iL2gA6xJsUJt8KvWIMuM=";
|
||||
hash = "sha256-AORB6oxvDUNOxnwgIlAKkgtt0+NpU16Fc4qc1aMhxkQ=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
flutter341.buildFlutterApplication rec {
|
||||
pname = "yubioath-flutter";
|
||||
version = "7.3.2";
|
||||
version = "7.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Yubico";
|
||||
repo = "yubioath-flutter";
|
||||
tag = version;
|
||||
hash = "sha256-UN3wWM3wa4c+qv5czn1z0bWlJPc4nUIPgF0HHi+9Muc=";
|
||||
hash = "sha256-PB16QOD84i564LufF++tSdutuqUfKms6mTZW1knXTJk=";
|
||||
};
|
||||
|
||||
pubspecLock = lib.importJSON ./pubspec.lock.json;
|
||||
|
||||
@@ -695,11 +695,11 @@
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "matcher",
|
||||
"sha256": "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6",
|
||||
"sha256": "dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.12.18"
|
||||
"version": "0.12.19"
|
||||
},
|
||||
"material_color_utilities": {
|
||||
"dependency": "transitive",
|
||||
@@ -1300,31 +1300,31 @@
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "test",
|
||||
"sha256": "54c516bbb7cee2754d327ad4fca637f78abfc3cbcc5ace83b3eda117e42cd71a",
|
||||
"sha256": "280d6d890011ca966ad08df7e8a4ddfab0fb3aa49f96ed6de56e3521347a9ae7",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.29.0"
|
||||
"version": "1.30.0"
|
||||
},
|
||||
"test_api": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "test_api",
|
||||
"sha256": "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636",
|
||||
"sha256": "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.7.9"
|
||||
"version": "0.7.10"
|
||||
},
|
||||
"test_core": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "test_core",
|
||||
"sha256": "394f07d21f0f2255ec9e3989f21e54d3c7dc0e6e9dbce160e5a9c1a6be0e2943",
|
||||
"sha256": "0381bd1585d1a924763c308100f2138205252fb90c9d4eeaf28489ee65ccde51",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.6.15"
|
||||
"version": "0.6.16"
|
||||
},
|
||||
"tray_manager": {
|
||||
"dependency": "direct main",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
stdenvNoCC,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
@@ -23,6 +24,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
install -D zsh-completion-sync.plugin.zsh $out/share/zsh-completion-sync/zsh-completion-sync.plugin.zsh
|
||||
'';
|
||||
|
||||
passthru.updateScript = gitUpdater {
|
||||
rev-prefix = "v";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Automatically loads completions added dynamically to FPATH or XDG_DATA_DIRS";
|
||||
homepage = "https://github.com/BronzeDeer/zsh-completion-sync";
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "elementary-dock";
|
||||
version = "8.3.2";
|
||||
version = "8.3.3";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "elementary";
|
||||
repo = "dock";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-knnr9uKBf27tovucAgAX5N//3t70KtO++Ei/1l74ZFg=";
|
||||
hash = "sha256-13wXBqN4vovmiXXQyciy4yxIrByuLBvm+ypg2MLVMB4=";
|
||||
};
|
||||
|
||||
depsBuildBuild = [ pkg-config ];
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "llef";
|
||||
version = "2.2.3";
|
||||
version = "2.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "foundryzero";
|
||||
repo = "llef";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-dTNp6rmiKTg7STpgFkeB2Jcz5V16SA7cIcql9TUiS5w=";
|
||||
hash = "sha256-pUZ2d9ch1mQzfWqHy0srOJwNULGH7dUgVapCaImLa0g=";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
# nix build .#legacyPackages.x86_64-darwin.mesa .#legacyPackages.aarch64-darwin.mesa
|
||||
rec {
|
||||
pname = "mesa";
|
||||
version = "26.0.5";
|
||||
version = "26.0.6";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "mesa";
|
||||
repo = "mesa";
|
||||
rev = "mesa-${version}";
|
||||
hash = "sha256-fhe3mHZQmZ3lm0XMKWWL8MKBbK5aAJCFFvDPyiI9K/A=";
|
||||
hash = "sha256-rSX+dVcquTIdITfTy+heipeq6xktOaA3psn6vXm1S34=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
buildPythonPackage,
|
||||
embree,
|
||||
cython,
|
||||
numpy,
|
||||
setuptools,
|
||||
pytestCheckHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "embreex";
|
||||
version = "4.4.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "trimesh";
|
||||
repo = "embreex";
|
||||
tag = version;
|
||||
hash = "sha256-mUPc9CMHsFYb1ELBmj+XXCjYEIW1iV8ZaRCQ40tYS8w=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
setuptools
|
||||
numpy
|
||||
cython
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
numpy
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
embree
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"embreex"
|
||||
"embreex.mesh_construction"
|
||||
"embreex.rtcore"
|
||||
"embreex.rtcore_scene"
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
# conflicts with $out
|
||||
rm -rf embreex/
|
||||
'';
|
||||
|
||||
nativeCheckInputs = [ pytestCheckHook ];
|
||||
|
||||
meta = {
|
||||
description = "Maintained PyEmbree fork, bindings for Intel's Embree ray engine";
|
||||
homepage = "https://github.com/trimesh/embreex";
|
||||
changelog = "https://github.com/trimesh/embreex/releases/tag/${src.tag}";
|
||||
license = lib.licenses.bsd2;
|
||||
maintainers = with lib.maintainers; [ pbsds ];
|
||||
inherit (embree.meta) platforms;
|
||||
};
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
fetchFromCodeberg,
|
||||
click,
|
||||
pyscard,
|
||||
pycountry,
|
||||
@@ -10,27 +10,29 @@
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "emv";
|
||||
version = "1.0.14";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
src = fetchFromCodeberg {
|
||||
owner = "russss";
|
||||
repo = "python-emv";
|
||||
tag = "v${version}";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-MnaeQZ0rA3i0CoUA6HgJQpwk5yo4rm9e+pc5XzRd1eg=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace-fail '"enum-compat==0.0.3",' "" \
|
||||
--replace-fail '"argparse==1.4.0",' "" \
|
||||
--replace-fail "click==7.1.2" "click" \
|
||||
--replace-fail "pyscard==2.0.0" "pyscard" \
|
||||
--replace-fail "pycountry==20.7.3" "pycountry" \
|
||||
--replace-fail "terminaltables==3.1.0" "terminaltables"
|
||||
'';
|
||||
pythonRelaxDeps = [
|
||||
"click"
|
||||
"pyscard"
|
||||
"pycountry"
|
||||
"terminaltables"
|
||||
];
|
||||
|
||||
pythonRemoveDeps = [
|
||||
"enum-compat"
|
||||
"argparse"
|
||||
];
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -47,10 +49,10 @@ buildPythonPackage rec {
|
||||
|
||||
meta = {
|
||||
description = "Implementation of the EMV chip-and-pin smartcard protocol";
|
||||
homepage = "https://github.com/russss/python-emv";
|
||||
changelog = "https://github.com/russss/python-emv/releases/tag/v${version}";
|
||||
homepage = "https://codeberg.org/russss/python-emv/";
|
||||
changelog = "https://codeberg.org/russss/python-emv/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ lukegb ];
|
||||
mainProgram = "emvtool";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
diff --git a/esp_idf_size/main.py b/esp_idf_size/main.py
|
||||
index a600b90..cfe3618 100644
|
||||
index 13bfa9d..b44289f 100644
|
||||
--- a/esp_idf_size/main.py
|
||||
+++ b/esp_idf_size/main.py
|
||||
@@ -45,6 +45,8 @@ def main() -> None:
|
||||
parser = argparse.ArgumentParser(prog='esp_idf_size',
|
||||
description='This tool displays firmware size information for project built by ESP-IDF')
|
||||
@@ -49,6 +49,8 @@ def main() -> None:
|
||||
prog='esp_idf_size', description='This tool displays firmware size information for project built by ESP-IDF'
|
||||
)
|
||||
|
||||
+ parser.add_argument('--ng', action='store_true', help="stub for 1.x compat")
|
||||
+
|
||||
parser.add_argument('input_file',
|
||||
metavar='MAP_FILE',
|
||||
help='Path to the link map file generated by the ESP-IDF build system.')
|
||||
parser.add_argument(
|
||||
'input_file', metavar='MAP_FILE', help='Path to the link map file generated by the ESP-IDF build system.'
|
||||
)
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "esp-idf-size";
|
||||
version = "2.1.0";
|
||||
version = "2.2.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "espressif";
|
||||
repo = "esp-idf-size";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-A78sbuxn26gJqZ84EhYWKCVtkZE3gRT3jbjWLpwjXpQ=";
|
||||
hash = "sha256-tiNk1yh8FPwLEKAw+h+Lp5n0aY/FpTwqZjtAQtZK6eY=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -45,9 +45,8 @@ buildPythonPackage (finalAttrs: {
|
||||
];
|
||||
# pytest runs from the source root but asyncio_mode=auto is configured in
|
||||
# crates/primp-python/pyproject.toml, which pytest doesn't pick up from there
|
||||
pytestFlagsArray = [
|
||||
"-o"
|
||||
"asyncio_mode=auto"
|
||||
pytestFlags = [
|
||||
"--override-ini=asyncio_mode=auto"
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "pydantic-ai-slim";
|
||||
version = "1.88.0";
|
||||
version = "1.89.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pydantic";
|
||||
repo = "pydantic-ai";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-2DyPJNbGFkbgYd2qLqhlTkmsgpLcTkkq3+7JKMocnBk=";
|
||||
hash = "sha256-AD4tFynt+CO/Tjhndbg8WrQ/qPmaWMPjBsz7xZQOfSo=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/pydantic_ai_slim";
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "pydantic-graph";
|
||||
version = "1.88.0";
|
||||
version = "1.89.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pydantic";
|
||||
repo = "pydantic-ai";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-2DyPJNbGFkbgYd2qLqhlTkmsgpLcTkkq3+7JKMocnBk=";
|
||||
hash = "sha256-AD4tFynt+CO/Tjhndbg8WrQ/qPmaWMPjBsz7xZQOfSo=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/pydantic_graph";
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
{ lib }:
|
||||
|
||||
rec {
|
||||
version = "1.152.0";
|
||||
version = "1.161.0";
|
||||
|
||||
srcHash = "sha256-CwF9URo3nUfkIWP277y03Bq9P6FUC4CQLjuiYwCPR6M=";
|
||||
srcHash = "sha256-WvvEn5PUEXgwtYd72IuEljHUxcJRJh7uHzNLFqaVEbc=";
|
||||
|
||||
# This tag is used to select the correct wheel from PyPI.
|
||||
# It is updated by the update.sh script.
|
||||
pythonWheelTag = "cp310.cp311.cp312.cp313.cp314.py310.py311.py312.py313.py314";
|
||||
|
||||
# submodule dependencies
|
||||
# these are fetched so we:
|
||||
@@ -13,8 +17,8 @@ rec {
|
||||
"cli/src/semgrep/semgrep_interfaces" = {
|
||||
owner = "semgrep";
|
||||
repo = "semgrep-interfaces";
|
||||
rev = "76ce6450aba3422c297b35a16e38b9fd740fc860";
|
||||
hash = "sha256-hU76aICQEI7n4tWwZX2fRjgiVw811E4UDkfqQqxX8c0=";
|
||||
rev = "8a09b2ed5838118f0ecc45305eb9d956aabcd700";
|
||||
hash = "sha256-jWv0/DADhYmBGJdMpxX8Rq2KQ2wlYIrJGGeYikcskOM=";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -24,20 +28,20 @@ rec {
|
||||
# on github releases
|
||||
core = {
|
||||
x86_64-linux = {
|
||||
platform = "musllinux_1_0_x86_64.manylinux2014_x86_64";
|
||||
hash = "sha256-XFZfCxvfCSAs2NxCCbmIU2uN0StNwEPSGaTmaHpYMPo=";
|
||||
platform = "manylinux_2_35_x86_64";
|
||||
hash = "sha256-ioIlfWVDSPlCUPQQcB8RJNxwoMQzhGGsxe5xPhAbDZ0=";
|
||||
};
|
||||
aarch64-linux = {
|
||||
platform = "musllinux_1_0_aarch64.manylinux2014_aarch64";
|
||||
hash = "sha256-XdmzHKizsxrls1Ry7pW40f4BRjA6HEayhDUXuxDHoWk=";
|
||||
platform = "manylinux_2_35_aarch64";
|
||||
hash = "sha256-yDFnKdVIgt7eFNcWb0za9hdJJ7BYldEoiK46D0eRx4U=";
|
||||
};
|
||||
x86_64-darwin = {
|
||||
platform = "macosx_10_14_x86_64";
|
||||
hash = "sha256-4ZVFhsN5VyDE/VTnzfellv2dHQIT2nCTKd/54UBRPw0=";
|
||||
hash = "sha256-NFBo32ZfO0h0KunOaWefWRnyuu1XkYku5RTxOpCfWWQ=";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
platform = "macosx_11_0_arm64";
|
||||
hash = "sha256-rEK6kAEKdwIOcmdMhyjTn5MIXbEwLPqrZV3pg3cQINk=";
|
||||
hash = "sha256-H51DqX94yMqbwvDrlIa3D64hBtvYAvelK7HLnVj588g=";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,23 +1,25 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
stdenv,
|
||||
fetchPypi,
|
||||
unzip,
|
||||
autoPatchelfHook,
|
||||
}:
|
||||
|
||||
let
|
||||
common = import ./common.nix { inherit lib; };
|
||||
in
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "semgrep-core";
|
||||
inherit (common) version;
|
||||
|
||||
# fetch pre-built semgrep-core since the ocaml build is complex and relies on
|
||||
# the opam package manager at some point
|
||||
# pulling it out of the python wheel as r2c no longer release a built binary
|
||||
# on github releases
|
||||
src =
|
||||
let
|
||||
inherit (stdenvNoCC.hostPlatform) system;
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
data = common.core.${system} or (throw "Unsupported system: ${system}");
|
||||
in
|
||||
fetchPypi rec {
|
||||
@@ -25,11 +27,16 @@ stdenvNoCC.mkDerivation rec {
|
||||
inherit version;
|
||||
format = "wheel";
|
||||
dist = python;
|
||||
python = "cp310.cp311.cp312.cp313.cp314.py310.py311.py312.py313.py314";
|
||||
python = common.pythonWheelTag;
|
||||
inherit (data) platform hash;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
nativeBuildInputs = [
|
||||
unzip
|
||||
]
|
||||
++ lib.optional stdenv.hostPlatform.isLinux autoPatchelfHook;
|
||||
|
||||
buildInputs = lib.optional stdenv.hostPlatform.isLinux stdenv.cc.cc.lib;
|
||||
|
||||
# _tryUnzip from unzip's setup-hook doesn't recognise .whl
|
||||
# "do not know how to unpack source archive"
|
||||
@@ -46,6 +53,18 @@ stdenvNoCC.mkDerivation rec {
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm 755 -t $out/bin semgrep-${version}.data/purelib/semgrep/bin/semgrep-core
|
||||
|
||||
# copy bundled libs as well
|
||||
# keeping them in bin/libs matches the layout in the wheel
|
||||
if [ -d semgrep-${version}.data/purelib/semgrep/bin/libs ]; then
|
||||
mkdir -p $out/bin/libs
|
||||
cp -rf semgrep-${version}.data/purelib/semgrep/bin/libs/* $out/bin/libs/
|
||||
|
||||
# help autoPatchelfHook find these libs
|
||||
if [ -n "''${autoPatchelfHook:-}" ]; then
|
||||
appendAutoPatchelfSearchPath $out/bin/libs
|
||||
fi
|
||||
fi
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ NIXPKGS_ROOT="$ROOT/../../../.."
|
||||
COMMON_FILE="$ROOT/common.nix"
|
||||
|
||||
instantiateClean() {
|
||||
nix-instantiate -A "$1" --eval --strict | cut -d\" -f2
|
||||
nix-instantiate "$NIXPKGS_ROOT" -A "$1" --eval --strict | cut -d\" -f2
|
||||
}
|
||||
|
||||
# get latest version
|
||||
@@ -40,10 +40,25 @@ replace() {
|
||||
|
||||
fetchgithub() {
|
||||
set +eo pipefail
|
||||
nix-build -A "$1" 2>&1 >/dev/null | grep "got:" | cut -d':' -f2 | sed 's| ||g'
|
||||
nix-build "$NIXPKGS_ROOT" -A "$1" 2>&1 >/dev/null | grep "got:" | cut -d':' -f2 | sed 's| ||g'
|
||||
set -eo pipefail
|
||||
}
|
||||
replace "$OLD_VERSION" "$NEW_VERSION" "$COMMON_FILE"
|
||||
|
||||
if [[ "$OLD_VERSION" != "$NEW_VERSION" ]]; then
|
||||
replace "$OLD_VERSION" "$NEW_VERSION" "$COMMON_FILE"
|
||||
fi
|
||||
|
||||
echo "Fetching PyPI metadata for $NEW_VERSION"
|
||||
PYPI_JSON=$(curl -s "https://pypi.org/pypi/semgrep/$NEW_VERSION/json")
|
||||
|
||||
# Update Python compatibility tag from any Linux wheel
|
||||
NEW_PYTHON_TAG=$(echo "$PYPI_JSON" | jq -r '.urls[].filename' | grep 'manylinux' | head -n 1 | sed -E 's/semgrep-.*-(.*)-none-.*\.whl/\1/')
|
||||
OLD_PYTHON_TAG=$(instantiateClean semgrep.passthru.common.pythonWheelTag)
|
||||
|
||||
if [[ "$OLD_PYTHON_TAG" != "$NEW_PYTHON_TAG" ]]; then
|
||||
echo "Updating Python wheel tag: $OLD_PYTHON_TAG -> $NEW_PYTHON_TAG"
|
||||
replace "$OLD_PYTHON_TAG" "$NEW_PYTHON_TAG" "$COMMON_FILE"
|
||||
fi
|
||||
|
||||
echo "Updating src"
|
||||
|
||||
@@ -60,24 +75,38 @@ echo "Updated src"
|
||||
|
||||
update_core_platform() {
|
||||
SYSTEM=$1
|
||||
PYPI_ARCH=$2
|
||||
PYPI_DISTRO=$3
|
||||
echo "Updating core src $SYSTEM"
|
||||
|
||||
PLATFORM="$(instantiateClean "semgrep.passthru.common.core.$SYSTEM.platform")"
|
||||
OLD_PLATFORM="$(instantiateClean "semgrep.passthru.common.core.$SYSTEM.platform")"
|
||||
NEW_PLATFORM=$(echo "$PYPI_JSON" | jq -r '.urls[].filename' | grep "$PYPI_DISTRO" | grep "$PYPI_ARCH" | head -n 1 | sed -E 's/semgrep-.*-none-(.*)\.whl/\1/')
|
||||
|
||||
if [[ -z "$NEW_PLATFORM" ]]; then
|
||||
echo "Error: Could not find platform tag for $SYSTEM ($PYPI_DISTRO, $PYPI_ARCH) on PyPI" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$OLD_PLATFORM" != "$NEW_PLATFORM" ]]; then
|
||||
echo "Updating platform: $OLD_PLATFORM -> $NEW_PLATFORM"
|
||||
replace "$OLD_PLATFORM" "$NEW_PLATFORM" "$COMMON_FILE"
|
||||
fi
|
||||
|
||||
OLD_HASH="$(instantiateClean "semgrep.passthru.common.core.$SYSTEM.hash")"
|
||||
URL="$(nix-instantiate -A "semgrep.passthru.semgrep-core.src.url" --raw --eval --strict --argstr system "$SYSTEM")"
|
||||
URL="$(nix-instantiate "$NIXPKGS_ROOT" -A "semgrep.passthru.semgrep-core.src.url" --raw --eval --strict --argstr system "$SYSTEM")"
|
||||
echo "Old core hash $OLD_HASH"
|
||||
NEW_HASH="$(nix hash convert --hash-algo sha256 --to sri $(nix-prefetch-url $URL))"
|
||||
NEW_HASH="$(nix-hash --to-sri --type sha256 "$(nix-prefetch-url --type sha256 "$URL")")"
|
||||
echo "New core hash $NEW_HASH"
|
||||
replace "$OLD_HASH" "$NEW_HASH" "$COMMON_FILE"
|
||||
|
||||
echo "Updated core src $SYSTEM"
|
||||
}
|
||||
|
||||
update_core_platform "x86_64-linux"
|
||||
update_core_platform "aarch64-linux"
|
||||
update_core_platform "x86_64-darwin"
|
||||
update_core_platform "aarch64-darwin"
|
||||
# update_core_platform <nix-system> <pypi-arch> <pypi-distro>
|
||||
update_core_platform "x86_64-linux" "x86_64" "manylinux"
|
||||
update_core_platform "aarch64-linux" "aarch64" "manylinux"
|
||||
update_core_platform "x86_64-darwin" "x86_64" "macosx"
|
||||
update_core_platform "aarch64-darwin" "arm64" "macosx"
|
||||
|
||||
OLD_PWD=$PWD
|
||||
TMPDIR="$(mktemp -d)"
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "timezonefinder";
|
||||
version = "8.2.2";
|
||||
version = "8.2.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jannikmi";
|
||||
repo = "timezonefinder";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-af5ylGW3NIbMfJojfAUPJl9aGNDkhijj1YWLuE0o3/A=";
|
||||
hash = "sha256-f0JEnXQHhROe6jQ377xQlM21Afp1Lqs2fHfme1ah4QM=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
pytestCheckHook,
|
||||
numpy,
|
||||
lxml,
|
||||
trimesh,
|
||||
|
||||
# optional deps
|
||||
colorlog,
|
||||
@@ -23,18 +22,19 @@
|
||||
scipy,
|
||||
pillow,
|
||||
mapbox-earcut,
|
||||
embreex,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "trimesh";
|
||||
version = "4.11.5";
|
||||
version = "4.12.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mikedh";
|
||||
repo = "trimesh";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-LF7tjthYtsEZJLqBiQZBe4urLjSD3Vbi3g1ZJ++0Tyk=";
|
||||
hash = "sha256-+Xmy3/GSnfj7u1sapMscoCGlRsz00IkUzEo9CJ5Ja3s=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
@@ -59,13 +59,20 @@ buildPythonPackage (finalAttrs: {
|
||||
pillow
|
||||
# vhacdx # not packaged
|
||||
mapbox-earcut
|
||||
# embreex # not packaged
|
||||
]
|
||||
++ lib.optionals embreex.meta.available [
|
||||
embreex
|
||||
];
|
||||
};
|
||||
|
||||
nativeCheckInputs = [
|
||||
lxml
|
||||
pytestCheckHook
|
||||
]
|
||||
# embreex is maintained by trimesh devs
|
||||
++ lib.optionals embreex.meta.available [
|
||||
embreex
|
||||
rtree
|
||||
];
|
||||
|
||||
disabledTests = [
|
||||
@@ -73,7 +80,12 @@ buildPythonPackage (finalAttrs: {
|
||||
"test_load"
|
||||
];
|
||||
|
||||
enabledTestPaths = [ "tests/test_minimal.py" ];
|
||||
enabledTestPaths = [
|
||||
"tests/test_minimal.py"
|
||||
]
|
||||
++ lib.optionals embreex.meta.available [
|
||||
"tests/test_ray.py"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"trimesh"
|
||||
|
||||
@@ -6,24 +6,23 @@
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
lxml,
|
||||
pyserial,
|
||||
pyserial-asyncio-fast,
|
||||
pytest-asyncio,
|
||||
pytestCheckHook,
|
||||
serialx,
|
||||
setuptools,
|
||||
writableTmpDirAsHomeHook,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "velbus-aio";
|
||||
version = "2026.4.0";
|
||||
version = "2026.4.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Cereal2nd";
|
||||
repo = "velbus-aio";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-bFR4iZdvkY8pg4OzAH7E0vEw7E5kyEII2iLfeG5p3OQ=";
|
||||
hash = "sha256-l77L2JI2jXw+cQw/yO1LvyWBxvUF0IBctM5V02BGtO8=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
@@ -34,8 +33,7 @@ buildPythonPackage (finalAttrs: {
|
||||
backoff
|
||||
beautifulsoup4
|
||||
lxml
|
||||
pyserial
|
||||
pyserial-asyncio-fast
|
||||
serialx
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
|
||||
@@ -18,14 +18,14 @@
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "xiaomi-ble";
|
||||
version = "1.10.1";
|
||||
version = "1.11.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Bluetooth-Devices";
|
||||
repo = "xiaomi-ble";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-60n47FZy5m7aBCRPgwNCPMZ1sMofYZET0S5o2OjGKbg=";
|
||||
hash = "sha256-ZxsG9qA69ocZc3M3r6EnnQfmBKf13N5EYM6J0VmXNy0=";
|
||||
};
|
||||
|
||||
build-system = [ poetry-core ];
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
buildHomeAssistantComponent rec {
|
||||
owner = "marq24";
|
||||
domain = "tibber_local";
|
||||
version = "2026.3.5";
|
||||
version = "2026.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit owner;
|
||||
repo = "ha-tibber-pulse-local";
|
||||
tag = version;
|
||||
hash = "sha256-vQT0Ul4/QLQhuROENWXjSLVcml5BRWvqNIWdOLXN9dk=";
|
||||
hash = "sha256-xUyKSR0X9gZhU3SsLmNWr2v5BzPRkIfhZTehLOnCIWc=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import ./generic.nix {
|
||||
version = "1.10.0";
|
||||
hash = "sha256-VKzeyhps9NC+tU7NaGZf2kTCCK6J5LU1ewJBhS/Noek=";
|
||||
cargoHash = "sha256-hvWZLGJBsMbpZQixafdYzqT+zMbk2vAtPYpJ4OBVhoU=";
|
||||
}
|
||||
@@ -2,4 +2,5 @@ import ./generic.nix {
|
||||
version = "1.9.3";
|
||||
hash = "sha256-YI2nShQhsCd1vn7S4VeCELfcU0HsmZrFs60kllJJFAo=";
|
||||
cargoHash = "sha256-b6kBDA/CDJHbybfvbRRZ++q9H+SVRu0BmgkwzN2i/YU=";
|
||||
eolDate = "2026-05-31";
|
||||
}
|
||||
|
||||
@@ -59,6 +59,8 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
inherit hash;
|
||||
};
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
env.KANIDM_BUILD_PROFILE = "release_nixpkgs_${arch}";
|
||||
|
||||
patches =
|
||||
@@ -105,13 +107,15 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
sqlite
|
||||
pam
|
||||
rust-jemalloc-sys
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
udev
|
||||
]
|
||||
++ lib.optionals (lib.versionOlder finalAttrs.version "1.10") [
|
||||
openssl
|
||||
];
|
||||
|
||||
# The UI needs to be in place before the tests are run.
|
||||
@@ -133,6 +137,9 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
''profile.release.lto="off"''
|
||||
];
|
||||
|
||||
# A bunch of the tests break due to the sandboxing.
|
||||
doCheck = false;
|
||||
|
||||
preFixup = ''
|
||||
installShellCompletion \
|
||||
--bash $releaseDir/build/completions/*.bash \
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
From 5b97267c49def10f5a4b7bb372963261c0f4b08d Mon Sep 17 00:00:00 2001
|
||||
From: oddlama <oddlama@oddlama.org>
|
||||
Date: Fri, 1 May 2026 15:01:05 +0200
|
||||
Subject: [PATCH 1/2] oauth2 basic secret modify
|
||||
|
||||
---
|
||||
server/core/src/actors/v1_write.rs | 42 +++++++++++++++++++++++++++++
|
||||
server/core/src/https/v1.rs | 6 ++++-
|
||||
server/core/src/https/v1_oauth2.rs | 29 ++++++++++++++++++++
|
||||
server/lib/src/server/migrations.rs | 16 +++++++++++
|
||||
4 files changed, 92 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/server/core/src/actors/v1_write.rs b/server/core/src/actors/v1_write.rs
|
||||
index 977292ae9..bf79c42a1 100644
|
||||
--- a/server/core/src/actors/v1_write.rs
|
||||
+++ b/server/core/src/actors/v1_write.rs
|
||||
@@ -326,6 +326,48 @@ impl QueryServerWriteV1 {
|
||||
.and_then(|_| idms_prox_write.commit().map(|_| ()))
|
||||
}
|
||||
|
||||
+ #[instrument(
|
||||
+ level = "info",
|
||||
+ skip_all,
|
||||
+ fields(uuid = ?eventid)
|
||||
+ )]
|
||||
+ pub async fn handle_oauth2_basic_secret_write(
|
||||
+ &self,
|
||||
+ client_auth_info: ClientAuthInfo,
|
||||
+ filter: Filter<FilterInvalid>,
|
||||
+ new_secret: String,
|
||||
+ eventid: Uuid,
|
||||
+ ) -> Result<(), OperationError> {
|
||||
+ // Given a protoEntry, turn this into a modification set.
|
||||
+ let ct = duration_from_epoch_now();
|
||||
+ let mut idms_prox_write = self.idms.proxy_write(ct).await?;
|
||||
+ let ident = idms_prox_write
|
||||
+ .validate_client_auth_info_to_ident(client_auth_info, ct)
|
||||
+ .map_err(|e| {
|
||||
+ admin_error!(err = ?e, "Invalid identity");
|
||||
+ e
|
||||
+ })?;
|
||||
+
|
||||
+ let modlist = ModifyList::new_purge_and_set(
|
||||
+ Attribute::OAuth2RsBasicSecret,
|
||||
+ Value::SecretValue(new_secret),
|
||||
+ );
|
||||
+
|
||||
+ let mdf =
|
||||
+ ModifyEvent::from_internal_parts(ident, &modlist, &filter, &idms_prox_write.qs_write)
|
||||
+ .map_err(|e| {
|
||||
+ admin_error!(err = ?e, "Failed to begin modify during handle_oauth2_basic_secret_write");
|
||||
+ e
|
||||
+ })?;
|
||||
+
|
||||
+ trace!(?mdf, "Begin modify event");
|
||||
+
|
||||
+ idms_prox_write
|
||||
+ .qs_write
|
||||
+ .modify(&mdf)
|
||||
+ .and_then(|_| idms_prox_write.commit())
|
||||
+ }
|
||||
+
|
||||
#[instrument(
|
||||
level = "info",
|
||||
skip_all,
|
||||
diff --git a/server/core/src/https/v1.rs b/server/core/src/https/v1.rs
|
||||
index ba3ea2827..489ce0002 100644
|
||||
--- a/server/core/src/https/v1.rs
|
||||
+++ b/server/core/src/https/v1.rs
|
||||
@@ -10,7 +10,7 @@ use axum::extract::{Path, State};
|
||||
use axum::http::{HeaderMap, HeaderValue};
|
||||
use axum::middleware::from_fn;
|
||||
use axum::response::{IntoResponse, Response};
|
||||
-use axum::routing::{delete, get, post, put};
|
||||
+use axum::routing::{delete, get, post, put, patch};
|
||||
use axum::{Extension, Json, Router};
|
||||
use axum_extra::extract::cookie::{Cookie, CookieJar, SameSite};
|
||||
use compact_jwt::{Jwk, Jws, JwsSigner};
|
||||
@@ -3156,6 +3156,10 @@ pub(crate) fn route_setup(state: ServerState) -> Router<ServerState> {
|
||||
"/v1/oauth2/{rs_name}/_basic_secret",
|
||||
get(super::v1_oauth2::oauth2_id_get_basic_secret),
|
||||
)
|
||||
+ .route(
|
||||
+ "/v1/oauth2/{rs_name}/_basic_secret",
|
||||
+ patch(super::v1_oauth2::oauth2_id_patch_basic_secret),
|
||||
+ )
|
||||
.route(
|
||||
"/v1/oauth2/{rs_name}/_scopemap/{group}",
|
||||
post(super::v1_oauth2::oauth2_id_scopemap_post)
|
||||
diff --git a/server/core/src/https/v1_oauth2.rs b/server/core/src/https/v1_oauth2.rs
|
||||
index fdc3647b4..ed4709d27 100644
|
||||
--- a/server/core/src/https/v1_oauth2.rs
|
||||
+++ b/server/core/src/https/v1_oauth2.rs
|
||||
@@ -149,6 +149,35 @@ pub(crate) async fn oauth2_id_get_basic_secret(
|
||||
.map_err(WebError::from)
|
||||
}
|
||||
|
||||
+#[utoipa::path(
|
||||
+ patch,
|
||||
+ path = "/v1/oauth2/{rs_name}/_basic_secret",
|
||||
+ request_body=ProtoEntry,
|
||||
+ responses(
|
||||
+ DefaultApiResponse,
|
||||
+ ),
|
||||
+ security(("token_jwt" = [])),
|
||||
+ tag = "v1/oauth2",
|
||||
+ operation_id = "oauth2_id_patch_basic_secret"
|
||||
+)]
|
||||
+/// Overwrite the basic secret for a given OAuth2 Resource Server.
|
||||
+#[instrument(level = "info", skip(state, new_secret))]
|
||||
+pub(crate) async fn oauth2_id_patch_basic_secret(
|
||||
+ State(state): State<ServerState>,
|
||||
+ Extension(kopid): Extension<KOpId>,
|
||||
+ VerifiedClientInformation(client_auth_info): VerifiedClientInformation,
|
||||
+ Path(rs_name): Path<String>,
|
||||
+ Json(new_secret): Json<String>,
|
||||
+) -> Result<Json<()>, WebError> {
|
||||
+ let filter = oauth2_id(&rs_name);
|
||||
+ state
|
||||
+ .qe_w_ref
|
||||
+ .handle_oauth2_basic_secret_write(client_auth_info, filter, new_secret, kopid.eventid)
|
||||
+ .await
|
||||
+ .map(Json::from)
|
||||
+ .map_err(WebError::from)
|
||||
+}
|
||||
+
|
||||
#[utoipa::path(
|
||||
patch,
|
||||
path = "/v1/oauth2/{rs_name}",
|
||||
diff --git a/server/lib/src/server/migrations.rs b/server/lib/src/server/migrations.rs
|
||||
index b3effb95b..5c6a56d24 100644
|
||||
--- a/server/lib/src/server/migrations.rs
|
||||
+++ b/server/lib/src/server/migrations.rs
|
||||
@@ -220,6 +220,22 @@ impl QueryServer {
|
||||
reload_required = true;
|
||||
};
|
||||
|
||||
+ // secret provisioning: allow idm_admin to modify OAuth2RsBasicSecret.
|
||||
+ write_txn.internal_modify_uuid(
|
||||
+ UUID_IDM_ACP_OAUTH2_MANAGE_V1,
|
||||
+ &ModifyList::new_append(
|
||||
+ Attribute::AcpCreateAttr,
|
||||
+ Attribute::OAuth2RsBasicSecret.into(),
|
||||
+ ),
|
||||
+ )?;
|
||||
+ write_txn.internal_modify_uuid(
|
||||
+ UUID_IDM_ACP_OAUTH2_MANAGE_V1,
|
||||
+ &ModifyList::new_append(
|
||||
+ Attribute::AcpModifyPresentAttr,
|
||||
+ Attribute::OAuth2RsBasicSecret.into(),
|
||||
+ ),
|
||||
+ )?;
|
||||
+
|
||||
// Execute whatever operations we have batched up and ready to go. This is needed
|
||||
// to preserve ordering of the operations - if we reloaded after a remigrate then
|
||||
// we would have skipped the patch level fix which needs to have occurred *first*.
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
From e8cd69afcee9d8d37233fa998cf9d1fa124ae90d Mon Sep 17 00:00:00 2001
|
||||
From: oddlama <oddlama@oddlama.org>
|
||||
Date: Fri, 1 May 2026 15:01:14 +0200
|
||||
Subject: [PATCH 2/2] recover account
|
||||
|
||||
---
|
||||
server/core/src/actors/internal.rs | 5 +++--
|
||||
server/core/src/admin.rs | 6 +++---
|
||||
server/daemon/src/main.rs | 24 +++++++++++++++++++++++-
|
||||
server/daemon/src/opt.rs | 7 +++++++
|
||||
4 files changed, 36 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/server/core/src/actors/internal.rs b/server/core/src/actors/internal.rs
|
||||
index deed7350d..f4e9e486a 100644
|
||||
--- a/server/core/src/actors/internal.rs
|
||||
+++ b/server/core/src/actors/internal.rs
|
||||
@@ -189,17 +189,18 @@ impl QueryServerWriteV1 {
|
||||
|
||||
#[instrument(
|
||||
level = "info",
|
||||
- skip(self, eventid),
|
||||
+ skip(self, password, eventid),
|
||||
fields(uuid = ?eventid)
|
||||
)]
|
||||
pub(crate) async fn handle_admin_recover_account(
|
||||
&self,
|
||||
name: String,
|
||||
+ password: Option<String>,
|
||||
eventid: Uuid,
|
||||
) -> Result<String, OperationError> {
|
||||
let ct = duration_from_epoch_now();
|
||||
let mut idms_prox_write = self.idms.proxy_write(ct).await?;
|
||||
- let pw = idms_prox_write.recover_account(name.as_str(), None)?;
|
||||
+ let pw = idms_prox_write.recover_account(name.as_str(), password.as_deref())?;
|
||||
|
||||
idms_prox_write.commit().map(|()| pw)
|
||||
}
|
||||
diff --git a/server/core/src/admin.rs b/server/core/src/admin.rs
|
||||
index 6a13dcaab..6b1070113 100644
|
||||
--- a/server/core/src/admin.rs
|
||||
+++ b/server/core/src/admin.rs
|
||||
@@ -27,7 +27,7 @@ const REPL_CTRL_TIMEOUT: Duration = Duration::from_secs(15);
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
pub enum AdminTaskRequest {
|
||||
- RecoverAccount { name: String },
|
||||
+ RecoverAccount { name: String, password: Option<String> },
|
||||
DisableAccount { name: String },
|
||||
ShowReplicationCertificate,
|
||||
ShowReplicationCertificateMetadata,
|
||||
@@ -416,8 +416,8 @@ async fn handle_client(
|
||||
|
||||
let resp = async {
|
||||
match req {
|
||||
- AdminTaskRequest::RecoverAccount { name } => {
|
||||
- match server_rw.handle_admin_recover_account(name, eventid).await {
|
||||
+ AdminTaskRequest::RecoverAccount { name, password } => {
|
||||
+ match server_rw.handle_admin_recover_account(name, password, eventid).await {
|
||||
Ok(password) => AdminTaskResponse::RecoverAccount { password },
|
||||
Err(e) => {
|
||||
error!(err = ?e, "error during recover-account");
|
||||
diff --git a/server/daemon/src/main.rs b/server/daemon/src/main.rs
|
||||
index 13653a5cb..ae560f9ce 100644
|
||||
--- a/server/daemon/src/main.rs
|
||||
+++ b/server/daemon/src/main.rs
|
||||
@@ -380,11 +380,32 @@ fn check_file_ownership(opt: &KanidmdParser) -> Result<(), ExitCode> {
|
||||
|
||||
async fn scripting_command(cmd: ScriptingCommand, config: Configuration) -> ExitCode {
|
||||
match cmd {
|
||||
- ScriptingCommand::RecoverAccount { name } => {
|
||||
+ ScriptingCommand::RecoverAccount { name, from_environment } => {
|
||||
+ let password = if from_environment {
|
||||
+ match std::env::var("KANIDM_RECOVER_ACCOUNT_PASSWORD_FILE") {
|
||||
+ Ok(path) => match tokio::fs::read_to_string(&path).await {
|
||||
+ Ok(contents) => Some(contents),
|
||||
+ Err(e) => {
|
||||
+ error!("Failed to read password file '{}': {}", path, e);
|
||||
+ return ExitCode::FAILURE;
|
||||
+ }
|
||||
+ },
|
||||
+ Err(_) => match std::env::var("KANIDM_RECOVER_ACCOUNT_PASSWORD") {
|
||||
+ Ok(val) => Some(val),
|
||||
+ Err(_) => {
|
||||
+ error!("Neither KANIDM_RECOVER_ACCOUNT_PASSWORD_FILE nor KANIDM_RECOVER_ACCOUNT_PASSWORD was set");
|
||||
+ return ExitCode::FAILURE;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ None
|
||||
+ };
|
||||
submit_admin_req_json(
|
||||
config.adminbindpath.as_str(),
|
||||
AdminTaskRequest::RecoverAccount {
|
||||
name: name.to_owned(),
|
||||
+ password,
|
||||
},
|
||||
)
|
||||
.await;
|
||||
@@ -1008,6 +1029,7 @@ async fn kanidm_main(config: Configuration, opt: KanidmdParser) -> ExitCode {
|
||||
config.adminbindpath.as_str(),
|
||||
AdminTaskRequest::RecoverAccount {
|
||||
name: name.to_owned(),
|
||||
+ password: None,
|
||||
},
|
||||
)
|
||||
.await;
|
||||
diff --git a/server/daemon/src/opt.rs b/server/daemon/src/opt.rs
|
||||
index 524ba3134..fa3d70f44 100644
|
||||
--- a/server/daemon/src/opt.rs
|
||||
+++ b/server/daemon/src/opt.rs
|
||||
@@ -128,6 +128,13 @@ enum ScriptingCommand {
|
||||
#[clap(value_parser)]
|
||||
/// The account name to recover credentials for.
|
||||
name: String,
|
||||
+ /// Use a password given via an environment variable.
|
||||
+ /// - `KANIDM_RECOVER_ACCOUNT_PASSWORD_FILE` takes precedence and reads the desired
|
||||
+ /// password from the given file
|
||||
+ /// - `KANIDM_RECOVER_ACCOUNT_PASSWORD` directly takes a
|
||||
+ /// password - beware that this will leave the password in the environment
|
||||
+ #[clap(long = "from-environment")]
|
||||
+ from_environment: bool,
|
||||
},
|
||||
/// Backup
|
||||
Backup {
|
||||
--
|
||||
2.53.0
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
grafanaPlugin {
|
||||
pname = "grafana-clock-panel";
|
||||
version = "2.1.9";
|
||||
zipHash = "sha256-awc1bA3MHg0z7HDzqhhWOymVPeEsOHUdxX0xneOd7kY=";
|
||||
version = "3.2.2";
|
||||
zipHash = "sha256-VjOg6qJXxhDAl8xYWD9ZZSNqSELMoREuyv+LX5xFOgM=";
|
||||
meta = {
|
||||
description = "Clock panel for Grafana";
|
||||
license = lib.licenses.mit;
|
||||
|
||||
@@ -7974,14 +7974,20 @@ with pkgs;
|
||||
kanidm_1_9 = callPackage ../servers/kanidm/1_9.nix {
|
||||
kanidmWithSecretProvisioning = kanidmWithSecretProvisioning_1_9;
|
||||
};
|
||||
kanidm_1_10 = callPackage ../servers/kanidm/1_10.nix {
|
||||
kanidmWithSecretProvisioning = kanidmWithSecretProvisioning_1_10;
|
||||
};
|
||||
|
||||
kanidmWithSecretProvisioning_1_8 = kanidm_1_8.override { enableSecretProvisioning = true; };
|
||||
kanidmWithSecretProvisioning_1_9 = kanidm_1_9.override { enableSecretProvisioning = true; };
|
||||
kanidmWithSecretProvisioning_1_10 = kanidm_1_10.override { enableSecretProvisioning = true; };
|
||||
})
|
||||
kanidm_1_8
|
||||
kanidm_1_9
|
||||
kanidm_1_10
|
||||
kanidmWithSecretProvisioning_1_8
|
||||
kanidmWithSecretProvisioning_1_9
|
||||
kanidmWithSecretProvisioning_1_10
|
||||
;
|
||||
|
||||
lemmy-server = callPackage ../servers/web-apps/lemmy/server.nix { };
|
||||
|
||||
@@ -192,7 +192,6 @@ mapAliases {
|
||||
elegy = throw "elegy has been removed because it has transitively been marked as broken since 2023."; # Added 2025-10-11
|
||||
email_validator = throw "'email_validator' has been renamed to/replaced by 'email-validator'"; # Converted to throw 2025-10-29
|
||||
emailthreads = throw "'emailthreads' has been removed because the upstream repository was archived in 2024"; # Added 2026-04-09
|
||||
embreex = throw "embreex has been removed, as it required embree2"; # added 2025-09-14
|
||||
enocean = throw "'enocean' was removed because Home Assistant switched to 'enocean-async'"; # added 2026-03-31
|
||||
eris = throw "eris has been removed due to a hostile upstream moving tags and breaking src FODs"; # Added 2025-09-01
|
||||
et_xmlfile = throw "'et_xmlfile' has been renamed to/replaced by 'et-xmlfile'"; # Converted to throw 2025-10-29
|
||||
|
||||
@@ -4994,6 +4994,8 @@ self: super: with self; {
|
||||
|
||||
embrace = callPackage ../development/python-modules/embrace { };
|
||||
|
||||
embreex = callPackage ../development/python-modules/embreex { };
|
||||
|
||||
emcee = callPackage ../development/python-modules/emcee { };
|
||||
|
||||
emoji = callPackage ../development/python-modules/emoji { };
|
||||
|
||||
Reference in New Issue
Block a user