Merge staging-next into staging
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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. -->
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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).
|
||||
|
||||
|
||||
@@ -69,10 +69,19 @@ in
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
environment.etc."man_db.conf".text =
|
||||
let
|
||||
# We unfortunately can’t use the customized `cfg.package` when
|
||||
# cross‐compiling. 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;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
@@ -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
@@ -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>
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
|
||||
+10
-9
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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
|
||||
@@ -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" ""
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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",
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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=";
|
||||
|
||||
@@ -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; [ ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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; {
|
||||
|
||||
@@ -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"));
|
||||
/// ```
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
Executable
+131
@@ -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()
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
@@ -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 ];
|
||||
};
|
||||
})
|
||||
@@ -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";
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -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}";
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
})
|
||||
@@ -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
|
||||
'';
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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"))
|
||||
@@ -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;
|
||||
}
|
||||
)
|
||||
];
|
||||
}
|
||||
''
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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?
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user