Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-06-09 18:06:40 +00:00
committed by GitHub
95 changed files with 4054 additions and 873 deletions
+1 -1
View File
@@ -30,7 +30,7 @@ For new packages please briefly describe the package or provide a link to its ho
- [NixOS 25.11 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2511.section.md) (or backporting [24.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) and [25.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) NixOS Release notes)
- [ ] (Module updates) Added a release notes entry if the change is significant
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md), [pkgs/README.md](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md), [maintainers/README.md](https://github.com/NixOS/nixpkgs/blob/master/maintainers/README.md) and other contributing documentation in corresponding paths.
<!--
To help with the large amounts of pull requests, we would appreciate your
+4
View File
@@ -9,6 +9,10 @@ on:
pull_request_target:
types: [closed, labeled]
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
issues: write
+2
View File
@@ -26,6 +26,8 @@
- New hardening flags, `strictflexarrays1` and `strictflexarrays3` were made available, corresponding to the gcc/clang options `-fstrict-flex-arrays=1` and `-fstrict-flex-arrays=3` respectively.
- `vmalert` now supports multiple instances with the option `services.vmalert.instances."".enable`
## Nixpkgs Library {#sec-nixpkgs-release-25.11-lib}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
+7
View File
@@ -12543,6 +12543,13 @@
githubId = 39434424;
name = "Felix Springer";
};
junestepp = {
email = "git@junestepp.me";
github = "junestepp";
githubId = 26205306;
name = "June Stepp";
keys = [ { fingerprint = "2561 0243 2233 CFE6 E13E 3C33 348C 6EB3 39AE C582"; } ];
};
junjihashimoto = {
email = "junji.hashimoto@gmail.com";
github = "junjihashimoto";
+1
View File
@@ -915,6 +915,7 @@ with lib.maintainers;
eljamm
ethancedwards8
fricklerhandwerk
prince213
wegank
];
scope = "Maintain NGI-supported software.";
@@ -105,7 +105,7 @@ In addition to numerous new and updated packages, this release has the following
- [ivpn](https://www.ivpn.net/), a secure, private VPN with fast WireGuard connections. Available as [services.ivpn](#opt-services.ivpn.enable).
- [vmalert](https://victoriametrics.com/), an alerting engine for VictoriaMetrics. Available as [services.vmalert](#opt-services.vmalert.enable).
- [vmalert](https://victoriametrics.com/), an alerting engine for VictoriaMetrics. Available as [services.vmalert.instances](#opt-services.vmalert.instances._name_.enable).
- [jellyseerr](https://github.com/Fallenbagel/jellyseerr), a web-based requests manager for Jellyfin, forked from Overseerr. Available as [services.jellyseerr](#opt-services.jellyseerr.enable).
+10 -1
View File
@@ -69,10 +69,19 @@ in
environment.systemPackages = [ cfg.package ];
environment.etc."man_db.conf".text =
let
# We unfortunately cant use the customized `cfg.package` when
# crosscompiling. Instead we detect that situation and work
# around it by using the vanilla one, like the OpenSSH module.
buildPackage =
if pkgs.stdenv.buildPlatform.canExecute pkgs.stdenv.hostPlatform then
cfg.package
else
pkgs.buildPackages.man-db;
manualCache =
pkgs.runCommand "man-cache"
{
nativeBuildInputs = [ cfg.package ];
nativeBuildInputs = [ buildPackage ];
}
''
echo "MANDB_MAP ${cfg.manualPages}/share/man $out" > man.conf
@@ -359,8 +359,7 @@ in
systemd.services.pipewire.bindsTo = [ "dbus.service" ];
systemd.user.services.pipewire.bindsTo = [ "dbus.service" ];
# Enable either system or user units. Note that for pipewire-pulse there
# are only user units, which work in both cases.
# Enable either system or user units.
systemd.sockets.pipewire.enable = cfg.systemWide;
systemd.services.pipewire.enable = cfg.systemWide;
systemd.user.sockets.pipewire.enable = !cfg.systemWide;
+154 -107
View File
@@ -10,9 +10,9 @@ let
format = pkgs.formats.yaml { };
confOpts = concatStringsSep " \\\n" (
mapAttrsToList mkLine (filterAttrs (_: v: v != false) cfg.settings)
);
mkConfOpts =
settings:
concatStringsSep " \\\n" (mapAttrsToList mkLine (filterAttrs (_: v: v != false) settings));
confType =
with types;
let
@@ -33,124 +33,171 @@ let
concatMapStringsSep " " (v: "-${key}=${escapeShellArg (toString v)}") value
else
"-${key}=${escapeShellArg (toString value)}";
vmalertName = name: "vmalert" + lib.optionalString (name != "") ("-" + name);
enabledInstances = lib.filterAttrs (name: conf: conf.enable) config.services.vmalert.instances;
in
{
imports = [
(lib.mkRenamedOptionModule
[ "services" "vmalert" "enable" ]
[ "services" "vmalert" "instances" "" "enable" ]
)
(lib.mkRenamedOptionModule
[ "services" "vmalert" "rules" ]
[ "services" "vmalert" "instances" "" "rules" ]
)
(lib.mkRenamedOptionModule
[ "services" "vmalert" "settings" ]
[ "services" "vmalert" "instances" "" "settings" ]
)
];
# interface
options.services.vmalert = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Wether to enable VictoriaMetrics's `vmalert`.
options.services.vmalert.package = mkPackageOption pkgs "victoriametrics" { };
`vmalert` evaluates alerting and recording rules against a data source, sends notifications via Alertmanager.
'';
};
options.services.vmalert.instances = mkOption {
default = { };
package = mkPackageOption pkgs "victoriametrics" { };
description = ''
Define multiple instances of vmalert.
'';
settings = mkOption {
type = types.submodule {
freeformType = confType;
options = {
type = types.attrsOf (
types.submodule (
{ name, config, ... }:
{
options = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Wether to enable VictoriaMetrics's `vmalert`.
"datasource.url" = mkOption {
type = types.nonEmptyStr;
example = "http://localhost:8428";
description = ''
Datasource compatible with Prometheus HTTP API.
'';
`vmalert` evaluates alerting and recording rules against a data source, sends notifications via Alertmanager.
'';
};
settings = mkOption {
type = types.submodule {
freeformType = confType;
options = {
"datasource.url" = mkOption {
type = types.nonEmptyStr;
example = "http://localhost:8428";
description = ''
Datasource compatible with Prometheus HTTP API.
'';
};
"notifier.url" = mkOption {
type = with types; listOf nonEmptyStr;
default = [ ];
example = [ "http://127.0.0.1:9093" ];
description = ''
Prometheus Alertmanager URL. List all Alertmanager URLs if it runs in the cluster mode to ensure high availability.
'';
};
"rule" = mkOption {
type = with types; listOf path;
description = ''
Path to the files with alerting and/or recording rules.
::: {.note}
Consider using the {option}`services.vmalert.instances.<name>.rules` option as a convenient alternative for declaring rules
directly in the `nix` language.
:::
'';
};
};
};
default = { };
example = {
"datasource.url" = "http://localhost:8428";
"datasource.disableKeepAlive" = true;
"datasource.showURL" = false;
"rule" = [
"http://<some-server-addr>/path/to/rules"
"dir/*.yaml"
];
};
description = ''
`vmalert` configuration, passed via command line flags. Refer to
<https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/app/vmalert/README.md#configuration>
for details on supported values.
'';
};
rules = mkOption {
type = format.type;
default = { };
example = {
group = [
{
name = "TestGroup";
rules = [
{
alert = "ExampleAlertAlwaysFiring";
expr = ''
sum by(job)
(up == 1)
'';
}
];
}
];
};
description = ''
A list of the given alerting or recording rules against configured `"datasource.url"` compatible with
Prometheus HTTP API for `vmalert` to execute. Refer to
<https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/app/vmalert/README.md#rules>
for details on supported values.
'';
};
};
"notifier.url" = mkOption {
type = with types; listOf nonEmptyStr;
default = [ ];
example = [ "http://127.0.0.1:9093" ];
description = ''
Prometheus Alertmanager URL. List all Alertmanager URLs if it runs in the cluster mode to ensure high availability.
'';
};
"rule" = mkOption {
type = with types; listOf path;
description = ''
Path to the files with alerting and/or recording rules.
::: {.note}
Consider using the {option}`services.vmalert.rules` option as a convenient alternative for declaring rules
directly in the `nix` language.
:::
'';
};
};
};
default = { };
example = {
"datasource.url" = "http://localhost:8428";
"datasource.disableKeepAlive" = true;
"datasource.showURL" = false;
"rule" = [
"http://<some-server-addr>/path/to/rules"
"dir/*.yaml"
];
};
description = ''
`vmalert` configuration, passed via command line flags. Refer to
<https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/app/vmalert/README.md#configuration>
for details on supported values.
'';
};
rules = mkOption {
type = format.type;
default = { };
example = {
group = [
{
name = "TestGroup";
rules = [
{
alert = "ExampleAlertAlwaysFiring";
expr = ''
sum by(job)
(up == 1)
'';
}
config = {
settings.rule = [
"/etc/${vmalertName name}/rules.yml"
];
}
];
};
description = ''
A list of the given alerting or recording rules against configured `"datasource.url"` compatible with
Prometheus HTTP API for `vmalert` to execute. Refer to
<https://github.com/VictoriaMetrics/VictoriaMetrics/blob/master/app/vmalert/README.md#rules>
for details on supported values.
'';
};
};
}
)
);
};
# implementation
config = mkIf cfg.enable {
config = mkIf (enabledInstances != { }) {
environment.etc = lib.mapAttrs' (
name:
{ rules, ... }:
lib.nameValuePair "${vmalertName name}/rules.yml" {
source = format.generate "rules.yml" rules;
}
) enabledInstances;
environment.etc."vmalert/rules.yml".source = format.generate "rules.yml" cfg.rules;
systemd.services = lib.mapAttrs' (
name:
{ settings, ... }:
let
name' = vmalertName name;
in
lib.nameValuePair name' {
description = "vmalert service";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
reloadTriggers = [ config.environment.etc."${name'}/rules.yml".source ];
services.vmalert.settings.rule = [
"/etc/vmalert/rules.yml"
];
systemd.services.vmalert = {
description = "vmalert service";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
reloadTriggers = [ config.environment.etc."vmalert/rules.yml".source ];
serviceConfig = {
DynamicUser = true;
Restart = "on-failure";
ExecStart = "${cfg.package}/bin/vmalert ${confOpts}";
ExecReload = ''${pkgs.coreutils}/bin/kill -SIGHUP "$MAINPID"'';
};
};
serviceConfig = {
DynamicUser = true;
Restart = "on-failure";
ExecStart = "${cfg.package}/bin/vmalert ${mkConfOpts settings}";
ExecReload = ''${pkgs.coreutils}/bin/kill -SIGHUP "$MAINPID"'';
};
}
) enabledInstances;
};
}
+1 -1
View File
@@ -55,7 +55,7 @@ import ../make-test-python.nix (
};
};
services.vmalert = {
services.vmalert.instances."" = {
enable = true;
settings = {
"datasource.url" = "http://localhost:8428"; # victoriametrics' api
@@ -15133,6 +15133,19 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
ts-autotag-nvim = buildVimPlugin {
pname = "ts-autotag.nvim";
version = "2025-01-15";
src = fetchFromGitHub {
owner = "tronikelis";
repo = "ts-autotag.nvim";
rev = "0f1dc38fddd99b468ef58938d7cd99ce1d6bcb0e";
sha256 = "1m0gng9v5dn6mm026nxw0n24bvysr156xhwvf83pv9xqp28xfwar";
};
meta.homepage = "https://github.com/tronikelis/ts-autotag.nvim/";
meta.hydraPlatforms = [ ];
};
ts-comments-nvim = buildVimPlugin {
pname = "ts-comments.nvim";
version = "2025-02-27";
@@ -1161,6 +1161,7 @@ https://github.com/simonmclean/triptych.nvim/,HEAD,
https://github.com/folke/trouble.nvim/,,
https://github.com/Pocco81/true-zen.nvim/,,
https://github.com/tesaguri/trust.vim/,HEAD,
https://github.com/tronikelis/ts-autotag.nvim/,HEAD,
https://github.com/folke/ts-comments.nvim/,HEAD,
https://github.com/dmmulroy/tsc.nvim/,HEAD,
https://github.com/jgdavey/tslime.vim/,,
@@ -0,0 +1,44 @@
{
lib,
buildLua,
fetchFromGitHub,
unstableGitUpdater,
}:
buildLua {
pname = "easycrop";
version = "0-unstable-2018-01-24";
src = fetchFromGitHub {
owner = "aidanholm";
repo = "mpv-easycrop";
rev = "b8a67bb9039e19dec54d92ea57076c0c98e981aa";
hash = "sha256-VRQP8j/Z/OvVqrEpvWcLmJFotxbTRynHoqvfIQIQmqY=";
};
scriptPath = "easycrop.lua";
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Manually crop videos during playback in mpv";
longDescription = ''
A simple mpv script for manually cropping videos with ease.
- Works during video playback
- No need to re-encode or modify video files
Press "c" to begin cropping. Click at one corner of the desired
cropping rectangle, and click a second time at the opposite
corner; the video will be cropped immediately. Pressing "c" again
will undo the current crop.
If you wish to use a key other than "c" to crop, the keybind
`easy_crop` can be changed.
'';
homepage = "https://github.com/aidanholm/mpv-easycrop";
license = lib.licenses.gpl3;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ RossSmyth ];
};
}
+60
View File
@@ -0,0 +1,60 @@
{
lib,
fetchFromGitHub,
crystal_1_15,
versionCheckHook,
}:
let
# Use the same Crystal minor version as specified in upstream
crystal = crystal_1_15;
in
crystal.buildCrystalPackage rec {
pname = "ameba-ls";
version = "0.1.0";
src = fetchFromGitHub {
owner = "crystal-lang-tools";
repo = "ameba-ls";
tag = "v${version}";
hash = "sha256-TEHjR+34wrq24XJNLhWZCEzcDEMDlmUHv0iiF4Z6JlI=";
};
shardsFile = ./shards.nix;
crystalBinaries.ameba-ls.src = "src/ameba-ls.cr";
buildTargets = [
"ameba-ls"
];
# There are no actual tests
doCheck = false;
installPhase = ''
runHook preInstall
install -Dm555 bin/ameba-ls -t "$out/bin/"
runHook postInstall
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgram = "${placeholder "out"}/bin/ameba-ls";
versionCheckProgramArg = "--version";
meta = {
description = "Crystal language server powered by Ameba linter";
homepage = "https://github.com/crystal-lang-tools/ameba-ls";
changelog = "https://github.com/crystal-lang-tools/ameba-ls/blob/v${version}/CHANGELOG.md";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
kachick
];
mainProgram = "ameba-ls";
};
}
+27
View File
@@ -0,0 +1,27 @@
{
ameba = {
url = "https://github.com/crystal-ameba/ameba.git";
rev = "a21dea0b44642f4fc87429283f8b0dd9f1e47a9f";
sha256 = "1kzr4ynd4r5w87y2czzrlir1dvqmv43ijm07804kgsy1g20k00fs";
};
larimar = {
url = "https://github.com/nobodywasishere/larimar.git";
rev = "97d37e665f7189a7ec35f54fb65003a8438d6cf0";
sha256 = "0s5hnfdybwbfk8sbjzrly2p6xppc5niww14h9cx00xkm8m1rlyj2";
};
lsprotocol = {
url = "https://github.com/nobodywasishere/lsprotocol-crystal.git";
rev = "28986890c7657af4aefea8355ca3f3c7fc2bc9dd";
sha256 = "0pccgq5g87mnvrhpgw3j22p3wgch8kp1svxcrbz2dha7zvgn65kj";
};
rwlock = {
url = "https://github.com/spider-gazelle/readers-writer.git";
rev = "v1.0.7";
sha256 = "1cs4ang50cza7sb5zh94rl1ppwcn9z1l8jjcsshhy4w72wkbqyny";
};
tree_sitter = {
url = "https://github.com/crystal-lang-tools/crystal-tree-sitter.git";
rev = "1d46ca231a641b30b8e7fbbae7eba050f7717a9f";
sha256 = "16g0ii3b3pmpnwmx2iz9dr1865pgfka7a724dfj62csjavqm5i1k";
};
}
+58
View File
@@ -0,0 +1,58 @@
{
lib,
rustPlatform,
fetchFromGitHub,
llvmPackages,
_experimental-update-script-combinators,
unstableGitUpdater,
nix-update-script,
}:
rustPlatform.buildRustPackage {
pname = "artichoke";
version = "0-unstable-2025-06-01";
src = fetchFromGitHub {
owner = "artichoke";
repo = "artichoke";
rev = "7c35392d8c7622cd8ab8eccaee73d57633b2b901";
hash = "sha256-7YPExT+5F+5MMk/yLfG4Rk8ZDwsYfVKlkvIroFB22No=";
};
cargoHash = "sha256-cN70yYYKhktUoswow63ZXHvfFbXDo1rUrTWm22LluCM=";
nativeBuildInputs = [
rustPlatform.bindgenHook
];
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
stdout="$("$out/bin/artichoke" -e 'puts "Hello World!"')"
[[ "$stdout" == 'Hello World!' ]]
runHook postInstallCheck
'';
passthru = {
updateScript = _experimental-update-script-combinators.sequence [
(unstableGitUpdater { })
(nix-update-script {
# Updating `cargoHash`
extraArgs = [ "--version=skip" ];
})
];
};
meta = {
description = "Ruby implementation written in Rust and Ruby";
homepage = "https://www.artichokeruby.org/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
kachick
];
mainProgram = "artichoke";
platforms = with lib.platforms; unix ++ windows;
};
}
+41
View File
@@ -0,0 +1,41 @@
{
lib,
stdenvNoCC,
fetchzip,
nix-update-script,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "biz-ud-gothic";
version = "1.051";
src = fetchzip {
# Sticking with this assets file due to ongoing discussions.
# We may switch to a different asset once the issue is resolved or clarifications are provided.
# ref: https://github.com/googlefonts/morisawa-biz-ud-gothic/issues/47
url = "https://github.com/googlefonts/morisawa-biz-ud-gothic/releases/download/v${finalAttrs.version}/morisawa-biz-ud-gothic-fonts.zip";
hash = "sha256-7PlIrQX1fnFHXm7mjfoOCVp3GSnLT2GlVZdSoZbh/s4=";
};
installPhase = ''
runHook preInstall
install -Dm444 fonts/ttf/*.ttf -t "$out/share/fonts/truetype/"
runHook postInstall
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Universal Design Japanese font";
homepage = "https://github.com/googlefonts/morisawa-biz-ud-gothic";
license = lib.licenses.ofl;
maintainers = with lib.maintainers; [
kachick
];
platforms = lib.platforms.all;
};
})
+56
View File
@@ -0,0 +1,56 @@
{
boring,
buildGoModule,
fetchFromGitHub,
installShellFiles,
lib,
stdenv,
testers,
}:
buildGoModule (finalAttrs: {
pname = "boring";
version = "0.11.4";
src = fetchFromGitHub {
owner = "alebeck";
repo = "boring";
tag = finalAttrs.version;
hash = "sha256-N0GVXtw6Gp6iHKBD2Lk6FX8XaUnkPgZduPaczYdApAs=";
};
nativeBuildInputs = [
installShellFiles
];
vendorHash = "sha256-j8A0F+o3EnzJdge+T/gHAwRGwzC86oD6ddZejUs/C7o=";
ldflags = [
"-s"
"-w"
"-X main.version=${finalAttrs.version}"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd boring \
--bash <($out/bin/boring --shell bash) \
--fish <($out/bin/boring --shell fish) \
--zsh <($out/bin/boring --shell zsh)
'';
passthru.tests.version = testers.testVersion {
package = boring;
command = "boring version";
version = "boring ${finalAttrs.version}";
};
meta = {
description = "SSH tunnel manager";
homepage = "https://github.com/alebeck/boring";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
jacobkoziej
];
mainProgram = "boring";
};
})
+3 -1
View File
@@ -205,7 +205,8 @@ stdenv.mkDerivation {
# Fix path to bash in $BINARYWRAPPER
substituteInPlace $BINARYWRAPPER \
--replace /bin/bash ${stdenv.shell}
--replace /bin/bash ${stdenv.shell} \
--replace-fail 'CHROME_WRAPPER' 'WRAPPER'
ln -sf $BINARYWRAPPER $out/bin/brave
@@ -263,6 +264,7 @@ stdenv.mkDerivation {
coreutils
]
}
--set CHROME_WRAPPER ${pname}
${optionalString (enableFeatures != [ ]) ''
--add-flags "--enable-features=${strings.concatStringsSep "," enableFeatures}\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+,WaylandWindowDecorations --enable-wayland-ime=true}}"
''}
+69 -69
View File
@@ -14,28 +14,28 @@
"jar": "sha256-CV/R3HeIjAc/C+OaAYFW7lJnInmLCd6eKF7yE14W6sQ=",
"pom": "sha256-NQkZQkMk4nUKPdwvobzmqQrIziklaYpgqbTR1uSSL/4="
},
"com/diffplug/durian#durian-swt.os/4.2.2": {
"jar": "sha256-a1Mca0vlgaizLq2GHdwVwsk7IMZl+00z4DgUg8JERfQ=",
"module": "sha256-rVlQLGknZu48M0vkliigDctNka4aSPJjLitxUStDXPk=",
"pom": "sha256-GzxJFP1eLM4pZq1wdWY5ZBFFwdNCB3CTV4Py3yY2kIU="
"com/diffplug/durian#durian-swt.os/4.3.0": {
"jar": "sha256-geK2Oafkvm3JtyRXE88G9cq1HynbLha5tXZFyW/eKIQ=",
"module": "sha256-IFNqlfL+sr9DBRKMaq7Lb9idxFeYqchfJgK4qAnXUNs=",
"pom": "sha256-Q1z/VXiZht7arXF/aPuo1UgklHhWLc2EsirU1lZvRAs="
},
"com/diffplug/spotless#com.diffplug.spotless.gradle.plugin/6.25.0": {
"pom": "sha256-9FyCsS+qzYWs1HTrppkyL6XeqIQIskfQ5L3pQSkIIjo="
"com/diffplug/spotless#com.diffplug.spotless.gradle.plugin/7.0.2": {
"pom": "sha256-7R3td6KWpv4hpQJ5ySbAe+FK98CMJDfTaFxw/Pa7oC0="
},
"com/diffplug/spotless#spotless-lib-extra/2.45.0": {
"jar": "sha256-YCy7zTgo7pz7LjCn+bMDNcaScTB3FBTUzdKU0h/ly2c=",
"module": "sha256-9pnkNfTlzgPbYJpHaO6wNj1uB8ZfvPrx/GKcTnbuf7A=",
"pom": "sha256-5x2LkRDdSNLn9KVLi/uozlWpbmteu9T0OpJGZJz1b7A="
"com/diffplug/spotless#spotless-lib-extra/3.0.2": {
"jar": "sha256-sOd3RtYz1EXnhImsPQitLqGzU3xNBk5KvkbMQtYjA+s=",
"module": "sha256-vSVeQkQbWRehU8U9z5fP08IEevN2zF3Yu1Z/aEAWtFk=",
"pom": "sha256-IVesGayscKzQRQH8WbvJZNsZD1tx5O1e/s6o5c9o7Os="
},
"com/diffplug/spotless#spotless-lib/2.45.0": {
"jar": "sha256-sllply4dmAKAyirlKRl+2bMWCq5ItQbPGTXwG9Exhmc=",
"module": "sha256-+x+8+TUAczrHWcp99E8P9mVTEze0LaAS4on/CINNiQ8=",
"pom": "sha256-WKd8IsQLIc8m29tCEwFu9HrM9bBwchfHkyqQ9D+PMNw="
"com/diffplug/spotless#spotless-lib/3.0.2": {
"jar": "sha256-P5p/38WwOsIIlINBcJEMFcTyuE7UzjZ3iYowetWJg3w=",
"module": "sha256-E1WLrsCR6gDxYmXNNSOBePT+ejv61zXel214XUF/ss0=",
"pom": "sha256-jxtFo4m6Jeel8DvZ8KS9BKp+dHXgku6C1VUJYrLPdV8="
},
"com/diffplug/spotless#spotless-plugin-gradle/6.25.0": {
"jar": "sha256-9euQikxdpGKZ51Q/qtoEAtLEt31Yx7Qy1Lblk0mygKM=",
"module": "sha256-RoHRe/PJIF2DeOynBcAAywzJjcx40DATy2iJjGvSx0Q=",
"pom": "sha256-q1ZuPYS2w/rHqPySXy279TzZdZywOvPAfQ3EN9OXqNo="
"com/diffplug/spotless#spotless-plugin-gradle/7.0.2": {
"jar": "sha256-WaNMT4SkjUyNkp4viZBjaeZUduwEmaQ96Hw+QSeXfNU=",
"module": "sha256-rxC8mydsNqlNcRh+kVhwJ1yyRVZTntzqGYpYL30Tsws=",
"pom": "sha256-JyVoPfbvTNSIr+sgANqJIpQcqQ513D49uFIupxWKaMQ="
},
"com/googlecode/concurrent-trees#concurrent-trees/2.6.1": {
"jar": "sha256-BONySYTipcv1VgbPo3KlvT08XSohUzpwBOPN5Tl2H6U=",
@@ -59,31 +59,31 @@
"module": "sha256-akesUDZOZZhFlAH7hvm2z832N7mzowRbHMM8v0xAghg=",
"pom": "sha256-rrO3CiTBA+0MVFQfNfXFEdJ85gyuN2pZbX1lNpf4zJU="
},
"commons-codec#commons-codec/1.16.0": {
"jar": "sha256-VllfsgsLhbyR0NUD2tULt/G5r8Du1d/6bLslkpAASE0=",
"pom": "sha256-bLWVeBnfOTlW/TEaOgw/XuwevEm6Wy0J8/ROYWf6PnQ="
"commons-codec#commons-codec/1.17.0": {
"jar": "sha256-9wDegKwnDQNE/ep0aCAdi5yAXlxkgzHDYZ8u4GfM/Fk=",
"pom": "sha256-wBxM2l5Aj0HtHYPkoKFwz1OAG2M4q6SfD5BHhrwSFPw="
},
"dev/equo/ide#solstice/1.7.5": {
"jar": "sha256-BuFLxDrMMx2ra16iAfxnNk7RI/mCyF+lEx8IF+1lrk8=",
"module": "sha256-eYp7cGdyE27iijLt2GOx6fgWE6NJhAXXS+ilyb6/9U8=",
"pom": "sha256-20U7urXn2opDE5sNzTuuZykzIfKcTZH1p5XZ/2xS3d8="
"dev/equo/ide#solstice/1.8.1": {
"jar": "sha256-bluizOgTvh1xzNwuzz5JJxsU5pG/u7GhFM86MOdzsQ0=",
"module": "sha256-pnYDnqavCPJXtG4Hwr8VcaRqTUtbnMuGw/yY0H+v6hs=",
"pom": "sha256-arSo7K4qu9NrkZ0Lm5+yTBdxSPE+U2TJegxu4Ro/xCY="
},
"org/apache#apache/29": {
"pom": "sha256-PkkDcXSCC70N9jQgqXclWIY5iVTCoGKR+mH3J6w1s3c="
"org/apache#apache/31": {
"pom": "sha256-VV0MnqppwEKv+SSSe5OB6PgXQTbTVe6tRFIkRS5ikcw="
},
"org/apache/commons#commons-parent/58": {
"pom": "sha256-LUsS4YiZBjq9fHUni1+pejcp2Ah4zuy2pA2UbpwNVZA="
"org/apache/commons#commons-parent/69": {
"pom": "sha256-1Q2pw5vcqCPWGNG0oDtz8ZZJf8uGFv0NpyfIYjWSqbs="
},
"org/eclipse/jgit#org.eclipse.jgit-parent/6.7.0.202309050840-r": {
"pom": "sha256-u56FQW2Y0HMfx2f41w6EaAQWAdZnKuItsqx5n3qjkR8="
"org/eclipse/jgit#org.eclipse.jgit-parent/6.10.0.202406032230-r": {
"pom": "sha256-8tNTmgp5Iv15RwgsGQHSCQ2uB0mGsi2r2XO0OYzR6i4="
},
"org/eclipse/jgit#org.eclipse.jgit/6.7.0.202309050840-r": {
"jar": "sha256-tWRHfQkiQaqrUMhKxd0aw3XAGCBE1+VlnTpgqQ4ugBo=",
"pom": "sha256-BNB83b8ZjfpuRIuan7lA94HAEq2T2eqCBv4KTTplwZI="
"org/eclipse/jgit#org.eclipse.jgit/6.10.0.202406032230-r": {
"jar": "sha256-Q/kvOttoGl8wBrl56NNBwSqM/YAp8ofEK88KgDd1Za4=",
"pom": "sha256-BVlUQr62ogYQi2c6qcZpLIPkHfGDF33GcROxzD9Sgd0="
},
"org/eclipse/platform#org.eclipse.osgi/3.18.300": {
"jar": "sha256-urlD5Y7dFzCSOGctunpFrsni2svd24GKjPF3I+oT+iI=",
"pom": "sha256-4nl2N1mZxUJ/y8//PzvCD77a+tiqRRArN59cL5fI/rQ="
"org/eclipse/platform#org.eclipse.osgi/3.18.500": {
"jar": "sha256-gLJ11YN5cjspHqZQJJzDgJyPELNPeKr5iBMs1tQ0q04=",
"pom": "sha256-4o9b4Azk7Sx+SAnsrQW5UwfzWhflhWAHhri97juk2Wg="
},
"org/jetbrains#annotations/13.0": {
"jar": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=",
@@ -114,9 +114,9 @@
"jar": "sha256-VemJxRK4CQd5n4VDCfO8d4LFs9E5MkQtA3nVxHJxFQQ=",
"pom": "sha256-fin79z/fceBnnT3ufmgP1XNGT6AWRKT1irgZ0sCI09I="
},
"org/junit#junit-bom/5.9.3": {
"module": "sha256-tAH9JZAeWCpSSqU0PEs54ovFbiSWHBBpvytLv87ka5M=",
"pom": "sha256-TQMpzZ5y8kIOXKFXJMv+b/puX9KIg2FRYnEZD9w0Ltc="
"org/junit#junit-bom/5.10.2": {
"module": "sha256-3iOxFLPkEZqP5usXvtWjhSgWaYus5nBxV51tkn67CAo=",
"pom": "sha256-Fp3ZBKSw9lIM/+ZYzGIpK/6fPBSpifqSEgckzeQ6mWg="
},
"org/slf4j#slf4j-api/1.7.36": {
"jar": "sha256-0+9XXj5JeWeNwBvx3M5RAhSTtNEft/G+itmCh3wWocA=",
@@ -137,31 +137,31 @@
}
},
"https://repo.maven.apache.org/maven2": {
"com/google/code/gson#gson-parent/2.11.0": {
"pom": "sha256-issfO3Km8CaRasBzW62aqwKT1Sftt7NlMn3vE6k2e3o="
"com/google/code/gson#gson-parent/2.12.1": {
"pom": "sha256-yeewt+Mb574iaEl5wGgAHGUssRPE5u2JTjm2Q97gf8E="
},
"com/google/code/gson#gson/2.11.0": {
"jar": "sha256-V5KNblpu3rKr03cKj5W6RNzkXzsjt6ncKzCcWBVSp4s=",
"pom": "sha256-wOVHvqmYiI5uJcWIapDnYicryItSdTQ90sBd7Wyi42A="
"com/google/code/gson#gson/2.12.1": {
"jar": "sha256-6+4T1ft0d81/HMAQ4MNW34yoBwlxUkjal/eeNcy0++w=",
"pom": "sha256-C1c17IX0UoLx4sdpd5gAQnsVCoFj9AUJOpKAtxyrGXg="
},
"com/google/errorprone#error_prone_annotations/2.27.0": {
"jar": "sha256-JMkjNyxY410LnxagKJKbua7cd1IYZ8J08r0HNd9bofU=",
"pom": "sha256-TKWjXWEjXhZUmsNG0eNFUc3w/ifoSqV+A8vrJV6k5do="
"com/google/errorprone#error_prone_annotations/2.36.0": {
"jar": "sha256-d0QOJwsLyaJJkDxaB2w2pyLEiGyk9CZ18pA6HFPtYaU=",
"pom": "sha256-15z9N8hfdta3VMdQHuHchEe3smQsI4LXeCUhZr0zHpw="
},
"com/google/errorprone#error_prone_parent/2.27.0": {
"pom": "sha256-+oGCnQSVWd9pJ/nJpv1rvQn4tQ5tRzaucsgwC2w9dlQ="
"com/google/errorprone#error_prone_parent/2.36.0": {
"pom": "sha256-Okz8imvtYetI6Wl5b8MeoNJwtj5nBZmUamGIOttwlNw="
},
"commons-io#commons-io/2.18.0": {
"jar": "sha256-88oPjWPEDiOlbVQQHGDV7e4Ta0LYS/uFvHljCTEJz4s=",
"pom": "sha256-Y9lpQetE35yQ0q2yrYw/aZwuBl5wcEXF2vcT/KUrz8o="
},
"commons-logging#commons-logging/1.3.3": {
"jar": "sha256-WCj5bAnYhvmxoJk8eASyfPT87IU0UXFk9RN6yLZ+qbk=",
"pom": "sha256-El1hQurD93REC6cCwF8o+eCYxS0QcSrhFJast3EGs7o="
"commons-logging#commons-logging/1.3.4": {
"jar": "sha256-vC3+MvHvBlCeagZRRMGt97Qg6r8RqH8wvRJ/j6ozIBY=",
"pom": "sha256-1L2jSJKqzL9PrTP8MjqKqQfvnXmYRlnaJJRMCoa/CGU="
},
"net/java/dev/jna#jna/5.15.0": {
"jar": "sha256-pWQVjSirUSf8apWAKO1UJ5/gmZZixGQltqOwmipSCU0=",
"pom": "sha256-J2YC/zZ6TDkVXa7MHoy1T0eJ5dgN+Qo6i2YD8d61ngU="
"net/java/dev/jna#jna/5.17.0": {
"jar": "sha256-s6lAjnxR4I7w47/MCPRD9uwPYZG6jNfBjVPSsi5b28A=",
"pom": "sha256-UBoP8F2EpK0Q9t4lvpT0k5i3CjG+jzoO2fTGtE++/uQ="
},
"org/apache#apache/32": {
"pom": "sha256-z9hywOwn9Trmj0PbwP7N7YrddzB5pTr705DkB7Qs5y8="
@@ -169,26 +169,26 @@
"org/apache#apache/33": {
"pom": "sha256-14vYUkxfg4ChkKZSVoZimpXf5RLfIRETg6bYwJI6RBU="
},
"org/apache/commons#commons-parent/71": {
"pom": "sha256-lbe+cPMWrkyiL2+90I3iGC6HzYdKZQ3nw9M4anR6gqM="
"org/apache/commons#commons-parent/72": {
"pom": "sha256-Q0Xev8dnsa6saKvdcvxn0YtSHUs5A3KhG2P/DFhrIyA="
},
"org/apache/commons#commons-parent/78": {
"pom": "sha256-Ai0gLmVe3QTyoQ7L5FPZKXeSTTg4Ckyow1nxgXqAMg4="
},
"org/apache/pdfbox#fontbox/3.0.3": {
"jar": "sha256-ZWkMPzmwShTRLBf0mYwVGGzod9Pi7CIscIV348wCgDA=",
"pom": "sha256-sik+UDqncEMGEVD4hGg9f2FMz1Fjvi0PBSyinzx2d+I="
"org/apache/pdfbox#fontbox/3.0.4": {
"jar": "sha256-Le7GIy9dbTsxJ2WS0xaArpcir1fSTLD3bacOK6DpnhI=",
"pom": "sha256-8MzDMOmyDYlXigqHArR6OZvNYojCOG10/6uPjjAoROg="
},
"org/apache/pdfbox#pdfbox-io/3.0.3": {
"jar": "sha256-Ej6jGHtJfFTmYdUMPIZ0eb93Zo/0UOUHEMZY8rtGh7o=",
"pom": "sha256-EXAbuMWnNaSzFA9zroM6KBzqCeO8P583kbmpenRekNQ="
"org/apache/pdfbox#pdfbox-io/3.0.4": {
"jar": "sha256-ep1HRvLhOh4i9O/kf7r5mXY8rqQXSFNa+ToB7txQ9VQ=",
"pom": "sha256-YLURdX737TBIv4LH2ClvcdC8RwAgEYQzqzs+OEC/jqU="
},
"org/apache/pdfbox#pdfbox-parent/3.0.3": {
"pom": "sha256-yGXhzv8Jq1Kwh+cmDE8V025bW4vk/+IERvqkCiygvcw="
"org/apache/pdfbox#pdfbox-parent/3.0.4": {
"pom": "sha256-w5j++zUez/mTEYCNftU0bnHzVrETS9c6JQTLgXB9tFE="
},
"org/apache/pdfbox#pdfbox/3.0.3": {
"jar": "sha256-W+ONLsgWkbBdU163IN5NxWbF0H5aBHMfoAZo0VOotKY=",
"pom": "sha256-vgiV9rLCDzEdYjXJam/SqsECsxkE0/TDnqUll3WwcAg="
"org/apache/pdfbox#pdfbox/3.0.4": {
"jar": "sha256-CaD/J9b4Sh3EAGDLCgHezyrU75HDa8kbmDbCVL6KrkU=",
"pom": "sha256-098DLfK90jT+NwMO+sNXa6Yj/Jf1ERNUxMUq13dfkOQ="
},
"org/junit#junit-bom/5.11.0-M2": {
"module": "sha256-hkd6vPSQ1soFmqmXPLEI0ipQb0nRpVabsyzGy/Q8LM4=",
@@ -21,13 +21,13 @@
let
pname = "cie-middleware-linux";
version = "1.5.6";
version = "1.5.9";
src = fetchFromGitHub {
owner = "M0rf30";
repo = "cie-middleware-linux";
rev = version;
sha256 = "sha256-2P/1hQTmeQ6qE7RgAeLOZTszcLcIpa2XX1S2ahXRHcc=";
hash = "sha256-2UMKxanF35oBNBtIqfU46QUYJwXiTU1xCrCMqzqetgI=";
};
gradle = gradle_8;
@@ -61,8 +61,6 @@ stdenv.mkDerivation {
libxml2
];
patches = [ ./use-system-podofo.patch ];
postPatch = ''
# substitute the cieid command with this $out/bin/cieid
substituteInPlace libs/pkcs11/src/CSP/AbilitaCIE.cpp \
@@ -114,6 +112,7 @@ stdenv.mkDerivation {
popd
# Install the Java application
ls cie-java/build/libs/CIEID-standalone.jar
install -Dm755 cie-java/build/libs/CIEID-standalone.jar \
"$out/share/cieid/cieid.jar"
@@ -123,11 +122,11 @@ stdenv.mkDerivation {
--add-flags "-Djna.library.path='$out/lib:${libraries}'" \
--add-flags '-Dawt.useSystemAAFontSettings=on' \
--add-flags "-cp $out/share/cieid/cieid.jar" \
--add-flags "it.ipzs.cieid.MainApplication"
--add-flags "app.m0rf30.cieid.MainApplication"
# Install other files
install -Dm644 data/cieid.desktop "$out/share/applications/cieid.desktop"
install -Dm755 data/logo.png "$out/share/pixmaps/cieid.png"
install -Dm644 data/app.m0rf30.cieid.desktop -t "$out/share/applications"
install -Dm755 data/app.m0rf30.cieid.svg -t "$out/share/pixmaps"
install -Dm644 LICENSE "$out/share/licenses/cieid/LICENSE"
'';
@@ -146,8 +145,6 @@ stdenv.mkDerivation {
'';
license = licenses.bsd3;
platforms = platforms.unix;
# Note: fails due to a lot of broken type conversions
badPlatforms = platforms.darwin;
maintainers = with maintainers; [ rnhmjoj ];
};
}
@@ -1,343 +0,0 @@
commit c9ac4243a6def08790bbf5552bb31894169596ca
Author: rnhmjoj <rnhmjoj@inventati.org>
Date: Wed Apr 3 12:54:58 2024 +0200
use system podofo
diff --git a/libs/meson.build b/libs/meson.build
index 3ee31c1..5022ba8 100644
--- a/libs/meson.build
+++ b/libs/meson.build
@@ -16,21 +16,15 @@ curl_dep = dependency('libcurl')
fontconfig_dep = dependency('fontconfig')
freetype_dep = dependency('freetype2')
png_dep = dependency('libpng')
-podofo_dep = cpp.find_library('libpodofo', dirs: libdir)
+podofo_dep = dependency('libpodofo')
libxml2_dep = dependency('libxml-2.0', required: false)
xml2_dep = dependency('xml2', required: false)
zlib_dep = dependency('zlib')
inc_so = include_directories('pkcs11/src/.', 'shared/src/')
-inc_a = include_directories(
- 'sign-sdk/include',
- 'sign-sdk/include/podofo',
- 'sign-sdk/include/podofo/include',
- 'sign-sdk/include/podofo/include/podofo',
- 'sign-sdk/src',
- 'shared/src/',
-)
+inc_a = include_directories('sign-sdk/include', 'sign-sdk/src', 'shared/src/')
+
cie_pkcs11_sources = [
'shared/src/Util/log.cpp',
'shared/src/Util/funccallinfo.cpp',
diff --git a/libs/sign-sdk/include/PdfSignatureGenerator.h b/libs/sign-sdk/include/PdfSignatureGenerator.h
index 93ab445..65d438f 100644
--- a/libs/sign-sdk/include/PdfSignatureGenerator.h
+++ b/libs/sign-sdk/include/PdfSignatureGenerator.h
@@ -10,9 +10,7 @@
#ifndef _PDFSIGNATUREGENERATOR_H_
#define _PDFSIGNATUREGENERATOR_H_
#include "Util/UUCByteArray.h"
-#include "podofo/doc/PdfSignOutputDevice.h"
-#include "podofo/doc/PdfSignatureField.h"
-#include "podofo/podofo.h"
+#include <podofo/podofo.h>
using namespace PoDoFo;
using namespace std;
@@ -60,7 +58,11 @@ class PdfSignatureGenerator {
const double getHeight(int pageIndex);
private:
- PdfMemDocument* m_pPdfDocument;
+ PdfDocument* m_pPdfDocument;
+
+ PdfMemDocument* m_pPdfMemDocument;
+
+ PdfWriter* m_pPdfWriter;
PdfSignatureField* m_pSignatureField;
diff --git a/libs/sign-sdk/src/PdfSignatureGenerator.cpp b/libs/sign-sdk/src/PdfSignatureGenerator.cpp
index 44ef54a..e8b8c8e 100644
--- a/libs/sign-sdk/src/PdfSignatureGenerator.cpp
+++ b/libs/sign-sdk/src/PdfSignatureGenerator.cpp
@@ -27,7 +27,7 @@ int GetNumberOfSignatures(PdfMemDocument* pPdfDocument);
USE_LOG;
PdfSignatureGenerator::PdfSignatureGenerator()
- : m_pPdfDocument(NULL),
+ : m_pPdfMemDocument(NULL),
m_pSignatureField(NULL),
m_pSignOutputDevice(NULL),
m_pFinalOutDevice(NULL),
@@ -37,7 +37,7 @@ PdfSignatureGenerator::PdfSignatureGenerator()
}
PdfSignatureGenerator::~PdfSignatureGenerator() {
- if (m_pPdfDocument) delete m_pPdfDocument;
+ if (m_pPdfMemDocument) delete m_pPdfMemDocument;
if (m_pSignatureField) delete m_pSignatureField;
@@ -51,21 +51,21 @@ PdfSignatureGenerator::~PdfSignatureGenerator() {
}
int PdfSignatureGenerator::Load(const char* pdf, int len) {
- if (m_pPdfDocument) delete m_pPdfDocument;
+ if (m_pPdfMemDocument) delete m_pPdfMemDocument;
try {
printf("PDF LENGTH");
printf("%i", len);
printf("STOP");
- m_pPdfDocument = new PdfMemDocument();
- m_pPdfDocument->Load(pdf, len);
- printf("OK m_pPdfDocument");
- int nSigns = PDFVerifier::GetNumberOfSignatures(m_pPdfDocument);
+ m_pPdfMemDocument = new PdfMemDocument();
+ m_pPdfMemDocument->Load(pdf);
+ printf("OK m_pPdfMemDocument");
+ int nSigns = PDFVerifier::GetNumberOfSignatures(m_pPdfMemDocument);
printf("OK nSigns: %d", nSigns);
if (nSigns > 0) {
- m_pPdfDocument->SetIncrementalUpdates(true);
+ m_pPdfWriter->PdfWriter::SetIncrementalUpdate(true);
}
m_actualLen = len;
@@ -82,14 +82,8 @@ void PdfSignatureGenerator::AddFont(const char* szFontName,
// printf(szFontName);
// printf(szFontPath);
- m_pPdfDocument->CreateFont(
- szFontName, false, false,
- PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
- PdfFontCache::eFontCreationFlags_AutoSelectBase14, true, szFontPath);
- m_pPdfDocument->CreateFont(
- szFontName, true, false,
- PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
- PdfFontCache::eFontCreationFlags_AutoSelectBase14, true, szFontPath);
+ m_pPdfDocument->PoDoFo::PdfDocument::CreateFont( szFontName, false, PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), PdfFontCache::eFontCreationFlags_AutoSelectBase14, true);
+ m_pPdfDocument->PoDoFo::PdfDocument::CreateFont( szFontName, true, PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), PdfFontCache::eFontCreationFlags_AutoSelectBase14, true);
}
void PdfSignatureGenerator::InitSignature(
@@ -130,7 +124,7 @@ void PdfSignatureGenerator::InitSignature(
if (m_pSignatureField) delete m_pSignatureField;
- PdfPage* pPage = m_pPdfDocument->GetPage(pageIndex);
+ PdfPage* pPage = m_pPdfMemDocument->GetPage(pageIndex);
PdfRect cropBox = pPage->GetCropBox();
float left0 = left * cropBox.GetWidth();
@@ -145,15 +139,14 @@ void PdfSignatureGenerator::InitSignature(
LOG_DBG((0, "InitSignature", "PdfSignatureField"));
- m_pSignatureField = new PdfSignatureField(
- pPage, rect, m_pPdfDocument, PdfString(szFieldName), szSubFilter);
+ m_pSignatureField = new PdfSignatureField(pPage, rect, m_pPdfMemDocument);
LOG_DBG((0, "InitSignature", "PdfSignatureField OK"));
if (szReason && szReason[0]) {
PdfString reason(szReason);
PdfString reasonLabel(szReasonLabel);
- m_pSignatureField->SetSignatureReason(reasonLabel, reason);
+ m_pSignatureField->SetSignatureReason(reason);
}
LOG_DBG((0, "InitSignature", "szReason OK"));
@@ -161,7 +154,7 @@ void PdfSignatureGenerator::InitSignature(
if (szLocation && szLocation[0]) {
PdfString location(szLocation);
PdfString locationLabel(szLocationLabel);
- m_pSignatureField->SetSignatureLocation(locationLabel, location);
+ m_pSignatureField->SetSignatureLocation(location);
}
LOG_DBG((0, "InitSignature", "szLocation OK"));
@@ -171,54 +164,42 @@ void PdfSignatureGenerator::InitSignature(
LOG_DBG((0, "InitSignature", "Date OK"));
- if (szName && szName[0]) {
- PdfString name(szName);
- PdfString nameLabel(szNameLabel);
- m_pSignatureField->SetSignatureName(nameLabel, name);
- }
-
- LOG_DBG((0, "InitSignature", "szName OK"));
-
- m_pSignatureField->SetSignatureSize(SIGNATURE_SIZE);
+ m_pSignOutputDevice->PdfSignOutputDevice::SetSignatureSize(SIGNATURE_SIZE);
LOG_DBG((0, "InitSignature", "SIGNATURE_SIZE OK"));
- // if((szImagePath && szImagePath[0]) || (szDescription && szDescription[0]))
- if (width * height > 0) {
- try {
- // m_pSignatureField->SetFontSize(5);
- m_pSignatureField->SetAppearance(szImagePath, szDescription);
- LOG_DBG((0, "InitSignature", "SetAppearance OK"));
- } catch (PdfError& error) {
- LOG_ERR((0, "InitSignature", "SetAppearance error: %s, %s",
- PdfError::ErrorMessage(error.GetError()), error.what()));
- } catch (PdfError* perror) {
- LOG_ERR((0, "InitSignature", "SetAppearance error2: %s, %s",
- PdfError::ErrorMessage(perror->GetError()), perror->what()));
- } catch (std::exception& ex) {
- LOG_ERR(
- (0, "InitSignature", "SetAppearance std exception, %s", ex.what()));
- } catch (std::exception* pex) {
- LOG_ERR((0, "InitSignature", "SetAppearance std exception2, %s",
- pex->what()));
- } catch (...) {
- LOG_ERR((0, "InitSignature", "SetAppearance unknown error"));
- }
- }
+ // if (width * height > 0) {
+ // try {
+ // m_pSignatureField->SetAppearance(szImagePath, szDescription);
+ // LOG_DBG((0, "InitSignature", "SetAppearance OK"));
+ // } catch (PdfError& error) {
+ // LOG_ERR((0, "InitSignature", "SetAppearance error: %s, %s",
+ // PdfError::ErrorMessage(error.GetError()), error.what()));
+ // } catch (PdfError* perror) {
+ // LOG_ERR((0, "InitSignature", "SetAppearance error2: %s, %s",
+ // PdfError::ErrorMessage(perror->GetError()), perror->what()));
+ // } catch (std::exception& ex) {
+ // LOG_ERR(
+ // (0, "InitSignature", "SetAppearance std exception, %s",
+ // ex.what()));
+ // } catch (std::exception* pex) {
+ // LOG_ERR((0, "InitSignature", "SetAppearance std exception2, %s",
+ // pex->what()));
+ // } catch (...) {
+ // LOG_ERR((0, "InitSignature", "SetAppearance unknown error"));
+ // }
+ // }
- if (szGraphometricData && szGraphometricData[0])
- m_pSignatureField->SetGraphometricData(
- PdfString("Aruba_Sign_Biometric_Data"), PdfString(szGraphometricData),
- PdfString(szVersion));
+ // if (szGraphometricData && szGraphometricData[0])
+ // m_pSignatureField->SetGraphometricData(
+ // PdfString("Aruba_Sign_Biometric_Data"),
+ // PdfString(szGraphometricData), PdfString(szVersion));
- LOG_DBG((0, "InitSignature", "szGraphometricData OK"));
+ // LOG_DBG((0, "InitSignature", "szGraphometricData OK"));
LOG_DBG((0, "InitSignature", "m_actualLen %d", m_actualLen));
// crea il nuovo doc con il campo di firma
- int fulllen = m_actualLen * 2 + SIGNATURE_SIZE * 2 +
- (szGraphometricData
- ? (strlen(szGraphometricData) + strlen(szVersion) + 100)
- : 0);
+ int fulllen = m_actualLen * 2 + SIGNATURE_SIZE * 2;
int mainDoclen = 0;
m_pMainDocbuffer = NULL;
@@ -227,7 +208,7 @@ void PdfSignatureGenerator::InitSignature(
LOG_DBG((0, "InitSignature", "fulllen %d", fulllen));
m_pMainDocbuffer = new char[fulllen];
PdfOutputDevice pdfOutDevice(m_pMainDocbuffer, fulllen);
- m_pPdfDocument->Write(&pdfOutDevice);
+ m_pPdfMemDocument->Write(&pdfOutDevice);
mainDoclen = pdfOutDevice.GetLength();
} catch (::PoDoFo::PdfError err) {
if (m_pMainDocbuffer) {
@@ -301,32 +282,32 @@ void PdfSignatureGenerator::GetSignedPdf(UUCByteArray& signedPdf) {
}
const double PdfSignatureGenerator::getWidth(int pageIndex) {
- if (m_pPdfDocument) {
- PdfPage* pPage = m_pPdfDocument->GetPage(pageIndex);
+ if (m_pPdfMemDocument) {
+ PdfPage* pPage = m_pPdfMemDocument->GetPage(pageIndex);
return pPage->GetPageSize().GetWidth();
}
return 0;
}
const double PdfSignatureGenerator::getHeight(int pageIndex) {
- if (m_pPdfDocument) {
- PdfPage* pPage = m_pPdfDocument->GetPage(pageIndex);
+ if (m_pPdfMemDocument) {
+ PdfPage* pPage = m_pPdfMemDocument->GetPage(pageIndex);
return pPage->GetPageSize().GetHeight();
}
return 0;
}
const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
- if (!m_pPdfDocument) return -1;
+ if (!m_pPdfMemDocument) return -1;
/// Find the document catalog dictionary
- const PdfObject* const trailer = m_pPdfDocument->GetTrailer();
+ const PdfObject* const trailer = m_pPdfMemDocument->GetTrailer();
if (!trailer->IsDictionary()) return -1;
const PdfObject* const catalogRef =
trailer->GetDictionary().GetKey(PdfName("Root"));
if (catalogRef == 0 || !catalogRef->IsReference())
return -2; // throw std::invalid_argument("Invalid /Root entry");
const PdfObject* const catalog =
- m_pPdfDocument->GetObjects().GetObject(catalogRef->GetReference());
+ m_pPdfMemDocument->GetObjects().GetObject(catalogRef->GetReference());
if (catalog == 0 || !catalog->IsDictionary())
return -3; // throw std::invalid_argument("Invalid or non-dictionary
// referenced by /Root entry");
@@ -336,8 +317,8 @@ const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
catalog->GetDictionary().GetKey(PdfName("AcroForm"));
if (acroFormValue == 0) return bottom;
if (acroFormValue->IsReference())
- acroFormValue =
- m_pPdfDocument->GetObjects().GetObject(acroFormValue->GetReference());
+ acroFormValue = m_pPdfMemDocument->GetObjects().GetObject(
+ acroFormValue->GetReference());
if (!acroFormValue->IsDictionary()) return bottom;
@@ -346,8 +327,8 @@ const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
if (fieldsValue == 0) return bottom;
if (fieldsValue->IsReference())
- fieldsValue =
- m_pPdfDocument->GetObjects().GetObject(acroFormValue->GetReference());
+ fieldsValue = m_pPdfMemDocument->GetObjects().GetObject(
+ acroFormValue->GetReference());
if (!fieldsValue->IsArray()) return bottom;
@@ -360,8 +341,8 @@ const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
for (unsigned int i = 0; i < array.size(); i++) {
const PdfObject* pObj =
- m_pPdfDocument->GetObjects().GetObject(array[i].GetReference());
- if (IsSignatureField(m_pPdfDocument, pObj)) {
+ m_pPdfMemDocument->GetObjects().GetObject(array[i].GetReference());
+ if (IsSignatureField(m_pPdfMemDocument, pObj)) {
const PdfObject* const keyRect =
pObj->GetDictionary().GetKey(PdfName("Rect"));
if (keyRect == 0) {
diff --git a/libs/sign-sdk/src/disigonsdk.cpp b/libs/sign-sdk/src/disigonsdk.cpp
index 250c93f..84e1b0b 100644
--- a/libs/sign-sdk/src/disigonsdk.cpp
+++ b/libs/sign-sdk/src/disigonsdk.cpp
@@ -5,6 +5,7 @@
#include <libxml/tree.h>
#include <libxml/xmlmemory.h>
+#include <podofo/podofo.h>
#include <stdlib.h>
#include <string.h>
+7 -7
View File
@@ -12,20 +12,20 @@
}:
let
pname = "dependabot-cli";
version = "1.65.0";
version = "1.66.0";
# `tag` is what `dependabot` uses to find the relevant docker images.
tag = "nixpkgs-dependabot-cli-${version}";
# Get these hashes from
# nix run nixpkgs#nix-prefetch-docker -- --image-name ghcr.io/github/dependabot-update-job-proxy/dependabot-update-job-proxy --image-tag latest --final-image-name dependabot-update-job-proxy --final-image-tag ${tag}
updateJobProxy.imageDigest = "sha256:ef245bd38aaa3cf89cafcffe0630d3ad3cff840488a2051a48517454e7f42368";
updateJobProxy.hash = "sha256-yndoGLpyV2MiIs0QXbF/W0xJ6jtmnw/ezL54VM80/CI=";
updateJobProxy.imageDigest = "sha256:0b0d8c67cad11fa0885fcc3fe0add06638c29c19f05a83f80077d5dbb70c2037";
updateJobProxy.hash = "sha256-7O/1NYdhtmO+MAwfu8BSaJQ1RVkXrFPBpfRy0N7p1lQ=";
# Get these hashes from
# nix run nixpkgs#nix-prefetch-docker -- --image-name ghcr.io/dependabot/dependabot-updater-github-actions --image-tag latest --final-image-name dependabot-updater-github-actions --final-image-tag ${tag}
updaterGitHubActions.imageDigest = "sha256:adeaa00b4ae49e942adccec76d4487a393eebd0dec27cd75a3cdf6cc46d801d7";
updaterGitHubActions.hash = "sha256-ni9rSEpeo0gIdYy2CIIpnIWg0kttoTnvRwbZ71QwmIg=";
updaterGitHubActions.imageDigest = "sha256:11de6594db1c23e7ed4a6b621e8584b4a3b34484d51f2f8aa850c21fbce9094f";
updaterGitHubActions.hash = "sha256-cImOCW7tggBWEPlmE55b4OFMxf/+VGLoqx0tRualowo=";
in
buildGoModule {
inherit pname version;
@@ -34,10 +34,10 @@ buildGoModule {
owner = "dependabot";
repo = "cli";
rev = "v${version}";
hash = "sha256-A7CPn0YDeyr+d1OUde2TGfSt3eCfrK4k3S7NWsvCGx0=";
hash = "sha256-9VgcQgiNv1v6+jnaWK10yccC1ILSxiIj9ZCIhHY57jk=";
};
vendorHash = "sha256-pnB1SkuEGm0KfkDfjnoff5fZRsAgD5w2H4UwsD3Jlbo=";
vendorHash = "sha256-gENlo1EPzsML+HkDBg4a2VGTUhyKY8AhlpHVszYWBno=";
ldflags = [
"-s"
+2 -2
View File
@@ -9,14 +9,14 @@
}:
python3.pkgs.buildPythonApplication rec {
pname = "dooit";
version = "3.2.2";
version = "3.2.3";
pyproject = true;
src = fetchFromGitHub {
owner = "dooit-org";
repo = "dooit";
tag = "v${version}";
hash = "sha256-2W3iO4AOuDdDKJDMMY8YKXlI+dQKRI3PQtkdi9J3wZo=";
hash = "sha256-bI9X+2tTLnQwxfsnBmy2vBI3lJ4UX418zOy3oniVKWc=";
};
build-system = with python3.pkgs; [ poetry-core ];
@@ -1,7 +1,7 @@
{
"version" = "1.11.100";
"version" = "1.11.102";
"hashes" = {
"desktopSrcHash" = "sha256-qlKZkBPWcD1eyEetCrIKsSXmodg6DYCmENfY+UT7Khc=";
"desktopYarnHash" = "sha256-wuRAeb4IpA2Ihr3ohaMPvFsaMod4Bg8o9lm8yzStwmk=";
"desktopSrcHash" = "sha256-wefoN8Nk31lwJFYbBRoKfy+0n69yVg6jskqP6aTHApE=";
"desktopYarnHash" = "sha256-/Gy/sYk8EBWU07zXwPl0zsDW5ADRq1j5PH4lPFe8dxk=";
};
}
+24 -9
View File
@@ -4,15 +4,15 @@
fetchFromGitHub,
makeWrapper,
makeDesktopItem,
yarnConfigHook,
yarn,
nodejs,
fetchYarnDeps,
jq,
electron_35,
electron_36,
element-web,
sqlcipher,
callPackage,
desktopToDarwinBundle,
typescript,
useKeytar ? true,
# command line arguments which are always set
commandLineArgs ? "",
@@ -22,7 +22,7 @@ let
pinData = import ./element-desktop-pin.nix;
inherit (pinData.hashes) desktopSrcHash desktopYarnHash;
executableName = "element-desktop";
electron = electron_35;
electron = electron_36;
keytar = callPackage ./keytar {
inherit electron;
};
@@ -41,16 +41,22 @@ stdenv.mkDerivation (
hash = desktopSrcHash;
};
offlineCache = fetchYarnDeps {
yarnLock = finalAttrs.src + "/yarn.lock";
sha256 = desktopYarnHash;
# TODO: fetchYarnDeps currently does not deal properly with a dependency
# declared as a pin to a commit in a specific git repository.
# While it does download everything correctly, `yarn install --offline`
# always wants to `git ls-remote` to the repository, ignoring the local
# cached tarball.
offlineCache = callPackage ./yarn.nix {
inherit (finalAttrs) version src;
hash = desktopYarnHash;
};
nativeBuildInputs = [
yarnConfigHook
nodejs
makeWrapper
jq
yarn
typescript
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ desktopToDarwinBundle ];
inherit seshat;
@@ -60,13 +66,21 @@ stdenv.mkDerivation (
# this shouldn't be in the closure just for unused scripts.
dontPatchShebangs = true;
configurePhase = ''
mkdir -p node_modules/
cp -r $offlineCache/node_modules/* node_modules/
substituteInPlace package.json --replace-fail "tsx " "node node_modules/tsx/dist/cli.mjs "
'';
buildPhase = ''
runHook preBuild
yarn --offline run build:ts
yarn --offline run i18n
node node_modules/matrix-web-i18n/scripts/gen-i18n.js
yarn --offline run i18n:sort
yarn --offline run build:res
chmod -R a+w node_modules/keytar-forked
rm -rf node_modules/matrix-seshat node_modules/keytar-forked
${lib.optionalString useKeytar "ln -s ${keytar} node_modules/keytar-forked"}
ln -s $seshat node_modules/matrix-seshat
@@ -82,6 +96,7 @@ stdenv.mkDerivation (
ln -s '${element-web}' "$out/share/element/webapp"
cp -r '.' "$out/share/element/electron"
cp -r './res/img' "$out/share/element"
chmod -R "a+w" "$out/share/element/electron/node_modules"
rm -rf "$out/share/element/electron/node_modules"
cp -r './node_modules' "$out/share/element/electron"
cp $out/share/element/electron/lib/i18n/strings/en_EN.json $out/share/element/electron/lib/i18n/strings/en-us.json
+38
View File
@@ -0,0 +1,38 @@
{
stdenvNoCC,
yarn,
cacert,
git,
version,
src,
hash,
}:
stdenvNoCC.mkDerivation {
pname = "element-desktop-yarn-deps";
inherit version src;
nativeBuildInputs = [
cacert
yarn
git
];
dontInstall = true;
NODE_EXTRA_CA_CERTS = "${cacert}/etc/ssl/certs/ca-bundle.crt";
buildPhase = ''
export HOME=$(mktemp -d)
export YARN_ENABLE_TELEMETRY=0
yarn install --frozen-lockfile --ignore-platform --skip-integrity-check --ignore-scripts --no-progress --non-interactive
mkdir -p $out/node_modules
cp -r node_modules/* $out/node_modules/
'';
dontPatchShebangs = true;
outputHash = hash;
outputHashMode = "recursive";
}
@@ -1,7 +1,7 @@
{
"version" = "1.11.100";
"version" = "1.11.102";
"hashes" = {
"webSrcHash" = "sha256-FiYjWOJ50Vhbs9vgEqK64HTVtwSuy4/BZAkPK4c6DXQ=";
"webYarnHash" = "sha256-C1yVJHU9ClTJHQfMLkdZEeRWVVu68eJp2kxnIlLinY8=";
"webSrcHash" = "sha256-B21fBRcksX8MoyWiqf1sa9yowJ/Z/wcM3vEqslunv7A=";
"webYarnHash" = "sha256-NXoGMEJM4uxFMCb5YX0ue9hgxe22hzG0MTeAOaBrJO4=";
};
}
+1 -1
View File
@@ -41,7 +41,7 @@ stdenv.mkDerivation (finalAttrs: {
autoreconfHook
po4a
];
buildInputs = lib.optional (!stdenv.hostPlatform.isDarwin) libcap;
buildInputs = lib.optional stdenv.hostPlatform.isLinux libcap;
postUnpack = ''
sed -i \
+3 -3
View File
@@ -31,13 +31,13 @@ let
in
buildGoModule rec {
pname = "frankenphp";
version = "1.6.2";
version = "1.7.0";
src = fetchFromGitHub {
owner = "dunglas";
repo = "frankenphp";
tag = "v${version}";
hash = "sha256-YYEipvr0qqudKuLrINt5htl2oCp6wXWLpyvCPuwR9e8=";
hash = "sha256-FukxXuZwF7P5tUao0nTT7bELGIYivtoOBQQkHA7ZE3s=";
};
sourceRoot = "${src.name}/caddy";
@@ -45,7 +45,7 @@ buildGoModule rec {
# frankenphp requires C code that would be removed with `go mod tidy`
# https://github.com/golang/go/issues/26366
proxyVendor = true;
vendorHash = "sha256-M1z9Yv+WomKA+UACOUT8xcWdw+SD1MY2jfaDO4zYUQg=";
vendorHash = "sha256-likIETO/eq1kATNbbYHxXxvIPH7q5tp3WHjz+zvNOws=";
buildInputs = [
phpUnwrapped
+22 -6
View File
@@ -4,20 +4,21 @@
fetchFromGitHub,
installShellFiles,
stdenv,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "geminicommit";
version = "0.4.0";
version = "0.4.1";
src = fetchFromGitHub {
owner = "tfkhdyt";
repo = "geminicommit";
tag = "v${finalAttrs.version}";
hash = "sha256-hJevJkniyICUUr1UyS0A5SKuuYRU0dGHMWzF99Yr2Eo=";
hash = "sha256-QUI5JI1udOo3IOXegoes3pwwgSfxXIjxXIPsA5SuAJo=";
};
vendorHash = "sha256-IfqlPg+HPcOfjlwwuLi2/R21UD83xQzWyUmzM7JSDEs=";
vendorHash = "sha256-AFm+1RQ6sMSe+kY/cw1Ly/8WEj2/yk0nJQiEJzV6jKg=";
nativeBuildInputs = [
installShellFiles
@@ -26,9 +27,18 @@ buildGoModule (finalAttrs: {
postInstall =
let
cmd = finalAttrs.meta.mainProgram;
goDefaultCmd = finalAttrs.pname;
in
lib.optionalString (with stdenv; buildPlatform.canExecute hostPlatform) ''
# `geminicommit` requires write permissions to $HOME for its `config.toml`
# The official github released binary is renamed since v0.4.1,
# see: https://github.com/tfkhdyt/geminicommit/releases/tag/v0.4.1
# Here we link the old name (which is also the `go build` default name)
# for backward compatibility:
''
mv $out/bin/${goDefaultCmd} $out/bin/${cmd}
ln -s $out/bin/${cmd} $out/bin/${goDefaultCmd}
''
+ lib.optionalString (with stdenv; buildPlatform.canExecute hostPlatform) ''
# `gmc` requires write permissions to $HOME for its `config.toml`
# ... which is automatically initiated on startup
export HOME=$(mktemp -d)
@@ -39,11 +49,17 @@ buildGoModule (finalAttrs: {
done
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
meta = {
description = "CLI that generates git commit messages with Google Gemini AI";
homepage = "https://github.com/tfkhdyt/geminicommit";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ bryango ];
mainProgram = "geminicommit";
mainProgram = "gmc";
};
})
@@ -1,15 +1,13 @@
{
lib,
buildPythonApplication,
pytest-mock,
pytestCheckHook,
python3,
fetchFromGitHub,
installShellFiles,
git,
nix-update-script,
}:
buildPythonApplication rec {
python3.pkgs.buildPythonApplication rec {
pname = "git-machete";
version = "3.34.1";
@@ -22,11 +20,14 @@ buildPythonApplication rec {
nativeBuildInputs = [ installShellFiles ];
nativeCheckInputs = [
git
pytest-mock
pytestCheckHook
];
nativeCheckInputs =
[
git
]
++ (with python3.pkgs; [
pytest-mock
pytestCheckHook
]);
disabledTests = [
# Requires fully functioning shells including zsh modules and bash
+2 -2
View File
@@ -13,13 +13,13 @@
buildGoModule rec {
pname = "git-town";
version = "20.2.0";
version = "21.0.0";
src = fetchFromGitHub {
owner = "git-town";
repo = "git-town";
tag = "v${version}";
hash = "sha256-q1wiqE2pd1qLw0nTw3CEpJybGia+KwRacgejofk4kJ8=";
hash = "sha256-Wnp3qkF7e358uGftBy5vi3GandyZsAyxESvgUFB7mmM=";
};
vendorHash = null;
+3 -3
View File
@@ -7,18 +7,18 @@
rustPlatform.buildRustPackage rec {
pname = "harper";
version = "0.40.0";
version = "0.41.0";
src = fetchFromGitHub {
owner = "Automattic";
repo = "harper";
rev = "v${version}";
hash = "sha256-QrIRfAehrKgJwAB3pWfSpIUnIwRLjuuRbTEgUpCe2LM=";
hash = "sha256-o5F9gDeHFq2U9q/kRQVn4otbbQVV4tg6n5Ap7Dwm7oI=";
};
buildAndTestSubdir = "harper-ls";
useFetchCargoVendor = true;
cargoHash = "sha256-hkr7gNRwY+L45Efk6mWPrykj60n3ChryBKRFCC4W1Q0=";
cargoHash = "sha256-KgcsLzFrN+ZDgV6cZmkUv4tUt5ko4+giHq19NjfuF74=";
passthru.updateScript = nix-update-script { };
+15 -10
View File
@@ -5,20 +5,25 @@
mpi,
perl,
autoreconfHook,
pkg-config,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "ior";
version = "3.3.0";
version = "4.0.0";
src = fetchFromGitHub {
owner = "hpc";
repo = "ior";
rev = version;
sha256 = "sha256-pSjptDfiPlaToXe1yHyk9MQMC9PqcVSjqAmWLD11iOM=";
tag = finalAttrs.version;
hash = "sha256-WsfJWHHfkiHZ+rPk6ck6mDErTXwt6Dhgm+yqOtw4Fvo=";
};
nativeBuildInputs = [ autoreconfHook ];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
buildInputs = [
mpi
perl
@@ -26,11 +31,11 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
meta = with lib; {
meta = {
homepage = "https://ior.readthedocs.io/en/latest/";
description = "Parallel file system I/O performance test";
license = licenses.gpl2Only;
platforms = platforms.linux;
maintainers = with maintainers; [ bzizou ];
license = lib.licenses.gpl2Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ bzizou ];
};
}
})
+40
View File
@@ -0,0 +1,40 @@
{
dbus,
fetchFromGitHub,
lib,
iwd,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "iwmenu";
version = "0.2.0";
src = fetchFromGitHub {
owner = "e-tho";
repo = "iwmenu";
tag = "v${version}";
hash = "sha256-F1w2Lp0/iXUHh0PXAZ/wD78C2uVtAcWlEKqBI5I/hnE=";
};
cargoHash = "sha256-NjA8n11pOytXsotEQurYxDHPhwXG5vpdlyscmVUIzfA=";
buildInputs = [
dbus
iwd
];
meta = {
homepage = "https://github.com/e-tho/iwmenu";
description = "Launcher-driven Wi-Fi manager for Linux";
longDescription = ''
Use `iwmenu --launcher <launcher command>`
Supported launchers are: `dmenu`, `fuzzel`, `rofi`, `walker` and `custom` with `stdin`
for details refer to https://github.com/e-tho/iwmenu/blob/main/README.md#usage
'';
mainProgram = "iwmenu";
platforms = lib.platforms.linux;
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ vuimuich ];
};
}
@@ -0,0 +1,16 @@
diff --git a/tests/optional.test b/tests/optional.test
index 2623731..85bc9e9 100644
--- a/tests/optional.test
+++ b/tests/optional.test
@@ -12,11 +12,6 @@ last(range(365 * 67)|("1970-03-01T01:02:03Z"|strptime("%Y-%m-%dT%H:%M:%SZ")|mkti
null
[2037,1,11,1,2,3,3,41]
-# Regression test for #3276
-fromdate
-"2038-01-19T03:14:08Z"
-2147483648
-
# %e is not available on mingw/WIN32
strftime("%A, %B %e, %Y")
1435677542.822351
+9
View File
@@ -30,6 +30,15 @@ stdenv.mkDerivation (finalAttrs: {
"out"
];
# tortured syntax to avoid rebuilds
# needed because epoch conversion test here is right at the end of 32 bit integer space
# See also: https://github.com/jqlang/jq/blob/859a8073ee8a21f2133154eea7c2bd5e0d60837f/tests/optional.test#L15-L18
# "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" would be preferrable, but breaks with dynamic linking,
# unless done globally in stdenv for all of 32 bit.
${if stdenv.hostPlatform.is32bit then "patches" else null} = [
./disable-end-of-epoch-conversion-test.patch
];
# https://github.com/jqlang/jq/issues/2871
postPatch = lib.optionalString stdenv.hostPlatform.isFreeBSD ''
substituteInPlace Makefile.am --replace-fail "tests/mantest" "" --replace-fail "tests/optionaltest" ""
+48 -27
View File
@@ -1,42 +1,63 @@
diff --git a/public/utils.js b/public/utils.js
index 3cd38b63..54152694 100644
index c5963e41..30f72965 100644
--- a/public/utils.js
+++ b/public/utils.js
@@ -17,7 +17,7 @@ const osShortName = function () {
@@ -17,7 +17,7 @@ const osShortName = (function () {
export function iconsPath() {
if (!app.isPackaged) {
- return path.join(__dirname, "..", "resources", osShortName, "icons");
+ return path.join(__dirname, "..", "..", "icons");
}
if (!app.isPackaged) {
- return path.join(__dirname, "..", "resources", osShortName, "icons");
+ return path.join(__dirname, "..", "..", "icons");
}
return path.join(process.resourcesPath, "icons");
@@ -25,26 +25,14 @@ export function iconsPath() {
return path.join(process.resourcesPath, "icons");
@@ -25,47 +25,14 @@ export function iconsPath() {
export function publicPath() {
if (!app.isPackaged) {
- return path.join(__dirname, "..", "public");
+ return path.join(__dirname, "..", "..", "public");
}
if (!app.isPackaged) {
- return path.join(__dirname, "..", "public");
+ return path.join(__dirname, "..", "..", "public");
}
return process.resourcesPath;
return process.resourcesPath;
}
export function defaultServerBinary() {
- if (!app.isPackaged) {
- return {
- "mac": path.join(__dirname, "..", "..", "dist", "kopia_darwin_amd64", "kopia"),
- "win": path.join(__dirname, "..", "..", "dist", "kopia_windows_amd64", "kopia.exe"),
- "linux": path.join(__dirname, "..", "..", "dist", "kopia_linux_amd64", "kopia"),
- }[osShortName]
- }
-
- if (!app.isPackaged) {
- return {
- "mac": path.join(process.resourcesPath, "server", "kopia"),
- "win": path.join(process.resourcesPath, "server", "kopia.exe"),
- "linux": path.join(process.resourcesPath, "server", "kopia"),
- }[osShortName]
+ return "KOPIA"
- mac: path.join(
- __dirname,
- "..",
- "..",
- "dist",
- "kopia_darwin_amd64",
- "kopia",
- ),
- win: path.join(
- __dirname,
- "..",
- "..",
- "dist",
- "kopia_windows_amd64",
- "kopia.exe",
- ),
- linux: path.join(
- __dirname,
- "..",
- "..",
- "dist",
- "kopia_linux_amd64",
- "kopia",
- ),
- }[osShortName];
- }
-
- return {
- mac: path.join(process.resourcesPath, "server", "kopia"),
- win: path.join(process.resourcesPath, "server", "kopia.exe"),
- linux: path.join(process.resourcesPath, "server", "kopia"),
- }[osShortName];
+ return "KOPIA";
}
export function selectByOS(x) {
return x[osShortName]
return x[osShortName];
+3 -3
View File
@@ -10,12 +10,12 @@
kopia,
}:
let
version = "0.20.0";
version = "0.20.1";
src = fetchFromGitHub {
owner = "kopia";
repo = "kopia";
tag = "v${version}";
hash = "sha256-AM9Mpy+9ZCvEtFtzYC87vqCNpLxO+yWVd4th9DDQ2QI=";
hash = "sha256-hKtrHv7MQjA/AQ/frjP2tPT6zqVPPGnBxYuhWtUgIl0=";
};
in
buildNpmPackage {
@@ -24,7 +24,7 @@ buildNpmPackage {
sourceRoot = "${src.name}/app";
npmDepsHash = "sha256-FXPfZnqpuI6NgHk81HEJ7Hj8xCpXD0BKJgFeQ/Oce04=";
npmDepsHash = "sha256-5gXM5aLsUsJhxbt6IKY4Sg4SBI9ATe248K1TyZThg/0=";
makeCacheWritable = true;
nativeBuildInputs = [
@@ -1,13 +0,0 @@
diff --git a/vcpkg.json b/vcpkg.json
index 5a824884b2..e4193aa45f 100644
--- a/vcpkg.json
+++ b/vcpkg.json
@@ -199,7 +199,7 @@
},
{
"name": "skia",
- "version": "134#2"
+ "version": "129#0"
},
{
"name": "sqlite3",
+4 -11
View File
@@ -38,22 +38,15 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "ladybird";
version = "0-unstable-2025-05-24";
version = "0-unstable-2025-06-03";
src = fetchFromGitHub {
owner = "LadybirdWebBrowser";
repo = "ladybird";
rev = "fbd1f771613fc6f13fcc20dcad04c7065633a2c2";
hash = "sha256-Gtfnq46JrzfpcapMr6Ez+5BNQ59H/Djsgp7n6QvMSUM=";
rev = "4c54a28c45be4e8185158d40a37e083e038a6465";
hash = "sha256-YHWkG2RJk6NaouRvis2L+njtYWKB7T569y1Tq+mYdz0=";
};
patches = [
# Revert https://github.com/LadybirdBrowser/ladybird/commit/51d189198d3fc61141fc367dc315c7f50492a57e
# This commit doesn't update the skia used by ladybird vcpkg, but it does update the skia that
# that cmake wants.
./001-revert-fake-skia-update.patch
];
postPatch = ''
sed -i '/iconutil/d' UI/CMakeLists.txt
@@ -146,7 +139,7 @@ stdenv.mkDerivation (finalAttrs: {
# ld: [...]/OESVertexArrayObject.cpp.o: undefined reference to symbol 'glIsVertexArrayOES'
# ld: [...]/libGL.so.1: error adding symbols: DSO missing from command line
# https://github.com/LadybirdBrowser/ladybird/issues/371#issuecomment-2616415434
env.NIX_LDFLAGS = "-lGL";
env.NIX_LDFLAGS = "-lGL -lfontconfig";
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/Applications $out/bin
-33
View File
@@ -1,33 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
}:
stdenv.mkDerivation rec {
pname = "libast";
version = "0.8";
src = fetchFromGitHub {
owner = "mej";
repo = "libast";
rev = version;
hash = "sha256-rnqToFi+d6D6O+JDHQxkVjTc/0RBag6Jqv4uDcE4PNc=";
};
nativeBuildInputs = [
autoreconfHook
pkg-config
];
meta = with lib; {
inherit (src.meta) homepage;
description = "Library of Assorted Spiffy Things";
mainProgram = "libast-config";
license = licenses.bsd2;
maintainers = [ ];
platforms = platforms.unix;
};
}
+2 -2
View File
@@ -6,7 +6,7 @@
gperf,
arpa2cm,
quickder,
nix-update-script,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
quickder
];
passthru.updateScript = nix-update-script { };
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
meta = {
description = "Little LDAP: Event-driven, lock-free kernel for dynamic data servers, clients, filters";
-39
View File
@@ -1,39 +0,0 @@
{
lib,
stdenv,
fetchurl,
libdvdread,
}:
stdenv.mkDerivation rec {
pname = "lxdvdrip";
version = "1.77";
src = fetchurl {
url = "mirror://sourceforge/lxdvdrip/lxdvdrip-${version}.tgz";
hash = "sha256-OzHrscftsCmJvSw7bb/Z2WDP322VCuQDY58dW2OqxB8=";
};
postPatch = ''
sed -i -e s,/usr/local,$out, -e s,/etc,$out/etc,g Makefile
sed -i -e s,/usr/local,$out, mbuffer/Makefile
'';
makeFlags = [
"PREFIX=${placeholder "out"}"
];
preInstall = ''
mkdir -p $out/man/man1 $out/bin $out/share $out/etc
'';
buildInputs = [ libdvdread ];
meta = {
broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
description = "Command line tool to make a copy from a video DVD for private use";
homepage = "https://sourceforge.net/projects/lxdvdrip";
license = lib.licenses.gpl2;
platforms = lib.platforms.linux;
};
}
+2 -2
View File
@@ -7,13 +7,13 @@
}:
buildGoModule rec {
pname = "mpls";
version = "0.15.2";
version = "0.15.3";
src = fetchFromGitHub {
owner = "mhersson";
repo = "mpls";
tag = "v${version}";
hash = "sha256-UQIGg31OJ8vTqlj5JLYxOxg9oS0+PXPcdocAJbUgpzY=";
hash = "sha256-MGrvJOnjNNXU8Z9rqDIacb5awKxf50xYeNkY06U4cUk=";
};
vendorHash = "sha256-n3DG3sR7HOQPQJW1t1qC94EKkDBgXpdmjUWtLzAE7kY=";
+9 -16
View File
@@ -7,35 +7,28 @@
pkg-config,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "multimarkdown";
version = "6.6.0";
version = "6.7.0";
src = fetchFromGitHub {
owner = "fletcher";
repo = "MultiMarkdown-6";
rev = version;
hash = "sha256-emJbY0wucoc/GdjlILoeqjwuwuPpTjXTqZN0gUKOyLg=";
tag = finalAttrs.version;
hash = "sha256-b6yCn0NFpONI7WwfjDOc0d2nCKMIiUXi+rsnytiNc0Q=";
};
postPatch = ''
patchShebangs tools/enumsToPerl.pl
'';
postInstall = ''
# Move files from $out/ to sub directories to prevent conflicts
# with other packages:
mkdir -p $out/share/doc/multimarkdown/
mv $out/LICENSE.txt $out/README.txt $out/share/doc/multimarkdown/
'';
nativeBuildInputs = [
cmake
perl
pkg-config
];
meta = with lib; {
meta = {
homepage = "https://fletcher.github.io/MultiMarkdown-6/introduction.html";
description = "Derivative of Markdown that adds new syntax features";
longDescription = ''
@@ -59,8 +52,8 @@ stdenv.mkDerivation rec {
- glossary entries (LaTeX only)
- document metadata (e.g. title, author, date, etc.)
'';
license = with licenses; [ mit ];
platforms = platforms.all;
maintainers = with maintainers; [ ];
license = with lib.licenses; [ mit ];
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ ];
};
}
})
+3 -3
View File
@@ -24,7 +24,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "neuron";
version = "8.2.6";
version = "8.2.7";
# format is for pythonModule conversion
format = "other";
@@ -64,7 +64,7 @@ stdenv.mkDerivation (finalAttrs: {
python3.pkgs.mpi4py
]
++ optionals useRx3d [
python3.pkgs.cython_0 # NOTE: cython<3 is required as of 8.2.6
python3.pkgs.cython_0 # NOTE: cython<3 is required as of 8.2.7
python3.pkgs.numpy
];
@@ -99,7 +99,7 @@ stdenv.mkDerivation (finalAttrs: {
repo = "nrn";
rev = finalAttrs.version;
fetchSubmodules = true;
hash = "sha256-xASBpsF8rIzrb5G+4Qi6rvWC2wqL7nAGlSeMsBAI6WM=";
hash = "sha256-dmpx0Wud0IhdFvvTJuW/w1Uq6vFYaNal9n27LAqV1Qc=";
};
meta = with lib; {
+9
View File
@@ -3,6 +3,7 @@
dbus,
eudev,
fetchFromGitHub,
installShellFiles,
libdisplay-info,
libglvnd,
libinput,
@@ -15,6 +16,7 @@
pkg-config,
rustPlatform,
seatd,
stdenv,
systemd,
wayland,
withDbus ? true,
@@ -46,6 +48,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
strictDeps = true;
nativeBuildInputs = [
installShellFiles
pkg-config
rustPlatform.bindgenHook
];
@@ -88,6 +91,12 @@ rustPlatform.buildRustPackage (finalAttrs: {
''
+ lib.optionalString withDinit ''
install -Dm0644 resources/dinit/niri{-shutdown,} -t $out/lib/dinit.d/user
''
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd $pname \
--bash <($out/bin/niri completions bash) \
--fish <($out/bin/niri completions fish) \
--zsh <($out/bin/niri completions zsh)
'';
env = {
@@ -1,22 +0,0 @@
commit 61865b5b5ad715e2b812087947281f0add9aa05e
Author: Fintan Halpenny <fintan.halpenny@gmail.com>
Date: 2024-11-19 14:38:38 +0100
cob: fix documentation
`no_run` will compile but not run the code. Use `ignore` instead, and also added
`rust` for syntax highlighting.
diff --git a/radicle-cob/src/backend/git/stable.rs b/radicle-cob/src/backend/git/stable.rs
index 0d8ea27b..ef18ae55 100644
--- a/radicle-cob/src/backend/git/stable.rs
+++ b/radicle-cob/src/backend/git/stable.rs
@@ -53,7 +53,7 @@ pub fn read_timestamp() -> i64 {
///
/// # Usage
///
-/// ```no_run
+/// ```rust, ignore
/// let oid1 = with_advanced_timestamp(|| cob.update("New revision OID"));
/// let oid2 = with_advanced_timestamp(|| cob.update("Another revision OID"));
/// ```
+15 -8
View File
@@ -19,20 +19,22 @@
}:
rustPlatform.buildRustPackage rec {
pname = "radicle-node";
version = "1.1.0";
version = "1.2.0";
env.RADICLE_VERSION = version;
src = fetchgit {
url = "https://seed.radicle.xyz/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git";
rev = "refs/namespaces/z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/refs/tags/v${version}";
hash = "sha256-M4oz9tWjI/eqV4Gz1b512MEmvsZ5u3R9y6P9VeeH9CA=";
rev = "refs/namespaces/z6MkireRatUThvd3qzfKht1S44wpm4FEWSSa4PRMTSQZ3voM/refs/tags/v${version}";
hash = "sha256-AWgLhL6GslE3r2FcZu2imV5ZtEKlUD+a4C5waRGO2lM=";
leaveDotGit = true;
postFetch = ''
git -C $out rev-parse HEAD > $out/.git_head
git -C $out log -1 --pretty=%ct HEAD > $out/.git_time
rm -rf $out/.git
'';
};
useFetchCargoVendor = true;
cargoHash = "sha256-SzwBQxTqQafHDtH8+OWkAMDnKh3AH0PeSMBWpHprQWM=";
patches = [
./61865b5b5ad715e2b812087947281f0add9aa05e.patch
];
cargoHash = "sha256-/6VlRwWtJfHf6tXD2HJUTbThwTYeZFTJqtaxclrm3+c=";
nativeBuildInputs = [
asciidoctor
@@ -41,6 +43,11 @@ rustPlatform.buildRustPackage rec {
];
nativeCheckInputs = [ git ];
preBuild = ''
export GIT_HEAD=$(<$src/.git_head)
export SOURCE_DATE_EPOCH=$(<$src/.git_time)
'';
# tests regularly time out on aarch64
doCheck = stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86;
+4 -2
View File
@@ -16,7 +16,7 @@
stdenv,
}:
let
version = "2.51.1534";
version = "2.52.1538";
urlVersion = builtins.replaceStrings [ "." ] [ "0" ] version;
in
stdenv.mkDerivation {
@@ -25,7 +25,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://download.roonlabs.com/updates/production/RoonServer_linuxx64_${urlVersion}.tar.bz2";
hash = "sha256-x9zbWJ4lrqfC1CPquGsdgzhO3WBzd46dlZy6APqJbcg=";
hash = "sha256-pWg1Cp8aNdR/hoVZDF3kUznJtYsjJYX9J4g1xbmn/lg=";
};
dontConfigure = true;
@@ -104,6 +104,7 @@ stdenv.mkDerivation {
runHook postInstall
'';
passthru.updateScript = ./update.py;
meta = with lib; {
description = "Music player for music lovers";
changelog = "https://community.roonlabs.com/c/roon/software-release-notes/18";
@@ -113,6 +114,7 @@ stdenv.mkDerivation {
maintainers = with maintainers; [
lovesegfault
steell
ramblurr
];
platforms = [ "x86_64-linux" ];
mainProgram = "RoonServer";
+131
View File
@@ -0,0 +1,131 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i python3 -p python3 curl common-updater-scripts nix coreutils
"""
Updater script for the roon-server package.
"""
import subprocess
import urllib.request
import re
import sys
import os
def get_current_version():
"""Get the current version of roon-server from the package.nix file."""
result = subprocess.run(
[
"nix-instantiate",
"--eval",
"-E",
"with import ./. {}; roon-server.version or (lib.getVersion roon-server)",
],
capture_output=True,
text=True,
)
result.check_returncode()
return result.stdout.strip().strip('"')
def get_latest_version_info():
"""Get the latest version information from the Roon Labs API."""
url = "https://updates.roonlabs.net/update/?v=2&platform=linux&version=&product=RoonServer&branding=roon&branch=production&curbranch=production"
with urllib.request.urlopen(url) as response:
content = response.read().decode("utf-8")
# Parse the response
info = {}
for line in content.splitlines():
if "=" in line:
key, value = line.split("=", 1)
info[key] = value
return info
def parse_version(display_version):
"""Parse the display version string to get the version in the format used in the package.nix file."""
# Example: "2.47 (build 1510) production" -> "2.47.1510"
match = re.search(r"(\d+\.\d+)\s+\(build\s+(\d+)\)", display_version)
if match:
return f"{match.group(1)}.{match.group(2)}"
return None
def get_hash(url):
"""Calculate the hash of the package."""
result = subprocess.run(
["nix-prefetch-url", "--type", "sha256", url], capture_output=True, text=True
)
result.check_returncode()
pkg_hash = result.stdout.strip()
result = subprocess.run(
["nix", "hash", "to-sri", f"sha256:{pkg_hash}"], capture_output=True, text=True
)
result.check_returncode()
return result.stdout.strip()
def update_package(new_version, hash_value):
"""Update the package.nix file with the new version and hash."""
subprocess.run(
[
"update-source-version",
"roon-server",
new_version,
hash_value,
"--ignore-same-version",
],
check=True,
)
def main():
current_version = get_current_version()
print(f"Current roon-server version: {current_version}")
try:
latest_info = get_latest_version_info()
display_version = latest_info.get("displayversion", "")
download_url = latest_info.get("updateurl", "")
if not display_version or not download_url:
print("Error: Failed to get version information from Roon Labs API")
sys.exit(1)
print(f"Latest version from API: {display_version}")
print(f"Download URL: {download_url}")
new_version = parse_version(display_version)
if not new_version:
print(
f"Error: Failed to parse version from display version: {display_version}"
)
sys.exit(1)
print(f"Parsed version: {new_version}")
if new_version == current_version:
print("roon-server is already up to date!")
return
print(f"Calculating hash for new version {new_version}...")
hash_value = get_hash(download_url)
print(
f"Updating package.nix with new version {new_version} and hash {hash_value}"
)
update_package(new_version, hash_value)
print(f"Successfully updated roon-server to version {new_version}")
except Exception as e:
print(f"Error: {e}")
sys.exit(1)
if __name__ == "__main__":
main()
+2 -2
View File
@@ -5,13 +5,13 @@
}:
buildGoModule rec {
pname = "sesh";
version = "2.13.0";
version = "2.14.0";
src = fetchFromGitHub {
owner = "joshmedeski";
repo = "sesh";
rev = "v${version}";
hash = "sha256-YFvUYacuvyzNXwY+y9kI4tPlrlojDuZpR7VaTGdVqb8=";
hash = "sha256-Dla43xI6y7J9M18IloSm1uDeHAhfslU56Z0Q3nVzjIk=";
};
vendorHash = "sha256-3wNp1meUoUFPa2CEgKjuWcu4I6sxta3FPFvCb9QMQhQ=";
@@ -0,0 +1,64 @@
{
lib,
fetchFromGitHub,
rustPlatform,
_experimental-update-script-combinators,
unstableGitUpdater,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "shaperglot-cli";
version = "0-unstable-2025-05-27";
src = fetchFromGitHub {
owner = "googlefonts";
repo = "shaperglot";
rev = "0d934110dfdf315761255e34040f207f7d7868b5";
hash = "sha256-5Bgvx4Yv74nQLd037L5uBj6oySqqp947LI/6yGwYSKY=";
};
cargoHash = "sha256-UMPoPNpyM/+1rq4U6xQ1DF4W+51p5YjQXr/8zLiPvEI=";
cargoBuildFlags = [
"--package=shaperglot-cli"
];
cargoTestFlags = [
"--package=shaperglot-cli"
];
doInstallCheck = true;
installCheckPhase = ''
runHook preInstallCheck
describe_output="$("$out/bin/shaperglot" describe English)"
[[ "$describe_output" == *'support'* ]]
runHook postInstallCheck
'';
passthru = {
updateScript = _experimental-update-script-combinators.sequence [
(unstableGitUpdater {
branch = "main";
# Git tag differs from CLI version: https://github.com/googlefonts/shaperglot/issues/138
hardcodeZeroVersion = true;
})
(nix-update-script {
# Updating `cargoHash`
extraArgs = [ "--version=skip" ];
})
];
};
meta = {
description = "Test font files for language support";
homepage = "https://github.com/googlefonts/shaperglot";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
kachick
];
mainProgram = "shaperglot";
};
})
+65
View File
@@ -0,0 +1,65 @@
{
lib,
stdenvNoCC,
fetchurl,
writeShellApplication,
cacert,
curl,
common-updater-scripts,
pup,
undmg,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "shottr";
version = "1.8.1";
src = fetchurl {
url = "https://shottr.cc/dl/Shottr-${finalAttrs.version}.dmg";
hash = "sha256-I3LNLuhIRdjKDn79HWRK2B/tVsV+1aGt/aY442y3r2I=";
};
nativeBuildInputs = [ undmg ];
sourceRoot = ".";
installPhase = ''
runHook preInstall
mkdir -p "$out/Applications"
cp -R Shottr.app "$out/Applications"
mkdir -p "$out/bin"
ln -s "$out/Applications/Shottr.app/Contents/MacOS/Shottr" "$out/bin/shottr"
runHook postInstall
'';
passthru.updateScript = lib.getExe (writeShellApplication {
name = "shottr-update-script";
runtimeInputs = [
cacert
common-updater-scripts
curl
pup
];
text = ''
version="$(curl -s https://shottr.cc/newversion.html \
| pup 'a[href*="Shottr-"] attr{href}' \
| sed -E 's|/dl/Shottr-||' \
| sed -E 's|\.dmg||')"
update-source-version shottr "$version"
'';
});
meta = {
changelog = "https://shottr.cc/newversion.html";
description = "MacOS screenshot app with scrolling screenshots, OCR, annotation and measurement instruments";
homepage = "https://shottr.cc/";
license = lib.licenses.unfree;
mainProgram = "shottr";
maintainers = with lib.maintainers; [ donteatoreo ];
platforms = lib.platforms.darwin;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
+45 -7
View File
@@ -3,7 +3,12 @@
stdenv,
fetchurl,
fetchFromGitHub,
apple-sdk,
versionCheckHook,
_experimental-update-script-combinators,
nix-update-script,
writeShellApplication,
nix,
gnugrep,
}:
let
@@ -24,29 +29,31 @@ let
"unknown";
# These files can be found in src/evaluate.h
nnueBigFile = "nn-1111cefa1111.nnue";
nnueBigFile = "nn-1c0000000000.nnue";
nnueBigHash = "sha256-HAAAAAAApn1imZnZMtDDc/dFDOQ80S0FYoaPTq+a4q0=";
nnueBig = fetchurl {
name = nnueBigFile;
url = "https://tests.stockfishchess.org/api/nn/${nnueBigFile}";
sha256 = "sha256-ERHO+hERa3cWG9SxTatMUPJuWSDHVvSGFZK+Pc1t4XQ=";
hash = nnueBigHash;
};
nnueSmallFile = "nn-37f18f62d772.nnue";
nnueSmallHash = "sha256-N/GPYtdy8xB+HWqso4mMEww8hvKrY+ZVX7vKIGNaiZ0=";
nnueSmall = fetchurl {
name = nnueSmallFile;
url = "https://tests.stockfishchess.org/api/nn/${nnueSmallFile}";
sha256 = "sha256-N/GPYtdy8xB+HWqso4mMEww8hvKrY+ZVX7vKIGNaiZ0=";
hash = nnueSmallHash;
};
in
stdenv.mkDerivation rec {
pname = "stockfish";
version = "17";
version = "17.1";
src = fetchFromGitHub {
owner = "official-stockfish";
repo = "Stockfish";
rev = "sf_${version}";
sha256 = "sha256-oXvLaC5TEUPlHjhm7tOxpNPY88QxYHFw+Cev3Q8NEeQ=";
tag = "sf_${version}";
hash = "sha256-c8o1d7/yPnF3Eo7M/MSzYuYQr2qt2tIwyu7WfuKMAzg=";
};
postUnpack = ''
@@ -64,6 +71,37 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
versionCheckProgram = "${placeholder "out"}/bin/stockfish";
versionCheckProgramArg = "--help";
passthru = {
updateScript = _experimental-update-script-combinators.sequence [
(nix-update-script {
extraArgs = [ "--version-regex=^sf_([\\d.]+)$" ];
})
(lib.getExe (writeShellApplication {
name = "${pname}-nnue-updater";
runtimeInputs = [
nix
gnugrep
];
runtimeEnv = {
PNAME = pname;
PKG_FILE = builtins.toString ./package.nix;
NNUE_BIG_FILE = nnueBigFile;
NNUE_BIG_HASH = nnueBigHash;
NNUE_SMALL_FILE = nnueSmallFile;
NNUE_SMALL_HASH = nnueSmallHash;
};
text = builtins.readFile ./update.bash;
}))
];
};
meta = with lib; {
homepage = "https://stockfishchess.org/";
description = "Strong open source chess engine";
+20
View File
@@ -0,0 +1,20 @@
new_src="$(nix-build --attr "pkgs.$PNAME.src" --no-out-link)"
new_nnue_big_file="$(grep --perl-regexp --only-matching 'EvalFileDefaultNameBig "\Knn-(\w+).nnue' "$new_src/src/evaluate.h")"
new_nnue_small_file="$(grep --perl-regexp --only-matching 'EvalFileDefaultNameSmall "\Knn-(\w+).nnue' "$new_src/src/evaluate.h")"
new_nnue_big_hash="$(
nix hash convert --hash-algo sha256 "$(
nix-prefetch-url --type sha256 "https://tests.stockfishchess.org/api/nn/$new_nnue_big_file"
)"
)"
new_nnue_small_hash="$(
nix hash convert --hash-algo sha256 "$(
nix-prefetch-url --type sha256 "https://tests.stockfishchess.org/api/nn/$new_nnue_small_file"
)"
)"
pkg_body="$(<"$PKG_FILE")"
pkg_body="${pkg_body//"$NNUE_BIG_FILE"/"$new_nnue_big_file"}"
pkg_body="${pkg_body//"$NNUE_BIG_HASH"/"$new_nnue_big_hash"}"
pkg_body="${pkg_body//"$NNUE_SMALL_FILE"/"$new_nnue_small_file"}"
pkg_body="${pkg_body//"$NNUE_SMALL_HASH"/"$new_nnue_small_hash"}"
echo "$pkg_body" >"$PKG_FILE"
+3 -3
View File
@@ -6,18 +6,18 @@
buildGoModule rec {
pname = "storj-uplink";
version = "1.128.4";
version = "1.130.6";
src = fetchFromGitHub {
owner = "storj";
repo = "storj";
rev = "v${version}";
hash = "sha256-7CH//aZ7DOXIP6A1gAZpiFO55LrLtBhvtZl/tVhYl8g=";
hash = "sha256-5IFMIiDP+HmR/yc7OQjs23lO5Cw12lZBsD8oIo2CaLE=";
};
subPackages = [ "cmd/uplink" ];
vendorHash = "sha256-CTcFTEKj5s43OlrIC7lOh3Lh/6k8/Igckv0zwrdGKbE=";
vendorHash = "sha256-PnRnnl3uFs889eYQbD+oNvDtJgNepNIJ90KTjnGthI8=";
ldflags = [
"-s"
+38
View File
@@ -0,0 +1,38 @@
{
stdenv,
lib,
fetchFromGitHub,
cmake,
pkg-config,
isa-l,
zlib,
}:
stdenv.mkDerivation (self: {
pname = "strobealign";
version = "0.16.1";
src = fetchFromGitHub {
owner = "ksahlin";
repo = "strobealign";
tag = "v${self.version}";
hash = "sha256-RZxIT6iwanRuPk2sWv/QRkUaPMdterOKCo30FPZHC8o=";
};
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
zlib
isa-l
];
meta = {
description = "Read aligner for short reads";
mainProgram = "strobealign";
license = lib.licenses.mit;
homepage = "https://github.com/ksahlin/strobealign";
maintainers = [ lib.maintainers.jbedo ];
platforms = lib.platforms.unix;
};
})
+68
View File
@@ -0,0 +1,68 @@
{
lib,
python3Packages,
fetchFromGitHub,
libclang,
versionCheckHook,
}:
python3Packages.buildPythonApplication rec {
pname = "style50";
version = "2.10.4";
pyproject = true;
src = fetchFromGitHub {
owner = "cs50";
repo = "style50";
tag = "v${version}";
hash = "sha256-59V3QZMYH5edBXv1GNdoaQxerDfKmLKUZ7VL3cvDvuE=";
};
build-system = [
python3Packages.setuptools
];
dependencies = with python3Packages; [
autopep8
icdiff
jinja2
jsbeautifier
pycodestyle
python-magic
termcolor
];
preFixup = ''
makeWrapperArgs+=(--prefix PATH : ${
lib.makeBinPath [
libclang # clang-format
]
})
'';
pythonRelaxDeps = [
"pycodestyle"
];
pythonRemoveDeps = [
"clang-format"
];
pythonImportsCheck = [ "style50" ];
nativeCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "--version";
# no python tests
meta = {
description = "Tool for checking code against the CS50 style guide";
homepage = "https://cs50.readthedocs.io/style50/";
downloadPage = "https://github.com/cs50/style50";
changelog = "https://github.com/cs50/style50/releases/tag/v${version}";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ ethancedwards8 ];
mainProgram = "style50";
};
}
+2 -17
View File
@@ -1,6 +1,5 @@
{
curl,
esbuild,
fetchFromGitHub,
git,
jq,
@@ -15,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "vencord";
version = "1.12.2";
version = "1.12.3";
src = fetchFromGitHub {
owner = "Vendicated";
repo = "Vencord";
rev = "v${finalAttrs.version}";
hash = "sha256-a4lbeuXEHDMDko8wte7jUdJ0yUcjfq3UPQAuSiz1UQU=";
hash = "sha256-fOZXgyA61G+D7otNNO8d89ghR/GiYPJ7vSZtj9TeGuU=";
};
pnpmDeps = pnpm_10.fetchDeps {
@@ -36,20 +35,6 @@ stdenv.mkDerivation (finalAttrs: {
];
env = {
ESBUILD_BINARY_PATH = lib.getExe (
esbuild.overrideAttrs (
final: _: {
version = "0.25.1";
src = fetchFromGitHub {
owner = "evanw";
repo = "esbuild";
rev = "v${final.version}";
hash = "sha256-vrhtdrvrcC3dQoJM6hWq6wrGJLSiVww/CNPlL1N5kQ8=";
};
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
}
)
);
VENCORD_REMOTE = "${finalAttrs.src.owner}/${finalAttrs.src.repo}";
VENCORD_HASH = "${finalAttrs.version}";
};
+38
View File
@@ -0,0 +1,38 @@
{
lib,
fetchCrate,
rustPlatform,
pkg-config,
pipewire,
}:
rustPlatform.buildRustPackage rec {
pname = "wiremix";
version = "0.4.0";
src = fetchCrate {
inherit pname version;
hash = "sha256-LtwKG3phUuNgwXlAJMhZkOenYHGyXGRhNcr6+WKxVz0=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-Qc+VubikiYox1zqy2HO3InRI8aFT8AorrFZBQhNGFOQ=";
nativeBuildInputs = [
pkg-config
rustPlatform.bindgenHook
];
buildInputs = [ pipewire ];
meta = {
description = "Simple TUI mixer for PipeWire";
mainProgram = "wiremix";
homepage = "https://github.com/tsowell/wiremix";
license = with lib.licenses; [
asl20
mit
];
maintainers = with lib.maintainers; [ tsowell ];
platforms = lib.platforms.linux;
};
}
+2 -2
View File
@@ -15,13 +15,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "zsh-forgit";
version = "25.05.0";
version = "25.06.0";
src = fetchFromGitHub {
owner = "wfxr";
repo = "forgit";
tag = finalAttrs.version;
hash = "sha256-U+MtgunPEmo/kv/lQI2BBi2WUBgt3wFkaUdfRzJWoGQ=";
hash = "sha256-D1we3pOPXNsK8KgEaRBAmD5eH1i2ud4zX1GwYbOyZvY=";
};
strictDeps = true;
@@ -2,6 +2,7 @@
stdenv,
lib,
mkXfceDerivation,
python3,
wayland-scanner,
glib,
gtk3,
@@ -22,12 +23,13 @@
mkXfceDerivation {
category = "xfce";
pname = "libxfce4windowing";
version = "4.20.2";
version = "4.20.3";
sha256 = "sha256-Xw1hs854K5dZCAYoBMoqJzdSxPRFUYqEpWxg4DLSK5Q=";
sha256 = "sha256-l58cTz28UPSVfoIpjBCoSwcqdUJfG9e4UlhVYPyEeAs=";
nativeBuildInputs =
[
python3
wayland-scanner
]
++ lib.optionals withIntrospection [
@@ -46,6 +48,10 @@ mkXfceDerivation {
wlr-protocols
];
postPatch = ''
patchShebangs xdt-gen-visibility
'';
meta = {
description = "Windowing concept abstraction library for X11 and Wayland";
license = lib.licenses.lgpl21Plus;
@@ -1,73 +1,73 @@
{
"version": "3.32.0",
"engineVersion": "18818009497c581ede5d8a3b8b833b81d00cebb7",
"version": "3.32.2",
"engineVersion": "109150893958777c8f2215f6cfd3e89e984e8dea",
"engineSwiftShaderHash": "sha256-ATVcuxqPHqHOWYyO7DoX9LdgUiO3INUi7m9Mc6ccc1M=",
"engineSwiftShaderRev": "d040a5bab638bf7c226235c95787ba6288bb6416",
"channel": "stable",
"engineHashes": {
"aarch64-linux": {
"aarch64-linux": "sha256-zGlgnVbNPZ9OX5VFxaajc8xqPKftzZMkyem2NLk8EH8=",
"x86_64-linux": "sha256-zGlgnVbNPZ9OX5VFxaajc8xqPKftzZMkyem2NLk8EH8="
"aarch64-linux": "sha256-l/7p9fPVPIx/CqT4xTUPQLlBU18aZSlimamELMgkAjY=",
"x86_64-linux": "sha256-l/7p9fPVPIx/CqT4xTUPQLlBU18aZSlimamELMgkAjY="
},
"x86_64-linux": {
"aarch64-linux": "sha256-TWwsPtAnkQzsvNLUd5Q3G80ALeh7nM/XV4M6rfBvUGY=",
"x86_64-linux": "sha256-TWwsPtAnkQzsvNLUd5Q3G80ALeh7nM/XV4M6rfBvUGY="
"aarch64-linux": "sha256-6shoelu1oOcTbzXlFcAOsVMF3b/3RZ2vHuMEXvKyzbo=",
"x86_64-linux": "sha256-6shoelu1oOcTbzXlFcAOsVMF3b/3RZ2vHuMEXvKyzbo="
}
},
"dartVersion": "3.8.0",
"dartVersion": "3.8.1",
"dartHash": {
"x86_64-linux": "sha256-/b6dNwqeMymHKI4cz2ggfVtcHWtdsrlVyEZ1Z2G0RKw=",
"aarch64-linux": "sha256-tXIeGM7n1lx9GOwOMEFapiW0sHBlhupx5NCAtFd73Pk=",
"x86_64-darwin": "sha256-wD9Z3J29N4ecWKmCetj5GnbTQ8LiJ1tZFEbPuG6ny5w=",
"aarch64-darwin": "sha256-IIFn6OTpTH8LzwZzF7V8yUrhHkjavMUWX7n62YEMABk="
"x86_64-linux": "sha256-3eE40VMwrPFD502lIaz+CkD7mBnSI/WqJ3C4DVQ01Z4=",
"aarch64-linux": "sha256-0GXCO00ar5532h+cXBEIe8BhGVKOuGuoPzr1M00muh4=",
"x86_64-darwin": "sha256-S3iGDVLollApke2SnXAcV919qsDTVmz5Gf9fTletr00=",
"aarch64-darwin": "sha256-haHQks9N1mBIqRsYg9sOLw7ra7gC708gsTWfKxvIK1c="
},
"flutterHash": "sha256-Wk84RfnPvPVVnnbwGcnHIcRnu3Kizo2AkRQbVSEw+1M=",
"flutterHash": "sha256-bL+WRW9tOLEXeAwZKgwN4y8Vj6s6FOCUm3JJilLCkY8=",
"artifactHashes": {
"android": {
"aarch64-darwin": "sha256-+YUzIG/qUFb4X2ftR6Gf0h1mt/5Dy59B7QD09X1XVYY=",
"aarch64-linux": "sha256-lZIo8AGzrXant29kfiOKlfQ0SJAPXpsdZCaKfqxn0zA=",
"x86_64-darwin": "sha256-+YUzIG/qUFb4X2ftR6Gf0h1mt/5Dy59B7QD09X1XVYY=",
"x86_64-linux": "sha256-lZIo8AGzrXant29kfiOKlfQ0SJAPXpsdZCaKfqxn0zA="
"aarch64-darwin": "sha256-VW1JzE6NfpGk2WFyPnvgkhlc+/dgkVtfPJ3HLF2SxjM=",
"aarch64-linux": "sha256-aNZyIBedC35v2/lePY1UcJYP3Wh0JccPrsABHlhdoOI=",
"x86_64-darwin": "sha256-VW1JzE6NfpGk2WFyPnvgkhlc+/dgkVtfPJ3HLF2SxjM=",
"x86_64-linux": "sha256-aNZyIBedC35v2/lePY1UcJYP3Wh0JccPrsABHlhdoOI="
},
"fuchsia": {
"aarch64-darwin": "sha256-F4uNyPIt6FSVCSOjR6mtgHHMMcJd3pAdT4uEiBJSASk=",
"aarch64-linux": "sha256-F4uNyPIt6FSVCSOjR6mtgHHMMcJd3pAdT4uEiBJSASk=",
"x86_64-darwin": "sha256-F4uNyPIt6FSVCSOjR6mtgHHMMcJd3pAdT4uEiBJSASk=",
"x86_64-linux": "sha256-F4uNyPIt6FSVCSOjR6mtgHHMMcJd3pAdT4uEiBJSASk="
"aarch64-darwin": "sha256-8Jo1dP2uugp75BjQvvgvxnCJI0oyLlClJ2YaaiSkJzs=",
"aarch64-linux": "sha256-8Jo1dP2uugp75BjQvvgvxnCJI0oyLlClJ2YaaiSkJzs=",
"x86_64-darwin": "sha256-8Jo1dP2uugp75BjQvvgvxnCJI0oyLlClJ2YaaiSkJzs=",
"x86_64-linux": "sha256-8Jo1dP2uugp75BjQvvgvxnCJI0oyLlClJ2YaaiSkJzs="
},
"ios": {
"aarch64-darwin": "sha256-HlGXG7hyi4oCdN4bGP6GYa++rTruZC7v+laR4733xS4=",
"aarch64-linux": "sha256-HlGXG7hyi4oCdN4bGP6GYa++rTruZC7v+laR4733xS4=",
"x86_64-darwin": "sha256-HlGXG7hyi4oCdN4bGP6GYa++rTruZC7v+laR4733xS4=",
"x86_64-linux": "sha256-HlGXG7hyi4oCdN4bGP6GYa++rTruZC7v+laR4733xS4="
"aarch64-darwin": "sha256-75DZ9m1yxybk/xP2UMDr/thBtP2q3iOHPakxxHRbIWs=",
"aarch64-linux": "sha256-75DZ9m1yxybk/xP2UMDr/thBtP2q3iOHPakxxHRbIWs=",
"x86_64-darwin": "sha256-75DZ9m1yxybk/xP2UMDr/thBtP2q3iOHPakxxHRbIWs=",
"x86_64-linux": "sha256-75DZ9m1yxybk/xP2UMDr/thBtP2q3iOHPakxxHRbIWs="
},
"linux": {
"aarch64-darwin": "sha256-y/xxUQK/9GeXjMTUPZSGhfP83rJzCm1Pd2PMjnAHdnk=",
"aarch64-linux": "sha256-y/xxUQK/9GeXjMTUPZSGhfP83rJzCm1Pd2PMjnAHdnk=",
"x86_64-darwin": "sha256-P5UQiY4QHLJQMmTpTfTFfh6QrqelhWyaGpSXNtM8vJE=",
"x86_64-linux": "sha256-P5UQiY4QHLJQMmTpTfTFfh6QrqelhWyaGpSXNtM8vJE="
"aarch64-darwin": "sha256-7gGCUYERyMdga0bgxWo2ZCn9yUwIKKBOuzXvNfWS6Bw=",
"aarch64-linux": "sha256-7gGCUYERyMdga0bgxWo2ZCn9yUwIKKBOuzXvNfWS6Bw=",
"x86_64-darwin": "sha256-VlkWtHFJc8AbzvQbEL8IzXNpkrz4hIR7yK+gRHH1Qtc=",
"x86_64-linux": "sha256-VlkWtHFJc8AbzvQbEL8IzXNpkrz4hIR7yK+gRHH1Qtc="
},
"macos": {
"aarch64-darwin": "sha256-FkvjRiKWa/FUITdwK1ldLCcsfjs8nrH7L0mXGHnVIko=",
"aarch64-linux": "sha256-FkvjRiKWa/FUITdwK1ldLCcsfjs8nrH7L0mXGHnVIko=",
"x86_64-darwin": "sha256-FkvjRiKWa/FUITdwK1ldLCcsfjs8nrH7L0mXGHnVIko=",
"x86_64-linux": "sha256-FkvjRiKWa/FUITdwK1ldLCcsfjs8nrH7L0mXGHnVIko="
"aarch64-darwin": "sha256-fonn1C8JJ/Dpid6eyzqgTw5jm4dgdt1KF+sd0d5wRNc=",
"aarch64-linux": "sha256-fonn1C8JJ/Dpid6eyzqgTw5jm4dgdt1KF+sd0d5wRNc=",
"x86_64-darwin": "sha256-fonn1C8JJ/Dpid6eyzqgTw5jm4dgdt1KF+sd0d5wRNc=",
"x86_64-linux": "sha256-fonn1C8JJ/Dpid6eyzqgTw5jm4dgdt1KF+sd0d5wRNc="
},
"universal": {
"aarch64-darwin": "sha256-bt/UiY3t1wZUnpMo1uVQPdlG/7X+OrAOZRXIaXKH3Ls=",
"aarch64-linux": "sha256-NShVNyK6Cx5bddhv6hg3rM+QPczrm2MmHCgb14h78SA=",
"x86_64-darwin": "sha256-zXSufTmlyaHM0fJinirUfB3XjD3dzKFD6iyhUADsyQY=",
"x86_64-linux": "sha256-MQw71FYYuLKd60cwMddAjVe9vgwx8MR4xVe0Z9J7uAo="
"aarch64-darwin": "sha256-XXktfE+Rx2kj+4PYlWZmfHCRheWDF1K+kCo1McnjZao=",
"aarch64-linux": "sha256-jRJ5OLuoV0b/Rd7SpYmyjCL7ED8iWjawvS8ZMAqVowE=",
"x86_64-darwin": "sha256-lTudK0BzZznIOAc2bTildCLg0ZeLJX19suhG4ZgH1Eo=",
"x86_64-linux": "sha256-M41bQrf1amzW1QGkq37gNgN5zh3v4/+OuBxp4CWUSqI="
},
"web": {
"aarch64-darwin": "sha256-dpMJQsUd98X+tmUnqRZQ1o5g334i7dyxBNvg2znJeaE=",
"aarch64-linux": "sha256-dpMJQsUd98X+tmUnqRZQ1o5g334i7dyxBNvg2znJeaE=",
"x86_64-darwin": "sha256-dpMJQsUd98X+tmUnqRZQ1o5g334i7dyxBNvg2znJeaE=",
"x86_64-linux": "sha256-dpMJQsUd98X+tmUnqRZQ1o5g334i7dyxBNvg2znJeaE="
"aarch64-darwin": "sha256-l6/ZekcmlueBP7DdAuQpjGuYc6MFlMSWW4tnU2PixNU=",
"aarch64-linux": "sha256-l6/ZekcmlueBP7DdAuQpjGuYc6MFlMSWW4tnU2PixNU=",
"x86_64-darwin": "sha256-l6/ZekcmlueBP7DdAuQpjGuYc6MFlMSWW4tnU2PixNU=",
"x86_64-linux": "sha256-l6/ZekcmlueBP7DdAuQpjGuYc6MFlMSWW4tnU2PixNU="
},
"windows": {
"x86_64-darwin": "sha256-3ZfYqlyjBaBaZjxp9k2DCsD4QZL/+fbXfCFxX3i4Q/Q=",
"x86_64-linux": "sha256-3ZfYqlyjBaBaZjxp9k2DCsD4QZL/+fbXfCFxX3i4Q/Q="
"x86_64-darwin": "sha256-zxVV76R80bRqzJaWCBj9RlLkpB4HmX1iTYcdLAbiqT4=",
"x86_64-linux": "sha256-zxVV76R80bRqzJaWCBj9RlLkpB4HmX1iTYcdLAbiqT4="
}
},
"pubspecLock": {
@@ -266,11 +266,11 @@
"dependency": "direct main",
"description": {
"name": "dds",
"sha256": "4e206d308bd94595af42e4a561948ef8dba211c9db47f4360c48a5a1f8b44cb5",
"sha256": "76fc5140ce4e8922711bbe6dfd3713283ecc7f386c52fc7f594cd5f3e6b80633",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "5.0.0"
"version": "5.0.2"
},
"dds_service_extensions": {
"dependency": "direct main",
@@ -286,11 +286,11 @@
"dependency": "direct main",
"description": {
"name": "devtools_shared",
"sha256": "fa71f07006dfdf3f226ec76db95a4bad156820c081452cc99d18a4f291001bee",
"sha256": "659e2d65aa5ef5c3551163811c5c6fa1b973b3df80d8cac6f618035edcdc1096",
"url": "https://pub.dev"
},
"source": "hosted",
"version": "11.2.0"
"version": "11.2.1"
},
"dtd": {
"dependency": "direct main",
@@ -201,7 +201,7 @@ stdenv.mkDerivation (
"python"
];
separateDebugInfo = true;
separateDebugInfo = stdenv.buildPlatform.is64bit; # OOMs on 32 bit
postInstall =
''
File diff suppressed because it is too large Load Diff
@@ -349,6 +349,9 @@ stdenv.mkDerivation (finalAttrs: {
++ optionals (pythonAtLeast "3.13") [
./3.13/virtualenv-permissions.patch
]
++ optionals (pythonAtLeast "3.14") [
./3.14/CVE-2025-4517.patch
]
++ optionals mimetypesSupport [
# Make the mimetypes module refer to the right file
./mimetypes.patch
@@ -52,7 +52,7 @@ buildPythonPackage rec {
# backport test fix for behavior changes in libxml 2.14.3
(fetchpatch {
url = "https://git.launchpad.net/beautifulsoup/patch/?id=53d328406ec8c37c0edbd00ace3782be63e2e7e5";
excludes = ["CHANGELOG"];
excludes = [ "CHANGELOG" ];
hash = "sha256-RtavbpnfT6x0A8L3tAvCXwKUpty1ASPGJKdks7evBr8=";
})
];
@@ -95,6 +95,9 @@ buildPythonPackage rec {
[
# requires network access
"test_gen_check_output"
# broken on Python 3.13.4
# FIXME: remove this when fixed upstream
"test_simple_format[pep_701]"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# fails on darwin
@@ -2,6 +2,7 @@
lib,
buildPythonPackage,
fetchPypi,
fetchpatch,
pythonOlder,
# build-system
@@ -38,6 +39,16 @@ buildPythonPackage rec {
hash = "sha256-MHw2aUKMU2KqsnyKEmCqj0fE6R04kfSL4BQXONjQU+E=";
};
# backport patch to fix tests with Python 3.13.4
# FIXME: remove in next update
patches = [
(fetchpatch {
url = "https://github.com/networkx/networkx/commit/d85b04a8b9619580d8901f35400414f612c83113.patch";
includes = [ "networkx/generators/lattice.py" ];
hash = "sha256-6y/aJBDgNkUzmQ6o52CGVVzqoQgkCEXA4iAXhv1cS0c=";
})
];
nativeBuildInputs = [ setuptools ];
optional-dependencies = {
@@ -9,14 +9,14 @@
buildPythonPackage rec {
pname = "pyngrok";
version = "7.2.9";
version = "7.2.11";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchPypi {
inherit pname version;
hash = "sha256-Ixt/1Kel6CZajWFQ07o8gtnf/UCe2u23LE5isy3kT5E=";
hash = "sha256-n4iQOJvZWrwA7KE4Rsj0haDbZmfcBZh+uY/eNDrfslo=";
};
build-system = [
+20
View File
@@ -7,6 +7,8 @@
qtwebsockets,
minizinc,
makeWrapper,
copyDesktopItems,
makeDesktopItem,
}:
let
@@ -31,12 +33,30 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
qmake
makeWrapper
copyDesktopItems
];
buildInputs = [
qtbase
qtwebsockets
];
desktopItems = [
(makeDesktopItem {
name = "minizinc";
desktopName = "MiniZincIDE";
icon = "minizinc";
comment = meta.description;
exec = "MiniZincIDE";
type = "Application";
terminal = false;
categories = [
"Science"
"Development"
"Education"
];
})
];
sourceRoot = "${src.name}/MiniZincIDE";
dontWrapQtApps = true;
@@ -0,0 +1,23 @@
{
lib,
anki-utils,
fetchFromGitHub,
nix-update-script,
}:
anki-utils.buildAnkiAddon (finalAttrs: {
pname = "adjust-sound-volume";
version = "0.0.6";
src = fetchFromGitHub {
owner = "mnogu";
repo = "adjust-sound-volume";
rev = "v${finalAttrs.version}";
hash = "sha256-6reIUz+tHKd4KQpuofLa/tIL5lCloj3yODZ8Cz29jFU=";
};
passthru.updateScript = nix-update-script { };
meta = {
description = "Add a new menu item for adjusting the sound volume";
homepage = "https://github.com/mnogu/adjust-sound-volume";
license = lib.licenses.agpl3Plus;
maintainers = with lib.maintainers; [ junestepp ];
};
})
@@ -0,0 +1,27 @@
{
lib,
anki-utils,
fetchFromSourcehut,
nix-update-script,
}:
anki-utils.buildAnkiAddon (finalAttrs: {
pname = "anki-connect";
version = "24.7.25.0";
src = fetchFromSourcehut {
owner = "~foosoft";
repo = "anki-connect";
rev = finalAttrs.version;
hash = "sha256-N98EoCE/Bx+9QUQVeU64FXHXSek7ASBVv1b9ltJ4G1U=";
};
sourceRoot = "${finalAttrs.src.name}/plugin";
passthru.updateScript = nix-update-script { };
meta = {
description = ''
Enable external applications such as Yomichan to communicate
with Anki over a simple HTTP API
'';
homepage = "https://foosoft.net/projects/anki-connect/";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ junestepp ];
};
})
+126
View File
@@ -0,0 +1,126 @@
{
lib,
stdenv,
symlinkJoin,
lndir,
formats,
runCommand,
}:
{
buildAnkiAddon = lib.extendMkDerivation {
constructDrv = stdenv.mkDerivation;
extendDrvArgs =
finalAttrs:
{
pname,
version,
src,
sourceRoot ? "",
configurePhase ? ''
runHook preConfigure
runHook postConfigure
'',
buildPhase ? ''
runHook preBuild
runHook postBuild
'',
dontPatchELF ? true,
dontStrip ? true,
nativeBuildInputs ? [ ],
passthru ? { },
meta ? { },
# Script run after "user_files" folder is populated.
# Used when an add-on needs to process and change "user_files" based
# on what the user added to it.
processUserFiles ? "",
...
}:
{
inherit
version
src
sourceRoot
configurePhase
buildPhase
dontPatchELF
dontStrip
nativeBuildInputs
;
pname = "anki-addon-${pname}";
installPrefix = "share/anki/addons/${pname}";
installPhase = ''
runHook preInstall
mkdir -p "$out/$installPrefix"
find . -mindepth 1 -maxdepth 1 | xargs -d'\n' mv -t "$out/$installPrefix/"
runHook postInstall
'';
passthru = {
withConfig =
{
# JSON add-on config. The available options for an add-on are in its
# config.json file.
# See https://addon-docs.ankiweb.net/addon-config.html#config-json
config ? { },
# Path to a folder to be merged with the add-on "user_files" folder.
# See https://addon-docs.ankiweb.net/addon-config.html#user-files.
userFiles ? null,
}:
let
metaConfigFormat = formats.json { };
addonMetaConfig = metaConfigFormat.generate "meta.json" { inherit config; };
in
symlinkJoin {
pname = "${finalAttrs.pname}-with-config";
inherit (finalAttrs) version meta;
paths = [
finalAttrs.finalPackage
];
postBuild = ''
cd $out/${finalAttrs.installPrefix}
rm -f meta.json
ln -s ${addonMetaConfig} meta.json
mkdir -p user_files
${
if (userFiles != null) then
''
${lndir}/bin/lndir -silent "${userFiles}" user_files
''
else
""
}
${processUserFiles}
'';
};
} // passthru;
meta = {
platforms = lib.platforms.all;
} // meta;
};
};
buildAnkiAddonsDir =
addonPackages:
let
addonDirs = map (pkg: "${pkg}/share/anki/addons") addonPackages;
addons = lib.concatMapStringsSep " " (p: "${p}/*") addonDirs;
in
runCommand "anki-addons" { } ''
mkdir $out
[[ '${addons}' ]] || exit 0
for addon in ${addons}; do
ln -s "$addon" $out/
done
'';
}
+18
View File
@@ -0,0 +1,18 @@
{
callPackage,
}:
{
adjust-sound-volume = callPackage ./adjust-sound-volume { };
anki-connect = callPackage ./anki-connect { };
local-audio-yomichan = callPackage ./local-audio-yomichan { };
passfail2 = callPackage ./passfail2 { };
recolor = callPackage ./recolor { };
reviewer-refocus-card = callPackage ./reviewer-refocus-card { };
yomichan-forvo-server = callPackage ./yomichan-forvo-server { };
}
@@ -0,0 +1,73 @@
{
lib,
anki-utils,
fetchFromGitHub,
python3,
nix-update-script,
}:
anki-utils.buildAnkiAddon (finalAttrs: {
pname = "local-audio-yomichan";
version = "0-unstable-2025-04-26";
src = fetchFromGitHub {
owner = "yomidevs";
repo = "local-audio-yomichan";
rev = "34750f1d8ca1cb473128fea7976a4d981e5e78a4";
sparseCheckout = [ "plugin" ];
hash = "sha256-2gyggcvxParay+1B7Sg2COKyocoxaRO1WTz+ymdRp4w=";
};
sourceRoot = "${finalAttrs.src.name}/plugin";
processUserFiles = ''
# Addon will try to load extra stuff unless Python package name is "plugin".
temp=$(mktemp -d)
ln -s $PWD $temp/plugin
# Addoon expects `user_files` dir at `$XDG_DATA_HOME/local-audio-yomichan`
ln -s $PWD/user_files $temp/local-audio-yomichan
PYTHONPATH=$temp \
WO_ANKI=1 \
XDG_DATA_HOME=$temp \
${lib.getExe python3} -c \
"from plugin import db_utils; \
db_utils.init_db()"
'';
passthru.updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
meta = {
description = "Run a local audio server for Yomitan";
longDescription = ''
This add-on must be configured with an audio collection.
Example:
```nix
pkgs.ankiAddons.local-audio-yomichan.withConfig {
userFiles =
let
audio-collection =
pkgs.runCommand "local-yomichan-audio-collection"
{
outputHashMode = "recursive";
outputHash = "sha256-NxbcXh2SDPfCd+ZHAWT5JdxRecNbT4Xpo0pxX5/DOfo=";
src = pkgs.requireFile {
name = "local-yomichan-audio-collection-2023-06-11-opus.tar.xz";
url = "https://github.com/yomidevs/local-audio-yomichan?tab=readme-ov-file#steps";
sha256 = "1xsxp8iggklv77rj972mqaa1i8f9hvr3ir0r2mwfqcdz4q120hr1";
};
}
'''
mkdir -p $out
cd $out
tar -xf "$src"
''';
in
"''${audio-collection}/user_files";
}
```
'';
homepage = "https://github.com/yomidevs/local-audio-yomichan";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ junestepp ];
};
})
@@ -0,0 +1,34 @@
{
lib,
anki-utils,
fetchFromGitHub,
nix-update-script,
}:
anki-utils.buildAnkiAddon (finalAttrs: {
pname = "passfail2";
version = "0.3.0-unstable-2024-10-17";
src = fetchFromGitHub {
owner = "lambdadog";
repo = "passfail2";
rev = "d5313e4f1217e968b36edbc0a4fe92386209ffe6";
hash = "sha256-HMe6/fHpYj/MN0dUFj3W71vK7qqcp9l1xm8SAiKkJLs=";
};
buildPhase = ''
runHook preBuild
substitute build_info.py.in build_info.py \
--replace-fail '$version' '"${finalAttrs.version}"'
runHook postBuild
'';
passthru.updateScript = nix-update-script { };
meta = {
description = ''
Replaces the default Anki review buttons with only two options:
Fail and Pass
'';
homepage = "https://github.com/lambdadog/passfail2";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ junestepp ];
};
})
@@ -0,0 +1,27 @@
{
lib,
anki-utils,
fetchFromGitHub,
nix-update-script,
}:
anki-utils.buildAnkiAddon (finalAttrs: {
pname = "recolor";
version = "3.1";
src = fetchFromGitHub {
owner = "AnKing-VIP";
repo = "AnkiRecolor";
rev = finalAttrs.version;
sparseCheckout = [ "src/addon" ];
hash = "sha256-28DJq2l9DP8O6OsbNQCZ0pm4S6CQ3Yz0Vfvlj+iQw8Y=";
};
sourceRoot = "${finalAttrs.src.name}/src/addon";
passthru.updateScript = nix-update-script { };
meta = {
description = "ReColor your Anki desktop to whatever aesthetic you like";
homepage = "https://github.com/AnKing-VIP/AnkiRecolor";
# No license file, but it can be assumed to be AGPL3 based on
# https://ankiweb.net/account/terms.
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ junestepp ];
};
})
@@ -0,0 +1,30 @@
{
lib,
anki-utils,
fetchFromGitHub,
nix-update-script,
}:
anki-utils.buildAnkiAddon (finalAttrs: {
pname = "reviewer-refocus-card";
version = "0-unstable-2022-12-24";
src = fetchFromGitHub {
owner = "glutanimate";
repo = "anki-addons-misc";
rev = "7b981836e0a6637a1853f3e8d73d022ab95fed31";
sparseCheckout = [ "src/reviewer_refocus_card" ];
hash = "sha256-181hyc4ED+0lBzn1FnrBvNIYIUQF8xEDB3uHK6SkpHw=";
};
sourceRoot = "${finalAttrs.src.name}/src/reviewer_refocus_card";
passthru.updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
meta = {
description = ''
Set focus to the card area, allowing you to scroll through your cards using
Page Up / Page Down, etc
'';
homepage = "https://github.com/glutanimate/anki-addons-misc";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [ junestepp ];
};
})
@@ -0,0 +1,25 @@
{
lib,
anki-utils,
fetchFromGitHub,
nix-update-script,
}:
anki-utils.buildAnkiAddon {
pname = "yomichan-forvo-server";
version = "0-unstable-2024-10-21";
src = fetchFromGitHub {
owner = "jamesnicolas";
repo = "yomichan-forvo-server";
rev = "364fc6d5d10969f516e0fa283460dfaf08c98e15";
hash = "sha256-Jpee9hkXCiBmSW7hzJ1rAg45XVIiLC8WENc09+ySFVI=";
};
passthru.updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
meta = {
description = "Audio server for yomichan that scrapes forvo for audio files";
homepage = "https://github.com/jamesnicolas/yomichan-forvo-server";
license = lib.licenses.unlicense;
maintainers = with lib.maintainers; [ junestepp ];
};
}
+5
View File
@@ -10,6 +10,7 @@
lame,
mpv-unwrapped,
ninja,
callPackage,
nixosTests,
nodejs,
jq,
@@ -91,6 +92,8 @@ python3.pkgs.buildPythonApplication rec {
./patches/disable-auto-update.patch
./patches/remove-the-gl-library-workaround.patch
./patches/skip-formatting-python-code.patch
# Used in with-addons.nix
./patches/allow-setting-addons-folder.patch
];
inherit cargoDeps;
@@ -269,6 +272,7 @@ python3.pkgs.buildPythonApplication rec {
'';
passthru = {
withAddons = ankiAddons: callPackage ./with-addons.nix { inherit ankiAddons; };
tests.anki-sync-server = nixosTests.anki-sync-server;
};
@@ -292,6 +296,7 @@ python3.pkgs.buildPythonApplication rec {
inherit (mesa.meta) platforms;
maintainers = with maintainers; [
euank
junestepp
oxij
];
# Reported to crash at launch on darwin (as of 2.1.65)
@@ -0,0 +1,15 @@
diff --git a/qt/aqt/profiles.py b/qt/aqt/profiles.py
index 469908c1b2..34612d6e08 100644
--- a/qt/aqt/profiles.py
+++ b/qt/aqt/profiles.py
@@ -310,7 +310,9 @@ def profileFolder(self, create: bool = True) -> str:
return path
def addonFolder(self) -> str:
- return self._ensureExists(os.path.join(self.base, "addons21"))
+ path = Path(os.environ.get("ANKI_ADDONS") or Path(self.base) / "addons21")
+ path.mkdir(parents=True, exist_ok=True)
+ return str(path.resolve())
def backupFolder(self) -> str:
return self._ensureExists(os.path.join(self.profileFolder(), "backups"))
+107
View File
@@ -0,0 +1,107 @@
{
lib,
symlinkJoin,
makeWrapper,
anki,
anki-utils,
writeTextDir,
ankiAddons ? [ ],
}:
/*
`ankiAddons`
: A set of Anki add-ons to be installed. Here's a an example:
~~~
pkgs.anki.withAddons [
# When the add-on is already available in nixpkgs
pkgs.ankiAddons.anki-connect
# When the add-on is not available in nixpkgs
(pkgs.anki-utils.buildAnkiAddon (finalAttrs: {
pname = "recolor";
version = "3.1";
src = pkgs.fetchFromGitHub {
owner = "AnKing-VIP";
repo = "AnkiRecolor";
rev = finalAttrs.version;
sparseCheckout = [ "src/addon" ];
hash = "sha256-28DJq2l9DP8O6OsbNQCZ0pm4S6CQ3Yz0Vfvlj+iQw8Y=";
};
sourceRoot = "source/src/addon";
}))
# When the add-on needs to be configured
pkgs.ankiAddons.passfail2.withConfig {
config = {
again_button_name = "not quite";
good_button_name = "excellent";
};
user_files = ./dir-to-be-merged-into-addon-user-files-dir;
};
]
~~~
The original `anki` executable will be wrapped so that it uses the addons from
`ankiAddons`.
This only works with Anki versions patched to support the `ANKI_ADDONS` environment
variable. `pkgs.anki` has this, but `pkgs.anki-bin` does not.
*/
let
defaultAddons = [
(anki-utils.buildAnkiAddon {
pname = "nixos";
version = "1.0";
src = writeTextDir "__init__.py" ''
import aqt
from aqt.qt import QMessageBox
import json
def addons_dialog_will_show(dialog: aqt.addons.AddonsDialog) -> None:
dialog.setEnabled(False)
QMessageBox.information(
dialog,
"NixOS Info",
("These add-ons are managed by NixOS.<br>"
"See <a href='https://github.com/NixOS/nixpkgs/tree/master/pkgs/games/anki/with-addons.nix'>"
"github.com/NixOS/nixpkgs/tree/master/pkgs/games/anki/with-addons.nix</a>")
)
def addon_tried_to_write_config(module: str, conf: dict) -> None:
message_box = QMessageBox(
QMessageBox.Icon.Warning,
"NixOS Info",
(f"The add-on module: \"{module}\" tried to update its config.<br>"
"See <a href='https://github.com/NixOS/nixpkgs/tree/master/pkgs/games/anki/with-addons.nix'>"
"github.com/NixOS/nixpkgs/tree/master/pkgs/games/anki/with-addons.nix</a>"
" for how to configure add-ons managed by NixOS.")
)
message_box.setDetailedText(json.dumps(conf))
message_box.exec()
aqt.gui_hooks.addons_dialog_will_show.append(addons_dialog_will_show)
aqt.mw.addonManager.writeConfig = addon_tried_to_write_config
'';
meta.maintainers = with lib.maintainers; [ junestepp ];
})
];
in
symlinkJoin {
inherit (anki) version;
pname = "${anki.pname}-with-addons";
paths = [ anki ];
nativeBuildInputs = [ makeWrapper ];
postBuild = ''
wrapProgram $out/bin/anki \
--set ANKI_ADDONS "${anki-utils.buildAnkiAddonsDir (ankiAddons ++ defaultAddons)}"
'';
meta = builtins.removeAttrs anki.meta [
"name"
"outputsToInstall"
"position"
];
}
@@ -21,12 +21,17 @@ in
runCommand "${pname}-filtered-src"
{
nativeBuildInputs = [
(pkgsBuildBuild.rsync.override {
enableZstd = false;
enableXXHash = false;
enableOpenSSL = false;
enableLZ4 = false;
})
(
(pkgsBuildBuild.rsync.override {
enableZstd = false;
enableXXHash = false;
enableOpenSSL = false;
enableLZ4 = false;
}).overrideAttrs
{
doCheck = false;
}
)
];
}
''
+2 -2
View File
@@ -43,13 +43,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "prl-tools";
version = "20.3.1-55959";
version = "20.3.2-55975";
# 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-/J6NouI2htptG06Undeg1rUfbWUu6q/nV2P9D+sS7OA=";
hash = "sha256-eazDR+eSUcp81XdRfYRHIt7E4FNCEjsh0M0wYQQYmMQ=";
};
hardeningDisable = [
+8 -3
View File
@@ -12,6 +12,7 @@
postgresqlBuildExtension,
postgresqlTestExtension,
python3,
unstableGitUpdater,
}:
let
@@ -19,13 +20,13 @@ let
in
postgresqlBuildExtension (finalAttrs: {
pname = "omnigres";
version = "0-unstable-2025-05-16";
version = "0-unstable-2025-06-03";
src = fetchFromGitHub {
owner = "omnigres";
repo = "omnigres";
rev = "84f14792d80fb6fd60b680b7825245a8e7c5583e";
hash = "sha256-jOlHXl7ANhMwOPizd5KH+wYZmBNNkkIa9jbXZR8Xu28=";
rev = "d347be5ae1d79645ac277d19080eacba7b229cf8";
hash = "sha256-LKsH+aeLg7v2RfK80D3mgXdPB8jMIv5uFdf+3c5Z0vA=";
};
strictDeps = true;
@@ -75,6 +76,10 @@ postgresqlBuildExtension (finalAttrs: {
'';
};
passthru.updateScript = unstableGitUpdater {
hardcodeZeroVersion = true;
};
meta = {
description = "Postgres as a Business Operating System";
homepage = "https://docs.omnigres.org";
+3
View File
@@ -230,6 +230,7 @@ let
];
};
iconv = linkBootstrap { paths = [ "bin/iconv" ]; };
libiconv = linkBootstrap { paths = [ "include/iconv.h" ]; };
patch = linkBootstrap { paths = [ "bin/patch" ]; };
gnutar = linkBootstrap { paths = [ "bin/tar" ]; };
gawk = linkBootstrap {
@@ -486,6 +487,7 @@ in
diffutils
findutils
iconv
libiconv
patch
gnutar
gawk
@@ -501,6 +503,7 @@ in
inherit lib;
inherit (self) stdenvNoCC;
inherit (prevStage) curl;
inherit (config) rewriteURL;
};
gettext = super.gettext.overrideAttrs {
NIX_CFLAGS_COMPILE = "-DHAVE_ICONV=1"; # we clearly have iconv. what do you want?
+4 -1
View File
@@ -10,6 +10,8 @@
gnused,
xdg-utils,
dbus,
libGL,
libX11,
hwdata,
mangohud32,
addDriverRunpath,
@@ -20,7 +22,6 @@
ninja,
pkg-config,
unzip,
libX11,
wayland,
libXNVCtrl,
nlohmann_json,
@@ -138,6 +139,8 @@ stdenv.mkDerivation (finalAttrs: {
];
libdbus = dbus.lib;
libGL = libGL;
libX11 = libX11;
inherit hwdata;
})
];
@@ -11,8 +11,33 @@ index 7379af1..4eef3fe 100644
SPDLOG_ERROR("Could not load libdbus-1.so.3");
return false;
}
diff --git a/src/loaders/loader_glx.cpp b/src/loaders/loader_glx.cpp
index aa453b8..0f6479d 100644
--- a/src/loaders/loader_glx.cpp
+++ b/src/loaders/loader_glx.cpp
@@ -23,7 +23,7 @@ bool glx_loader::Load() {
handle = real_dlopen("glxtrace.so", RTLD_LAZY);
#endif
if (!handle)
- handle = real_dlopen("libGL.so.1", RTLD_LAZY);
+ handle = real_dlopen("@libGL@/lib/libGL.so.1", RTLD_LAZY);
if (!handle) {
SPDLOG_ERROR("Failed to open " MANGOHUD_ARCH " libGL.so.1: {}", dlerror());
return false;
diff --git a/src/loaders/loader_x11.cpp b/src/loaders/loader_x11.cpp
index 214fd50..2f08857 100644
--- a/src/loaders/loader_x11.cpp
+++ b/src/loaders/loader_x11.cpp
@@ -110,6 +110,6 @@ static std::shared_ptr<libx11_loader> loader;
std::shared_ptr<libx11_loader> get_libx11()
{
if (!loader)
- loader = std::make_shared<libx11_loader>("libX11.so.6");
+ loader = std::make_shared<libx11_loader>("@libX11@/lib/libX11.so.6");
return loader;
}
diff --git a/src/logging.cpp b/src/logging.cpp
index ca986d4..c4d99ea 100644
index 4ef7023..e24f6da 100644
--- a/src/logging.cpp
+++ b/src/logging.cpp
@@ -28,8 +28,12 @@ string exec(string command) {
+2
View File
@@ -992,6 +992,7 @@ mapAliases {
ledger_agent = ledger-agent; # Added 2024-01-07
lfs = dysk; # Added 2023-07-03
libAfterImage = throw "'libAfterImage' has been removed from nixpkgs, as it's no longer in development for a long time"; # Added 2024-06-01
libast = throw "'libast' has been removed due to lack of maintenance upstream."; # Added 2025-06-09
libav = throw "libav has been removed as it was insecure and abandoned upstream for over half a decade; please use FFmpeg"; # Added 2024-08-25
libav_0_8 = libav; # Added 2024-08-25
libav_11 = libav; # Added 2024-08-25
@@ -1166,6 +1167,7 @@ mapAliases {
lv_img_conv = throw "'lv_img_conv' has been removed from nixpkgs as it is broken"; # Added 2024-06-18
lxd = lib.warnOnInstantiate "lxd has been renamed to lxd-lts" lxd-lts; # Added 2024-04-01
lxd-unwrapped = lib.warnOnInstantiate "lxd-unwrapped has been renamed to lxd-unwrapped-lts" lxd-unwrapped-lts; # Added 2024-04-01
lxdvdrip = throw "'lxdvdrip' has been removed due to lack of upstream maintenance."; # Added 2025-06-09
lzma = throw "'lzma' has been renamed to/replaced by 'xz'"; # Converted to throw 2024-10-17
lzwolf = throw "'lzwolf' has been removed because it's no longer maintained upstream. Consider using 'ecwolf'"; # Added 2025-03-02
+2 -2
View File
@@ -1310,8 +1310,6 @@ with pkgs;
git-imerge = python3Packages.callPackage ../applications/version-management/git-imerge { };
git-machete = python3Packages.callPackage ../applications/version-management/git-machete { };
git-publish = python3Packages.callPackage ../applications/version-management/git-publish { };
git-recent = callPackage ../applications/version-management/git-recent {
@@ -14837,6 +14835,8 @@ with pkgs;
amoeba-data = callPackage ../games/amoeba/data.nix { };
anki = callPackage ../games/anki { };
anki-utils = callPackage ../games/anki/addons/anki-utils.nix { };
ankiAddons = recurseIntoAttrs (callPackage ../games/anki/addons { });
anki-bin = callPackage ../games/anki/bin.nix { };
anki-sync-server = callPackage ../games/anki/sync-server.nix { };
+1 -1
View File
@@ -166,7 +166,7 @@ mapAliases ({
cryptacular = throw "cryptacular was removed, because it was disabled on all python version since 3.6 and last updated in 2021"; # Added 2024-05-13
cryptography_vectors = "cryptography_vectors is no longer exposed in python*Packages because it is used for testing cryptography only."; # Added 2022-03-23
cufflinks = throw "cufflinks has removed, since it is abandoned and broken"; # added 2025-02-16
curve25519-donna = throw "unused leaf package with dead upstream repository and no release in 10 years"; # added 2025-05-21
curve25519-donna = throw "curve25519-donna was removed, since it is abandoned and unmaintained since 2015"; # added 2025-05-21
cx_Freeze = cx-freeze; # added 2023-08-02
cx_oracle = cx-oracle; # added 2024-01-03
d2to1 = throw "d2to1 is archived and no longer works with setuptools v68"; # added 2023-07-30