Merge staging-next into staging

Changed files
+831 -87
ci
request-reviews
maintainers
nixos
doc
manual
release-notes
modules
services
web-apps
web-servers
tests
pkgs
applications
audio
youtube-music
graphics
video
haruna
by-name
du
el
elkhound
fi
io
iosevka
k3
re
readeck
si
signal-desktop
sw
sway-easyfocus
ta
tailscale
we
weidu
yu
yutto
development
lisp-modules
lua-modules
python-modules
aioraven
asteval
ayla-iot-unofficial
cyclopts
kasa-crypt
mitogen
python-overseerr
safety
thermopro-ble
+2 -2
ci/request-reviews/request-reviewers.sh
···
done
if [[ "${#users[@]}" -gt 10 ]]; then
-
log "Too many reviewers (${!users[@]}), skipping review requests"
-
exit 1
+
log "Too many reviewers (${!users[*]}), skipping review requests"
+
exit 0
fi
for user in "${!users[@]}"; do
+3 -1
maintainers/maintainer-list.nix
···
};
ethancedwards8 = {
email = "ethan@ethancedwards.com";
+
matrix = "@ethancedwards8:matrix.org";
github = "ethancedwards8";
githubId = 60861925;
name = "Ethan Carter Edwards";
···
name = "Tobias Happ";
};
getchoo = {
+
name = "Seth Flynn";
email = "getchoo@tuta.io";
+
matrix = "@getchoo:matrix.org";
github = "getchoo";
githubId = 48872998;
-
name = "Seth";
};
getpsyched = {
name = "Priyanshu Tripathi";
+2
maintainers/scripts/luarocks-packages.csv
···
nui.nvim,,,,,,mrcjkb
nvim-cmp,https://raw.githubusercontent.com/hrsh7th/nvim-cmp/main/nvim-cmp-scm-1.rockspec,,,,,
nvim-nio,,,,,,mrcjkb
+
orgmode,,,,,,
pathlib.nvim,,,,,,
papis-nvim,,,,,,GaetanLepage
penlight,,,,,,alerque
···
tl,,,,,,mephistophiles
toml-edit,,,,,5.1,mrcjkb
tree-sitter-norg,,,,,5.1,mrcjkb
+
tree-sitter-orgmode,,,,,,
vstruct,,,,,,
vusted,,,,,,figsoda
xml2lua,,,,,,teto
+4
nixos/doc/manual/release-notes/rl-2505.section.md
···
- [Conduwuit](https://conduwuit.puppyirl.gay/), a federated chat server implementing the Matrix protocol, forked from Conduit. Available as [services.conduwuit](#opt-services.conduwuit.enable).
+
- [Readeck](https://readeck.org/), a read-it later web-application. Available as [services.readeck](#opt-services.readeck.enable).
+
- [Traccar](https://www.traccar.org/), a modern GPS Tracking Platform. Available as [services.traccar](#opt-services.traccar.enable).
- [Schroot](https://codeberg.org/shelter/reschroot), a lightweight virtualisation tool. Securely enter a chroot and run a command or login shell. Available as [programs.schroot](#opt-programs.schroot.enable).
···
- [immich-public-proxy](https://github.com/alangrainger/immich-public-proxy), a proxy for sharing Immich albums without exposing the Immich API. Available as [services.immich-public-proxy](#opt-services.immich-public-proxy.enable).
- [Zipline](https://zipline.diced.sh/), a ShareX/file upload server that is easy to use, packed with features, and with an easy setup. Available as [services.zipline](#opt-services.zipline.enable).
+
+
- [Fider](https://fider.io/), an open platform to collect and prioritize feedback. Available as [services.fider](#opt-services.fider.enable).
- [mqtt-exporter](https://github.com/kpetremann/mqtt-exporter/), a Prometheus exporter for exposing messages from MQTT. Available as [services.prometheus.exporters.mqtt](#opt-services.prometheus.exporters.mqtt.enable).
+2
nixos/modules/module-list.nix
···
./services/web-apps/eintopf.nix
./services/web-apps/engelsystem.nix
./services/web-apps/ethercalc.nix
+
./services/web-apps/fider.nix
./services/web-apps/filesender.nix
./services/web-apps/firefly-iii.nix
./services/web-apps/firefly-iii-data-importer.nix
···
./services/web-apps/screego.nix
./services/web-apps/sftpgo.nix
./services/web-apps/suwayomi-server.nix
+
./services/web-apps/readeck.nix
./services/web-apps/rss-bridge.nix
./services/web-apps/selfoss.nix
./services/web-apps/shiori.nix
+124
nixos/modules/services/web-apps/fider.nix
···
+
{
+
config,
+
lib,
+
pkgs,
+
...
+
}:
+
let
+
cfg = config.services.fider;
+
fiderCmd = lib.getExe cfg.package;
+
in
+
{
+
options = {
+
+
services.fider = {
+
enable = lib.mkEnableOption "the Fider server";
+
package = lib.mkPackageOption pkgs "fider" { };
+
+
dataDir = lib.mkOption {
+
type = lib.types.str;
+
default = "/var/lib/fider";
+
description = "Default data folder for Fider.";
+
example = "/mnt/fider";
+
};
+
+
database = {
+
url = lib.mkOption {
+
type = lib.types.str;
+
default = "local";
+
description = ''
+
URI to use for the main PostgreSQL database. If this needs to include
+
credentials that shouldn't be world-readable in the Nix store, set an
+
environment file on the systemd service and override the
+
`DATABASE_URL` entry. Pass the string
+
`local` to setup a database on the local server.
+
'';
+
};
+
};
+
+
environment = lib.mkOption {
+
type = lib.types.attrsOf lib.types.str;
+
default = { };
+
example = {
+
PORT = "31213";
+
BASE_URL = "https://fider.example.com";
+
EMAIL = "smtp";
+
EMAIL_NOREPLY = "fider@example.com";
+
EMAIL_SMTP_USERNAME = "fider@example.com";
+
EMAIL_SMTP_HOST = "mail.example.com";
+
EMAIL_SMTP_PORT = "587";
+
BLOB_STORAGE = "fs";
+
};
+
description = ''
+
Environment variables to set for the service. Secrets should be
+
specified using {option}`environmentFiles`.
+
Refer to <https://github.com/getfider/fider/blob/stable/.example.env>
+
and <https://github.com/getfider/fider/blob/stable/app/pkg/env/env.go>
+
for available options.
+
'';
+
};
+
+
environmentFiles = lib.mkOption {
+
type = lib.types.listOf lib.types.path;
+
default = [ ];
+
example = "/run/secrets/fider.env";
+
description = ''
+
Files to load environment variables from. Loaded variables override
+
values set in {option}`environment`.
+
'';
+
};
+
};
+
};
+
+
config = lib.mkIf cfg.enable {
+
services.postgresql = lib.mkIf (cfg.database.url == "local") {
+
enable = true;
+
ensureUsers = [
+
{
+
name = "fider";
+
ensureDBOwnership = true;
+
}
+
];
+
ensureDatabases = [ "fider" ];
+
};
+
+
systemd.services.fider = {
+
description = "Fider server";
+
wantedBy = [ "multi-user.target" ];
+
after = [
+
"network.target"
+
] ++ lib.optionals (cfg.database.url == "local") [ "postgresql.service" ];
+
requires = lib.optionals (cfg.database.url == "local") [ "postgresql.service" ];
+
environment =
+
let
+
localPostgresqlUrl = "postgres:///fider?host=/run/postgresql";
+
in
+
{
+
DATABASE_URL = if (cfg.database.url == "local") then localPostgresqlUrl else cfg.database.url;
+
BLOB_STORAGE_FS_PATH = "${cfg.dataDir}";
+
}
+
// cfg.environment;
+
serviceConfig = {
+
ExecStartPre = "${fiderCmd} migrate";
+
ExecStart = fiderCmd;
+
StateDirectory = "fider";
+
DynamicUser = true;
+
PrivateTmp = "yes";
+
Restart = "on-failure";
+
RuntimeDirectory = "fider";
+
RuntimeDirectoryPreserve = true;
+
CacheDirectory = "fider";
+
WorkingDirectory = "${cfg.package}";
+
EnvironmentFile = cfg.environmentFiles;
+
};
+
};
+
};
+
+
meta = {
+
maintainers = with lib.maintainers; [
+
drupol
+
niklaskorz
+
];
+
# doc = ./fider.md;
+
};
+
}
+96
nixos/modules/services/web-apps/readeck.nix
···
+
{
+
config,
+
pkgs,
+
lib,
+
...
+
}:
+
+
let
+
inherit (lib)
+
mkEnableOption
+
mkPackageOption
+
mkOption
+
mkIf
+
types
+
;
+
cfg = config.services.readeck;
+
settingsFormat = pkgs.formats.toml { };
+
configFile = settingsFormat.generate "readeck.toml" cfg.settings;
+
+
in
+
{
+
+
meta.maintainers = [ lib.maintainers.julienmalka ];
+
+
options = {
+
services.readeck = {
+
enable = mkEnableOption "Readeck";
+
+
package = mkPackageOption pkgs "readeck" { };
+
+
environmentFile = mkOption {
+
type = types.nullOr types.path;
+
description = ''
+
File containing environment variables to be passed to Readeck.
+
May be used to provide the Readeck secret key by setting the READECK_SECRET_KEY variable.
+
'';
+
default = null;
+
};
+
+
settings = mkOption {
+
type = settingsFormat.type;
+
default = { };
+
example = {
+
main.log_level = "debug";
+
server.port = 9000;
+
};
+
description = ''
+
Additional configuration for Readeck, see
+
<https://readeck.org/en/docs/configuration>
+
for supported values.
+
'';
+
};
+
+
};
+
};
+
+
config = mkIf cfg.enable {
+
systemd.services.readeck = {
+
description = "Readeck";
+
after = [ "network.target" ];
+
wantedBy = [ "multi-user.target" ];
+
serviceConfig = {
+
Type = "simple";
+
StateDirectory = "readeck";
+
WorkingDirectory = "/var/lib/readeck";
+
EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile;
+
DynamicUser = true;
+
ExecStart = "${lib.getExe cfg.package} serve -config ${configFile}";
+
ProtectSystem = "full";
+
SystemCallArchitectures = "native";
+
MemoryDenyWriteExecute = true;
+
NoNewPrivileges = true;
+
PrivateTmp = true;
+
PrivateDevices = true;
+
RestrictAddressFamilies = [
+
"AF_INET"
+
"AF_INET6"
+
"AF_UNIX"
+
"AF_NETLINK"
+
];
+
RestrictNamespaces = true;
+
RestrictRealtime = true;
+
DevicePolicy = "closed";
+
ProtectClock = true;
+
ProtectHostname = true;
+
ProtectProc = "invisible";
+
ProtectControlGroups = true;
+
ProtectKernelModules = true;
+
ProtectKernelTunables = true;
+
LockPersonality = true;
+
Restart = "on-failure";
+
+
};
+
};
+
};
+
}
+31 -21
nixos/modules/services/web-servers/garage.nix
···
cfg = config.services.garage;
toml = pkgs.formats.toml { };
configFile = toml.generate "garage.toml" cfg.settings;
-
-
anyHasPrefix =
-
prefix: strOrList:
-
if isString strOrList then
-
hasPrefix prefix strOrList
-
else
-
any ({ path, ... }: hasPrefix prefix path) strOrList;
in
{
meta = {
doc = ./garage.md;
-
maintainers = [ maintainers.mjm ];
+
maintainers = with lib.maintainers; [
+
mjm
+
cything
+
];
};
options.services.garage = {
···
};
logLevel = mkOption {
-
type = types.enum ([
+
type = types.enum [
"error"
"warn"
"info"
"debug"
"trace"
-
]);
+
];
default = "info";
example = "debug";
description = "Garage log level, see <https://garagehq.deuxfleurs.fr/documentation/quick-start/#launching-the-garage-server> for examples.";
···
restartTriggers = [
configFile
] ++ (lib.optional (cfg.environmentFile != null) cfg.environmentFile);
-
serviceConfig = {
-
ExecStart = "${cfg.package}/bin/garage server";
+
serviceConfig =
+
let
+
paths = lib.flatten (
+
with cfg.settings;
+
[
+
metadata_dir
+
]
+
# data_dir can either be a string or a list of attrs
+
# if data_dir is a list, the actual path will in in the `path` attribute of each item
+
# see https://garagehq.deuxfleurs.fr/documentation/reference-manual/configuration/#data_dir
+
++ lib.optional (lib.isList data_dir) (map (item: item.path) data_dir)
+
++ lib.optional (lib.isString data_dir) [ data_dir ]
+
);
+
isDefault = lib.hasPrefix "/var/lib/garage";
+
isDefaultStateDirectory = lib.any isDefault paths;
+
in
+
{
+
ExecStart = "${cfg.package}/bin/garage server";
-
StateDirectory = mkIf (
-
anyHasPrefix "/var/lib/garage" cfg.settings.data_dir
-
|| hasPrefix "/var/lib/garage" cfg.settings.metadata_dir
-
) "garage";
-
DynamicUser = lib.mkDefault true;
-
ProtectHome = true;
-
NoNewPrivileges = true;
-
EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile;
-
};
+
StateDirectory = lib.mkIf isDefaultStateDirectory "garage";
+
DynamicUser = lib.mkDefault true;
+
ProtectHome = true;
+
NoNewPrivileges = true;
+
EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile;
+
ReadWritePaths = lib.filter (x: !(isDefault x)) (lib.flatten [ paths ]);
+
};
environment = {
RUST_LOG = lib.mkDefault "garage=${cfg.logLevel}";
} // cfg.extraEnvironment;
+2
nixos/tests/all-tests.nix
···
fenics = handleTest ./fenics.nix {};
ferm = handleTest ./ferm.nix {};
ferretdb = handleTest ./ferretdb.nix {};
+
fider = runTest ./fider.nix;
filesender = handleTest ./filesender.nix {};
filesystems-overlayfs = runTest ./filesystems-overlayfs.nix;
firefly-iii = handleTest ./firefly-iii.nix {};
···
rathole = handleTest ./rathole.nix {};
readarr = handleTest ./readarr.nix {};
realm = handleTest ./realm.nix {};
+
readeck = runTest ./readeck.nix;
redis = handleTest ./redis.nix {};
redlib = handleTest ./redlib.nix {};
redmine = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./redmine.nix {};
+33
nixos/tests/fider.nix
···
+
{ lib, ... }:
+
+
{
+
name = "fider-server";
+
+
nodes = {
+
machine =
+
{ pkgs, ... }:
+
{
+
services.fider = {
+
enable = true;
+
environment = {
+
JWT_SECRET = "not_so_secret";
+
BASE_URL = "/";
+
EMAIL_NOREPLY = "noreply@fider.io";
+
EMAIL_SMTP_HOST = "mailhog";
+
EMAIL_SMTP_PORT = "1025";
+
};
+
};
+
};
+
};
+
+
testScript = ''
+
machine.start()
+
machine.wait_for_unit("fider.service")
+
machine.wait_for_open_port(3000)
+
'';
+
+
meta.maintainers = with lib.maintainers; [
+
drupol
+
niklaskorz
+
];
+
}
+24
nixos/tests/readeck.nix
···
+
{ lib, ... }:
+
+
{
+
name = "readeck";
+
meta.maintainers = with lib.maintainers; [ julienmalka ];
+
+
nodes.machine =
+
{ pkgs, ... }:
+
{
+
services.readeck = {
+
enable = true;
+
environmentFile = pkgs.writeText "env-file" ''
+
READECK_SECRET_KEY="verysecretkey"
+
'';
+
};
+
};
+
+
testScript = ''
+
machine.start()
+
machine.wait_for_unit("readeck.service")
+
machine.wait_for_open_port(8000)
+
machine.succeed("curl --fail http://localhost:8000/login?r=%2F")
+
'';
+
}
+3 -3
pkgs/applications/audio/youtube-music/default.nix
···
stdenv.mkDerivation (finalAttrs: {
pname = "youtube-music";
-
version = "3.7.1";
+
version = "3.7.2";
src = fetchFromGitHub {
owner = "th-ch";
repo = "youtube-music";
rev = "v${finalAttrs.version}";
-
hash = "sha256-IV8uTfogy4LchZYIMqDDT96N+5NYE/jwSFc18EhFCb0=";
+
hash = "sha256-gZ3EvIjPa/THRwMigglGp+Wtv+wEN7V11KOu1QsyJpE=";
};
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
-
hash = "sha256-ET4NDUtsTTY3t06VSJLa8Cjd6fP4zs71w83FlsJnq1U=";
+
hash = "sha256-4yeLfolBquKFjKB4iYj8rMPvclfpjwHhV6/Xb/YNQWo=";
};
nativeBuildInputs = [
+2 -2
pkgs/applications/graphics/gimp/default.nix
···
libheif,
libxslt,
libgudev,
-
openexr,
+
openexr_3,
desktopToDarwinBundle,
AppKit,
Cocoa,
···
poppler
poppler_data
libtiff
-
openexr
+
openexr_3
libmng
librsvg
libwmf
+2 -2
pkgs/applications/video/haruna/default.nix
···
stdenv.mkDerivation rec {
pname = "haruna";
-
version = "1.2.1";
+
version = "1.3.0";
src = fetchFromGitLab {
owner = "multimedia";
repo = "haruna";
rev = "v${version}";
-
hash = "sha256-RxHCs5NiKORikbTyNwRD27aQfX5id4K/Lp1bQ8cAwVo=";
+
hash = "sha256-9KvqZzB9n4x11xhdEkdn0lxv92dbcWWbyL7GjqvfJhA=";
domain = "invent.kde.org";
};
+70
pkgs/by-name/du/duckstation/003-fix-NEON-intrinsics.patch
···
+
From 19e094e5c7aaaf375a13424044521701e85c8313 Mon Sep 17 00:00:00 2001
+
From: OPNA2608 <opna2608@protonmail.com>
+
Date: Thu, 9 Jan 2025 17:46:25 +0100
+
Subject: [PATCH] Fix usage of NEON intrinsics
+
+
---
+
src/common/gsvector_neon.h | 12 ++++++------
+
1 file changed, 6 insertions(+), 6 deletions(-)
+
+
diff --git a/src/common/gsvector_neon.h b/src/common/gsvector_neon.h
+
index e4991af5e..61b8dc09b 100644
+
--- a/src/common/gsvector_neon.h
+
+++ b/src/common/gsvector_neon.h
+
@@ -867,7 +867,7 @@ public:
+
+
ALWAYS_INLINE int mask() const
+
{
+
- const uint32x2_t masks = vshr_n_u32(vreinterpret_u32_s32(v2s), 31);
+
+ const uint32x2_t masks = vshr_n_u32(vreinterpret_u32_f32(v2s), 31);
+
return (vget_lane_u32(masks, 0) | (vget_lane_u32(masks, 1) << 1));
+
}
+
+
@@ -2882,7 +2882,7 @@ public:
+
ALWAYS_INLINE GSVector4 gt64(const GSVector4& v) const
+
{
+
#ifdef CPU_ARCH_ARM64
+
- return GSVector4(vreinterpretq_f32_f64(vcgtq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
+ return GSVector4(vreinterpretq_f32_u64(vcgtq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
#else
+
GSVector4 ret;
+
ret.U64[0] = (F64[0] > v.F64[0]) ? 0xFFFFFFFFFFFFFFFFULL : 0;
+
@@ -2894,7 +2894,7 @@ public:
+
ALWAYS_INLINE GSVector4 eq64(const GSVector4& v) const
+
{
+
#ifdef CPU_ARCH_ARM64
+
- return GSVector4(vreinterpretq_f32_f64(vceqq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
+ return GSVector4(vreinterpretq_f32_u64(vceqq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
#else
+
GSVector4 ret;
+
ret.U64[0] = (F64[0] == v.F64[0]) ? 0xFFFFFFFFFFFFFFFFULL : 0;
+
@@ -2906,7 +2906,7 @@ public:
+
ALWAYS_INLINE GSVector4 lt64(const GSVector4& v) const
+
{
+
#ifdef CPU_ARCH_ARM64
+
- return GSVector4(vreinterpretq_f32_f64(vcgtq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
+ return GSVector4(vreinterpretq_f32_u64(vcgtq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
#else
+
GSVector4 ret;
+
ret.U64[0] = (F64[0] < v.F64[0]) ? 0xFFFFFFFFFFFFFFFFULL : 0;
+
@@ -2918,7 +2918,7 @@ public:
+
ALWAYS_INLINE GSVector4 ge64(const GSVector4& v) const
+
{
+
#ifdef CPU_ARCH_ARM64
+
- return GSVector4(vreinterpretq_f32_f64(vcgeq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
+ return GSVector4(vreinterpretq_f32_u64(vcgeq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
#else
+
GSVector4 ret;
+
ret.U64[0] = (F64[0] >= v.F64[0]) ? 0xFFFFFFFFFFFFFFFFULL : 0;
+
@@ -2930,7 +2930,7 @@ public:
+
ALWAYS_INLINE GSVector4 le64(const GSVector4& v) const
+
{
+
#ifdef CPU_ARCH_ARM64
+
- return GSVector4(vreinterpretq_f32_f64(vcleq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
+ return GSVector4(vreinterpretq_f32_u64(vcleq_f64(vreinterpretq_f64_f32(v4s), vreinterpretq_f64_f32(v.v4s))));
+
#else
+
GSVector4 ret;
+
ret.U64[0] = (F64[0] <= v.F64[0]) ? 0xFFFFFFFFFFFFFFFFULL : 0;
+
--
+
2.47.0
+
+2
pkgs/by-name/du/duckstation/package.nix
···
./001-fix-test-inclusion.diff
# Patching yet another script that fills data based on git commands . . .
./002-hardcode-vars.diff
+
# Fix NEON intrinsics usage
+
./003-fix-NEON-intrinsics.patch
];
nativeBuildInputs = [
+1 -2
pkgs/by-name/el/elkhound/package.nix
···
homepage = "https://scottmcpeak.com/elkhound/";
license = licenses.bsd3;
maintainers = with maintainers; [ peterhoeg ];
-
# possibly works on Darwin
-
platforms = platforms.linux;
+
platforms = platforms.unix;
};
}
+12
pkgs/by-name/fi/fider/0001-disable-etc-copy.patch
···
+
diff --git a/app/cmd/server.go b/app/cmd/server.go
+
index fcfbeec2..71f01c9d 100644
+
--- a/app/cmd/server.go
+
+++ b/app/cmd/server.go
+
@@ -46,7 +46,6 @@ func RunServer() int {
+
})
+
}
+
+
- copyEtcFiles(ctx)
+
startJobs(ctx)
+
+
e := routes(web.New())
+42
pkgs/by-name/fi/fider/frontend.nix
···
+
{
+
lib,
+
esbuild,
+
buildNpmPackage,
+
+
pname,
+
version,
+
src,
+
npmDepsHash,
+
}:
+
+
buildNpmPackage {
+
inherit version src npmDepsHash;
+
pname = "${pname}-frontend";
+
+
nativeBuildInputs = [ esbuild ];
+
+
buildPhase = ''
+
runHook preBuild
+
+
npx lingui extract public/
+
npx lingui compile
+
NODE_ENV=production node esbuild.config.js
+
NODE_ENV=production npx webpack-cli
+
+
runHook postBuild
+
'';
+
+
installPhase = ''
+
runHook preInstall
+
+
mkdir -p $out
+
cp -r dist ssr.js favicon.png robots.txt $out/
+
+
runHook postInstall
+
'';
+
+
env = {
+
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = 1;
+
ESBUILD_BINARY_PATH = lib.getExe esbuild;
+
};
+
}
+110
pkgs/by-name/fi/fider/package.nix
···
+
{
+
lib,
+
stdenvNoCC,
+
fetchFromGitHub,
+
callPackage,
+
esbuild,
+
buildGoModule,
+
nixosTests,
+
nix-update-script,
+
}:
+
+
stdenvNoCC.mkDerivation (finalAttrs: {
+
pname = "fider";
+
version = "0.24.0";
+
+
src = fetchFromGitHub {
+
owner = "getfider";
+
repo = "fider";
+
tag = "v${finalAttrs.version}";
+
hash = "sha256-nzOplwsE0ppmxbTrNAgePnIQIAD/5Uu4gXlebFKWGfc=";
+
};
+
+
dontConfigure = true;
+
dontBuild = true;
+
+
# Allow easier version overrides, e.g.:
+
# pkgs.fider.overrideAttrs (prev: {
+
# version = "...";
+
# src = prev.src.override {
+
# hash = "...";
+
# };
+
# vendorHash = "...";
+
# npmDepsHash = "...";
+
# })
+
vendorHash = "sha256-CfopU72fpXiTaBtdf9A57Wb+flDu2XEtTISxImeJLL0=";
+
npmDepsHash = "sha256-gnboT5WQzftOCZ2Ouuza7bqpxJf+Zs7OWC8OHMZNHvw=";
+
+
server = callPackage ./server.nix {
+
inherit (finalAttrs)
+
pname
+
version
+
src
+
vendorHash
+
;
+
};
+
frontend = callPackage ./frontend.nix {
+
inherit (finalAttrs)
+
pname
+
version
+
src
+
npmDepsHash
+
;
+
# We specify the esbuild override here instead of in frontend.nix so end users can
+
# again easily override it if necessary, for example when changing to an unreleased
+
# version of fider requiring a newer esbuild than specified here:
+
# pkgs.fider.overrideAttrs (prev: {
+
# frontend = prev.frontend.override {
+
# esbuild = ...;
+
# };
+
# })
+
esbuild = esbuild.override {
+
buildGoModule =
+
args:
+
buildGoModule (
+
args
+
// rec {
+
version = "0.14.38";
+
src = fetchFromGitHub {
+
owner = "evanw";
+
repo = "esbuild";
+
tag = "v${version}";
+
hash = "sha256-rvMi1oC7qGidvi4zrm9KCMMntu6LJGVOGN6VmU2ivQE=";
+
};
+
vendorHash = "sha256-QPkBR+FscUc3jOvH7olcGUhM6OW4vxawmNJuRQxPuGs=";
+
}
+
);
+
};
+
};
+
+
installPhase = ''
+
runHook preInstall
+
+
mkdir -p $out/etc
+
cp -r locale views migrations $out/
+
cp -r etc/*.md $out/etc/
+
ln -s ${finalAttrs.server}/* $out/
+
ln -s ${finalAttrs.frontend}/* $out/
+
+
runHook postInstall
+
'';
+
+
passthru = {
+
tests = {
+
inherit (nixosTests) fider;
+
};
+
updateScript = nix-update-script { };
+
};
+
+
meta = {
+
description = "Open platform to collect and prioritize feedback";
+
homepage = "https://github.com/getfider/fider";
+
changelog = "https://github.com/getfider/fider/releases/tag/${finalAttrs.src.tag}";
+
license = lib.licenses.agpl3Only;
+
mainProgram = "fider";
+
maintainers = with lib.maintainers; [
+
drupol
+
niklaskorz
+
];
+
};
+
})
+30
pkgs/by-name/fi/fider/server.nix
···
+
{
+
buildGoModule,
+
+
pname,
+
version,
+
src,
+
vendorHash,
+
}:
+
+
buildGoModule {
+
inherit version src vendorHash;
+
pname = "${pname}-server";
+
+
patches = [
+
./0001-disable-etc-copy.patch
+
];
+
+
ldflags = [
+
"-s"
+
"-w"
+
];
+
+
doCheck = false; # requires a running PostgreSQL database
+
+
# preCheck = ''
+
# set -o allexport
+
# source ./.test.env
+
# set +o allexport
+
# '';
+
}
+3 -3
pkgs/by-name/io/iosevka/package.nix
···
buildNpmPackage rec {
pname = "Iosevka${toString set}";
-
version = "32.3.1";
+
version = "32.4.0";
src = fetchFromGitHub {
owner = "be5invis";
repo = "iosevka";
rev = "v${version}";
-
hash = "sha256-WoRBDLCqLglTXeXtC8ZVELgDOv18dsCDvToUq3iPoDU=";
+
hash = "sha256-kB4CsC/hHstajLcVYBxO7RD0lsZymrxlUha4cRtQ7Ak=";
};
-
npmDepsHash = "sha256-gmaFzcTbocx3RYW4G4Lw/08f3c71draxRwzV0BA2/KY=";
+
npmDepsHash = "sha256-Qr7fN49qyaqaSutrdT7HjWis7jjwYR/S2kxkHs7EhXY=";
nativeBuildInputs =
[
+29 -12
pkgs/by-name/k3/k3d/package.nix
···
-
{ lib
-
, buildGoModule
-
, fetchFromGitHub
-
, installShellFiles
-
, k3sVersion ? null
+
{
+
lib,
+
buildGoModule,
+
fetchFromGitHub,
+
installShellFiles,
+
k3sVersion ? null,
}:
let
···
in
buildGoModule rec {
pname = "k3d";
-
version = "5.7.4";
+
version = "5.8.1";
src = fetchFromGitHub {
owner = "k3d-io";
repo = "k3d";
tag = "v${version}";
-
hash = "sha256-z+7yeX0ea/6+4aWbA5NYW/HzvVcJiSkewOvo+oXp9bE=";
+
hash = "sha256-o56kBcuTOrDG8ZovGsIK+LIMi2Wps3kYJrqQuJHMd+A=";
};
vendorHash = "sha256-lFmIRtkUiohva2Vtg4AqHaB5McVOWW5+SFShkNqYVZ8=";
···
nativeBuildInputs = [ installShellFiles ];
-
excludedPackages = [ "tools" "docgen" ];
+
excludedPackages = [
+
"tools"
+
"docgen"
+
];
ldflags =
-
let t = "github.com/k3d-io/k3d/v${lib.versions.major version}/version"; in
-
[ "-s" "-w" "-X ${t}.Version=v${version}" ] ++ lib.optionals k3sVersionSet [ "-X ${t}.K3sVersion=v${k3sVersion}" ];
+
let
+
t = "github.com/k3d-io/k3d/v${lib.versions.major version}/version";
+
in
+
[
+
"-s"
+
"-w"
+
"-X ${t}.Version=v${version}"
+
]
+
++ lib.optionals k3sVersionSet [ "-X ${t}.K3sVersion=v${k3sVersion}" ];
preCheck = ''
# skip test that uses networking
substituteInPlace version/version_test.go \
-
--replace "TestGetK3sVersion" "SkipGetK3sVersion"
+
--replace-fail "TestGetK3sVersion" "SkipGetK3sVersion"
'';
postInstall = ''
···
multi-node k3s cluster on a single machine using docker.
'';
license = licenses.mit;
-
maintainers = with maintainers; [ kuznero jlesquembre ngerstle jk ricochet ];
+
maintainers = with maintainers; [
+
kuznero
+
jlesquembre
+
ngerstle
+
jk
+
ricochet
+
];
platforms = platforms.linux ++ platforms.darwin;
};
}
+92
pkgs/by-name/re/readeck/package.nix
···
+
{
+
fetchFromGitea,
+
fetchNpmDeps,
+
buildGoModule,
+
nodejs,
+
npmHooks,
+
lib,
+
}:
+
+
let
+
+
file-compose = buildGoModule {
+
pname = "file-compose";
+
version = "unstable-2023-10-21";
+
+
src = fetchFromGitea {
+
domain = "codeberg.org";
+
owner = "readeck";
+
repo = "file-compose";
+
rev = "afa938655d412556a0db74b202f9bcc1c40d8579";
+
hash = "sha256-rMANRqUQRQ8ahlxuH1sWjlGpNvbReBOXIkmBim/wU2o=";
+
};
+
+
vendorHash = "sha256-Qwixx3Evbf+53OFeS3Zr7QCkRMfgqc9hUA4eqEBaY0c=";
+
};
+
in
+
+
buildGoModule rec {
+
pname = "readeck";
+
version = "0.17.1";
+
+
src = fetchFromGitea {
+
domain = "codeberg.org";
+
owner = "readeck";
+
repo = "readeck";
+
tag = version;
+
hash = "sha256-+GgjR1mxD93bFNaLeDuEefPlQEV9jNgFIo8jTAxphyo=";
+
};
+
+
nativeBuildInputs = [
+
nodejs
+
npmHooks.npmConfigHook
+
];
+
+
npmRoot = "web";
+
+
NODE_PATH = "$npmDeps";
+
+
preBuild = ''
+
make web-build
+
${file-compose}/bin/file-compose -format json docs/api/api.yaml docs/assets/api.json
+
go run ./tools/docs docs/src docs/assets
+
'';
+
+
tags = [
+
"netgo"
+
"osusergo"
+
"sqlite_omit_load_extension"
+
"sqlite_foreign_keys"
+
"sqlite_json1"
+
"sqlite_fts5"
+
"sqlite_secure_delete"
+
];
+
+
ldflags = [
+
"-X"
+
"codeberg.org/readeck/readeck/configs.version=${version}"
+
];
+
overrideModAttrs = oldAttrs: {
+
# Do not add `npmConfigHook` to `goModules`
+
nativeBuildInputs = lib.remove npmHooks.npmConfigHook oldAttrs.nativeBuildInputs;
+
# Do not run `preBuild` when building `goModules`
+
preBuild = null;
+
};
+
+
npmDeps = fetchNpmDeps {
+
src = "${src}/web";
+
hash = "sha256-7fRSkXKAMEC7rFmSF50DM66SVhV68g93PMBjrtkd9/E=";
+
};
+
+
vendorHash = "sha256-O/ZrpT6wTtPwBDUCAmR0XHRgQmd46/MPvWNE0EvD3bg=";
+
+
meta = {
+
description = "Web application that lets you save the readable content of web pages you want to keep forever.";
+
mainProgram = "readeck";
+
homepage = "https://readeck.org/";
+
changelog = "https://github.com/readeck/readeck/releases/tag/${version}";
+
license = lib.licenses.agpl3Only;
+
maintainers = with lib.maintainers; [ julienmalka ];
+
};
+
+
}
+1 -1
pkgs/by-name/si/signal-desktop/signal-desktop-darwin.nix
···
src = fetchurl {
url = "https://updates.signal.org/desktop/signal-desktop-mac-universal-${finalAttrs.version}.dmg";
-
hash = "sha256-C5wzKhJcH2FJQJk5u2FGBrGDbezHBIIIUMkkVV6T8S4=";
+
hash = "sha256-bSpiK8Q5A0q4fUuVmLBaEjlVB7fXOcSHo5epelgHPA0=";
};
sourceRoot = ".";
+5 -5
pkgs/by-name/sw/sway-easyfocus/package.nix
···
rustPlatform.buildRustPackage rec {
pname = "sway-easyfocus";
-
version = "unstable-2023-11-05";
+
version = "0.2.0";
src = fetchFromGitHub {
owner = "edzdez";
repo = "sway-easyfocus";
-
rev = "4c70f6728dbfc859e60505f0a7fd82f5a90ed42c";
-
hash = "sha256-WvYXhf13ZCoa+JAF4bYgi5mI22i9pZLtbIhF1odqaTU=";
+
tag = version;
+
hash = "sha256-ogqstgJqUczn0LDwpOAppC1J/Cs0IEOAXjNAnbiKn6M=";
};
-
cargoHash = "sha256-9cN0ervcU8JojwG7J250fprbCD2rB9kh9TbRU+wCE/Y=";
+
cargoHash = "sha256-lAyKW6tjb4lVNA8xtvXLYYiLeKxSe/yfyY6h/f/WuP4=";
nativeBuildInputs = [
pkg-config
···
description = "Tool to help efficiently focus windows in Sway, inspired by i3-easyfocus";
homepage = "https://github.com/edzdez/sway-easyfocus";
license = lib.licenses.mit;
-
maintainers = with lib.maintainers; [ ];
+
maintainers = with lib.maintainers; [ pjones ];
mainProgram = "sway-easyfocus";
};
}
+1
pkgs/by-name/ta/tailscale/package.nix
···
"cmd/derper"
"cmd/derpprobe"
"cmd/tailscaled"
+
"cmd/tsidp"
];
ldflags = [
+11 -4
pkgs/by-name/we/weidu/package.nix
···
ocaml-ng,
perl,
which,
-
gnumake42,
+
fetchpatch,
}:
let
···
sha256 = "sha256-+vkKTzFZdAzY2dL+mZ4A0PDxhTKGgs9bfArz7S6b4m4=";
};
+
patches = [
+
(fetchpatch {
+
url = "https://github.com/WeiDUorg/weidu/commit/bb90190d8bf7d102952c07d8288a7dc6c7a3322e.patch";
+
hash = "sha256-Z4hHdMR1dYjJeERJSqlYynyPu2CvE6+XJuCr9ogDmvk=";
+
})
+
];
+
postPatch = ''
substitute sample.Configuration Configuration \
--replace /usr/bin ${lib.makeBinPath [ ocaml' ]} \
+
--replace /usr/local/bin ${lib.makeBinPath [ ocaml' ]} \
--replace elkhound ${elkhound}/bin/elkhound
mkdir -p obj/{.depend,x86_LINUX}
···
ocaml'
perl
which
-
gnumake42
];
buildFlags = [
···
homepage = "https://weidu.org";
license = licenses.gpl2Only;
maintainers = with maintainers; [ peterhoeg ];
-
# should work fine on both Darwin and Windows
-
platforms = platforms.linux;
+
# should work fine on Windows
+
platforms = platforms.unix;
};
}
+2 -2
pkgs/by-name/yu/yutto/package.nix
···
python3Packages.buildPythonApplication rec {
pname = "yutto";
-
version = "2.0.0-rc.6";
+
version = "2.0.0-rc.7";
pyproject = true;
disabled = python3Packages.pythonOlder "3.9";
···
owner = "yutto-dev";
repo = "yutto";
tag = "v${version}";
-
hash = "sha256-h7ziP3+qHUFs16MuUaUPZ7qspIFCIzExDyUEo12DJIE=";
+
hash = "sha256-yNAQmpR65FSCbciSSdO2eHUJcE6Dl8J4dqq6GHt5NDQ=";
};
build-system = with python3Packages; [ hatchling ];
+1 -1
pkgs/development/lisp-modules/packages.nix
···
lispLibs = super.mathkit.lispLibs ++ [ super.sb-cga ];
};
-
stumpwm = super.stumpwm.overrideAttrs {
+
stumpwm = super.stumpwm.overrideLispAttrs {
inherit (pkgs.stumpwm) src version;
meta = {
inherit (pkgs.stumpwm.meta) description license homepage;
+45
pkgs/development/lua-modules/generated-packages.nix
···
};
}) {};
+
orgmode = callPackage({ buildLuarocksPackage, fetchurl, fetchzip, luaOlder, tree-sitter-orgmode }:
+
buildLuarocksPackage {
+
pname = "orgmode";
+
version = "0.3.61-1";
+
knownRockspec = (fetchurl {
+
url = "mirror://luarocks/orgmode-0.3.61-1.rockspec";
+
sha256 = "1sdmqaq3vzpb0c74n45piqrlcw3liiqlv282nrgr16jzsz1c870g";
+
}).outPath;
+
src = fetchzip {
+
url = "https://github.com/nvim-orgmode/orgmode/archive/0.3.61.zip";
+
sha256 = "1gkpwyfvw9z92277q6311r924rmb9zidgmlr4xxkmn2xrj5qwl7x";
+
};
+
+
disabled = luaOlder "5.1";
+
propagatedBuildInputs = [ tree-sitter-orgmode ];
+
+
meta = {
+
homepage = "https://nvim-orgmode.github.io/";
+
description = "Orgmode clone written in Lua for Neovim 0.9+.";
+
license.fullName = "MIT";
+
};
+
}) {};
+
pathlib-nvim = callPackage({ buildLuarocksPackage, fetchurl, fetchzip, luaOlder, nvim-nio }:
buildLuarocksPackage {
pname = "pathlib.nvim";
···
homepage = "https://github.com/nvim-neorg/tree-sitter-norg";
description = "The official tree-sitter parser for Norg documents.";
maintainers = with lib.maintainers; [ mrcjkb ];
+
license.fullName = "MIT";
+
};
+
}) {};
+
+
tree-sitter-orgmode = callPackage({ buildLuarocksPackage, fetchurl, fetchzip, luarocks-build-treesitter-parser }:
+
buildLuarocksPackage {
+
pname = "tree-sitter-orgmode";
+
version = "1.3.2-1";
+
knownRockspec = (fetchurl {
+
url = "mirror://luarocks/tree-sitter-orgmode-1.3.2-1.rockspec";
+
sha256 = "1md45ic96yf3agay30w9icr9c1v5fs0p6zs4dd5d0clrsc9029c4";
+
}).outPath;
+
src = fetchzip {
+
url = "https://github.com/nvim-orgmode/tree-sitter-org/archive/v1.3.2.zip";
+
sha256 = "1y1dyabvmm2q51nmi58lv0zf7sdz066i319s5j3ch6abcm1wv24i";
+
};
+
+
nativeBuildInputs = [ luarocks-build-treesitter-parser ];
+
+
meta = {
+
homepage = "https://github.com/nvim-orgmode/tree-sitter-org";
+
description = "A fork of tree-sitter-org, for use with the orgmode Neovim plugin";
license.fullName = "MIT";
};
}) {};
+21 -3
pkgs/development/lua-modules/overrides.nix
···
nativeBuildInputs = oa.nativeBuildInputs ++ [ cargo rustPlatform.cargoSetupHook ];
});
+
tl = prev.tl.overrideAttrs ({
+
preConfigure = ''
+
rm luarocks.lock
+
'';
+
});
+
toml-edit = prev.toml-edit.overrideAttrs (oa: {
cargoDeps = rustPlatform.fetchCargoTarball {
···
];
});
-
tl = prev.tl.overrideAttrs ({
-
preConfigure = ''
-
rm luarocks.lock
+
tree-sitter-orgmode = prev.tree-sitter-orgmode.overrideAttrs (oa: {
+
propagatedBuildInputs =
+
let
+
# HACK: luarocks-nix puts rockspec build dependencies in the nativeBuildInputs,
+
# but that doesn't seem to work
+
lua = lib.head oa.propagatedBuildInputs;
+
in
+
oa.propagatedBuildInputs
+
++ [
+
lua.pkgs.luarocks-build-treesitter-parser
+
tree-sitter
+
];
+
+
preInstall = ''
+
export HOME="$TMPDIR";
'';
});
+2 -2
pkgs/development/python-modules/aioraven/default.nix
···
buildPythonPackage rec {
pname = "aioraven";
-
version = "0.7.0";
+
version = "0.7.1";
pyproject = true;
disabled = pythonOlder "3.9";
···
owner = "cottsay";
repo = "aioraven";
tag = version;
-
hash = "sha256-ux2jeXkh8YsJ6mItXOx40pp0Tc+aJXMV7ZqyZg+iy2c=";
+
hash = "sha256-rGqaDJtpdDWd8fxdfwU+rmgwEzZyYHfbiZxUlWoH2ks=";
};
build-system = [ setuptools ];
+2 -2
pkgs/development/python-modules/asteval/default.nix
···
buildPythonPackage rec {
pname = "asteval";
-
version = "1.0.5";
+
version = "1.0.6";
pyproject = true;
disabled = pythonOlder "3.8";
···
owner = "lmfit";
repo = "asteval";
tag = version;
-
hash = "sha256-PRmTbP3zRnkCxdeb45LBz5m/Ymoi4lq2poKuG9Esg9g=";
+
hash = "sha256-DzLVe8TlWAPQXzai9CJlDAow6UTSmkA/DW3fT30YfZY=";
};
postPatch = ''
+2 -2
pkgs/development/python-modules/ayla-iot-unofficial/default.nix
···
buildPythonPackage rec {
pname = "ayla-iot-unofficial";
-
version = "1.4.4";
+
version = "1.4.5";
pyproject = true;
src = fetchFromGitHub {
owner = "rewardone";
repo = "ayla-iot-unofficial";
tag = "v${version}";
-
hash = "sha256-LYHfu02FYoL2D9dEL3CM3llRXMa2M3EMU9CAsl1Cgoo=";
+
hash = "sha256-FV3jes1cpvYbpCmJ+gdzBdsii1kyYe46R1NIpxiELBY=";
};
build-system = [ setuptools ];
+2 -2
pkgs/development/python-modules/cyclopts/default.nix
···
buildPythonPackage rec {
pname = "cyclopts";
-
version = "3.2.1";
+
version = "3.3.0";
pyproject = true;
disabled = pythonOlder "3.8";
···
owner = "BrianPugh";
repo = "cyclopts";
tag = "v${version}";
-
hash = "sha256-dHmoO9agZBhDviowtvuAox8hJsHcxgQTRxpaYmy50Dk=";
+
hash = "sha256-sXTKBDfQSqMWBX+wrhP6fCugGSuXM8mOkEroFWPalVs=";
};
build-system = [
+2 -2
pkgs/development/python-modules/kasa-crypt/default.nix
···
buildPythonPackage rec {
pname = "kasa-crypt";
-
version = "0.4.4";
+
version = "0.5.0";
pyproject = true;
disabled = pythonOlder "3.7";
···
owner = "bdraco";
repo = "kasa-crypt";
tag = "v${version}";
-
hash = "sha256-9uDloaf9w75O+7r27PK/xOf0TrK43ndxnTUcm4CmOXo=";
+
hash = "sha256-pkUB2RTCTZW9NhZlxBA9YC+8yWx+6yrNXk8OGAfGto4=";
};
postPatch = ''
+2 -2
pkgs/development/python-modules/mitogen/default.nix
···
buildPythonPackage rec {
pname = "mitogen";
-
version = "0.3.20";
+
version = "0.3.21";
pyproject = true;
disabled = pythonOlder "3.7";
···
owner = "mitogen-hq";
repo = "mitogen";
tag = "v${version}";
-
hash = "sha256-XA4ra06OHUV67HF093Mfi0M+Dd6K3gMnOYeOB663DhA=";
+
hash = "sha256-F8W15JHOuQ+MhQtQZz+zssgeZqFC+agqINnFaKP0lto=";
};
build-system = [ setuptools ];
+2 -2
pkgs/development/python-modules/python-overseerr/default.nix
···
buildPythonPackage rec {
pname = "python-overseerr";
-
version = "0.5.0";
+
version = "0.6.0";
pyproject = true;
disabled = pythonOlder "3.11";
···
owner = "joostlek";
repo = "python-overseerr";
tag = "v${version}";
-
hash = "sha256-MdJISHU/YbmQReT/Sf29jERUkuFASNCq4NQnk/BKK70=";
+
hash = "sha256-XkuHy8gF8z5t1AcdVdBYWHBgOpAM9jpO41IM7DB3Wt0=";
};
build-system = [ poetry-core ];
+7 -7
pkgs/development/python-modules/safety/default.nix
···
buildPythonPackage rec {
pname = "safety";
-
version = "3.12.13";
+
version = "3.2.14";
-
disabled = pythonOlder "3.7";
+
disabled = pythonOlder "3.8";
pyproject = true;
···
owner = "pyupio";
repo = "safety";
tag = version;
-
hash = "sha256-pE1J2hoV4glB1PisDrhCE/4m0J1gEHz/Tp/GJE83lBc=";
+
hash = "sha256-/RB+ota6dnlbJvtOOoIOHD+BjBzZIJRhEOAUQggUgB4=";
};
postPatch = ''
···
build-system = [ setuptools ];
pythonRelaxDeps = [
-
"filelock"
+
"pydantic"
];
dependencies = [
···
export HOME=$(mktemp -d)
'';
-
meta = with lib; {
+
meta = {
description = "Checks installed dependencies for known vulnerabilities";
mainProgram = "safety";
homepage = "https://github.com/pyupio/safety";
changelog = "https://github.com/pyupio/safety/blob/${version}/CHANGELOG.md";
-
license = licenses.mit;
-
maintainers = with maintainers; [
+
license = lib.licenses.mit;
+
maintainers = with lib.maintainers; [
thomasdesr
dotlambda
];
+2 -2
pkgs/development/python-modules/thermopro-ble/default.nix
···
buildPythonPackage rec {
pname = "thermopro-ble";
-
version = "0.10.0";
+
version = "0.10.1";
pyproject = true;
disabled = pythonOlder "3.9";
···
owner = "bluetooth-devices";
repo = "thermopro-ble";
tag = "v${version}";
-
hash = "sha256-xaRbp9XLCDGJ0NE0TzJygn2OzqvSFszs97vGHawCkzU=";
+
hash = "sha256-OGUgWiD/4a2A40wut70YAvwBREpB9xjN0YcFpu411z4=";
};
build-system = [ poetry-core ];