mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-20 15:41:16 +00:00
Merge staging-next into staging
This commit is contained in:
@@ -38,6 +38,9 @@
|
||||
|
||||
- `hurl` has been updated to `8.x.x` which has some breaking changes. See [upstream changelog](https://github.com/Orange-OpenSource/hurl/releases/tag/8.0.0) for details.
|
||||
|
||||
- `gotosocial` has been updated to 0.22.0. This release contains a very long database migration, which should not be cancelled or interrupted under any circumstances.
|
||||
- Postgres users: Following the migration, if you encounter slowdown on Postgres specifically (ie., timing out while loading timelines) you may need to run some manual database maintenance steps. Please check https://docs.gotosocial.org/en/stable/admin/database_maintenance/#postgres.
|
||||
|
||||
- `xsecurelock` no longer supports authentication via htaccess files (`~/.xsecurelock.pw`) or via the `pamtester` program by default. Only the recommended PAM module is supported unless rebuilt with `withHtaccess` or `withPamtester`.
|
||||
|
||||
- `python3Packages.django-health-check` has been updated to major version 4. See its [migration guide](https://codingjoe.dev/django-health-check/migrate-to-v4/) and [changelog](https://github.com/codingjoe/django-health-check/releases/tag/4.0.0) for breaking changes.
|
||||
|
||||
@@ -8660,6 +8660,13 @@
|
||||
githubId = 63652646;
|
||||
name = "Xaver Oswald";
|
||||
};
|
||||
examosa = {
|
||||
email = "examosa@fastmail.com";
|
||||
github = "examosa";
|
||||
githubId = 23395221;
|
||||
matrix = "@jamonith:matrix.org";
|
||||
name = "Jules Amonith";
|
||||
};
|
||||
exarkun = {
|
||||
email = "exarkun@twistedmatrix.com";
|
||||
github = "exarkun";
|
||||
@@ -18896,6 +18903,12 @@
|
||||
githubId = 68156310;
|
||||
name = "Benjamin Strachan";
|
||||
};
|
||||
mrbjarksen = {
|
||||
email = "bjarki@harksen.is";
|
||||
github = "mrbjarksen";
|
||||
githubId = 62466569;
|
||||
name = "Bjarki B. Harksen";
|
||||
};
|
||||
mrcjkb = {
|
||||
email = "marc@jakobi.dev";
|
||||
matrix = "@mrcjk:matrix.org";
|
||||
|
||||
@@ -48,6 +48,8 @@
|
||||
|
||||
- [Matrix Authentication Service](https://github.com/element-hq/matrix-authentication-service) is an OAuth2.0 and OpenID Connect provider for Matrix homeservers (such as Synapse). It replaces standard password authentication with modern OpenID Connect flows, and can delegate authentication to upstream OIDC providers. Available as [services.matrix-authentication-service](#opt-services.matrix-authentication-service.enable).
|
||||
|
||||
- [stash-clipboard](https://github.com/NotAShelf/stash), a Wayland clipboard "manager" with fast persistent history and multi-media support. Available as [services.stash-clipboard](#opt-services.stash-clipboard.enable).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-26.11-incompatibilities}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -77,6 +79,8 @@
|
||||
|
||||
- `systemd.user.extraConfig` has been removed in favor of the structured [](#opt-systemd.user.settings.Manager) option. Use `systemd.user.settings.Manager` to set any `systemd-user.conf(5)` option directly. For example, replace `systemd.user.extraConfig = "DefaultTimeoutStartSec=60";` with `systemd.user.settings.Manager.DefaultTimeoutStartSec = 60;`.
|
||||
|
||||
- `matrix-appservice-discord` was removed from nixpkgs along with its NixOS module (`services.matrix-appservice-discord`) as it is no longer actively maintained upstream. Use the actively-maintained puppeting bridge [`mautrix-discord`](#opt-services.mautrix-discord.enable) instead.
|
||||
|
||||
- `services.timesyncd.extraConfig` has been removed in favor of the structured [](#opt-services.timesyncd.settings.Time) option. Use `services.timesyncd.settings.Time` to set any `timesyncd.conf(5)` option directly. For example, replace `services.timesyncd.extraConfig = "PollIntervalMaxSec=180";` with `services.timesyncd.settings.Time.PollIntervalMaxSec = 180;`.
|
||||
|
||||
- `services.firezone.server.provision` has been removed due to it being unmaintanable. Remove all uses of provisioning and use the WebUI to configure firezone.
|
||||
|
||||
@@ -801,7 +801,6 @@
|
||||
./services/mail/sympa.nix
|
||||
./services/mail/tlsrpt.nix
|
||||
./services/mail/zeyple.nix
|
||||
./services/matrix/appservice-discord.nix
|
||||
./services/matrix/appservice-irc.nix
|
||||
./services/matrix/conduit.nix
|
||||
./services/matrix/continuwuity.nix
|
||||
@@ -982,6 +981,7 @@
|
||||
./services/misc/spice-webdavd.nix
|
||||
./services/misc/spoolman.nix
|
||||
./services/misc/sssd.nix
|
||||
./services/misc/stash-clipboard.nix
|
||||
./services/misc/subsonic.nix
|
||||
./services/misc/sundtek.nix
|
||||
./services/misc/svnserve.nix
|
||||
|
||||
@@ -277,6 +277,13 @@ in
|
||||
"services"
|
||||
"marathon"
|
||||
] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule
|
||||
[
|
||||
"services"
|
||||
"matrix-appservice-discord"
|
||||
]
|
||||
"The matrix-appservice-discord package has been removed as it is no longer actively maintained upstream. Use `services.mautrix-discord` instead."
|
||||
)
|
||||
(mkRemovedOptionModule [ "services" "mathics" ] "The Mathics module has been removed")
|
||||
(mkRemovedOptionModule [ "services" "matrix-sliding-sync" ]
|
||||
"The matrix-sliding-sync package has been removed, since matrix-synapse incorporated its functionality. Remove `services.sliding-sync` from your NixOS Configuration, and the `.well-known` record for `org.matrix.msc3575.proxy` from your webserver"
|
||||
|
||||
@@ -1,163 +0,0 @@
|
||||
{
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
dataDir = "/var/lib/matrix-appservice-discord";
|
||||
registrationFile = "${dataDir}/discord-registration.yaml";
|
||||
cfg = config.services.matrix-appservice-discord;
|
||||
opt = options.services.matrix-appservice-discord;
|
||||
# TODO: switch to configGen.json once RFC42 is implemented
|
||||
settingsFile = pkgs.writeText "matrix-appservice-discord-settings.json" (
|
||||
builtins.toJSON cfg.settings
|
||||
);
|
||||
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.matrix-appservice-discord = {
|
||||
enable = lib.mkEnableOption "a bridge between Matrix and Discord";
|
||||
|
||||
package = lib.mkPackageOption pkgs "matrix-appservice-discord" { };
|
||||
|
||||
settings = lib.mkOption rec {
|
||||
# TODO: switch to lib.types.config.json as prescribed by RFC42 once it's implemented
|
||||
type = lib.types.attrs;
|
||||
apply = lib.recursiveUpdate default;
|
||||
default = {
|
||||
database = {
|
||||
filename = "${dataDir}/discord.db";
|
||||
};
|
||||
|
||||
# empty values necessary for registration file generation
|
||||
# actual values defined in environmentFile
|
||||
auth = {
|
||||
clientID = "";
|
||||
botToken = "";
|
||||
};
|
||||
};
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
bridge = {
|
||||
domain = "public-domain.tld";
|
||||
homeserverUrl = "http://public-domain.tld:8008";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
{file}`config.yaml` configuration as a Nix attribute set.
|
||||
|
||||
Configuration options should match those described in
|
||||
[config.sample.yaml](https://github.com/Half-Shot/matrix-appservice-discord/blob/master/config/config.sample.yaml).
|
||||
|
||||
{option}`config.bridge.domain` and {option}`config.bridge.homeserverUrl`
|
||||
should be set to match the public host name of the Matrix homeserver for webhooks and avatars to work.
|
||||
|
||||
Secret tokens should be specified using {option}`environmentFile`
|
||||
instead of this world-readable attribute set.
|
||||
'';
|
||||
};
|
||||
|
||||
environmentFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
File containing environment variables to be passed to the matrix-appservice-discord service,
|
||||
in which secret tokens can be specified securely by defining values for
|
||||
`APPSERVICE_DISCORD_AUTH_CLIENT_I_D` and
|
||||
`APPSERVICE_DISCORD_AUTH_BOT_TOKEN`.
|
||||
'';
|
||||
};
|
||||
|
||||
url = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "http://localhost:${toString cfg.port}";
|
||||
defaultText = lib.literalExpression ''"http://localhost:''${toString config.${opt.port}}"'';
|
||||
description = ''
|
||||
The URL where the application service is listening for HS requests.
|
||||
'';
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 9005; # from https://github.com/Half-Shot/matrix-appservice-discord/blob/master/package.json#L11
|
||||
description = ''
|
||||
Port number on which the bridge should listen for internal communication with the Matrix homeserver.
|
||||
'';
|
||||
};
|
||||
|
||||
localpart = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
The user_id localpart to assign to the AS.
|
||||
'';
|
||||
};
|
||||
|
||||
serviceDependencies = lib.mkOption {
|
||||
type = with lib.types; listOf str;
|
||||
default = lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit;
|
||||
defaultText = lib.literalExpression ''
|
||||
lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit
|
||||
'';
|
||||
description = ''
|
||||
List of Systemd services to require and wait for when starting the application service,
|
||||
such as the Matrix homeserver if it's running on the same host.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.matrix-appservice-discord = {
|
||||
description = "A bridge between Matrix and Discord.";
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [ "network-online.target" ] ++ cfg.serviceDependencies;
|
||||
after = [ "network-online.target" ] ++ cfg.serviceDependencies;
|
||||
|
||||
preStart = ''
|
||||
if [ ! -f '${registrationFile}' ]; then
|
||||
${cfg.package}/bin/matrix-appservice-discord \
|
||||
--generate-registration \
|
||||
--url=${lib.escapeShellArg cfg.url} \
|
||||
${
|
||||
lib.optionalString (cfg.localpart != null) "--localpart=${lib.escapeShellArg cfg.localpart}"
|
||||
} \
|
||||
--config='${settingsFile}' \
|
||||
--file='${registrationFile}'
|
||||
fi
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
Restart = "always";
|
||||
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectControlGroups = true;
|
||||
|
||||
DynamicUser = true;
|
||||
PrivateTmp = true;
|
||||
WorkingDirectory = "${cfg.package}/${cfg.package.passthru.nodeAppDir}";
|
||||
StateDirectory = baseNameOf dataDir;
|
||||
UMask = "0027";
|
||||
EnvironmentFile = cfg.environmentFile;
|
||||
|
||||
ExecStart = ''
|
||||
${cfg.package}/bin/matrix-appservice-discord \
|
||||
--file='${registrationFile}' \
|
||||
--config='${settingsFile}' \
|
||||
--port='${toString cfg.port}'
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ euxane ];
|
||||
}
|
||||
73
nixos/modules/services/misc/stash-clipboard.nix
Normal file
73
nixos/modules/services/misc/stash-clipboard.nix
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.stash-clipboard;
|
||||
inherit (lib)
|
||||
mkPackageOption
|
||||
mkEnableOption
|
||||
mkOption
|
||||
types
|
||||
mkIf
|
||||
getExe
|
||||
concatStringsSep
|
||||
;
|
||||
in
|
||||
{
|
||||
options.services.stash-clipboard = {
|
||||
enable = mkEnableOption "stash, a Wayland clipboard manager";
|
||||
|
||||
package = mkPackageOption pkgs [ "stash-clipboard" ] { };
|
||||
|
||||
arguments = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
example = [ "--max-items 10" ];
|
||||
description = "A list of arguments to pass to stash watch.";
|
||||
};
|
||||
|
||||
filterFile = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "/etc/stash/clipboard_filter";
|
||||
description = ''
|
||||
Stash can be configured to avoid storing clipboard entries that match a sensitive pattern, using a regular expression.
|
||||
The file set here should contain your regex pattern (no quotes).
|
||||
|
||||
Example regex to block common password patterns:
|
||||
- (password|secret|api[_-]?key|token)[=: ]+[^\s]+
|
||||
'';
|
||||
};
|
||||
|
||||
excludedApps = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
example = [ "Bitwarden" ];
|
||||
description = ''
|
||||
List of application classes to exclude from the database.
|
||||
Entries from these apps are still copied to the clipboard, but it will never be put inside the database.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
systemd = {
|
||||
user.services.stash-clipboard = {
|
||||
description = "Stash clipboard manager daemon";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
after = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${getExe cfg.package} ${concatStringsSep " " cfg.arguments} watch";
|
||||
LoadCredential = mkIf (cfg.filterFile != "") "clipboard_filter:${cfg.filterFile}";
|
||||
};
|
||||
environment = mkIf (cfg.excludedApps != [ ]) {
|
||||
STASH_EXCLUDED_APPS = concatStringsSep "," cfg.excludedApps;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "gotosocial";
|
||||
meta.maintainers = with lib.maintainers; [ blakesmith ];
|
||||
|
||||
nodes.machine =
|
||||
containers.machine =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.jq ];
|
||||
|
||||
@@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
version = "1.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.delorie.com/store/ace/ace-${finalAttrs.version}.tar.gz";
|
||||
url = "https://www.delorie.com/store/ace/ace-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-H+47BTOSGkKHPAYj8z2HOgZ7HuxY8scMAUSRRueaTM4=";
|
||||
};
|
||||
|
||||
@@ -67,7 +67,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "http://www.delorie.com/store/ace/";
|
||||
homepage = "https://www.delorie.com/store/ace/";
|
||||
description = "Solitaire games in X11";
|
||||
longDescription = ''
|
||||
The Ace of Penguins is a set of Unix/X solitaire games based on the ones
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
pkg-config,
|
||||
sqlite,
|
||||
openssl,
|
||||
@@ -14,7 +13,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "arti";
|
||||
version = "2.4.0";
|
||||
version = "2.5.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.torproject.org";
|
||||
@@ -22,29 +21,18 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "core";
|
||||
repo = "arti";
|
||||
tag = "arti-v${finalAttrs.version}";
|
||||
hash = "sha256-YLOdrHstmN2pLl75uclkbpN5h3iBs3xpraZ8XN6R/+Q=";
|
||||
hash = "sha256-jOCFXlBI2xAzgpb7Fa8ap53SpDF6kcRGYnBXcu3vpk4=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fixes a panic that could allow malicious directory caches to crash
|
||||
# clients.
|
||||
# https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/4062
|
||||
(fetchpatch {
|
||||
name = "TROVE-2026-024.patch";
|
||||
url = "https://gitlab.torproject.org/tpo/core/arti/-/commit/f69be8c70561629e63004788f0aa4bf898025f93.patch";
|
||||
hash = "sha256-P0sXTKOBW7ulqQZwmTVJfrpLksLyaonuDpxGF2keDqE=";
|
||||
})
|
||||
];
|
||||
|
||||
# Working around a bug in cargo that appears with cargo-auditable, see
|
||||
# https://github.com/rust-secure-code/cargo-auditable/issues/124.
|
||||
postPatch = ''
|
||||
substituteInPlace crates/arti/Cargo.toml \
|
||||
--replace-fail '"tor-rpcbase"' '"dep:tor-rpcbase"'
|
||||
--replace-fail '"tokio-util"' '"dep:tokio-util"'
|
||||
'';
|
||||
|
||||
buildAndTestSubdir = "crates/arti";
|
||||
cargoHash = "sha256-7X3JJbt0/jxaMvBR3XQvguR7tqd96kiqX66G2byvPjM=";
|
||||
cargoHash = "sha256-JK6ubp697jZ98ErNrZdFe0mXIez3lUZ5SmAHkyD97WQ=";
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ pkg-config ];
|
||||
|
||||
|
||||
@@ -38,12 +38,12 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "bitwig-studio6";
|
||||
version = "6.0.6";
|
||||
version = "6.0.11";
|
||||
|
||||
src = fetchurl {
|
||||
name = "bitwig-studio-${finalAttrs.version}.deb";
|
||||
url = "https://www.bitwig.com/dl/Bitwig%20Studio/${finalAttrs.version}/installer_linux";
|
||||
hash = "sha256-tczgtA4v3a5Qjxaa6ZvaiFDWD6dhRw19vj8IMxkyCNI=";
|
||||
hash = "sha256-rnr/Z8y6klKrU2gT5/XT+sRryl/HZZZ04n565L0HPEw=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
25
pkgs/by-name/bl/blink-qt/fix-none-account.patch
Normal file
25
pkgs/by-name/bl/blink-qt/fix-none-account.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
From 6e438d1ab9f9da5e55b0cc96ea81fbac1f1a871b Mon Sep 17 00:00:00 2001
|
||||
From: phanirithvij <phanirithvij2000@gmail.com>
|
||||
Date: Sun, 5 Jul 2026 19:40:36 +0530
|
||||
Subject: [PATCH] fix: handle None default_account on startup
|
||||
|
||||
---
|
||||
blink/mainwindow.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/blink/mainwindow.py b/blink/mainwindow.py
|
||||
index d0baa21..77c67e8 100644
|
||||
--- a/blink/mainwindow.py
|
||||
+++ b/blink/mainwindow.py
|
||||
@@ -1109,7 +1109,7 @@ class MainWindow(base_class, ui_class):
|
||||
|
||||
def _NH_SIPAccountManagerDidStart(self, notification):
|
||||
account = notification.sender.default_account
|
||||
- if account is not BonjourAccount() and account.sms.enable_pgp and account.sms.private_key is not None and os.path.exists(account.sms.private_key.normalized):
|
||||
+ if account is not None and account is not BonjourAccount() and account.sms.enable_pgp and account.sms.private_key is not None and os.path.exists(account.sms.private_key.normalized):
|
||||
self.export_pgp_key_action.setEnabled(True)
|
||||
|
||||
def _NH_SIPAccountManagerDidRemoveAccount(self, notification):
|
||||
--
|
||||
2.54.0
|
||||
|
||||
@@ -5,26 +5,24 @@
|
||||
python3Packages,
|
||||
qt6Packages,
|
||||
libvncserver,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "blink-qt";
|
||||
version = "6.0.4";
|
||||
version = "6.0.6";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AGProjects";
|
||||
repo = "blink-qt";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-QESg9yo5oddYqSKuFLSMI2Oju3FCq97+j0uJDK85Yy8=";
|
||||
hash = "sha256-0hsuAYYp7KvfxErAcN4EX8G3goirGRmpijJfAMvbZJQ=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Remove when version > 6.0.4
|
||||
(fetchpatch2 {
|
||||
url = "https://github.com/AGProjects/blink-qt/commit/45343c90ae0680a3d03589fa8a12ac1eb85a6925.patch";
|
||||
hash = "sha256-XwV5L3r0IqWkhlaJypS2cHkDCcoumOgEEqDpdcaTviE=";
|
||||
})
|
||||
# Remove once https://github.com/AGProjects/blink-qt/pull/7 is mereged and tagged
|
||||
./fix-none-account.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ qt6Packages.wrapQtAppsHook ];
|
||||
@@ -40,26 +38,31 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
qt6Packages.qtsvg
|
||||
];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
dateutils
|
||||
dnspython
|
||||
google-api-python-client
|
||||
lxml
|
||||
lxml-html-clean
|
||||
msrplib
|
||||
oauth2client
|
||||
otr
|
||||
pgpy
|
||||
pyqt6
|
||||
pyqt6-webengine
|
||||
python3-application
|
||||
python3-eventlib
|
||||
python3-gnutls
|
||||
python3-sipsimple
|
||||
sqlobject
|
||||
standard-imghdr
|
||||
xcaplib
|
||||
];
|
||||
dependencies =
|
||||
with python3Packages;
|
||||
[
|
||||
dateutils
|
||||
dnspython
|
||||
google-auth-oauthlib
|
||||
google-api-python-client
|
||||
lxml
|
||||
lxml-html-clean
|
||||
msrplib
|
||||
otr
|
||||
pgpy
|
||||
pyqt6
|
||||
pyqt6-webengine
|
||||
python3-application
|
||||
python3-eventlib
|
||||
python3-gnutls
|
||||
python3-sipsimple
|
||||
sqlobject
|
||||
standard-imghdr
|
||||
xcaplib
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
numpy
|
||||
];
|
||||
|
||||
dontWrapQtApps = true;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
removeReferencesTo,
|
||||
srcOnly,
|
||||
python3,
|
||||
pnpm_9,
|
||||
pnpm_10,
|
||||
fetchPnpmDeps,
|
||||
pnpmConfigHook,
|
||||
fetchFromGitHub,
|
||||
@@ -15,6 +15,7 @@
|
||||
lib,
|
||||
nix-update-script,
|
||||
cctools,
|
||||
fetchpatch2,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -22,22 +23,30 @@ let
|
||||
nodejs = nodejs_24;
|
||||
nodeSources = srcOnly nodejs;
|
||||
pythonEnv = python3.withPackages (p: [ p.setuptools ]);
|
||||
pnpm = pnpm_9;
|
||||
pnpm = pnpm_10;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "pds";
|
||||
version = "0.4.5006";
|
||||
version = "0.4.5009";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bluesky-social";
|
||||
repo = "pds";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Jb2qAB6P5KlRu4L99fcK/v0/Fspr8IFaFXuYg+PBxhM=";
|
||||
hash = "sha256-3IEbVn7ThiVL7E2fXMHzsRSLT7Tm1eiX8bPQ88rJCvs=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/service";
|
||||
|
||||
patchFlags = [ "-p2" ];
|
||||
patches = [
|
||||
(fetchpatch2 {
|
||||
url = "https://github.com/bluesky-social/pds/commit/f8de5f08900c42023b01a4d10995556f16d05145.patch?full_index=1";
|
||||
hash = "sha256-E0mWvLWQ4lFjkFgqtmMIESpNH7PSAB/QpSqxIwsj6Q8=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
nodejs
|
||||
@@ -60,10 +69,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
version
|
||||
src
|
||||
sourceRoot
|
||||
patchFlags
|
||||
patches
|
||||
;
|
||||
inherit pnpm;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-YfwoUkTJJ2qANqwtSWKDGfFmahAtIDNyYFwCUE72oB0=";
|
||||
hash = "sha256-BTSMmGhLpQ6KrI7/XfinRwe8ap7btIrPa55f6HB63M8=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
|
||||
@@ -3,24 +3,24 @@
|
||||
|
||||
let
|
||||
pname = "brave";
|
||||
version = "1.91.180";
|
||||
version = "1.92.134";
|
||||
|
||||
allArchives = {
|
||||
aarch64-linux = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb";
|
||||
hash = "sha256-HdmJBLANsmlBi3EtzeuMn4USmW8x/LaYKUWDlqw3a2I=";
|
||||
hash = "sha256-qo40t+PGl1RO2ajJ2Hev4G1FWvzTx7Ak5CVxjdxabLI=";
|
||||
};
|
||||
x86_64-linux = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||
hash = "sha256-mM2SOn6V1KQJEjxR0KH1lXJMLSzpx/IiZDeSrJtIFt0=";
|
||||
hash = "sha256-T3A/ejmLkIRYGWc8GXQmvIAZvQFwYEyhQJxssNDalhQ=";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-arm64.zip";
|
||||
hash = "sha256-WkBudj8I0/pIzhA4fynkfY4t6M/6d1zPTZPSQeX3d5Y=";
|
||||
hash = "sha256-K1p5mAYfEDJNZFSmoOQV7kHNsA5RQuyUl3T2KVsNcbw=";
|
||||
};
|
||||
x86_64-darwin = {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-x64.zip";
|
||||
hash = "sha256-mxKhtUiLoloUvYK0hv1WHpVytadHPLGN8IePrscxWxs=";
|
||||
hash = "sha256-IrhvRVFZGLoGSVNy10ppFL9rEy7MRTb/HIhzspDsrs8=";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "chainsaw";
|
||||
version = "2.16.0";
|
||||
version = "2.16.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "WithSecureLabs";
|
||||
repo = "chainsaw";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-ywHPDVHpw0TrzeWPzZ3cvQSxCr2Di2YjS0Not1B9vlg=";
|
||||
hash = "sha256-EKL2MTo5qirpY4TCWwBptpRWJRd6Yp/dLz/5sIsdsbg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-AA8JQiGukh4SRZyciuE2u4OUo7HNeb6+SWej9vlw5z8=";
|
||||
cargoHash = "sha256-bbgRqp3bNw2U69aVqwvJNWOKgW0YhR8SlqzH9jdrHZU=";
|
||||
|
||||
ldflags = [
|
||||
"-w"
|
||||
|
||||
@@ -40,6 +40,8 @@ buildNpmPackage (finalAttrs: {
|
||||
ONNXRUNTIME_NODE_INSTALL = "skip";
|
||||
ONNXRUNTIME_NODE_INSTALL_CUDA = "skip";
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
# electron-forge's console output is squeezed into one narrow column if unset
|
||||
CI = "1";
|
||||
};
|
||||
|
||||
makeCacheWritable = true;
|
||||
|
||||
@@ -20,35 +20,30 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "cinny-desktop";
|
||||
# We have to be using the same version as cinny-web or this isn't going to work.
|
||||
version = "4.12.2";
|
||||
version = "4.12.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cinnyapp";
|
||||
repo = "cinny-desktop";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-gaTgNTn0/HHzULHRL03+t73MEUOGdqcEyqaIt8CWA0k=";
|
||||
hash = "sha256-/A/O42jwwK2iDV1IdRjOO8fE/AZ0h7UWAZZLozOqUWs=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src-tauri";
|
||||
|
||||
cargoHash = "sha256-x7rpnhTz454Ftolu4x50NSGKdg8NfenUwdhPY4a+lbA=";
|
||||
cargoHash = "sha256-EF8gpfeZasazq0NKrjItt4bkgautQjYjEegf1OlWLOw=";
|
||||
|
||||
postPatch =
|
||||
let
|
||||
cinny' =
|
||||
assert lib.assertMsg (
|
||||
cinny.version == finalAttrs.version
|
||||
) "cinny.version (${cinny.version}) != cinny-desktop.version (${finalAttrs.version})";
|
||||
cinny.override {
|
||||
conf = {
|
||||
hashRouter.enabled = true;
|
||||
};
|
||||
cinny' = cinny.override {
|
||||
conf = {
|
||||
hashRouter.enabled = true;
|
||||
};
|
||||
};
|
||||
in
|
||||
''
|
||||
${lib.getExe jq} \
|
||||
'del(.plugins.tauri.updater) | .build.frontendDist = "${cinny'}" | del(.build.beforeBuildCommand) | .bundle.createUpdaterArtifacts = false' tauri.conf.json \
|
||||
'.build.frontendDist = "${cinny'}" | del(.build.beforeBuildCommand) | .bundle.createUpdaterArtifacts = false' tauri.conf.json \
|
||||
| ${lib.getExe' moreutils "sponge"} tauri.conf.json
|
||||
'';
|
||||
|
||||
@@ -82,6 +77,9 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
webkitgtk_4_1
|
||||
];
|
||||
|
||||
buildNoDefaultFeatures = true;
|
||||
buildFeatures = [ "custom-protocol" ];
|
||||
|
||||
passthru = {
|
||||
updateScript = _experimental-update-script-combinators.sequence [
|
||||
(nix-update-script { attrPath = "cinny-unwrapped"; })
|
||||
|
||||
@@ -7,17 +7,17 @@
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "cinny-unwrapped";
|
||||
# Remember to update cinny-desktop when bumping this version.
|
||||
version = "4.12.2";
|
||||
version = "4.12.3";
|
||||
|
||||
# nixpkgs-update: no auto update
|
||||
src = fetchFromGitHub {
|
||||
owner = "cinnyapp";
|
||||
repo = "cinny";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-UF5MwV02G0oYIXtvyzHn+DifYM8PFlyb9DZ4w1fuyDE=";
|
||||
hash = "sha256-RjPdq9xNvUbJESV7CqxmgfqAx+MoKZbhUtJNTcH9aUk=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-8SyUFv1wgnqfSyBlykmeGI8RAmFt5Q5uS6OFLi+qPPY=";
|
||||
npmDepsHash = "sha256-CU8AVRuMFOGI0/LbN0LGysBk+qc2XQYxQGfrrH72stc=";
|
||||
|
||||
# Skip rebuilding native modules since they're not needed for the web app
|
||||
npmRebuildFlags = [
|
||||
|
||||
43
pkgs/by-name/co/cormorant/package.nix
Normal file
43
pkgs/by-name/co/cormorant/package.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "cormorant";
|
||||
version = "4.002";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CatharsisFonts";
|
||||
repo = "Cormorant";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-vYn6MV+P+YVH329NM9tfAsNG8bsgGTJtDLOgnNYRMFk=";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -m444 -Dt $out/share/fonts/truetype fonts/ttf/*.ttf
|
||||
install -m444 -Dt $out/share/fonts/opentype fonts/otf/*.otf
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Open-source display font family";
|
||||
longDescription = "Cormorant is a free display type family developed by Christian Thalmann (Catharsis Fonts).";
|
||||
homepage = "https://www.behance.net/gallery/28579883/Cormorant-an-open-source-display-font-family";
|
||||
license = lib.licenses.ofl;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ mrbjarksen ];
|
||||
};
|
||||
})
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "dns-collector";
|
||||
version = "2.3.0";
|
||||
version = "2.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dmachard";
|
||||
repo = "dns-collector";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-5SFdTDuXnVdMFGxoraUMbDV3o476sc9c7D9qWBoQXr4=";
|
||||
hash = "sha256-Gm5PXEEgw98NnsfKN8JxhyTqEL9KSA6L2CgRTRJirdY=";
|
||||
};
|
||||
|
||||
subPackages = [ "." ];
|
||||
@@ -28,7 +28,7 @@ buildGoModule (finalAttrs: {
|
||||
"-X=github.com/prometheus/common/version.Version=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
vendorHash = "sha256-eoUsiRGtq1ucAIyeCRNEuro2Qj4iRe+3aE8DrqIcCWs=";
|
||||
vendorHash = "sha256-pEex5xu3Cf6vqFp7YLwk+Ku+Yc0coOGLXP7/NUtDYbg=";
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
|
||||
48
pkgs/by-name/do/dopamine/bump-better-sqlite3.patch
Normal file
48
pkgs/by-name/do/dopamine/bump-better-sqlite3.patch
Normal file
@@ -0,0 +1,48 @@
|
||||
diff --git a/package-lock.json b/package-lock.json
|
||||
index 921ffcdc..f1a2aeeb 100644
|
||||
--- a/package-lock.json
|
||||
+++ b/package-lock.json
|
||||
@@ -17,7 +17,7 @@
|
||||
"@electron/remote": "2.1.3",
|
||||
"@fortawesome/fontawesome-free": "^6.6.0",
|
||||
"angular-split": "14.1.0",
|
||||
- "better-sqlite3": "12.5.0",
|
||||
+ "better-sqlite3": "12.11.1",
|
||||
"cheerio": "1.0.0-rc.12",
|
||||
"discord-rpc": "4.0.1",
|
||||
"electron-log": "4.4.8",
|
||||
@@ -10353,9 +10353,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/better-sqlite3": {
|
||||
- "version": "12.5.0",
|
||||
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.5.0.tgz",
|
||||
- "integrity": "sha512-WwCZ/5Diz7rsF29o27o0Gcc1Du+l7Zsv7SYtVPG0X3G/uUI1LqdxrQI7c9Hs2FWpqXXERjW9hp6g3/tH7DlVKg==",
|
||||
+ "version": "12.11.1",
|
||||
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz",
|
||||
+ "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -10363,7 +10363,7 @@
|
||||
"prebuild-install": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
- "node": "20.x || 22.x || 23.x || 24.x || 25.x"
|
||||
+ "node": "20.x || 22.x || 23.x || 24.x || 25.x || 26.x"
|
||||
}
|
||||
},
|
||||
"node_modules/big.js": {
|
||||
diff --git a/package.json b/package.json
|
||||
index 2c07792f..9023e10c 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -98,7 +98,7 @@
|
||||
"@electron/remote": "2.1.3",
|
||||
"@fortawesome/fontawesome-free": "^6.6.0",
|
||||
"angular-split": "14.1.0",
|
||||
- "better-sqlite3": "12.5.0",
|
||||
+ "better-sqlite3": "12.11.1",
|
||||
"cheerio": "1.0.0-rc.12",
|
||||
"discord-rpc": "4.0.1",
|
||||
"electron-log": "4.4.8",
|
||||
@@ -3,30 +3,36 @@
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
buildNpmPackage,
|
||||
electron_40,
|
||||
electron,
|
||||
python3,
|
||||
xcodebuild,
|
||||
applyPatches,
|
||||
}:
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "dopamine";
|
||||
version = "3.0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "digimezzo";
|
||||
repo = "dopamine";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-HTPWejm5Wi6yGJyS/f1RhjIluTz01ue8lAsnAcQY3IY=";
|
||||
# needed to upgrade better-sqlite3 in npmConfigHook
|
||||
src = applyPatches {
|
||||
src = fetchFromGitHub {
|
||||
owner = "digimezzo";
|
||||
repo = "dopamine";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-HTPWejm5Wi6yGJyS/f1RhjIluTz01ue8lAsnAcQY3IY=";
|
||||
};
|
||||
patches = [
|
||||
# register-scheme contains install scripts, but has no lockfile
|
||||
./remove-register-scheme.patch
|
||||
|
||||
# fixes node-addon-api errors with aarch64-darwin
|
||||
./update-node-addon-api.patch
|
||||
|
||||
# bump better-sqlite3 to work with electron 41
|
||||
./bump-better-sqlite3.patch
|
||||
];
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-JkGS0YmjsdUiOD48HcGXy/fPTP33JQAtJui0mQWicmc=";
|
||||
|
||||
patches = [
|
||||
# register-scheme contains install scripts, but has no lockfile
|
||||
./remove-register-scheme.patch
|
||||
|
||||
# fixes node-addon-api errors with aarch64-darwin
|
||||
./update-node-addon-api.patch
|
||||
];
|
||||
npmDepsHash = "sha256-9dQUqoLfzYXOgmE9j2lkew9b/1m4XOghT7roD82y+qg=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
(python3.withPackages (ps: with ps; [ distutils ]))
|
||||
@@ -39,8 +45,8 @@ buildNpmPackage (finalAttrs: {
|
||||
runHook preBuild
|
||||
|
||||
# needed for better-sqlite3 rebuild
|
||||
export npm_config_nodedir="${electron_40.headers}"
|
||||
export npm_config_target="${electron_40.version}"
|
||||
export npm_config_nodedir="${electron.headers}"
|
||||
export npm_config_target="${electron.version}"
|
||||
|
||||
npm rebuild --verbose --no-progress --offline
|
||||
|
||||
@@ -57,7 +63,7 @@ buildNpmPackage (finalAttrs: {
|
||||
${
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
''
|
||||
cp -r ${electron_40.dist}/Electron.app ./
|
||||
cp -r ${electron.dist}/Electron.app ./
|
||||
find ./Electron.app -name 'Info.plist' -exec chmod +rw {} \;
|
||||
|
||||
npm exec electron-builder -- \
|
||||
@@ -65,7 +71,7 @@ buildNpmPackage (finalAttrs: {
|
||||
-c.npmRebuild=false \
|
||||
-c.mac.identity=null \
|
||||
-c.electronDist=./ \
|
||||
-c.electronVersion=${electron_40.version} \
|
||||
-c.electronVersion=${electron.version} \
|
||||
-c.extraMetadata.version=v${finalAttrs.version} \
|
||||
--config electron-builder.config.js
|
||||
''
|
||||
@@ -74,8 +80,8 @@ buildNpmPackage (finalAttrs: {
|
||||
npm exec electron-builder -- \
|
||||
--dir \
|
||||
-c.npmRebuild=false \
|
||||
-c.electronDist=${electron_40.dist} \
|
||||
-c.electronVersion=${electron_40.version} \
|
||||
-c.electronDist=${electron.dist} \
|
||||
-c.electronVersion=${electron.version} \
|
||||
-c.extraMetadata.version=v${finalAttrs.version} \
|
||||
--config electron-builder.config.js
|
||||
''
|
||||
@@ -99,7 +105,7 @@ buildNpmPackage (finalAttrs: {
|
||||
mkdir -p $out/share/dopamine
|
||||
cp -r release/linux*unpacked/{locales,resources{,.pak}} $out/share/dopamine
|
||||
|
||||
makeWrapper ${lib.getExe electron_40} $out/bin/dopamine \
|
||||
makeWrapper ${lib.getExe electron} $out/bin/dopamine \
|
||||
--add-flags $out/share/dopamine/resources/app.asar \
|
||||
--inherit-argv0
|
||||
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "dotenvx";
|
||||
version = "1.75.1";
|
||||
version = "2.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dotenvx";
|
||||
repo = "dotenvx";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-pcn4YyFMba8oX0gFrlHHuKucMy+F0FMtM/FaSb6ZWDE=";
|
||||
hash = "sha256-eDwnuwL+rJiUGV8+Q6zm7ADnSF9WKquu55GJDocDLRA=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-RucWpXNW1whEyqRtqtaq6NiGz9/Jh5N9N4GUP92/k44=";
|
||||
npmDepsHash = "sha256-MpGKkyj0UdvyjImH04NhNWgZ2POFIf7pzSkxkgglrp4=";
|
||||
|
||||
dontNpmBuild = true;
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
diff --git a/tools/contributors.ts b/tools/contributors.ts
|
||||
index ad085d3..1a30ab4 100644
|
||||
--- a/tools/contributors.ts
|
||||
+++ b/tools/contributors.ts
|
||||
@@ -126,6 +126,7 @@ async function fetchDetailsContributors(
|
||||
}
|
||||
|
||||
async function fetchContributors() {
|
||||
+ return []
|
||||
const response = await fetch(CONTRIBUTORS_URL, { headers: HEADERS });
|
||||
|
||||
if (!response.ok) {
|
||||
@@ -173,10 +174,6 @@ async function fetchAndWriteContributorsFile() {
|
||||
|
||||
try {
|
||||
data = await fetchContributors();
|
||||
-
|
||||
- if (!data || data.length === 0) {
|
||||
- throw new Error('Contributors array is empty');
|
||||
- }
|
||||
} catch (error) {
|
||||
if (process.env.CI) {
|
||||
throw error;
|
||||
@@ -27,6 +27,7 @@ let
|
||||
|
||||
patches = [
|
||||
./dont-use-initial-releases-json.patch
|
||||
./dont-fetch-contributors.patch
|
||||
|
||||
# zip extraction fails on newer nodejs versions without this fix
|
||||
./bump-yauzl.patch
|
||||
@@ -66,6 +67,9 @@ let
|
||||
--replace-fail 'await this.getElectronZipPath(downloadOpts)' '"electron.zip"'
|
||||
'';
|
||||
|
||||
# electron-forge's console output is squeezed into one narrow column if unset
|
||||
env.CI = "1";
|
||||
|
||||
yarnBuildScript = "package";
|
||||
|
||||
installPhase = ''
|
||||
@@ -101,6 +105,8 @@ buildFHSEnv {
|
||||
inherit pname version;
|
||||
runScript = "${lib.getExe electron} ${unwrapped}/lib/electron-fiddle/resources/app.asar";
|
||||
|
||||
passthru = { inherit unwrapped; };
|
||||
|
||||
extraInstallCommands = ''
|
||||
mkdir -p "$out/share/icons/hicolor/scalable/apps"
|
||||
ln -s "${unwrapped}/share/icons/hicolor/scalable/apps/electron-fiddle.svg" "$out/share/icons/hicolor/scalable/apps/"
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
buildGoModule {
|
||||
buildGoModule rec {
|
||||
pname = "fast";
|
||||
version = "0-unstable-2026-07-01";
|
||||
version = "0.1.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "maaslalani";
|
||||
repo = "fast";
|
||||
rev = "26d8fc9c189ba748c68f8930af11dee5c2467f7e";
|
||||
hash = "sha256-YeDx082+ySqzamo9UutFTXXkrb37nmqt3ZUNzUHShf4=";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-/Li5AAuuHkVqJzmh38g5CPQXWj4RY0TRwvtjlpydosg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-YSjJ8NOL97hXZLnfGYIjoKmARv+gWOsv+5qkl9konnA=";
|
||||
|
||||
@@ -19,14 +19,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "faugus-launcher";
|
||||
version = "1.22.6";
|
||||
version = "1.22.8";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Faugus";
|
||||
repo = "faugus-launcher";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-hN0DU7MFlG8+TVQ2pWRRIVIDlmmHE54Dv/PqFAwwECs=";
|
||||
hash = "sha256-2FsuD40u5O7VwbziTqhsfVyceyfmSRvdmsizfBy/Xys=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -11,17 +11,17 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "firebase-tools";
|
||||
version = "15.22.3";
|
||||
version = "15.22.4";
|
||||
nodejs = nodejs_22;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "firebase";
|
||||
repo = "firebase-tools";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-jj1cbJ/AlBDTDhIK/5J0XMn+8opZJ72o3O9JmB35RpE=";
|
||||
hash = "sha256-0O6/tOd9PNtsTzXvgFMl7bneejMJ4uAGvinWZFjlkUo=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-31d0VqbM7vnKyKF7GxNr4V4Z3EqfsgdeKzWbXOOIHYU=";
|
||||
npmDepsHash = "sha256-TlAcsOKmHnXPNdOpgXhr16tMWFjtahT/CG5INBR59fM=";
|
||||
|
||||
# No more package-lock.json in upstream src
|
||||
postPatch = ''
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gcstar";
|
||||
version = "1.8.0";
|
||||
version = "1.8.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "Kerenoc";
|
||||
repo = "GCstar";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-37yjKI4l/nUzDnra1AGxDQxNafMsLi1bSifG6pz33zg=";
|
||||
hash = "sha256-cVDOu1BH3WEHhaHa5d8usTrc5M8ZKaKCLNzsSIC+HsU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook3 ];
|
||||
@@ -34,6 +34,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
JSON
|
||||
ImageExifTool
|
||||
librelative
|
||||
LocaleCodes
|
||||
LWP
|
||||
LWPProtocolHttps
|
||||
MP3Info
|
||||
@@ -45,6 +46,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
XMLParser
|
||||
];
|
||||
|
||||
# DateTime::Format::Strptime requires lang locale to be defined for correct date formatting.
|
||||
env.LANG = "C.UTF-8";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "gcx";
|
||||
version = "0.4.2";
|
||||
version = "0.4.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "grafana";
|
||||
repo = "gcx";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Gf05N13ZJLjB55eCcIfXIoJn3CVAAR5mcFyEq8s+RxY=";
|
||||
hash = "sha256-nSopsew5QMOs/QyJg7TzALokZagIGCjxMCNsairB5PA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-JioNpEqGFxD6Gg84ZZ/9OrETxTGn2V+HMlGGiiZfeIo=";
|
||||
|
||||
@@ -7,33 +7,42 @@
|
||||
pkg-config,
|
||||
libusb1,
|
||||
iproute2,
|
||||
net-tools,
|
||||
}:
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "go-ios";
|
||||
version = "1.0.207";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "danielpaulus";
|
||||
repo = "go-ios";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-2GjUrt1F8MrPOITCsuWHHsi/85pfzbLeY+WbPfLYDY4=";
|
||||
sha256 = "sha256-5fMsHSwJUH/JBaZXyB11rHCNOqzHF3MYI9gg29hj0O4=";
|
||||
};
|
||||
|
||||
proxyVendor = true;
|
||||
vendorHash = "sha256-/aVaTC9lfoXQvhDVQm31HmXBnDYYOv6RH69Nm3I/K7s=";
|
||||
vendorHash = "sha256-Bl9nlRnclqVgFF6mS6DX6oS+1c26DoISqDBY2rMS2yw=";
|
||||
|
||||
excludedPackages = [
|
||||
"restapi"
|
||||
"test/e2e"
|
||||
];
|
||||
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
ldflags = [
|
||||
"-X main.version=${finalAttrs.version}"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace main.go \
|
||||
--replace-fail 'const version = ' 'var version = '
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
substituteInPlace ncm/linux_commands.go \
|
||||
--replace-fail "ip " "${lib.getExe' iproute2 "ip"} "
|
||||
|
||||
substituteInPlace ios/tunnel/tunnel.go \
|
||||
--replace-fail "ifconfig" "${lib.getExe' net-tools "ifconfig"}"
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
substituteInPlace ios/tunnel/tunnel_darwin.go \
|
||||
--replace-fail "ifconfig" "/sbin/ifconfig"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "goimapnotify";
|
||||
version = "2.5.5";
|
||||
version = "2.5.6";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "shackra";
|
||||
repo = "goimapnotify";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-kPyL6sObr1WvCjjGJZk2Rk4YsY4rH836OzXP/MEgpL0=";
|
||||
hash = "sha256-3sHksrutag7gznxUrETDmd3VbJaTH1BqaGKEPTCCtL0=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-5cZzaCoOR1R7iST0q3GaJbYIbKKEigeWqhp87maOL04=";
|
||||
vendorHash = "sha256-3yavkH0b4ZLLt1a7MhdeHSNVAAOYKiKC+D9zfEv9bSA=";
|
||||
|
||||
postPatch = ''
|
||||
for f in internal/util/command.go internal/util/command_test.go; do
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
}:
|
||||
buildGo125Module (finalAttrs: {
|
||||
pname = "gotosocial";
|
||||
version = "0.21.3";
|
||||
version = "0.22.0";
|
||||
|
||||
src = fetchFromCodeberg {
|
||||
owner = "superseriousbusiness";
|
||||
repo = "gotosocial";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-gemi9t4wTjmCHEXfdXz1X9Q4gcvj/3LMtlrO5UpQ19M=";
|
||||
hash = "sha256-rslzi9WqPqN/wm9PN6SWdXtLdMRJJV6Hhb3whJ0RicU=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
@@ -63,6 +63,9 @@ buildGo125Module (finalAttrs: {
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# remove a Go codegen helper binary
|
||||
rm $out/bin/gen
|
||||
|
||||
mkdir -p $out/share/gotosocial/web
|
||||
mv web/{assets,template} $out/share/gotosocial/web
|
||||
'';
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hdrhistogram_c";
|
||||
version = "0.11.9";
|
||||
version = "0.11.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "HdrHistogram";
|
||||
repo = "HdrHistogram_c";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-9Xp+gPqJpB7xZr5dzyc9Via9gxG9q/EriCx3cm++0kU=";
|
||||
hash = "sha256-LMZj7vuxOA1bgU/J10IKnyNe3R0dk2AA1ydLTHun4vg=";
|
||||
};
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
@@ -2,33 +2,34 @@
|
||||
lib,
|
||||
stdenv,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
libGL,
|
||||
libinput,
|
||||
pkgconf,
|
||||
xkeyboard_config,
|
||||
libgbm,
|
||||
pango,
|
||||
udev,
|
||||
libglvnd,
|
||||
vulkan-loader,
|
||||
autoPatchelfHook,
|
||||
fetchFromGitHub,
|
||||
installShellFiles,
|
||||
libGL,
|
||||
libgbm,
|
||||
libglvnd,
|
||||
libinput,
|
||||
nix-update-script,
|
||||
pango,
|
||||
pkgconf,
|
||||
sqlite,
|
||||
udev,
|
||||
vulkan-loader,
|
||||
xkeyboard_config,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "jay";
|
||||
version = "1.13.0";
|
||||
version = "1.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mahkoh";
|
||||
repo = "jay";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-tC2V1BgUGsUMpZsKXjFSS8Mp28LrNI/QNu761zpgAkc=";
|
||||
sha256 = "sha256-bdvcGO1E9fkmKiXQxc3nvISwjIAegY8g37HmxXolsmU=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-96vCkZR/8dgZH0hJPeKzP7jQZ41W7XTi9yMnxFaIhoY=";
|
||||
cargoHash = "sha256-5yjMPDh7liaa9+KntfdCzUXz4vWzTcAhFmXrnVZ+pjM=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
@@ -38,16 +39,17 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
|
||||
buildInputs = [
|
||||
libGL
|
||||
xkeyboard_config
|
||||
libgbm
|
||||
pango
|
||||
udev
|
||||
libinput
|
||||
pango
|
||||
sqlite
|
||||
udev
|
||||
vulkan-loader
|
||||
xkeyboard_config
|
||||
];
|
||||
|
||||
runtimeDependencies = [
|
||||
libglvnd
|
||||
vulkan-loader
|
||||
];
|
||||
|
||||
checkFlags = [
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
nixosTests,
|
||||
nix-update-script,
|
||||
php,
|
||||
@@ -18,6 +19,16 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-iI9Dyno1s9P9t7IxfDs5gQUl9yFyu2taXvKY0WnF2Q0=";
|
||||
};
|
||||
|
||||
# CVE-2026-56774 / NIXPKGS-2026-2001: scope remember-me session removal to
|
||||
# the owning user so a session row can only be deleted by its owner.
|
||||
# Remove this patch once upgraded past 1.2.52.
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/kanboard/kanboard/commit/928c68aa2b7c00092dd71084d329b912e229f3d1.patch";
|
||||
hash = "sha256-K616dTwAsLJAJMqY+DJjebfi6MV5wSICbd1iy6VynlM=";
|
||||
})
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
|
||||
@@ -69,6 +69,8 @@ buildNpmPackage.override { inherit nodejs; } rec {
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
# use our own node headers since we skip downloading them
|
||||
NIX_CFLAGS_COMPILE = "-I${nodejs}/include/node";
|
||||
# electron-forge's console output is squeezed into one narrow column if unset
|
||||
CI = "1";
|
||||
};
|
||||
|
||||
postConfigure = ''
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "ketch";
|
||||
version = "0.9.4";
|
||||
version = "0.10.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
@@ -16,10 +16,10 @@ buildGoModule (finalAttrs: {
|
||||
owner = "1broseidon";
|
||||
repo = "ketch";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Ww92Y+v+u0YttjGPK7mF2mFGWHSuPCdKP6MTd/Jj0LI=";
|
||||
hash = "sha256-m6KEPbNd13eJsNigJyGGlV2dt0bcZTZcDBCBh/l5rjY=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-m3IwAYsczsxcVk9fay+f2AsNjmXoPk7NS0abES6b594=";
|
||||
vendorHash = "sha256-UsTR7+GSuxUQ0aBq8fv1M18LegeDqf/XoiyASQKe5EI=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libchewing";
|
||||
version = "0.12.0";
|
||||
version = "0.13.0";
|
||||
|
||||
src = fetchFromCodeberg {
|
||||
owner = "chewing";
|
||||
repo = "libchewing";
|
||||
tag = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-+oSO1HgLMF5+UcY+2NwQjPmspGqaPYuI7mdvSLrhkNg=";
|
||||
hash = "sha256-1/aamkc66pjAf/jl4pD2rJ9ipFW0bAWjvKg6KtINWuQ=";
|
||||
};
|
||||
|
||||
# ld: unknown option: -version-script
|
||||
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit (finalAttrs) src;
|
||||
hash = "sha256-TcNhoGCN+S/Tt3IdysVnGmXNl+hXQoWMppp8yN9N0NY=";
|
||||
hash = "sha256-1b8GbZ75jBVmvXquOjG2CEcLXg4AthAwQzdO68CjjPs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
npmHooks,
|
||||
|
||||
pkg-config,
|
||||
metalSupport ? stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64 && !openclSupport,
|
||||
metalSupport ? stdenv.hostPlatform.isDarwin && !openclSupport,
|
||||
vulkanSupport ? false,
|
||||
rpcSupport ? false,
|
||||
openssl,
|
||||
@@ -206,9 +206,6 @@ effectiveStdenv.mkDerivation (finalAttrs: {
|
||||
doCheck = false;
|
||||
|
||||
passthru = {
|
||||
tests = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
|
||||
metal = llama-cpp.override { metalSupport = true; };
|
||||
};
|
||||
updateScript = nix-update-script {
|
||||
attrPath = "llama-cpp";
|
||||
extraArgs = [
|
||||
|
||||
@@ -244,6 +244,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cp -r static/node_modules resources/node_modules
|
||||
'';
|
||||
|
||||
# electron-forge's console output is squeezed into one narrow column if unset
|
||||
env.CI = "1";
|
||||
|
||||
yarnBuildScript = "release-electron";
|
||||
|
||||
installPhase = ''
|
||||
@@ -260,7 +263,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
makeWrapper ${lib.getExe electron} $out/bin/logseq \
|
||||
--add-flags $out/share/logseq/resources/app \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true --wayland-text-input-version=3}}" \
|
||||
--set-default LOCAL_GIT_DIRECTORY ${git} \
|
||||
--inherit-argv0
|
||||
''
|
||||
|
||||
296
pkgs/by-name/lx/lx-music-desktop/npm-deps.patch
Normal file
296
pkgs/by-name/lx/lx-music-desktop/npm-deps.patch
Normal file
@@ -0,0 +1,296 @@
|
||||
diff --git a/package-lock.json b/package-lock.json
|
||||
index 1beb8ee..7160473 100644
|
||||
--- a/package-lock.json
|
||||
+++ b/package-lock.json
|
||||
@@ -11,7 +11,7 @@
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@simonwep/pickr": "^1.9.1",
|
||||
- "better-sqlite3": "^12.9.0",
|
||||
+ "better-sqlite3": "^12.11.1",
|
||||
"bufferutil": "^4.1.0",
|
||||
"comlink": "~4.3.1",
|
||||
"crypto-js": "^4.2.0",
|
||||
@@ -50,7 +50,7 @@
|
||||
"css-loader": "^7.1.4",
|
||||
"css-minimizer-webpack-plugin": "^8.0.0",
|
||||
"del": "^6.1.1",
|
||||
- "electron": "40.9.2",
|
||||
+ "electron": "42.6.0",
|
||||
"electron-builder": "^26.9.0",
|
||||
"electron-debug": "^3.2.0",
|
||||
"electron-devtools-installer": "github:lyswhut/electron-devtools-installer#64596d615c1fc891eefd8aef1dfcb2c87aaadf03",
|
||||
@@ -210,6 +210,16 @@
|
||||
"node": ">=14.17.0"
|
||||
}
|
||||
},
|
||||
+ "node_modules/@electron-internal/extract-zip": {
|
||||
+ "version": "1.0.4",
|
||||
+ "resolved": "https://registry.npmjs.org/@electron-internal/extract-zip/-/extract-zip-1.0.4.tgz",
|
||||
+ "integrity": "sha512-Zr1Vs7E9tpCNhZHDAbFVXc2gEVCG9RqPDjrno5+bdgB6LRAuvgyMHJut4NCVyYwtAieapMzc3fiQ3CSTi75ARg==",
|
||||
+ "dev": true,
|
||||
+ "license": "BSD-2-Clause",
|
||||
+ "engines": {
|
||||
+ "node": ">=22.12.0"
|
||||
+ }
|
||||
+ },
|
||||
"node_modules/@electron/asar": {
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz",
|
||||
@@ -283,25 +293,37 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/get": {
|
||||
- "version": "2.0.3",
|
||||
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz",
|
||||
- "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==",
|
||||
+ "version": "5.0.0",
|
||||
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-5.0.0.tgz",
|
||||
+ "integrity": "sha512-pjoBpru1KdEtcExBnuHAP1cAc/5faoedw0hzJkL3o4/IJp7HNF1+fbrdxT3gMYRX2oJfvnA/WXeCTVQpYYxyJA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"debug": "^4.1.1",
|
||||
- "env-paths": "^2.2.0",
|
||||
- "fs-extra": "^8.1.0",
|
||||
- "got": "^11.8.5",
|
||||
+ "env-paths": "^3.0.0",
|
||||
+ "graceful-fs": "^4.2.11",
|
||||
"progress": "^2.0.3",
|
||||
- "semver": "^6.2.0",
|
||||
+ "semver": "^7.6.3",
|
||||
"sumchecker": "^3.0.1"
|
||||
},
|
||||
"engines": {
|
||||
- "node": ">=12"
|
||||
+ "node": ">=22.12.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
- "global-agent": "^3.0.0"
|
||||
+ "undici": "^7.24.4"
|
||||
+ }
|
||||
+ },
|
||||
+ "node_modules/@electron/get/node_modules/env-paths": {
|
||||
+ "version": "3.0.0",
|
||||
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz",
|
||||
+ "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==",
|
||||
+ "dev": true,
|
||||
+ "license": "MIT",
|
||||
+ "engines": {
|
||||
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
+ },
|
||||
+ "funding": {
|
||||
+ "url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/notarize": {
|
||||
@@ -2014,17 +2036,6 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
- "node_modules/@types/yauzl": {
|
||||
- "version": "2.10.3",
|
||||
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
|
||||
- "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
|
||||
- "dev": true,
|
||||
- "license": "MIT",
|
||||
- "optional": true,
|
||||
- "dependencies": {
|
||||
- "@types/node": "*"
|
||||
- }
|
||||
- },
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "6.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
|
||||
@@ -3373,9 +3384,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/better-sqlite3": {
|
||||
- "version": "12.9.0",
|
||||
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.9.0.tgz",
|
||||
- "integrity": "sha512-wqUv4Gm3toFpHDQmaKD4QhZm3g1DjUBI0yzS4UBl6lElUmXFYdTQmmEDpAFa5o8FiFiymURypEnfVHzILKaxqQ==",
|
||||
+ "version": "12.11.1",
|
||||
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.11.1.tgz",
|
||||
+ "integrity": "sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -3383,7 +3394,7 @@
|
||||
"prebuild-install": "^7.1.1"
|
||||
},
|
||||
"engines": {
|
||||
- "node": "20.x || 22.x || 23.x || 24.x || 25.x"
|
||||
+ "node": "20.x || 22.x || 23.x || 24.x || 25.x || 26.x"
|
||||
}
|
||||
},
|
||||
"node_modules/big.js": {
|
||||
@@ -3632,16 +3643,6 @@
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
- "node_modules/buffer-crc32": {
|
||||
- "version": "0.2.13",
|
||||
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
|
||||
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
|
||||
- "dev": true,
|
||||
- "license": "MIT",
|
||||
- "engines": {
|
||||
- "node": "*"
|
||||
- }
|
||||
- },
|
||||
"node_modules/buffer-from": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||
@@ -5529,22 +5530,22 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron": {
|
||||
- "version": "40.9.2",
|
||||
- "resolved": "https://registry.npmjs.org/electron/-/electron-40.9.2.tgz",
|
||||
- "integrity": "sha512-gTLLTlfMyORZDj+03tkxsstQOQlmu6dYl0X8cwlmFb+gMmCM9Gc+rmBGSaCb5KI11IMUWHu4hvKA/spP8oJe+w==",
|
||||
+ "version": "42.6.0",
|
||||
+ "resolved": "https://registry.npmjs.org/electron/-/electron-42.6.0.tgz",
|
||||
+ "integrity": "sha512-axGNgd+yCTg+vi1VEGrQqAj9WVWkePKwbICSAvMiT2eTaxhij9a/xhBHD6rXV8wrlW9ZfJzE5+xg752ImxrmTw==",
|
||||
"dev": true,
|
||||
- "hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
- "@electron/get": "^2.0.0",
|
||||
- "@types/node": "^24.9.0",
|
||||
- "extract-zip": "^2.0.1"
|
||||
+ "@electron-internal/extract-zip": "^1.0.1",
|
||||
+ "@electron/get": "^5.0.0",
|
||||
+ "@types/node": "^24.9.0"
|
||||
},
|
||||
"bin": {
|
||||
- "electron": "cli.js"
|
||||
+ "electron": "cli.js",
|
||||
+ "install-electron": "install.js"
|
||||
},
|
||||
"engines": {
|
||||
- "node": ">= 12.20.55"
|
||||
+ "node": ">= 22.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/electron-builder": {
|
||||
@@ -6963,27 +6964,6 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
- "node_modules/extract-zip": {
|
||||
- "version": "2.0.1",
|
||||
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
|
||||
- "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
|
||||
- "dev": true,
|
||||
- "license": "BSD-2-Clause",
|
||||
- "dependencies": {
|
||||
- "debug": "^4.1.1",
|
||||
- "get-stream": "^5.1.0",
|
||||
- "yauzl": "^2.10.0"
|
||||
- },
|
||||
- "bin": {
|
||||
- "extract-zip": "cli.js"
|
||||
- },
|
||||
- "engines": {
|
||||
- "node": ">= 10.17.0"
|
||||
- },
|
||||
- "optionalDependencies": {
|
||||
- "@types/yauzl": "^2.9.1"
|
||||
- }
|
||||
- },
|
||||
"node_modules/extsprintf": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz",
|
||||
@@ -7096,16 +7076,6 @@
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
- "node_modules/fd-slicer": {
|
||||
- "version": "1.1.0",
|
||||
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
|
||||
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
|
||||
- "dev": true,
|
||||
- "license": "MIT",
|
||||
- "dependencies": {
|
||||
- "pend": "~1.2.0"
|
||||
- }
|
||||
- },
|
||||
"node_modules/fdir": {
|
||||
"version": "6.5.0",
|
||||
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
|
||||
@@ -7390,21 +7360,6 @@
|
||||
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
|
||||
"license": "MIT"
|
||||
},
|
||||
- "node_modules/fs-extra": {
|
||||
- "version": "8.1.0",
|
||||
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||
- "dev": true,
|
||||
- "license": "MIT",
|
||||
- "dependencies": {
|
||||
- "graceful-fs": "^4.2.0",
|
||||
- "jsonfile": "^4.0.0",
|
||||
- "universalify": "^0.1.0"
|
||||
- },
|
||||
- "engines": {
|
||||
- "node": ">=6 <7 || >=8"
|
||||
- }
|
||||
- },
|
||||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
@@ -10819,13 +10774,6 @@
|
||||
"url": "https://github.com/sponsors/jet2jet"
|
||||
}
|
||||
},
|
||||
- "node_modules/pend": {
|
||||
- "version": "1.2.0",
|
||||
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
|
||||
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
|
||||
- "dev": true,
|
||||
- "license": "MIT"
|
||||
- },
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||
@@ -16252,17 +16200,6 @@
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
- "node_modules/yauzl": {
|
||||
- "version": "2.10.0",
|
||||
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
|
||||
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
|
||||
- "dev": true,
|
||||
- "license": "MIT",
|
||||
- "dependencies": {
|
||||
- "buffer-crc32": "~0.2.3",
|
||||
- "fd-slicer": "~1.1.0"
|
||||
- }
|
||||
- },
|
||||
"node_modules/yocto-queue": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||
diff --git a/package.json b/package.json
|
||||
index cc041c3..b656a6b 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -123,7 +123,7 @@
|
||||
"css-loader": "^7.1.4",
|
||||
"css-minimizer-webpack-plugin": "^8.0.0",
|
||||
"del": "^6.1.1",
|
||||
- "electron": "40.9.2",
|
||||
+ "electron": "42.6.0",
|
||||
"electron-builder": "^26.9.0",
|
||||
"electron-debug": "^3.2.0",
|
||||
"electron-devtools-installer": "github:lyswhut/electron-devtools-installer#64596d615c1fc891eefd8aef1dfcb2c87aaadf03",
|
||||
@@ -167,7 +167,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@simonwep/pickr": "^1.9.1",
|
||||
- "better-sqlite3": "^12.9.0",
|
||||
+ "better-sqlite3": "^12.11.1",
|
||||
"bufferutil": "^4.1.0",
|
||||
"comlink": "~4.3.1",
|
||||
"crypto-js": "^4.2.0",
|
||||
@@ -10,12 +10,12 @@
|
||||
makeWrapper,
|
||||
makeDesktopItem,
|
||||
|
||||
electron_40,
|
||||
electron_42,
|
||||
commandLineArgs ? "",
|
||||
}:
|
||||
|
||||
let
|
||||
electron = electron_40;
|
||||
electron = electron_42;
|
||||
in
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "lx-music-desktop";
|
||||
@@ -56,6 +56,13 @@ buildNpmPackage (finalAttrs: {
|
||||
(replaceVars ./electron-builder.patch {
|
||||
electron_version = electron.version;
|
||||
})
|
||||
|
||||
# the upstream repository hasn't released a version with a newer
|
||||
# electron yet, so we patch `package.json` and the lock file to use
|
||||
# electron 42. updating better-sqlite3 is also required due to the
|
||||
# ABI incompatibility between the original one with electron 42, see
|
||||
# https://github.com/WiseLibs/better-sqlite3/issues/1474
|
||||
./npm-deps.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -63,7 +70,7 @@ buildNpmPackage (finalAttrs: {
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
npmDepsHash = "sha256-iIymnYIAE8rFEa8I2nVt2JrMyRiZL5nBS+HfNoDN1Hk=";
|
||||
npmDepsHash = "sha256-1gizfbnkdG84VxB2MaoGoIEQoydiVHbGeWmy2A03FCI=";
|
||||
|
||||
makeCacheWritable = true;
|
||||
|
||||
@@ -118,6 +125,13 @@ buildNpmPackage (finalAttrs: {
|
||||
meta = {
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
description = "Music software based on Electron and Vue";
|
||||
longDescription = ''
|
||||
Some functionalities (e.g. lyrics window) are broken when lx-music-desktop
|
||||
runs using a Wayland ozone platform due to Electron's lack of support
|
||||
for Wayland. If you do need these features, please consider unsetting
|
||||
`NIXOS_OZONE_WL` and passing `--ozone-platform=x11` from the command line
|
||||
to restore the expected behavior.
|
||||
'';
|
||||
homepage = "https://github.com/lyswhut/lx-music-desktop";
|
||||
changelog = "https://github.com/lyswhut/lx-music-desktop/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.asl20;
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "instantview";
|
||||
version = "3.22R0002";
|
||||
version = "3.24R0004";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.siliconmotion.com/downloads/macOS_InstantView_V${finalAttrs.version}.dmg";
|
||||
hash = "sha256-PdgX9zCrVYtNbuOCYKVo9cegCG/VY7QXetivVsUltbg=";
|
||||
hash = "sha256-lozVykKK1edUQlwxNKy/GyMKjsQaXeR9XVoau72Bwhg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ _7zz ];
|
||||
@@ -19,6 +19,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
dontFixup = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
@@ -27,8 +28,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
# Extract the DMG using 7zip
|
||||
7zz x "$src" -oextracted -y
|
||||
|
||||
# Move the extracted contents to $out
|
||||
cp -r extracted/* "$out/Applications/"
|
||||
cp -r extracted/*.app "$out/Applications/"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchYarnDeps,
|
||||
fetchFromGitHub,
|
||||
|
||||
# native
|
||||
yarn,
|
||||
yarnConfigHook,
|
||||
node-gyp,
|
||||
python3,
|
||||
srcOnly,
|
||||
removeReferencesTo,
|
||||
yarnBuildHook,
|
||||
makeWrapper,
|
||||
|
||||
# buildInputs
|
||||
nodejs_20,
|
||||
matrix-sdk-crypto-nodejs,
|
||||
napi-rs-cli,
|
||||
}:
|
||||
|
||||
let
|
||||
yarn' = yarn.override {
|
||||
nodejs = nodejs_20;
|
||||
};
|
||||
yarnConfigHook' = yarnConfigHook.override {
|
||||
nodejs-slim = nodejs_20;
|
||||
yarn = yarn';
|
||||
};
|
||||
yarnBuildHook' = yarnBuildHook.override {
|
||||
nodejs-slim = nodejs_20;
|
||||
yarn = yarn';
|
||||
};
|
||||
matrix-sdk-crypto-nodejs' = matrix-sdk-crypto-nodejs.override {
|
||||
nodejs = nodejs_20;
|
||||
napi-rs-cli = napi-rs-cli.override {
|
||||
nodejs = nodejs_20;
|
||||
};
|
||||
};
|
||||
nodeSources = srcOnly nodejs_20;
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "matrix-appservice-discord";
|
||||
version = "4.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "matrix-org";
|
||||
repo = "matrix-appservice-discord";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-UyRMMbnX4aJVv8oQfgn/rkZT1cRATtcgFj4fXszDKqo=";
|
||||
};
|
||||
|
||||
yarnOfflineCache = fetchYarnDeps {
|
||||
yarnLock = "${finalAttrs.src}/yarn.lock";
|
||||
hash = "sha256-s8ictJX65mSU2oxaIuCswfb2flo2RN9a1JZevacN/Ic=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
yarnConfigHook'
|
||||
yarnBuildHook'
|
||||
nodejs_20
|
||||
node-gyp
|
||||
python3
|
||||
removeReferencesTo
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
cp -r ${matrix-sdk-crypto-nodejs'}/lib/node_modules/@matrix-org ./node_modules
|
||||
cd ./node_modules/better-sqlite3
|
||||
npm run build-release --offline --nodedir="${nodeSources}"
|
||||
find build -type f -exec remove-references-to -t "${nodeSources}" {} \;
|
||||
cd ../../
|
||||
'';
|
||||
|
||||
# npmHooks.npmInstallHook and yarnInstallHook don't work for this package
|
||||
# because:
|
||||
#
|
||||
# - There is no `bin` key in
|
||||
# package.json, which instructs it to create a binary file for the package.
|
||||
# - The build/ directory, containing the compiled `.js` files from some
|
||||
# doesn't get picked up by `yarn pack`.
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/node_modules
|
||||
|
||||
mv build $out/lib/node_modules/matrix-appservice-discord
|
||||
cp -r node_modules $out/lib/node_modules/matrix-appservice-discord
|
||||
makeWrapper '${nodejs_20}/bin/node' "$out/bin/matrix-appservice-discord" \
|
||||
--add-flags "$out/lib/node_modules/matrix-appservice-discord/src/discordas.js"
|
||||
|
||||
# admin tools wrappers
|
||||
for toolPath in $out/lib/node_modules/matrix-appservice-discord/tools/*; do
|
||||
makeWrapper '${nodejs_20}/bin/node' \
|
||||
"$out/bin/matrix-appservice-discord-$(basename $toolPath .js)" \
|
||||
--add-flags "$toolPath"
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
|
||||
# the default 2000ms timeout is sometimes too short on our busy builders
|
||||
yarn --offline test --timeout 10000
|
||||
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Bridge between Matrix and Discord";
|
||||
homepage = "https://github.com/matrix-org/matrix-appservice-discord";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ euxane ];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "matrix-appservice-discord";
|
||||
};
|
||||
})
|
||||
@@ -2,21 +2,21 @@
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
nodejs_22,
|
||||
nodejs_24,
|
||||
}:
|
||||
|
||||
buildNpmPackage.override { nodejs = nodejs_22; } (finalAttrs: {
|
||||
buildNpmPackage.override { nodejs = nodejs_24; } (finalAttrs: {
|
||||
pname = "mongosh";
|
||||
version = "2.8.3";
|
||||
version = "2.9.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mongodb-js";
|
||||
repo = "mongosh";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-CHHGQYJBv1sVo2LT9jxx+c15TU8ecG9R5DVQOA9yG+A=";
|
||||
hash = "sha256-mwc9Mv8BJgI/7DzUH6QwHsWzgAquB8ehmnElM5+mYuI=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-FlVKJqXiDW3FdBrm2lN2vw+xFkvm7J1FgCEI6rFfR4o=";
|
||||
npmDepsHash = "sha256-xI+6a0sMuZmij46N5aqsprLLiVaSZifGW8tMq189fww=";
|
||||
|
||||
patches = [
|
||||
./disable-telemetry.patch
|
||||
|
||||
@@ -38,7 +38,7 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mudlet";
|
||||
version = "4.20.1";
|
||||
version = "4.22.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
@@ -48,7 +48,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
repo = "Mudlet";
|
||||
rev = "Mudlet-${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-o3f2ChQ7COql+WEe2diATx7wIR0fOlxkXcGWlL1AYkE=";
|
||||
hash = "sha256-on0LBf+FY91R4IEDcEM/at+J07MOStc7V1yT+khxVoM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -26,20 +26,20 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "n8n";
|
||||
version = "2.27.4";
|
||||
version = "2.28.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "n8n-io";
|
||||
repo = "n8n";
|
||||
tag = "n8n@${finalAttrs.version}";
|
||||
hash = "sha256-Z8oAetoSJLTCO7UO+DrlSDFAIjLSLND9bQzrcLz0hYg=";
|
||||
hash = "sha256-xll2dZon+WyJUXaCoel0htwgOGUqzpZvef/tDLTomZQ=";
|
||||
};
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
pnpm = pnpm_10;
|
||||
fetcherVersion = 3;
|
||||
hash = "sha256-xTZlv8YZC8u9pzD/WroduyO2MVtRvZ7ajKTphsHfObs=";
|
||||
hash = "sha256-SjmKXjxIuRY1uFbFLTMlXd0WW+3cVfu4TU+NoZtEYSo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "nerva";
|
||||
version = "1.38.0";
|
||||
version = "1.39.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "praetorian-inc";
|
||||
repo = "nerva";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-7d6sib2nr1LZty3KRRAhvrOIVQr2KFQTvtoHNmte4Kc=";
|
||||
hash = "sha256-SdSgBjbxsrnFuHVVa3yewzT9LTh6E2lW1rmZoWftVyg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Z0MSD+1/1VzrJ+pz5x0JvxrCxtJe59ckaTqHK/+TVN8=";
|
||||
|
||||
@@ -21,13 +21,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "nix-unit";
|
||||
version = "2.34.0";
|
||||
version = "2.34.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nix-community";
|
||||
repo = "nix-unit";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-vZfRXBDC9FTO2Vpz8TroVMqOYqp+hcVk6Nwx6+kRN1Q=";
|
||||
hash = "sha256-XUgPlbtvuqxJHqaiVtwwxPxGa4seC/7XqZP2k0m3RXo=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -3,6 +3,7 @@ from dataclasses import dataclass
|
||||
from typing import cast, Optional
|
||||
|
||||
from .md import md_escape, md_make_code, Renderer
|
||||
from .types import AdmonitionStyle
|
||||
|
||||
from markdown_it.token import Token
|
||||
|
||||
@@ -20,12 +21,16 @@ class Par:
|
||||
class CommonMarkRenderer(Renderer):
|
||||
__output__ = "commonmark"
|
||||
|
||||
_admonition_style: AdmonitionStyle
|
||||
_div_fence_sizes: list[int]
|
||||
_parstack: list[Par]
|
||||
_link_stack: list[str]
|
||||
_list_stack: list[List]
|
||||
|
||||
def __init__(self, manpage_urls: Mapping[str, str]):
|
||||
def __init__(self, manpage_urls: Mapping[str, str], admonition_style: AdmonitionStyle = AdmonitionStyle.PLAIN):
|
||||
super().__init__(manpage_urls)
|
||||
self._admonition_style = admonition_style
|
||||
self._div_fence_sizes = [ ]
|
||||
self._parstack = [ Par("") ]
|
||||
self._link_stack = []
|
||||
self._list_stack = []
|
||||
@@ -43,12 +48,46 @@ class CommonMarkRenderer(Renderer):
|
||||
self._parstack[-1].continuing = True
|
||||
return result
|
||||
|
||||
def _admonition_open(self, kind: str) -> str:
|
||||
def _fenced_div_open(self, classes: Sequence[str] = ()) -> str:
|
||||
fence_size = (
|
||||
self._div_fence_sizes[-1] + 1
|
||||
if self._div_fence_sizes
|
||||
else 3
|
||||
)
|
||||
fence = ":" * fence_size
|
||||
class_refs = [f".{c}" for c in classes]
|
||||
annotation = (" {" + " ".join(class_refs) + "}") if classes else ""
|
||||
pbreak = self._maybe_parbreak()
|
||||
self._enter_block("")
|
||||
return f"{pbreak}**{kind}:** "
|
||||
self._div_fence_sizes.append(fence_size)
|
||||
return f"{pbreak}{fence}{annotation}"
|
||||
def _fenced_div_close(self) -> str:
|
||||
fence_size = self._div_fence_sizes.pop()
|
||||
fence = ":" * fence_size
|
||||
pbreak = self._maybe_parbreak()
|
||||
return f"{pbreak}{fence}"
|
||||
|
||||
def _admonition_open(self, kind: str) -> str:
|
||||
match self._admonition_style:
|
||||
case AdmonitionStyle.PLAIN:
|
||||
pbreak = self._maybe_parbreak()
|
||||
self._enter_block("")
|
||||
return f"{pbreak}**{kind}:** "
|
||||
case AdmonitionStyle.GFM:
|
||||
pbreak = self._maybe_parbreak()
|
||||
lbreak = self._break()
|
||||
self._enter_block("> ")
|
||||
return f"{pbreak}> [!{kind}]{lbreak}> "
|
||||
case AdmonitionStyle.PANDOC:
|
||||
return self._fenced_div_open(classes=[kind.lower()])
|
||||
|
||||
def _admonition_close(self) -> str:
|
||||
self._leave_block()
|
||||
match self._admonition_style:
|
||||
case AdmonitionStyle.PLAIN:
|
||||
self._leave_block()
|
||||
case AdmonitionStyle.GFM:
|
||||
self._leave_block()
|
||||
case AdmonitionStyle.PANDOC:
|
||||
return self._fenced_div_close()
|
||||
return ""
|
||||
|
||||
def _indent_raw(self, s: str) -> str:
|
||||
|
||||
@@ -579,6 +579,58 @@ def _block_titles(block: str) -> Callable[[markdown_it.MarkdownIt], None]:
|
||||
|
||||
return do_add
|
||||
|
||||
|
||||
def _gfm_alerts(md: markdown_it.MarkdownIt) -> None:
|
||||
|
||||
_ALERT_PATTERN = re.compile(r"^\[\!(TIP|NOTE|IMPORTANT|WARNING|CAUTION)\][ \t]*(?:\n|$)", re.IGNORECASE)
|
||||
|
||||
@dataclasses.dataclass
|
||||
class Entry:
|
||||
open: Token
|
||||
content: Token | None = None
|
||||
|
||||
"""
|
||||
Find blockquote tokens and convert GFM-alert-style blockquotes to admonition tokens.
|
||||
"""
|
||||
def gfm_alert(state: markdown_it.rules_core.StateCore) -> None:
|
||||
stack: list[Entry] = []
|
||||
size = len(state.tokens)
|
||||
|
||||
for i, token in enumerate(state.tokens):
|
||||
match token.type:
|
||||
case "blockquote_open":
|
||||
entry = Entry(token)
|
||||
# Get the first inline token of the blockquote's first paragraph
|
||||
if i + 2 < size:
|
||||
para = state.tokens[i + 1]
|
||||
inline = state.tokens[i + 2]
|
||||
if para and para.type == "paragraph_open" and inline and inline.type == "inline":
|
||||
entry.content = inline
|
||||
stack.append(entry)
|
||||
|
||||
case "blockquote_close":
|
||||
entry = stack.pop()
|
||||
|
||||
if entry.content is None:
|
||||
continue
|
||||
|
||||
m = _ALERT_PATTERN.match(entry.content.content)
|
||||
if m is None:
|
||||
continue
|
||||
|
||||
# Remove the alert marker from the rendered text.
|
||||
entry.content.content = entry.content.content[m.end() :]
|
||||
|
||||
# Rewrite the enclosing blockquote as an admonition.
|
||||
entry.open.type = "admonition_open"
|
||||
entry.open.tag = "div"
|
||||
entry.open.meta["kind"] = m.group(1).lower()
|
||||
token.type = "admonition_close"
|
||||
token.tag = "div"
|
||||
|
||||
md.core.ruler.after("block", "github-alerts", gfm_alert)
|
||||
|
||||
|
||||
TR = TypeVar('TR', bound='Renderer')
|
||||
|
||||
class Converter(ABC, Generic[TR]):
|
||||
@@ -626,6 +678,7 @@ class Converter(ABC, Generic[TR]):
|
||||
self._md.use(_block_attr)
|
||||
self._md.use(_block_titles("example"))
|
||||
self._md.use(_block_titles("figure"))
|
||||
self._md.use(_gfm_alerts)
|
||||
self._md.enable(["smartquotes", "replacements"])
|
||||
|
||||
def _parse(self, src: str) -> list[Token]:
|
||||
|
||||
@@ -21,7 +21,7 @@ from .html import HTMLRenderer
|
||||
from .manpage import ManpageRenderer, man_escape
|
||||
from .manual_structure import make_xml_id, XrefTarget
|
||||
from .md import Converter, md_escape, md_make_code
|
||||
from .types import OptionLoc, Option, RenderedOption, AnchorStyle
|
||||
from .types import OptionLoc, Option, RenderedOption, AnchorStyle, AdmonitionStyle
|
||||
|
||||
def option_is(option: Option, key: str, typ: str) -> Optional[dict[str, str]]:
|
||||
if key not in option:
|
||||
@@ -317,18 +317,20 @@ class OptionsCommonMarkRenderer(OptionDocsRestrictions, CommonMarkRenderer):
|
||||
|
||||
class CommonMarkConverter(BaseConverter[OptionsCommonMarkRenderer]):
|
||||
__option_block_separator__ = ""
|
||||
_admonition_style: AdmonitionStyle
|
||||
_anchor_style: AnchorStyle
|
||||
_anchor_prefix: str
|
||||
|
||||
|
||||
def __init__(self, manpage_urls: Mapping[str, str], revision: str, anchor_style: AnchorStyle = AnchorStyle.NONE, anchor_prefix: str = ""):
|
||||
def __init__(self, manpage_urls: Mapping[str, str], revision: str, anchor_style: AnchorStyle = AnchorStyle.NONE, anchor_prefix: str = "", admonition_style: AdmonitionStyle = AdmonitionStyle.PLAIN):
|
||||
super().__init__(revision)
|
||||
self._renderer = OptionsCommonMarkRenderer(manpage_urls)
|
||||
self._renderer = OptionsCommonMarkRenderer(manpage_urls, admonition_style)
|
||||
self._admonition_style = admonition_style
|
||||
self._anchor_style = anchor_style
|
||||
self._anchor_prefix = anchor_prefix
|
||||
|
||||
def _parallel_render_prepare(self) -> Any:
|
||||
return (self._renderer._manpage_urls, self._revision)
|
||||
return (self._renderer._manpage_urls, self._revision, self._anchor_style, self._anchor_prefix, self._admonition_style)
|
||||
@classmethod
|
||||
def _parallel_render_init_worker(cls, a: Any) -> CommonMarkConverter:
|
||||
return cls(*a)
|
||||
@@ -514,6 +516,15 @@ def parse_anchor_style(value: str|AnchorStyle) -> AnchorStyle:
|
||||
except ValueError:
|
||||
raise argparse.ArgumentTypeError(f"Invalid value {value}\nExpected one of {', '.join(style.value for style in AnchorStyle)}")
|
||||
|
||||
def parse_admonition_style(value: str|AdmonitionStyle) -> AdmonitionStyle:
|
||||
if isinstance(value, AdmonitionStyle):
|
||||
# Used by `argparse.add_argument`'s `default`
|
||||
return value
|
||||
try:
|
||||
return AdmonitionStyle(value.lower())
|
||||
except ValueError:
|
||||
raise argparse.ArgumentTypeError(f"Invalid value {value}\nExpected one of {', '.join(style.value for style in AdmonitionStyle)}")
|
||||
|
||||
def _build_cli_commonmark(p: argparse.ArgumentParser) -> None:
|
||||
p.add_argument('--manpage-urls', required=True)
|
||||
p.add_argument('--revision', required=True)
|
||||
@@ -529,6 +540,13 @@ def _build_cli_commonmark(p: argparse.ArgumentParser) -> None:
|
||||
default="",
|
||||
help="(default: no prefix) String to prepend to anchor ids. Not used when anchor style is none."
|
||||
)
|
||||
p.add_argument(
|
||||
'--admonition-style',
|
||||
required=False,
|
||||
default=AdmonitionStyle.PLAIN.value,
|
||||
choices = [style.value for style in AdmonitionStyle],
|
||||
help = "(default: %(default)s) Admonition style to use for notes, warnings, etc. \nOnly plain is standard CommonMark."
|
||||
)
|
||||
p.add_argument("infile")
|
||||
p.add_argument("outfile")
|
||||
|
||||
@@ -566,7 +584,9 @@ def _run_cli_commonmark(args: argparse.Namespace) -> None:
|
||||
md = CommonMarkConverter(json.load(manpage_urls),
|
||||
revision = args.revision,
|
||||
anchor_style = parse_anchor_style(args.anchor_style),
|
||||
anchor_prefix = args.anchor_prefix)
|
||||
anchor_prefix = args.anchor_prefix,
|
||||
admonition_style = parse_admonition_style(args.admonition_style),
|
||||
)
|
||||
|
||||
with open(args.infile, 'r') as f:
|
||||
md.add_options(json.load(f))
|
||||
|
||||
@@ -17,3 +17,8 @@ RenderFn = Callable[[Token, Sequence[Token], int], str]
|
||||
class AnchorStyle(Enum):
|
||||
NONE = "none"
|
||||
LEGACY = "legacy"
|
||||
|
||||
class AdmonitionStyle(Enum):
|
||||
PLAIN = "plain"
|
||||
PANDOC = "pandoc"
|
||||
GFM = "gfm"
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
sample1 = """\
|
||||
> [!NOTE]
|
||||
> This is a *GFM* note.
|
||||
>
|
||||
> > [!caution]
|
||||
> > This is a **nested** GFM alert.
|
||||
|
||||
:::: {.warning}
|
||||
foo
|
||||
::: {.note}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"services.frobnicator.types.<name>.enable": {
|
||||
"declarations": [
|
||||
"nixos/modules/services/frobnicator.nix"
|
||||
],
|
||||
"description": "Whether to enable the frobnication of this (`<name>`) type.\n::: {.important}\n\nAdmonition.\n\n:::",
|
||||
"loc": [
|
||||
"services",
|
||||
"frobnicator",
|
||||
"types",
|
||||
"<name>",
|
||||
"enable"
|
||||
],
|
||||
"readOnly": false,
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
## services\.frobnicator\.types\.\<name>\.enable
|
||||
|
||||
Whether to enable the frobnication of this (` <name> `) type\.
|
||||
|
||||
> [!Important]
|
||||
> Admonition\.
|
||||
|
||||
|
||||
|
||||
*Type:*
|
||||
boolean
|
||||
|
||||
*Declared by:*
|
||||
- [\<nixpkgs/nixos/modules/services/frobnicator\.nix>](https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/frobnicator.nix)
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
## services\.frobnicator\.types\.\<name>\.enable
|
||||
|
||||
Whether to enable the frobnication of this (` <name> `) type\.
|
||||
|
||||
::: {.important}
|
||||
|
||||
Admonition\.
|
||||
|
||||
:::
|
||||
|
||||
|
||||
|
||||
*Type:*
|
||||
boolean
|
||||
|
||||
*Declared by:*
|
||||
- [\<nixpkgs/nixos/modules/services/frobnicator\.nix>](https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/frobnicator.nix)
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
## services\.frobnicator\.types\.\<name>\.enable
|
||||
|
||||
Whether to enable the frobnication of this (` <name> `) type\.
|
||||
|
||||
**Important:** Admonition\.
|
||||
|
||||
|
||||
|
||||
*Type:*
|
||||
boolean
|
||||
|
||||
*Declared by:*
|
||||
- [\<nixpkgs/nixos/modules/services/frobnicator\.nix>](https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/frobnicator.nix)
|
||||
|
||||
|
||||
@@ -45,6 +45,18 @@ f
|
||||
def test_full() -> None:
|
||||
c = Converter({ 'man(1)': 'http://example.org' })
|
||||
assert c._render(sample1) == """\
|
||||
[NOTE]
|
||||
====
|
||||
This is a __GFM__ note{zwsp}.
|
||||
|
||||
[CAUTION]
|
||||
=====
|
||||
This is a **nested** GFM alert{zwsp}.
|
||||
=====
|
||||
|
||||
====
|
||||
|
||||
|
||||
[WARNING]
|
||||
====
|
||||
foo
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import pytest
|
||||
|
||||
import nixos_render_docs as nrd
|
||||
|
||||
from sample_md import sample1
|
||||
@@ -6,9 +8,14 @@ from typing import Mapping
|
||||
|
||||
|
||||
class Converter(nrd.md.Converter[nrd.commonmark.CommonMarkRenderer]):
|
||||
def __init__(self, manpage_urls: Mapping[str, str]):
|
||||
def __init__(
|
||||
self,
|
||||
manpage_urls: Mapping[str, str],
|
||||
admonition_style: nrd.types.AdmonitionStyle = nrd.types.AdmonitionStyle.PLAIN,
|
||||
):
|
||||
super().__init__()
|
||||
self._renderer = nrd.commonmark.CommonMarkRenderer(manpage_urls)
|
||||
self._renderer = nrd.commonmark.CommonMarkRenderer(manpage_urls, admonition_style)
|
||||
|
||||
|
||||
# NOTE: in these tests we represent trailing spaces by ` ` and replace them with real space later,
|
||||
# since a number of editors will strip trailing whitespace on save and that would break the tests.
|
||||
@@ -24,9 +31,132 @@ def test_indented_fence() -> None:
|
||||
""".replace(' ', ' ')
|
||||
assert c._render(s) == s
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("style", "expected"),
|
||||
[
|
||||
(
|
||||
nrd.types.AdmonitionStyle.PLAIN,
|
||||
"""\
|
||||
**Warning:** foo
|
||||
|
||||
**Note:** nested
|
||||
|
||||
**Important:** nested GFM
|
||||
|
||||
:::
|
||||
|
||||
**Caution:** GFM caution
|
||||
|
||||
**Important:** nested fenced
|
||||
|
||||
**Note:** nested GFM\
|
||||
""",
|
||||
),
|
||||
(
|
||||
nrd.types.AdmonitionStyle.GFM,
|
||||
f"""\
|
||||
> [!Warning]
|
||||
> foo
|
||||
>{" "}
|
||||
> > [!Note]
|
||||
> > nested
|
||||
|
||||
> [!Important]
|
||||
> nested GFM
|
||||
|
||||
:::
|
||||
|
||||
> [!Caution]
|
||||
> GFM caution
|
||||
>{" "}
|
||||
> > [!Important]
|
||||
> > nested fenced
|
||||
>{" "}
|
||||
> > [!Note]
|
||||
> > nested GFM\
|
||||
""",
|
||||
),
|
||||
(
|
||||
nrd.types.AdmonitionStyle.PANDOC,
|
||||
"""\
|
||||
::: {.warning}
|
||||
|
||||
foo
|
||||
|
||||
:::: {.note}
|
||||
|
||||
nested
|
||||
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
::: {.important}
|
||||
|
||||
nested GFM
|
||||
|
||||
:::
|
||||
|
||||
:::
|
||||
|
||||
::: {.caution}
|
||||
|
||||
GFM caution
|
||||
|
||||
:::: {.important}
|
||||
|
||||
nested fenced
|
||||
|
||||
::::
|
||||
|
||||
:::: {.note}
|
||||
|
||||
nested GFM
|
||||
|
||||
::::
|
||||
|
||||
:::""",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_admonition_styles(
|
||||
style: nrd.types.AdmonitionStyle,
|
||||
expected: str,
|
||||
) -> None:
|
||||
c = Converter({}, admonition_style=style)
|
||||
assert c._render("""\
|
||||
:::: {.warning}
|
||||
foo
|
||||
::: {.note}
|
||||
nested
|
||||
:::
|
||||
::::
|
||||
|
||||
> [!important]
|
||||
> nested GFM
|
||||
|
||||
:::
|
||||
|
||||
> [!caution]
|
||||
> GFM caution
|
||||
>
|
||||
> ::: {.important}
|
||||
> nested fenced
|
||||
> :::
|
||||
>
|
||||
> > [!note]
|
||||
> > nested GFM
|
||||
""") == expected
|
||||
|
||||
|
||||
def test_full() -> None:
|
||||
c = Converter({ 'man(1)': 'http://example.org' })
|
||||
assert c._render(sample1) == """\
|
||||
**Note:** This is a *GFM* note\\.
|
||||
|
||||
**Caution:** This is a **nested** GFM alert\\.
|
||||
|
||||
**Warning:** foo
|
||||
|
||||
**Note:** nested
|
||||
|
||||
@@ -149,6 +149,14 @@ def test_footnotes() -> None:
|
||||
def test_full() -> None:
|
||||
c = Converter({ 'man(1)': 'http://example.org' }, {})
|
||||
assert c._render(sample1) == unpretty("""
|
||||
<div class="note">
|
||||
<h3 class="title">Note</h3>
|
||||
<p>This is a <span class="emphasis"><em>GFM</em></span> note.</p>
|
||||
<div class="caution">
|
||||
<h3 class="title">Caution</h3>
|
||||
<p>This is a <span class="strong"><strong>nested</strong></span> GFM alert.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="warning">
|
||||
<h3 class="title">Warning</h3>
|
||||
<p>foo</p>
|
||||
|
||||
@@ -41,6 +41,18 @@ def test_full() -> None:
|
||||
assert c._render(sample1) == """\
|
||||
.sp
|
||||
.RS 4
|
||||
\\fBNote\\fP
|
||||
.br
|
||||
This is a \\fIGFM\\fR note\\&.
|
||||
.sp
|
||||
.RS 4
|
||||
\\fBCaution\\fP
|
||||
.br
|
||||
This is a \\fBnested\\fR GFM alert\\&.
|
||||
.RE
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
\\fBWarning\\fP
|
||||
.br
|
||||
foo
|
||||
|
||||
@@ -39,3 +39,31 @@ def test_options_commonmark_legacy_anchors() -> None:
|
||||
c.add_options(opts)
|
||||
s = c.finalize()
|
||||
assert s == expected
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("style", "expected_file"),
|
||||
[
|
||||
(nixos_render_docs.types.AdmonitionStyle.PLAIN,
|
||||
"tests/sample_options_admonition_plain.md"),
|
||||
(nixos_render_docs.types.AdmonitionStyle.GFM,
|
||||
"tests/sample_options_admonition_gfm.md"),
|
||||
(nixos_render_docs.types.AdmonitionStyle.PANDOC,
|
||||
"tests/sample_options_admonition_pandoc.md"),
|
||||
],
|
||||
)
|
||||
def test_options_commonmark_admonition_style(style, expected_file):
|
||||
c = nixos_render_docs.options.CommonMarkConverter(
|
||||
{},
|
||||
"local",
|
||||
admonition_style=style,
|
||||
)
|
||||
|
||||
with Path("tests/sample_options_admonition.json").open() as f:
|
||||
opts = json.load(f)
|
||||
|
||||
with Path(expected_file).open() as f:
|
||||
expected = f.read()
|
||||
|
||||
c.add_options(opts)
|
||||
|
||||
assert c.finalize() == expected
|
||||
|
||||
@@ -429,6 +429,90 @@ def test_admonitions() -> None:
|
||||
children=None, content='', markup=':::', info='', meta={}, block=True, hidden=False)
|
||||
]
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("alert", "kind"),
|
||||
[
|
||||
("NOTE", "note"),
|
||||
("TIP", "tip"),
|
||||
("IMPORTANT", "important"),
|
||||
("WARNING", "warning"),
|
||||
("CAUTION", "caution"),
|
||||
],
|
||||
)
|
||||
def test_gfm_alert_kinds(alert: str, kind: str) -> None:
|
||||
c = Converter({})
|
||||
assert c._parse(f"> [!{alert}]\n> body") == [
|
||||
Token(type='admonition_open', tag='div', markup='>', meta={'kind': kind}, nesting=1, map=[0, 2], block=True),
|
||||
Token(type='paragraph_open', tag='p', nesting=1, map=[0, 2], level=1, block=True),
|
||||
Token(type='inline', tag='', nesting=0, map=[0, 2], level=2, block=True, content='body', children=[
|
||||
Token(type='text', tag='', nesting=0, content='body'),
|
||||
]),
|
||||
Token(type='paragraph_close', tag='p', nesting=-1, level=1, block=True),
|
||||
Token(type='admonition_close', tag='div', nesting=-1, markup='>', block=True)
|
||||
]
|
||||
|
||||
def test_gfm_alert_basic_structure_preserved() -> None:
|
||||
c = Converter({})
|
||||
tokens = c._parse("> [!NOTE]\n> body text")
|
||||
assert any(t.type == "inline" for t in tokens)
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"md",
|
||||
[
|
||||
"> # [!NOTE]",
|
||||
"> - [!NOTE]",
|
||||
"> - [!WARNING] body",
|
||||
"> ### [!TIP]",
|
||||
"> ```\n> [!NOTE]\n> ```",
|
||||
"> This is not [!NOTE] an alert",
|
||||
"> [!NOTE] with trailing text is ignored",
|
||||
],
|
||||
)
|
||||
def test_gfm_alert_rejected(md: str) -> None:
|
||||
c = Converter({})
|
||||
tokens = c._parse(md)
|
||||
assert all(t.type != "admonition_open" for t in tokens)
|
||||
assert tokens[0].type == "blockquote_open"
|
||||
assert tokens[-1].type == "blockquote_close"
|
||||
|
||||
def test_gfm_alert_multi_paragraph() -> None:
|
||||
c = Converter({})
|
||||
assert c._parse(
|
||||
"> [!NOTE]\n"
|
||||
"> line 1\n"
|
||||
">\n"
|
||||
"> line 2"
|
||||
) == [
|
||||
Token(type='admonition_open', tag='div', markup='>', meta={'kind': 'note'}, nesting=1, map=[0, 4], block=True),
|
||||
Token(type='paragraph_open', tag='p', nesting=1, map=[0, 2], level=1, block=True),
|
||||
Token(type='inline', tag='', nesting=0, map=[0, 2], level=2, block=True, content='line 1', children=[
|
||||
Token(type='text', tag='', nesting=0, content='line 1'),
|
||||
]),
|
||||
Token(type='paragraph_close', tag='p', nesting=-1, level=1, block=True),
|
||||
Token(type='paragraph_open', tag='p', nesting=1, map=[3, 4], level=1, block=True),
|
||||
Token(type='inline', tag='', nesting=0, map=[3, 4], level=2, block=True, content='line 2', children=[
|
||||
Token(type='text', tag='', nesting=0, content='line 2')
|
||||
]),
|
||||
Token(type='paragraph_close', tag='p', nesting=-1, level=1, block=True),
|
||||
Token(type='admonition_close', tag='div', markup='>', block=True, nesting=-1),
|
||||
]
|
||||
|
||||
def test_gfm_alert_whitespace_tolerant() -> None:
|
||||
c = Converter({})
|
||||
tokens = c._parse("> [!NOTE] \n> body")
|
||||
assert tokens[0].type == "admonition_open"
|
||||
assert tokens[0].meta["kind"] == "note"
|
||||
|
||||
def test_gfm_alert_empty_body_allowed() -> None:
|
||||
c = Converter({})
|
||||
assert c._parse("> [!NOTE]\n>") == [
|
||||
Token(type='admonition_open', tag='div', markup='>', meta={'kind': 'note'}, nesting=1, map=[0, 2], block=True),
|
||||
Token(type='paragraph_open', tag='p', nesting=1, map=[0, 1], level=1, block=True),
|
||||
Token(type='inline', tag='', nesting=0, map=[0, 1], level=2, block=True, children=[]),
|
||||
Token(type='paragraph_close', tag='p', nesting=-1, level=1, block=True),
|
||||
Token(type='admonition_close', tag='div', markup='>', nesting=-1, block=True),
|
||||
]
|
||||
|
||||
def test_example() -> None:
|
||||
c = Converter({})
|
||||
assert c._parse("::: {.example}\n# foo") == [
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
removeReferencesTo,
|
||||
fstrm,
|
||||
libevent,
|
||||
openssl,
|
||||
@@ -32,15 +33,26 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "nsd";
|
||||
version = "4.14.3";
|
||||
version = "4.15.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.nlnetlabs.nl/downloads/nsd/nsd-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-limtZNnBsBm74iKW1RSNeuZfWIziZaZCR1B0DwUrsSs=";
|
||||
hash = "sha256-hPG+4ukqna20HZXsxkET5NPe+GIk3ndM2SADrdjE9XA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/NLnetLabs/nsd/pull/495 -- Without this patch, the build
|
||||
# breaks with { openssl = libressl; bind8Stats = true; }. The patch will be
|
||||
# included in 4.15.1, so we can drop it here on the next update.
|
||||
(fetchurl {
|
||||
url = "https://github.com/NLnetLabs/nsd/commit/15cf8736e3bfa0fd8f426b13637c44e638fa0d40.patch";
|
||||
hash = "sha256-JVazJ83U80ASZypjic0epE92PZd3F1yi8UU6EapdW5U=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
removeReferencesTo
|
||||
]
|
||||
++ lib.optionals withDnstap [ protobuf ];
|
||||
|
||||
@@ -57,12 +69,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
# TODO: prePatch doesn't actually get executed because patchPhase is overridden
|
||||
prePatch = ''
|
||||
substituteInPlace nsd-control-setup.sh.in --replace openssl ${openssl}/bin/openssl
|
||||
'';
|
||||
|
||||
patchPhase = ''
|
||||
# Prevent the install script from copying nsd.conf.sample into /etc/nsd.
|
||||
postPatch = ''
|
||||
sed 's@$(INSTALL_DATA) nsd.conf.sample $(DESTDIR)$(nsdconfigfile).sample@@g' -i Makefile.in
|
||||
'';
|
||||
|
||||
@@ -90,6 +98,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"--with-configdir=etc/nsd"
|
||||
];
|
||||
|
||||
postFixup = ''
|
||||
find "$out" -type f -exec remove-references-to -t ${openssl.dev} -t ${libevent.dev} '{}' +
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
inherit (nixosTests) nsd;
|
||||
};
|
||||
|
||||
@@ -2,23 +2,24 @@
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
qt6Packages,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "openfortivpn-webview-qt";
|
||||
version = "1.2.3";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gm-vm";
|
||||
repo = "openfortivpn-webview";
|
||||
rev = "v${finalAttrs.version}-electron";
|
||||
hash = "sha256-jGDCFdqRfnYwUgVs3KO1pDr52JgkYVRHi2KvABaZFl4=";
|
||||
rev = "v${finalAttrs.version}-qt";
|
||||
hash = "sha256-TohrOgLzvxmUsRVV36XHgE9ul38CjU/qKF+LZOZQieE=";
|
||||
};
|
||||
sourceRoot = "${finalAttrs.src.name}/openfortivpn-webview-qt";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
qt6Packages.wrapQtAppsHook
|
||||
qt6Packages.qmake
|
||||
];
|
||||
buildInputs = [ qt6Packages.qtwebengine ];
|
||||
installPhase = ''
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
cmake,
|
||||
argtable,
|
||||
enet,
|
||||
git,
|
||||
libconfuse,
|
||||
libnatpmp,
|
||||
libepoxy,
|
||||
@@ -18,7 +17,8 @@
|
||||
SDL2_mixer,
|
||||
unzip,
|
||||
zlib,
|
||||
withRemix ? true,
|
||||
nix-update-script,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -30,25 +30,42 @@ let
|
||||
url = "https://www.omf2097.com/pub/files/omf/openomf-icons.zip";
|
||||
hash = "sha256-8LWmrkY3ZiXcuVe0Zj90RQFUTwM27dJ4ev9TiBGoVk0=";
|
||||
};
|
||||
remix = fetchurl {
|
||||
url = "https://github.com/omf2097/openomf/releases/download/0.8.0/ARENA2.ogg";
|
||||
hash = "sha256-jOIzDaIwQDlwCaPrRZdG5Y0g7bWKwc38mPKP030PGb4=";
|
||||
musicRemixes = fetchurl {
|
||||
url = "https://github.com/omf2097/openomf-music-mod/releases/download/1.0/openomf-mods-1.0.zip";
|
||||
hash = "sha256-uiaM6n+dDcTeBNNnypEWXPNG8Xac1JQXCTfVkORfvi0=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "openomf";
|
||||
version = "0.8.5";
|
||||
version = "0.8.6";
|
||||
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "omf2097";
|
||||
repo = "openomf";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-5X8drQKMwYZ5M/i7hxyI25AysQGedQ5BLEYcNXWHgNk=";
|
||||
hash = "sha256-KzT2leU52nxUIsuiVM5soWmi+x1LStdxY5JLoCkSSb8=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# TODO: Take this upstream
|
||||
substituteInPlace cmake-scripts/version.cmake \
|
||||
--replace-fail "set(VERSION_MAJOR 0)" "set(VERSION_MAJOR ${lib.versions.major finalAttrs.version})" \
|
||||
--replace-fail "set(VERSION_MINOR 0)" "set(VERSION_MINOR ${lib.versions.minor finalAttrs.version})" \
|
||||
--replace-fail "set(VERSION_PATCH 0)" "set(VERSION_PATCH ${lib.versions.patch finalAttrs.version})" \
|
||||
--replace-fail "set(VERSION_LABEL)" "set(VERSION_LABEL)
|
||||
return()"
|
||||
|
||||
substituteInPlace src/resources/resource_paths.c \
|
||||
--replace-fail \
|
||||
"/usr/local/share/games:/usr/share/games:/usr/local/share:/usr/share" \
|
||||
"$out/share/games"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
git
|
||||
unzip
|
||||
];
|
||||
|
||||
@@ -69,20 +86,39 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/icons/hicolor/256x256/apps
|
||||
unzip -j ${assets} -d $out/share/games/openomf
|
||||
|
||||
unzip -j ${assets} -d $out/share/games/openomf/resources
|
||||
|
||||
unzip ${musicRemixes} -d $out/share/games/openomf/mods
|
||||
|
||||
unzip -p ${icons} omf-logo/omf-256x256.png > $out/share/icons/hicolor/256x256/apps/org.openomf.OpenOMF.png
|
||||
install -Dm644 $src/resources/flatpak/org.openomf.OpenOMF.desktop $out/share/applications/org.openomf.OpenOMF.desktop
|
||||
''
|
||||
+ lib.optionalString withRemix ''
|
||||
ln -s ${remix} $out/share/games/openomf/ARENA2.ogg
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p $out/resources
|
||||
ln -s $out/share/games/openomf/* $out/resources
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "One Must Fall 2097 Remake";
|
||||
longDescription = ''
|
||||
OpenOMF is an open-source remake of the 1994 DOS fighting game One Must
|
||||
Fall 2097 by Diversions Entertainment. It reimplements the original
|
||||
engine from scratch, uses the original (now freeware) game assets, and
|
||||
adds modern conveniences such as online netplay.
|
||||
|
||||
Includes remixed music mod. To add other mods: drop its .zip file
|
||||
into the user mods directory as-is; it does not need to be extracted.
|
||||
|
||||
The user mods directory is <state>/mods, where <state> is resolved at
|
||||
launch in the following order.
|
||||
|
||||
1. $OPENOMF_STATE_PATH, if set
|
||||
2. $XDG_STATE_HOME, if set
|
||||
(e.g. ~/.local/state, giving ~/.local/state/mods)
|
||||
3. SDL's preference path, ~/.local/share/OpenOMF/mods
|
||||
'';
|
||||
homepage = "https://www.openomf.org";
|
||||
changelog = "https://github.com/omf2097/openomf/releases/tag/${finalAttrs.version}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
},
|
||||
"osquery": {
|
||||
"fetchSubmodules": true,
|
||||
"hash": "sha256-m66JfsC1+YU1k3BKEwHx6jmqpRleaqP6f8M/NXJU8dg=",
|
||||
"hash": "sha256-UeA3xnaNkOLFmNq4mgZM4f2BX0cidtantaSxgy/ahlk=",
|
||||
"owner": "osquery",
|
||||
"repo": "osquery",
|
||||
"rev": "5.23.0"
|
||||
"rev": "5.23.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "parla";
|
||||
version = "0.5.8";
|
||||
version = "0.6.0";
|
||||
__structuredAttrs = true;
|
||||
strictDeps = true;
|
||||
|
||||
@@ -24,7 +24,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "trufae";
|
||||
repo = "parla";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-R+7+UfBpBYjMmITFy0hJ+Be5QQJSxQYU9W7d5sQ37lY=";
|
||||
hash = "sha256-UnLZQ71M1yMpoYNbMdoRq+dmMFr2A/pk7GjMXtSChkY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -17,14 +17,14 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
__structuredAttrs = true;
|
||||
|
||||
pname = "pijul";
|
||||
version = "1.0.0-beta.14";
|
||||
version = "1.0.0-beta.18";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit (finalAttrs) version pname;
|
||||
hash = "sha256-Ex8fCIcif2lmZ3ytLARwgGzEeq6GB2NDvwd96niDKbQ=";
|
||||
hash = "sha256-vU41JiuxB6Bsi88st/tkt02054oN3HEN52pnLu5hMA4=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-yPzDzfD+QdhAXdyvzDV1z9HDe1mwF9cRCsliejr8H88=";
|
||||
cargoHash = "sha256-Ach8wLBhZ3pA5+m910Gt+oftEaO3Mu/ii+bxgnla0ak=";
|
||||
|
||||
# Tests require a TTY, which the Nix sandbox does not provide.
|
||||
doCheck = false;
|
||||
|
||||
@@ -14,16 +14,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "pixi";
|
||||
version = "0.71.2";
|
||||
version = "0.72.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "prefix-dev";
|
||||
repo = "pixi";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-zpeAJdvT5FXz0DLw/OuN3ejTUc/SPhmHSK1A4QB5JKs=";
|
||||
hash = "sha256-+6qMOJFFzOJyAoa20yYaS0tjBW0A+dNgZ4/ABYHSx60=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-KNnSwSPDrcps9uWYUhQYWCjuZukMzEz9UjA5kO/gxTM=";
|
||||
cargoHash = "sha256-7cW+HIZ15ziD2fVrOtA5oY4g6K9V6SbvNt9HGs5iGPU=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
mesa-demos,
|
||||
netcat-gnu,
|
||||
p7zip,
|
||||
python3,
|
||||
python312,
|
||||
unzip,
|
||||
wget,
|
||||
wine,
|
||||
@@ -70,7 +70,7 @@ let
|
||||
libGL
|
||||
];
|
||||
|
||||
python = python3.withPackages (
|
||||
python = python312.withPackages (
|
||||
ps: with ps; [
|
||||
wxpython
|
||||
setuptools
|
||||
|
||||
@@ -8,18 +8,17 @@
|
||||
stdenv,
|
||||
wrapGAppsHook3,
|
||||
libjack2,
|
||||
iconConvTools,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "praat";
|
||||
version = "6.4.65";
|
||||
version = "6.6.30";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "praat";
|
||||
repo = "praat.github.io";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-v4cAFLSJllrNgTm6ewR40HYvdi8a1bZcEBz/BTdFsxA=";
|
||||
hash = "sha256-D6XnrN+pvUpgUcgyU8pEtuOx2cIMoSm8Px0+f5xi1aM=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
@@ -27,7 +26,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
iconConvTools
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -41,27 +39,15 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"AR=${stdenv.cc.targetPrefix}ar"
|
||||
];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
cp makefiles/makefile.defs.linux.pulse-gcc makefile.defs
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dt $out/bin praat
|
||||
install -Dm444 main/praat.desktop -t $out/share/applications
|
||||
icoFileToHiColorTheme main/praat.ico praat $out
|
||||
install -Dm444 main/praat-480.svg $out/share/icons/hicolor/scalable/apps/praat.svg
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
buildFlags = [ "PRAAT_AUDIO=pulse" ];
|
||||
installFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
postInstall = ''
|
||||
mv $out/share/applications/org.praat.Praat.desktop $out/share/applications/praat.desktop
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Doing phonetics by computer";
|
||||
mainProgram = "praat";
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "radicle-ci-broker";
|
||||
version = "0.29.0";
|
||||
version = "0.30.0";
|
||||
|
||||
src = fetchFromRadicle {
|
||||
seed = "seed.radicle.dev";
|
||||
repo = "zwTxygwuz5LDGBq255RA2CbNGrz8";
|
||||
node = "z6MkgEMYod7Hxfy9qCvDv5hYHkZ4ciWmLFgfvm3Wn1b2w2FV";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-QivsYWg88dyS3dxeMvXojRbxFyDAEpKkHZzcY85Lwjo=";
|
||||
hash = "sha256-30+s//C9uMpGgA976RRduHmnmF6YEYmmG+V5P/1TYhA=";
|
||||
leaveDotGit = true;
|
||||
postFetch = ''
|
||||
git -C $out rev-parse --short HEAD > $out/.git_head
|
||||
@@ -29,7 +29,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
'';
|
||||
};
|
||||
|
||||
cargoHash = "sha256-o2h+XDKt7611j8PtTIyio7lJyc2VioFINb69mW/sxEk=";
|
||||
cargoHash = "sha256-9DzdeJcjl8IpmDR+kXdbEHrGi/5e9P26HsZJ9OPZRSA=";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace build.rs \
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
}:
|
||||
let
|
||||
pname = "remnote";
|
||||
version = "1.26.20";
|
||||
version = "1.26.30";
|
||||
src = fetchurl {
|
||||
url = "https://download2.remnote.io/remnote-desktop2/RemNote-${version}.AppImage";
|
||||
hash = "sha256-3/gb/7LO18exAmFYzzfJM7lCbMPrVqCcD32LfkVIO5g=";
|
||||
hash = "sha256-GNUoyor7P3icfHurlwttn+TyAhiOvjYhFckMCiNW/Mk=";
|
||||
};
|
||||
appimageContents = appimageTools.extract { inherit pname version src; };
|
||||
in
|
||||
|
||||
@@ -21,13 +21,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocketchat-desktop";
|
||||
version = "4.15.0";
|
||||
version = "4.15.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "RocketChat";
|
||||
repo = "Rocket.Chat.Electron";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-2ko2medsG0C6uq8Lp7ej2RgEgA7OIDsVlMG2BD1ENcM=";
|
||||
hash = "sha256-wme3RKGaHuoOf7yyXH3PZ/0xL73LqS9rPqL8IcxyAkA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -42,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
offlineCache = yarn-berry.fetchYarnBerryDeps {
|
||||
inherit (finalAttrs) src missingHashes patches;
|
||||
hash = "sha256-WfIY3kCVsL7rXbXiH7OTuiIZmGs7itdK2DG4onua3Bc=";
|
||||
hash = "sha256-XYfC5K7oXVjxP6Ndlc3qYb47Zh3GnwPx7c4+vBiA2AI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -191,6 +191,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
env = {
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
|
||||
# electron-forge's console output is squeezed into one narrow column if unset
|
||||
CI = "1";
|
||||
|
||||
# on Darwin, cmake uses find_library to locate R instead of using the PATH
|
||||
NIX_LDFLAGS = "-L${R}/lib/R/lib";
|
||||
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "shen-sbcl";
|
||||
version = "41.1";
|
||||
version = "41.2";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://www.shenlanguage.org/Download/S${finalAttrs.version}.zip";
|
||||
hash = "sha256-v/hlP23yfpkpFEDCTKYoxeMJbfR2qVF9LFUkqsFwo6g=";
|
||||
url = "https://shenlanguage.org/Download/S${finalAttrs.version}.zip";
|
||||
hash = "sha256-hgO/g0XefSXn5pjiV5LzGmoZ8nsqmZcyZpK6nbcE0es=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/S41";
|
||||
nativeBuildInputs = [ sbcl ];
|
||||
strictDeps = true;
|
||||
dontStrip = true; # necessary to prevent runtime errors with sbcl
|
||||
|
||||
buildPhase = ''
|
||||
@@ -45,15 +45,11 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
# remove interactive prompts during image creation
|
||||
# shen/tk requires further configuration and isn't supported by default
|
||||
substituteInPlace Lib/install.shen \
|
||||
--replace-fail '(y-or-n? "install standard library?")' '${
|
||||
if installStandardLibrary then "true" else "false"
|
||||
}' \
|
||||
--replace-fail '(y-or-n? "install concurrency? (required for Shen/tk)")' '${
|
||||
if installConcurrency then "true" else "false"
|
||||
}' \
|
||||
--replace-fail '(y-or-n? "install standard library?")' '${lib.boolToString installStandardLibrary}' \
|
||||
--replace-fail '(y-or-n? "install concurrency? (required for Shen/tk)")' '${lib.boolToString installConcurrency}' \
|
||||
--replace-fail '(y-or-n? "install Shen/tk + IDE?")' 'false' \
|
||||
--replace-fail '(y-or-n? "install THORN?")' '${if installThorn then "true" else "false"}' \
|
||||
--replace-fail '(y-or-n? "install Logic Lab?")' '${if installLogicLab then "true" else "false"}'
|
||||
--replace-fail '(y-or-n? "install THORN?")' '${lib.boolToString installThorn}' \
|
||||
--replace-fail '(y-or-n? "install Logic Lab?")' '${lib.boolToString installLogicLab}'
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication (finalAttrs: {
|
||||
pname = "snmpen";
|
||||
version = "1.1.3";
|
||||
version = "1.1.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fabaff";
|
||||
repo = "snmpen";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-XJP+f5Ahizxgk80B0896sbE6JeNB0Bm7aafwJsFaHYY=";
|
||||
hash = "sha256-4/QLPq4td2o17lIhktl5aVKz5esWibVoVm8OdVIxWmM=";
|
||||
};
|
||||
|
||||
build-system = with python3.pkgs; [ hatchling ];
|
||||
|
||||
36
pkgs/by-name/st/stash-clipboard/package.nix
Normal file
36
pkgs/by-name/st/stash-clipboard/package.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
}:
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "stash-clipboard";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NotAShelf";
|
||||
repo = "stash";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-L5UfPKzdU8qQIyXSCMglLhv22J7xInxg3NNKCLkxszM=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-iXL3G1H8tNS1oPAoEvvx7qwWUef95NBU3dwlEe+34zw=";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Wayland clipboard manager with fast persistent history and multi-media support";
|
||||
homepage = "https://github.com/NotAShelf/stash";
|
||||
changelog = "https://github.com/NotAShelf/stash/releases/tag/${finalAttrs.src.tag}";
|
||||
license = lib.licenses.mpl20;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [
|
||||
NotAShelf
|
||||
fazzi
|
||||
];
|
||||
mainProgram = "stash";
|
||||
};
|
||||
})
|
||||
@@ -72,6 +72,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
|
||||
# electron-forge's console output is squeezed into one narrow column if unset
|
||||
env.CI = "1";
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
glslang,
|
||||
libogg,
|
||||
makeBinaryWrapper,
|
||||
gettext,
|
||||
|
||||
# Runtime depends
|
||||
sdl3,
|
||||
@@ -29,19 +30,20 @@
|
||||
zlib,
|
||||
zstd,
|
||||
spirv-cross,
|
||||
libunibreak,
|
||||
|
||||
gamemodeSupport ? stdenv.hostPlatform.isLinux,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "taisei";
|
||||
version = "1.4.4";
|
||||
version = "1.4.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "taisei-project";
|
||||
repo = "taisei";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Cs66kyNSVjUZUH+ddZGjFwSUQtwqX4uuGQh+ZLv6N6o=";
|
||||
hash = "sha256-xjEfSrtxZBBWUU8nv0fyNAofHSGVTeO3CBR/BhKSGHg=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
@@ -51,11 +53,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
ninja
|
||||
pkg-config
|
||||
python3Packages.python
|
||||
python3Packages.zstandard
|
||||
shaderc
|
||||
makeWrapper
|
||||
makeBinaryWrapper
|
||||
cmake
|
||||
gettext
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -70,6 +72,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
openssl
|
||||
mimalloc
|
||||
libogg
|
||||
libunibreak
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
glslang
|
||||
@@ -81,7 +84,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin " -Dsincos=__builtin_sincos";
|
||||
|
||||
mesonFlags = [
|
||||
(lib.mesonEnable "vfs_zip" false)
|
||||
(lib.mesonEnable "shader_transpiler_dxbc" false)
|
||||
(lib.mesonEnable "package_data" false)
|
||||
(lib.mesonBool "b_lto" false)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "tombi";
|
||||
version = "1.1.7";
|
||||
version = "1.2.0";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -17,7 +17,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "tombi-toml";
|
||||
repo = "tombi";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Pm+OMtVd0zSPiE56N5WjpF8mM5pft+jVEQJufqiTkG8=";
|
||||
hash = "sha256-0ACGYRexG39FG5DzcayEUdsF1JvSPbzJq4m9I1ZWnSI=";
|
||||
};
|
||||
|
||||
# Tests relies on the presence of network
|
||||
|
||||
@@ -45,6 +45,8 @@ lib.extendMkDerivation {
|
||||
RossSmyth
|
||||
];
|
||||
license = lib.map (lib.flip lib.getAttr lib.licensesSpdx) license;
|
||||
# Sending a bunch of trivial jobs to Hydra is not that great.
|
||||
hydraPlatforms = [ ];
|
||||
}
|
||||
// lib.optionalAttrs (homepage != null) { inherit homepage; };
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@
|
||||
installShellFiles,
|
||||
makeBinaryWrapper,
|
||||
opentxl,
|
||||
jre,
|
||||
jre_headless,
|
||||
}:
|
||||
let
|
||||
versions = lib.importJSON ./versions.json;
|
||||
@@ -112,7 +112,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
done
|
||||
# Create wrappers
|
||||
for file in *.jar; do
|
||||
makeWrapper ${lib.getExe jre} "$out/bin/''${file%.jar}" \
|
||||
makeWrapper ${lib.getExe jre_headless} "$out/bin/''${file%.jar}" \
|
||||
--add-flags "-jar $out/share/java/$file"
|
||||
done
|
||||
popd
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "vacuum-go";
|
||||
version = "0.29.7";
|
||||
version = "0.29.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "daveshanley";
|
||||
repo = "vacuum";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-pRTR+6L0C5GQwT6ce11Bq0Pgxvh1zS/NKY/NSmUGhdU=";
|
||||
hash = "sha256-dcc29hbllJqEI9Qv3UnLVEHfzWF0CQYalKCyUlCBsEA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-NSSXFBOAFfavdSblrs3hTHiCTvOD09bIxc+jV4awTqs=";
|
||||
vendorHash = "sha256-/0dAwcg3s5dTu97msrnwuOWjeCbmYJqxcldC2xLm3y0=";
|
||||
|
||||
env.CGO_ENABLED = 0;
|
||||
ldflags = [
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "vcluster";
|
||||
version = "0.34.1";
|
||||
version = "0.35.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "loft-sh";
|
||||
repo = "vcluster";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-sjpijDrh86dAOqKW+wPPcPRLNZNyfQTxhkAO335BxPM=";
|
||||
hash = "sha256-31PGY6x+D0QJCS8VyTPS2AVEB/aw1hV/miijsqwpALI=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
python3Packages,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
testers,
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "vimhjkl";
|
||||
version = "0.5.1";
|
||||
version = "0.6.0";
|
||||
pyproject = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
@@ -15,7 +16,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
owner = "S-Sigdel";
|
||||
repo = "vimhjkl";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-1Hh6bXuuK3udixgU32yFWkBa9NA3Z7kqI50ynSGCZ+o=";
|
||||
hash = "sha256-uBXz2O2PwtnmibaR4e/l+lKIUh7WN2Hvh6nUfpUuEeA=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
@@ -31,7 +32,12 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
--replace-fail "uv_build>=0.11,<0.12" "uv_build"
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
passthru = {
|
||||
updateScript = nix-update-script { };
|
||||
tests.version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Learn vim from your terminal with spaced repetition";
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "vulnx";
|
||||
version = "2.0.1";
|
||||
version = "2.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "projectdiscovery";
|
||||
repo = "vulnx";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-HejAK/KXpQ9HouA3JpX7MoMzMUoMmKX7eEKwMGfgSx4=";
|
||||
hash = "sha256-oIoLInhErN1AojJ8GLLfxsp4Yy/S0UjnCESrVfOGp/4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-WVskArdIieEof/GDlzEZbY4QDYfAQyP0+Le24q+Kfu0=";
|
||||
vendorHash = "sha256-xAdaTu/DRtolP6tXge42ntJvq7Wi9gDErRfX1HZposc=";
|
||||
|
||||
subPackages = [ "cmd/vulnx/" ];
|
||||
|
||||
|
||||
@@ -8,20 +8,20 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "wasm-tools";
|
||||
version = "1.252.0";
|
||||
version = "1.253.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bytecodealliance";
|
||||
repo = "wasm-tools";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-ehWAkTckRftWC/fIxMxFxmTkTowNQ/OWbcQqwJyWbQw=";
|
||||
hash = "sha256-z17Y6bqsAkZ25Rkbtx7g0x2R9+tllYrpumLkgL13gjI=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
# Disable cargo-auditable until https://github.com/rust-secure-code/cargo-auditable/issues/124 is solved.
|
||||
auditable = false;
|
||||
|
||||
cargoHash = "sha256-vdRdX4WiPq1NutWwdadWE9tFZKPVdU6eZ4RXf++SSpo=";
|
||||
cargoHash = "sha256-mBp9QbjEpwT3v0Bmvur+HTUOncSNYkqmfoyORzEqR+k=";
|
||||
cargoBuildFlags = [
|
||||
"--package"
|
||||
"wasm-tools"
|
||||
|
||||
@@ -19,20 +19,20 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "wealthfolio";
|
||||
version = "3.5.3";
|
||||
version = "3.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "afadil";
|
||||
repo = "wealthfolio";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-9dE0IQtDUcveZk2eWu9+UDpAYPgk/LbY+jsTNH3N9hg=";
|
||||
hash = "sha256-7RX5u4Qr5OSBCQvsf9F0LlIVd9VycpvoVvIKj08xA3A=";
|
||||
};
|
||||
|
||||
pnpmDeps = fetchPnpmDeps {
|
||||
inherit (finalAttrs) src pname version;
|
||||
pnpm = pnpm_10;
|
||||
fetcherVersion = 4;
|
||||
hash = "sha256-ELOwrrRHmHAMZg6K+5MWXdUj/gyNNBgMl6OY11zxbB4=";
|
||||
hash = "sha256-dpxUdXqRbYPwq/wKu8XFdcjhDSGYo5ory9rIovHGJwk=";
|
||||
};
|
||||
|
||||
cargoRoot = ".";
|
||||
@@ -45,7 +45,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
src
|
||||
cargoRoot
|
||||
;
|
||||
hash = "sha256-P93AAivBXWBLik8M/DNUWyKXVsq7ttvX3DpiXwaDL2I=";
|
||||
hash = "sha256-vNFYouLMP462N6G8cJppnKMBp9Wphh4mrMVO4WWaPJ4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "wezterm";
|
||||
version = "0-unstable-2026-06-22";
|
||||
version = "0-unstable-2026-07-05";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wezterm";
|
||||
repo = "wezterm";
|
||||
rev = "6ff5492866490be859f23db01541df0ec67dcc3b";
|
||||
rev = "5cc2d1ef0b7f2ac82f965fe6becd8657ccd0067b";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-1QPLiudM2rmD3OYrc+LKvzE9VJS6Ut7QiS48pf0zU14=";
|
||||
hash = "sha256-HTzKidRDyf2d6ajuKbfbGlpwAjzfRgOzNHipOgkWWD4=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -58,7 +58,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
# https://github.com/wezterm/wezterm/blob/main/nix/flake.nix#L134
|
||||
auditable = false;
|
||||
|
||||
cargoHash = "sha256-UDCTHu/BiAXXQOEJtZhVVJ9lYFyHSSxviLSqXuZismk=";
|
||||
cargoHash = "sha256-jY7lTOfbT74tAZ7he1xudCN7BUxZBzY+8+e1d2g2v4I=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
installShellFiles
|
||||
@@ -161,6 +161,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
mainProgram = "wezterm";
|
||||
maintainers = with lib.maintainers; [
|
||||
SuperSandro2000
|
||||
yvnth
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
OWNER="wez"
|
||||
OWNER="wezterm"
|
||||
REPO="wezterm"
|
||||
|
||||
NIXPKGS_ROOT=$(git rev-parse --show-toplevel)
|
||||
|
||||
62
pkgs/by-name/wi/within/package.nix
Normal file
62
pkgs/by-name/wi/within/package.nix
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
fetchFromCodeberg,
|
||||
lib,
|
||||
stdenv,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
runCommand,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "within";
|
||||
version = "1.1.4";
|
||||
|
||||
strictDeps = true;
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromCodeberg {
|
||||
owner = "sjmulder";
|
||||
repo = "within";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-UyOgEe07K1LW5IbB7ngxelp+9Njq/NPPkWw3sxAQyVY=";
|
||||
};
|
||||
|
||||
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
||||
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
doInstallCheck = true;
|
||||
|
||||
preVersionCheck = ''
|
||||
versionCheckProgram=$(type -P echo)
|
||||
versionCheckProgramArg=$(head -n 1 CHANGELOG.md)
|
||||
'';
|
||||
|
||||
dontVersionCheck = lib.hasInfix "unstable" finalAttrs.version;
|
||||
|
||||
installFlags = [ "PREFIX:=$(out)" ];
|
||||
|
||||
passthru = {
|
||||
tests.within =
|
||||
runCommand "within-test"
|
||||
{
|
||||
nativeBuildInputs = [ finalAttrs.finalPackage ];
|
||||
}
|
||||
''
|
||||
mkdir $out
|
||||
result=$(within $PWD $out - pwd)
|
||||
expected=$(printf '%s\n' "$PWD: $PWD" "$out: $out")
|
||||
test "$result" = "$expected"
|
||||
'';
|
||||
|
||||
updateScript = nix-update-script { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://codeberg.org/sjmulder/within";
|
||||
description = "Run a command in other directories";
|
||||
changelog = "https://codeberg.org/sjmulder/within/src/tag/${finalAttrs.version}/CHANGELOG.md";
|
||||
license = lib.licenses.bsd2;
|
||||
maintainers = [ lib.maintainers.examosa ];
|
||||
platforms = lib.platforms.all;
|
||||
mainProgram = "within";
|
||||
};
|
||||
})
|
||||
@@ -97,6 +97,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
substituteInPlace node_modules/@electron/packager/dist/packager.js \
|
||||
--replace-fail 'await this.getElectronZipPath(downloadOpts)' '"electron.zip"'
|
||||
|
||||
# electron-forge's console output is squeezed into one narrow column if unset
|
||||
export CI="1";
|
||||
|
||||
yarn run package
|
||||
|
||||
runHook postBuild
|
||||
|
||||
@@ -98,7 +98,7 @@ let
|
||||
in
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "zed-editor";
|
||||
version = "1.9.0";
|
||||
version = "1.10.0";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -111,7 +111,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "zed-industries";
|
||||
repo = "zed";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-jD77wB/86DsZKO6Qh7pyszK4QgkzfgJthdQhbPVKeh0=";
|
||||
hash = "sha256-KLoowntT7rrUWJdZ+uA2qvKih+Ygo58RIxd5jR7fFYE=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -134,7 +134,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
--replace-fail 'builder.include(&glib_path_config);' 'builder.include("${lib.getLib glib}/lib/glib-2.0/include");'
|
||||
'';
|
||||
|
||||
cargoHash = "sha256-sISPA9qZriyN2po3LM5n/YCdosQBgNnA4n9tmq/UC7w=";
|
||||
cargoHash = "sha256-HzDxvX72H3nLmfI0nIGZISpoF5vTiPj+hT/pz/6MUF4=";
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
setuptools,
|
||||
aiosqlite,
|
||||
cyscale,
|
||||
websockets,
|
||||
xxhash,
|
||||
pytestCheckHook,
|
||||
pytest-asyncio,
|
||||
}:
|
||||
|
||||
buildPythonPackage (finalAttrs: {
|
||||
pname = "async-substrate-interface";
|
||||
version = "2.2.0";
|
||||
pyproject = true;
|
||||
|
||||
__structuredAttrs = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "latent-to";
|
||||
repo = "async-substrate-interface";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-39QL0h47ubKI26rIYxniNlchNAFEkPtKw6MyKuu2AXY=";
|
||||
};
|
||||
|
||||
# On darwin the sandbox isolation is not as strict as on linux,
|
||||
# and we can get permission erros when trying to create/delete arbitrary dirs in /tmp
|
||||
postPatch = lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace tests/unit_tests/test_types.py \
|
||||
--replace-fail '/tmp/async-substrate-interface-test-cache' "$(mktemp -d)/cache"
|
||||
'';
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
aiosqlite
|
||||
cyscale
|
||||
websockets
|
||||
xxhash
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
pytest-asyncio
|
||||
];
|
||||
|
||||
# these tests open a live websocket/subtensor endpoint, unavailable in the build sandbox
|
||||
disabledTestPaths = [
|
||||
"tests/integration_tests"
|
||||
"tests/e2e_tests"
|
||||
"tests/unit_tests/sync/test_block.py"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "async_substrate_interface" ];
|
||||
|
||||
meta = {
|
||||
description = "Modernised py-substrate-interface and associated utils";
|
||||
longDescription = "This project provides an asynchronous interface for interacting with Substrate-based blockchains. It is based on the py-substrate-interface project.";
|
||||
homepage = "https://github.com/latent-to/async-substrate-interface";
|
||||
changelog = "https://github.com/latent-to/async-substrate-interface/blob/${finalAttrs.src.tag}/CHANGELOG.md";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ kilyanni ];
|
||||
};
|
||||
})
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user