Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2024-08-07 12:01:49 +00:00 committed by GitHub
commit 4b7471c330
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
82 changed files with 5930 additions and 3428 deletions

View File

@ -2,7 +2,7 @@
let let
cfg = config.services.librenms; cfg = config.services.librenms;
settingsFormat = pkgs.formats.json {}; settingsFormat = pkgs.formats.json { };
configJson = settingsFormat.generate "librenms-config.json" cfg.settings; configJson = settingsFormat.generate "librenms-config.json" cfg.settings;
package = pkgs.librenms.override { package = pkgs.librenms.override {
@ -16,12 +16,13 @@ let
upload_max_filesize = 100M upload_max_filesize = 100M
date.timezone = "${config.time.timeZone}" date.timezone = "${config.time.timeZone}"
''; '';
phpIni = pkgs.runCommand "php.ini" { phpIni = pkgs.runCommand "php.ini"
inherit (package) phpPackage; {
inherit phpOptions; inherit (package) phpPackage;
preferLocalBuild = true; inherit phpOptions;
passAsFile = [ "phpOptions" ]; preferLocalBuild = true;
} '' passAsFile = [ "phpOptions" ];
} ''
cat $phpPackage/etc/php.ini $phpOptionsPath > $out cat $phpPackage/etc/php.ini $phpOptionsPath > $out
''; '';
@ -31,14 +32,20 @@ let
if [[ "$USER" != ${cfg.user} ]]; then if [[ "$USER" != ${cfg.user} ]]; then
sudo='exec /run/wrappers/bin/sudo -u ${cfg.user}' sudo='exec /run/wrappers/bin/sudo -u ${cfg.user}'
fi fi
$sudo ${package}/artisan $* $sudo ${package}/artisan "$@"
''; '';
lnmsWrapper = pkgs.writeShellScriptBin "lnms" '' lnmsWrapper = pkgs.writeShellScriptBin "lnms" ''
cd ${package} cd ${package}
exec ${package}/lnms $* sudo=exec
if [[ "$USER" != ${cfg.user} ]]; then
sudo='exec /run/wrappers/bin/sudo -u ${cfg.user}'
fi
$sudo ${package}/lnms "$@"
''; '';
configFile = pkgs.writeText "config.php" '' configFile = pkgs.writeText "config.php" ''
<?php <?php
$new_config = json_decode(file_get_contents("${cfg.dataDir}/config.json"), true); $new_config = json_decode(file_get_contents("${cfg.dataDir}/config.json"), true);
@ -47,7 +54,8 @@ let
${lib.optionalString (cfg.extraConfig != null) cfg.extraConfig} ${lib.optionalString (cfg.extraConfig != null) cfg.extraConfig}
''; '';
in { in
{
options.services.librenms = with lib; { options.services.librenms = with lib; {
enable = mkEnableOption "LibreNMS network monitoring system"; enable = mkEnableOption "LibreNMS network monitoring system";
@ -191,7 +199,8 @@ in {
nginx = mkOption { nginx = mkOption {
type = types.submodule ( type = types.submodule (
recursiveUpdate recursiveUpdate
(import ../web-servers/nginx/vhost-options.nix { inherit config lib; }) {} (import ../web-servers/nginx/vhost-options.nix { inherit config lib; })
{ }
); );
default = { }; default = { };
example = literalExpression '' example = literalExpression ''
@ -240,6 +249,7 @@ in {
default = "localhost"; default = "localhost";
description = '' description = ''
Hostname or IP of the MySQL/MariaDB server. Hostname or IP of the MySQL/MariaDB server.
Ignored if 'socket' is defined.
''; '';
}; };
@ -248,6 +258,7 @@ in {
default = 3306; default = 3306;
description = '' description = ''
Port of the MySQL/MariaDB server. Port of the MySQL/MariaDB server.
Ignored if 'socket' is defined.
''; '';
}; };
@ -264,15 +275,28 @@ in {
default = "librenms"; default = "librenms";
description = '' description = ''
Name of the user on the MySQL/MariaDB server. Name of the user on the MySQL/MariaDB server.
Ignored if 'socket' is defined.
''; '';
}; };
passwordFile = mkOption { passwordFile = mkOption {
type = types.path; type = types.nullOr types.path;
default = null;
example = "/run/secrets/mysql.pass"; example = "/run/secrets/mysql.pass";
description = '' description = ''
A file containing the password for the user of the MySQL/MariaDB server. A file containing the password for the user of the MySQL/MariaDB server.
Must be readable for the LibreNMS user. Must be readable for the LibreNMS user.
Ignored if 'socket' is defined, mandatory otherwise.
'';
};
socket = mkOption {
type = types.nullOr types.str;
default = null;
example = "/run/mysqld/mysqld.sock";
description = ''
A unix socket to mysql, accessible by the librenms user.
Useful when mysql is on the localhost.
''; '';
}; };
}; };
@ -289,7 +313,7 @@ in {
settings = mkOption { settings = mkOption {
type = types.submodule { type = types.submodule {
freeformType = settingsFormat.type; freeformType = settingsFormat.type;
options = {}; options = { };
}; };
description = '' description = ''
Attrset of the LibreNMS configuration. Attrset of the LibreNMS configuration.
@ -483,13 +507,15 @@ in {
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) [ cfg.environmentFile ]; EnvironmentFile = lib.mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
ExecStartPre = lib.mkIf cfg.database.createLocally [ "!${pkgs.writeShellScript "librenms-db-init" '' ExecStartPre = lib.mkIf cfg.database.createLocally [
"!${pkgs.writeShellScript "librenms-db-init" ''
DB_PASSWORD=$(cat ${cfg.database.passwordFile} | tr -d '\n') DB_PASSWORD=$(cat ${cfg.database.passwordFile} | tr -d '\n')
echo "ALTER USER '${cfg.database.username}'@'localhost' IDENTIFIED BY '$DB_PASSWORD';" | ${pkgs.mariadb}/bin/mysql echo "ALTER USER '${cfg.database.username}'@'localhost' IDENTIFIED BY '$DB_PASSWORD';" | ${pkgs.mariadb}/bin/mysql
${lib.optionalString cfg.useDistributedPollers '' ${lib.optionalString cfg.useDistributedPollers ''
echo "ALTER USER '${cfg.database.username}'@'%' IDENTIFIED BY '$DB_PASSWORD';" | ${pkgs.mariadb}/bin/mysql echo "ALTER USER '${cfg.database.username}'@'%' IDENTIFIED BY '$DB_PASSWORD';" | ${pkgs.mariadb}/bin/mysql
''} ''}
''}"]; ''}"
];
}; };
script = '' script = ''
set -euo pipefail set -euo pipefail
@ -516,13 +542,24 @@ in {
${lib.optionalString (cfg.useDistributedPollers || cfg.distributedPoller.enable) '' ${lib.optionalString (cfg.useDistributedPollers || cfg.distributedPoller.enable) ''
echo "CACHE_DRIVER=memcached" >> ${cfg.dataDir}/.env echo "CACHE_DRIVER=memcached" >> ${cfg.dataDir}/.env
''} ''}
echo "DB_HOST=${cfg.database.host}" >> ${cfg.dataDir}/.env
echo "DB_PORT=${toString cfg.database.port}" >> ${cfg.dataDir}/.env
echo "DB_DATABASE=${cfg.database.database}" >> ${cfg.dataDir}/.env echo "DB_DATABASE=${cfg.database.database}" >> ${cfg.dataDir}/.env
echo "DB_USERNAME=${cfg.database.username}" >> ${cfg.dataDir}/.env ''
echo -n "DB_PASSWORD=" >> ${cfg.dataDir}/.env + (
cat ${cfg.database.passwordFile} >> ${cfg.dataDir}/.env if ! isNull cfg.database.socket
then ''
# use socket connection
echo "DB_SOCKET=${cfg.database.socket}" >> ${cfg.dataDir}/.env
''
else ''
# use TCP connection
echo "DB_HOST=${cfg.database.host}" >> ${cfg.dataDir}/.env
echo "DB_PORT=${toString cfg.database.port}" >> ${cfg.dataDir}/.env
echo "DB_USERNAME=${cfg.database.username}" >> ${cfg.dataDir}/.env
echo -n "DB_PASSWORD=" >> ${cfg.dataDir}/.env
cat ${cfg.database.passwordFile} >> ${cfg.dataDir}/.env
''
)
+ ''
# clear cache after update # clear cache after update
OLD_VERSION=$(cat ${cfg.dataDir}/version) OLD_VERSION=$(cat ${cfg.dataDir}/version)
if [[ $OLD_VERSION != "${package.version}" ]]; then if [[ $OLD_VERSION != "${package.version}" ]]; then
@ -560,29 +597,31 @@ in {
services.cron = { services.cron = {
enable = true; enable = true;
systemCronJobs = let systemCronJobs =
env = "PHPRC=${phpIni}"; let
in [ env = "PHPRC=${phpIni}";
# based on crontab provided by LibreNMS in
"33 */6 * * * ${cfg.user} ${env} ${package}/cronic ${package}/discovery-wrapper.py 1" [
"*/5 * * * * ${cfg.user} ${env} ${package}/discovery.php -h new >> /dev/null 2>&1" # based on crontab provided by LibreNMS
"33 */6 * * * ${cfg.user} ${env} ${package}/cronic ${package}/discovery-wrapper.py 1"
"*/5 * * * * ${cfg.user} ${env} ${package}/discovery.php -h new >> /dev/null 2>&1"
"${if cfg.enableOneMinutePolling then "*" else "*/5"} * * * * ${cfg.user} ${env} ${package}/cronic ${package}/poller-wrapper.py ${toString cfg.pollerThreads}" "${if cfg.enableOneMinutePolling then "*" else "*/5"} * * * * ${cfg.user} ${env} ${package}/cronic ${package}/poller-wrapper.py ${toString cfg.pollerThreads}"
"* * * * * ${cfg.user} ${env} ${package}/alerts.php >> /dev/null 2>&1" "* * * * * ${cfg.user} ${env} ${package}/alerts.php >> /dev/null 2>&1"
"*/5 * * * * ${cfg.user} ${env} ${package}/poll-billing.php >> /dev/null 2>&1" "*/5 * * * * ${cfg.user} ${env} ${package}/poll-billing.php >> /dev/null 2>&1"
"01 * * * * ${cfg.user} ${env} ${package}/billing-calculate.php >> /dev/null 2>&1" "01 * * * * ${cfg.user} ${env} ${package}/billing-calculate.php >> /dev/null 2>&1"
"*/5 * * * * ${cfg.user} ${env} ${package}/check-services.php >> /dev/null 2>&1" "*/5 * * * * ${cfg.user} ${env} ${package}/check-services.php >> /dev/null 2>&1"
# extra: fast ping # extra: fast ping
"* * * * * ${cfg.user} ${env} ${package}/ping.php >> /dev/null 2>&1" "* * * * * ${cfg.user} ${env} ${package}/ping.php >> /dev/null 2>&1"
# daily.sh tasks are split to exclude update # daily.sh tasks are split to exclude update
"19 0 * * * ${cfg.user} ${env} ${package}/daily.sh cleanup >> /dev/null 2>&1" "19 0 * * * ${cfg.user} ${env} ${package}/daily.sh cleanup >> /dev/null 2>&1"
"19 0 * * * ${cfg.user} ${env} ${package}/daily.sh notifications >> /dev/null 2>&1" "19 0 * * * ${cfg.user} ${env} ${package}/daily.sh notifications >> /dev/null 2>&1"
"19 0 * * * ${cfg.user} ${env} ${package}/daily.sh peeringdb >> /dev/null 2>&1" "19 0 * * * ${cfg.user} ${env} ${package}/daily.sh peeringdb >> /dev/null 2>&1"
"19 0 * * * ${cfg.user} ${env} ${package}/daily.sh mac_oui >> /dev/null 2>&1" "19 0 * * * ${cfg.user} ${env} ${package}/daily.sh mac_oui >> /dev/null 2>&1"
]; ];
}; };
security.wrappers = { security.wrappers = {

View File

@ -168,7 +168,7 @@ in {
message = "Backups for database backends other than sqlite will need customization"; message = "Backups for database backends other than sqlite will need customization";
} }
{ {
assertion = !(lib.hasPrefix dataDir cfg.backupDir); assertion = cfg.backupDir != null -> !(lib.hasPrefix dataDir cfg.backupDir);
message = "Backup directory can not be in ${dataDir}"; message = "Backup directory can not be in ${dataDir}";
} }
]; ];

View File

@ -3,7 +3,8 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
let let
api_token = "f87f42114e44b63ad1b9e3c3d33d6fbe"; # random md5 hash api_token = "f87f42114e44b63ad1b9e3c3d33d6fbe"; # random md5 hash
wrong_api_token = "e68ba041fcf1eab923a7a6de3af5f726"; # another random md5 hash wrong_api_token = "e68ba041fcf1eab923a7a6de3af5f726"; # another random md5 hash
in { in
{
name = "librenms"; name = "librenms";
meta.maintainers = lib.teams.wdz.members; meta.maintainers = lib.teams.wdz.members;
@ -60,37 +61,29 @@ in {
}; };
nodes.snmphost = { nodes.snmphost = {
networking.firewall.allowedUDPPorts = [ 161 ];
systemd.services.snmpd = { services.snmpd = {
description = "snmpd"; enable = true;
after = [ "network-online.target" ]; openFirewall = true;
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "forking";
User = "root";
Group = "root";
ExecStart = let
snmpd-config = pkgs.writeText "snmpd-config" ''
com2sec readonly default public
group MyROGroup v2c readonly configText = ''
view all included .1 80 com2sec readonly default public
access MyROGroup "" any noauth exact all none none
group MyROGroup v2c readonly
view all included .1 80
access MyROGroup "" any noauth exact all none none
syslocation Testcity, Testcountry
syscontact Testi mc Test <test@example.com>
'';
syslocation Testcity, Testcountry
syscontact Testi mc Test <test@example.com>
'';
in "${pkgs.net-snmp}/bin/snmpd -c ${snmpd-config} -C";
};
}; };
}; };
testScript = '' testScript = ''
start_all() start_all()
snmphost.wait_until_succeeds("pgrep snmpd") snmphost.wait_for_unit("snmpd.service")
librenms.wait_for_unit("lnms-api-init.service") librenms.wait_for_unit("lnms-api-init.service")
librenms.wait_for_open_port(80) librenms.wait_for_open_port(80)

View File

@ -8,6 +8,7 @@
, librttopo , librttopo
, libspatialite , libspatialite
, libxml2 , libxml2
, libz
, minizip , minizip
, proj , proj
, readosm , readosm
@ -34,6 +35,7 @@ stdenv.mkDerivation rec {
librttopo librttopo
libspatialite libspatialite
libxml2 libxml2
libz
minizip minizip
proj proj
readosm readosm

View File

@ -14,12 +14,12 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "vdr-softhddevice"; pname = "vdr-softhddevice";
version = "2.3.6"; version = "2.3.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ua0lnj"; owner = "ua0lnj";
repo = "vdr-plugin-softhddevice"; repo = "vdr-plugin-softhddevice";
sha256 = "sha256-T3OG93Bx1RVyXeqkNJvhOSGojZHIWT3DHHEIzUoykds="; sha256 = "sha256-gn1Z3pw8f0Tpo8Ot0hP9+p/KbK/EGOInE34BCH3aVp0=";
rev = "v${version}"; rev = "v${version}";
}; };

View File

@ -5,7 +5,10 @@
}: }:
let let
python3 = python311; python3 = python311.override {
self = python3;
packageOverrides = _: super: { tree-sitter = super.tree-sitter_0_21; };
};
in in
python3.pkgs.buildPythonApplication rec { python3.pkgs.buildPythonApplication rec {
pname = "autotools-language-server"; pname = "autotools-language-server";

View File

@ -15,14 +15,14 @@ let
"cli" "cli"
"desktop" "desktop"
]; ];
version = "0.39.0"; version = "0.40.0";
cli = fetchurl { cli = fetchurl {
url = "https://storage.googleapis.com/caido-releases/v${version}/caido-cli-v${version}-linux-x86_64.tar.gz"; url = "https://storage.googleapis.com/caido-releases/v${version}/caido-cli-v${version}-linux-x86_64.tar.gz";
hash = "sha256-I8UF2rzIKfpcrxyvDa4AReWDIHOKTCj3ERaWhG1xGG0="; hash = "sha256-G8sg+3Cp9QkSiiZ810z4jCfGvEJUFLorKT0JmHrO6Ao=";
}; };
desktop = fetchurl { desktop = fetchurl {
url = "https://storage.googleapis.com/caido-releases/v${version}/caido-desktop-v${version}-linux-x86_64.AppImage"; url = "https://storage.googleapis.com/caido-releases/v${version}/caido-desktop-v${version}-linux-x86_64.AppImage";
hash = "sha256-KYQck2+YYPLJN3L6qchacjyVyyXR3nmJDTX5GPB4WvI="; hash = "sha256-iNhitCNc221pYwcG+07GvP+bnTdtQGFjsloQ5Pth2l0=";
}; };
appimageContents = appimageTools.extractType2 { appimageContents = appimageTools.extractType2 {
inherit pname version; inherit pname version;

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,7 @@
, rustPlatform , rustPlatform
, fetchFromGitHub , fetchFromGitHub
, makeBinaryWrapper , makeBinaryWrapper
, pixman
, pkg-config , pkg-config
, libinput , libinput
, libglvnd , libglvnd
@ -18,27 +19,34 @@
, useSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd , useSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
}: }:
rustPlatform.buildRustPackage { rustPlatform.buildRustPackage rec {
pname = "cosmic-comp"; pname = "cosmic-comp";
version = "unstable-2023-11-13"; version = "1.0.0-alpha.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pop-os"; owner = "pop-os";
repo = "cosmic-comp"; repo = "cosmic-comp";
rev = "d051d141979820f50b75bd686c745fb7f84fcd05"; rev = "epoch-${version}";
hash = "sha256-8okRiVVPzmuPJjnv1YoQPQFI8g0j1DQhwUoO51dHgGA="; hash = "sha256-4NAIpyaITFNaTDBcsleIwKPq8nHNa77C7y+5hCIYXZE=";
}; };
cargoLock = { cargoLock = {
lockFile = ./Cargo.lock; lockFile = ./Cargo.lock;
outputHashes = { outputHashes = {
"cosmic-config-0.1.0" = "sha256-5WajbfcfCc0ZRpJfysqEydthOsF04ipb35QVWuWKrEs="; "atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA=";
"cosmic-protocols-0.1.0" = "sha256-st46wmOncJvu0kj6qaot6LT/ojmW/BwXbbGf8s0mdZ8="; "clipboard_macos-0.1.0" = "sha256-cG5vnkiyDlQnbEfV2sPbmBYKv1hd3pjJrymfZb8ziKk=";
"cosmic-config-0.1.0" = "sha256-nZCefRCq40K0Mcsav+akZbX89kHnliqAkB7vKx5WIwY=";
"cosmic-protocols-0.1.0" = "sha256-qgo8FMKo/uCbhUjfykRRN8KSavbyhZpu82M8npLcIPI=";
"cosmic-settings-config-0.1.0" = "sha256-/Qav6r4VQ8ZDSs/tqHeutxYH3u4HiTBFWTfAYUSl2HQ=";
"cosmic-text-0.12.1" = "sha256-x0XTxzbmtE2d4XCG/Nuq3DzBpz15BbnjRRlirfNJEiU=";
"d3d12-0.19.0" = "sha256-usrxQXWLGJDjmIdw1LBXtBvX+CchZDvE8fHC0LjvhD4=";
"glyphon-0.5.0" = "sha256-j1HrbEpUBqazWqNfJhpyjWuxYAxkvbXzRKeSouUoPWg=";
"id_tree-1.8.0" = "sha256-uKdKHRfPGt3vagOjhnri3aYY5ar7O3rp2/ivTfM2jT0="; "id_tree-1.8.0" = "sha256-uKdKHRfPGt3vagOjhnri3aYY5ar7O3rp2/ivTfM2jT0=";
"smithay-0.3.0" = "sha256-e6BSrsrVSBcOuF8m21m74h7DWZnYHGIYs/4D4ABvqNM="; "smithay-0.3.0" = "sha256-puo6xbWRTIco8luz3Jz83VXoRMkyb0ZH7kKHGlTzS5Q=";
"smithay-clipboard-0.8.0" = "sha256-4InFXm0ahrqFrtNLeqIuE3yeOpxKZJZx+Bc0yQDtv34=";
"smithay-egui-0.1.0" = "sha256-FcSoKCwYk3okwQURiQlDUcfk9m/Ne6pSblGAzHDaVHg="; "smithay-egui-0.1.0" = "sha256-FcSoKCwYk3okwQURiQlDUcfk9m/Ne6pSblGAzHDaVHg=";
"softbuffer-0.2.0" = "sha256-VD2GmxC58z7Qfu/L+sfENE+T8L40mvUKKSfgLmCTmjY="; "softbuffer-0.4.1" = "sha256-a0bUFz6O8CWRweNt/OxTvflnPYwO5nm6vsyc/WcXyNg=";
"taffy-0.3.11" = "sha256-0hXOEj6IjSW8e1t+rvxBFX6V9XRum3QO2Des1XlHJEw="; "taffy-0.3.11" = "sha256-SCx9GEIJjWdoNVyq+RZAGn0N71qraKZxf9ZWhvyzLaI=";
}; };
}; };
@ -50,6 +58,7 @@ rustPlatform.buildRustPackage {
libinput libinput
libxkbcommon libxkbcommon
mesa mesa
pixman
seatd seatd
udev udev
wayland wayland

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,7 @@
, cosmic-icons , cosmic-icons
, just , just
, pkg-config , pkg-config
, glib
, libxkbcommon , libxkbcommon
, wayland , wayland
, xorg , xorg
@ -13,34 +14,38 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "cosmic-files"; pname = "cosmic-files";
version = "0-unstable-2024-06-10"; version = "1.0.0-alpha.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pop-os"; owner = "pop-os";
repo = pname; repo = pname;
rev = "6123108f3ae3c7074264184952f0a53e49a981d5"; rev = "epoch-${version}";
hash = "sha256-BeqpoLIZbR5Dg7OGYGQMFWBLdD96n4t7fX8Ju9/h5JU="; hash = "sha256-UwQwZRzOyMvLRRmU2noxGrqblezkR8J2PNMVoyG0M0w=";
}; };
cargoLock = { cargoLock = {
lockFile = ./Cargo.lock; lockFile = ./Cargo.lock;
outputHashes = { outputHashes = {
"accesskit-0.12.2" = "sha256-ksaYMGT/oug7isQY8/1WD97XDUsX2ShBdabUzxWffYw="; "accesskit-0.12.2" = "sha256-1UwgRyUe0PQrZrpS7574oNLi13fg5HpgILtZGW6JNtQ=";
"atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA="; "atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA=";
"cosmic-config-0.1.0" = "sha256-eaG/HCwlKqSfEp6GEPeBS63j5WHq4qdYTNHqnW2zeeE="; "clipboard_macos-0.1.0" = "sha256-cG5vnkiyDlQnbEfV2sPbmBYKv1hd3pjJrymfZb8ziKk=";
"cosmic-text-0.11.2" = "sha256-Y9i5stMYpx+iqn4y5DJm1O1+3UIGp0/fSsnNq3Zloug="; "cosmic-client-toolkit-0.1.0" = "sha256-1XtyEvednEMN4MApxTQid4eed19dEN5ZBDt/XRjuda0=";
"cosmic-config-0.1.0" = "sha256-d2R5xytwf0BIbllG6elc/nn7nmiC3+VI1g3EiW8WEHA=";
"cosmic-text-0.12.1" = "sha256-x0XTxzbmtE2d4XCG/Nuq3DzBpz15BbnjRRlirfNJEiU=";
"d3d12-0.19.0" = "sha256-usrxQXWLGJDjmIdw1LBXtBvX+CchZDvE8fHC0LjvhD4="; "d3d12-0.19.0" = "sha256-usrxQXWLGJDjmIdw1LBXtBvX+CchZDvE8fHC0LjvhD4=";
"fs_extra-1.3.0" = "sha256-ftg5oanoqhipPnbUsqnA4aZcyHqn9XsINJdrStIPLoE=";
"glyphon-0.5.0" = "sha256-j1HrbEpUBqazWqNfJhpyjWuxYAxkvbXzRKeSouUoPWg="; "glyphon-0.5.0" = "sha256-j1HrbEpUBqazWqNfJhpyjWuxYAxkvbXzRKeSouUoPWg=";
"smithay-clipboard-0.8.0" = "sha256-4InFXm0ahrqFrtNLeqIuE3yeOpxKZJZx+Bc0yQDtv34=";
"softbuffer-0.4.1" = "sha256-a0bUFz6O8CWRweNt/OxTvflnPYwO5nm6vsyc/WcXyNg="; "softbuffer-0.4.1" = "sha256-a0bUFz6O8CWRweNt/OxTvflnPYwO5nm6vsyc/WcXyNg=";
"systemicons-0.7.0" = "sha256-zzAI+6mnpQOh+3mX7/sJ+w4a7uX27RduQ99PNxLNF78=";
"taffy-0.3.11" = "sha256-SCx9GEIJjWdoNVyq+RZAGn0N71qraKZxf9ZWhvyzLaI="; "taffy-0.3.11" = "sha256-SCx9GEIJjWdoNVyq+RZAGn0N71qraKZxf9ZWhvyzLaI=";
"trash-5.0.0" = "sha256-6cMo2GtMJjU+fbehlsGNmj3LbzSP+vOjA4en3OgmZ54=";
"winit-0.29.10" = "sha256-ScTII2AzK3SC8MVeASZ9jhVWsEaGrSQ2BnApTxgfxK4="; "winit-0.29.10" = "sha256-ScTII2AzK3SC8MVeASZ9jhVWsEaGrSQ2BnApTxgfxK4=";
}; };
}; };
# COSMIC applications now uses vergen for the About page # COSMIC applications now uses vergen for the About page
# Update the COMMIT_DATE to match when the commit was made # Update the COMMIT_DATE to match when the commit was made
env.VERGEN_GIT_COMMIT_DATE = "2024-06-10"; env.VERGEN_GIT_COMMIT_DATE = "2024-08-05";
env.VERGEN_GIT_SHA = src.rev; env.VERGEN_GIT_SHA = src.rev;
postPatch = '' postPatch = ''
@ -48,7 +53,7 @@ rustPlatform.buildRustPackage rec {
''; '';
nativeBuildInputs = [ just pkg-config makeBinaryWrapper ]; nativeBuildInputs = [ just pkg-config makeBinaryWrapper ];
buildInputs = [ wayland ]; buildInputs = [ glib libxkbcommon wayland ];
dontUseJustBuild = true; dontUseJustBuild = true;
@ -65,7 +70,7 @@ rustPlatform.buildRustPackage rec {
postInstall = '' postInstall = ''
wrapProgram "$out/bin/${pname}" \ wrapProgram "$out/bin/${pname}" \
--suffix XDG_DATA_DIRS : "${cosmic-icons}/share" \ --suffix XDG_DATA_DIRS : "${cosmic-icons}/share" \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ xorg.libX11 xorg.libXcursor xorg.libXrandr xorg.libXi wayland libxkbcommon ]} --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ xorg.libX11 xorg.libXcursor xorg.libXrandr xorg.libXi wayland ]}
''; '';
meta = with lib; { meta = with lib; {

View File

@ -0,0 +1,288 @@
diff --git a/fsnotifier.h b/fsnotifier.h
index e7b2a42456bc..9dfb61d8d5d0 100644
--- a/fsnotifier.h
+++ b/fsnotifier.h
@@ -61,7 +61,7 @@ bool init_inotify(void);
void set_inotify_callback(void (*callback)(const char *, uint32_t));
int get_inotify_fd(void);
int watch(const char* root, array* mounts);
-void unwatch(int id);
+void unwatch(int id, char* path, unsigned int path_len);
bool process_inotify_input(void);
void close_inotify(void);
diff --git a/inotify.c b/inotify.c
index a42846379476..0a33eded78bf 100644
--- a/inotify.c
+++ b/inotify.c
@@ -22,6 +22,8 @@ typedef struct watch_node_str {
struct watch_node_str* parent;
array* kids;
unsigned int path_len;
+ struct watch_node_str* prev;
+ struct watch_node_str* next;
char path[];
} watch_node;
@@ -102,7 +104,7 @@ int get_inotify_fd(void) {
#define EVENT_MASK (IN_MODIFY | IN_ATTRIB | IN_CREATE | IN_DELETE | IN_MOVE | IN_DELETE_SELF | IN_MOVE_SELF)
-static int add_watch(unsigned int path_len, watch_node* parent) {
+static int add_watch(unsigned int path_len, watch_node* parent, watch_node** out) {
int wd = inotify_add_watch(inotify_fd, path_buf, EVENT_MASK);
if (wd < 0) {
if (errno == EACCES || errno == ENOENT) {
@@ -123,36 +125,39 @@ static int add_watch(unsigned int path_len, watch_node* parent) {
userlog(LOG_INFO, "watching %s: %d", path_buf, wd);
}
- watch_node* node = table_get(watches, wd);
- if (node != NULL) {
- if (node->wd != wd) {
- userlog(LOG_ERR, "table error: corruption at %d:%s / %d:%s / %d", wd, path_buf, node->wd, node->path, watch_count);
- return ERR_ABORT;
- }
- else if (strcmp(node->path, path_buf) != 0) {
- char buf1[PATH_MAX], buf2[PATH_MAX];
- const char* normalized1 = realpath(node->path, buf1);
- const char* normalized2 = realpath(path_buf, buf2);
- if (normalized1 == NULL || normalized2 == NULL || strcmp(normalized1, normalized2) != 0) {
- userlog(LOG_ERR, "table error: collision at %d (new %s, existing %s)", wd, path_buf, node->path);
- return ERR_ABORT;
- }
- else {
- userlog(LOG_INFO, "intersection at %d: (new %s, existing %s, real %s)", wd, path_buf, node->path, normalized1);
- return ERR_IGNORE;
- }
- }
-
- return wd;
- }
-
- node = malloc(sizeof(watch_node) + path_len + 1);
+ watch_node* existing = table_get(watches, wd);
+ if (existing != NULL) {
+ for (;;) {
+ if (existing->wd != wd) {
+ userlog(LOG_ERR, "table error: corruption at %d:%s / %d:%s / %d", wd, path_buf, existing->wd, existing->path, watch_count);
+ return ERR_ABORT;
+ }
+ if (existing->path_len == path_len && strncmp(existing->path, path_buf, path_len) == 0) {
+ return wd;
+ }
+ char buf1[PATH_MAX], buf2[PATH_MAX];
+ const char* normalized1 = realpath(existing->path, buf1);
+ const char* normalized2 = realpath(path_buf, buf2);
+ if (normalized1 != NULL && normalized2 != NULL && strcmp(normalized1, normalized2) == 0) {
+ userlog(LOG_INFO, "intersection at %d: (new %s, existing %s, real %s)", wd, path_buf, existing->path, normalized1);
+ return ERR_IGNORE;
+ }
+ if (existing->next == NULL) {
+ break;
+ }
+ existing = existing->next;
+ }
+ }
+
+ watch_node* node = malloc(sizeof(watch_node) + path_len + 1);
CHECK_NULL(node, ERR_ABORT)
memcpy(node->path, path_buf, path_len + 1);
node->path_len = path_len;
node->wd = wd;
node->parent = parent;
node->kids = NULL;
+ node->prev = existing;
+ node->next = NULL;
if (parent != NULL) {
if (parent->kids == NULL) {
@@ -162,11 +167,15 @@ static int add_watch(unsigned int path_len, watch_node* parent) {
CHECK_NULL(array_push(parent->kids, node), ERR_ABORT)
}
- if (table_put(watches, wd, node) == NULL) {
+ if (existing != NULL) {
+ existing->next = node;
+ }
+ else if (table_put(watches, wd, node) == NULL) {
userlog(LOG_ERR, "table error: unable to put (%d:%s)", wd, path_buf);
return ERR_ABORT;
}
+ *out = node;
return wd;
}
@@ -177,22 +186,27 @@ static void watch_limit_reached(void) {
}
}
-static void rm_watch(int wd, bool update_parent) {
- watch_node* node = table_get(watches, wd);
- if (node == NULL) {
- return;
+static void rm_watch(watch_node* node, bool update_parent) {
+ if (node->prev != NULL) {
+ node->prev->next = node->next;
+ node->next->prev = node->prev;
}
-
- userlog(LOG_INFO, "unwatching %s: %d (%p)", node->path, node->wd, node);
-
- if (inotify_rm_watch(inotify_fd, node->wd) < 0) {
- userlog(LOG_INFO, "inotify_rm_watch(%d:%s): %s", node->wd, node->path, strerror(errno));
+ else if (node->next != NULL) {
+ table_put(watches, node->wd, node->next);
+ node->next->prev = NULL;
+ }
+ else {
+ userlog(LOG_INFO, "unwatching %s: %d (%p)", node->path, node->wd, node);
+ if (inotify_rm_watch(inotify_fd, node->wd) < 0) {
+ userlog(LOG_INFO, "inotify_rm_watch(%d:%s): %s", node->wd, node->path, strerror(errno));
+ }
+ table_put(watches, node->wd, NULL);
}
for (int i = 0; i < array_size(node->kids); i++) {
watch_node* kid = array_get(node->kids, i);
if (kid != NULL) {
- rm_watch(kid->wd, false);
+ rm_watch(kid, false);
}
}
@@ -207,7 +221,6 @@ static void rm_watch(int wd, bool update_parent) {
array_delete(node->kids);
free(node);
- table_put(watches, wd, NULL);
}
@@ -234,7 +247,9 @@ static int walk_tree(unsigned int path_len, watch_node* parent, bool recursive,
}
}
- int id = add_watch(path_len, parent);
+
+ watch_node* node;
+ int id = add_watch(path_len, parent, &node);
if (dir == NULL) {
return id;
@@ -271,7 +286,7 @@ static int walk_tree(unsigned int path_len, watch_node* parent, bool recursive,
int subdir_id = walk_tree(path_len + 1 + name_len, table_get(watches, id), recursive, mounts);
if (subdir_id < 0 && subdir_id != ERR_IGNORE) {
- rm_watch(id, true);
+ rm_watch(node, true);
id = subdir_id;
break;
}
@@ -323,47 +338,49 @@ int watch(const char* root, array* mounts) {
}
-void unwatch(int id) {
- rm_watch(id, true);
+void unwatch(int wd, char* path, unsigned int path_len) {
+ for (watch_node* node = table_get(watches, wd); node != NULL; node = node->next) {
+ if (node->path_len == path_len && strncmp(node->path, path, path_len) == 0) {
+ rm_watch(node, true);
+ return;
+ }
+ }
}
static bool process_inotify_event(struct inotify_event* event) {
- watch_node* node = table_get(watches, event->wd);
- if (node == NULL) {
- return true;
- }
-
- bool is_dir = (event->mask & IN_ISDIR) == IN_ISDIR;
- userlog(LOG_INFO, "inotify: wd=%d mask=%d dir=%d name=%s", event->wd, event->mask & (~IN_ISDIR), is_dir, node->path);
-
- unsigned int path_len = node->path_len;
- memcpy(path_buf, node->path, path_len + 1);
- if (event->len > 0) {
- path_buf[path_len] = '/';
- unsigned int name_len = strlen(event->name);
- memcpy(path_buf + path_len + 1, event->name, name_len + 1);
- path_len += name_len + 1;
- }
+ for (watch_node* node = table_get(watches, event->wd); node != NULL; node = node->next) {
+ bool is_dir = (event->mask & IN_ISDIR) == IN_ISDIR;
+ userlog(LOG_INFO, "inotify: wd=%d mask=%d dir=%d name=%s", event->wd, event->mask & (~IN_ISDIR), is_dir, node->path);
+
+ unsigned int path_len = node->path_len;
+ memcpy(path_buf, node->path, path_len + 1);
+ if (event->len > 0) {
+ path_buf[path_len] = '/';
+ unsigned int name_len = strlen(event->name);
+ memcpy(path_buf + path_len + 1, event->name, name_len + 1);
+ path_len += name_len + 1;
+ }
- if (callback != NULL) {
- (*callback)(path_buf, event->mask);
- }
+ if (callback != NULL) {
+ (*callback)(path_buf, event->mask);
+ }
- if (is_dir && event->mask & (IN_CREATE | IN_MOVED_TO)) {
- int result = walk_tree(path_len, node, true, NULL);
- if (result < 0 && result != ERR_IGNORE && result != ERR_CONTINUE) {
- return false;
+ if (is_dir && event->mask & (IN_CREATE | IN_MOVED_TO)) {
+ int result = walk_tree(path_len, node, true, NULL);
+ if (result < 0 && result != ERR_IGNORE && result != ERR_CONTINUE) {
+ return false;
+ }
}
- }
- if (is_dir && event->mask & (IN_DELETE | IN_MOVED_FROM)) {
- for (int i = 0; i < array_size(node->kids); i++) {
- watch_node* kid = array_get(node->kids, i);
- if (kid != NULL && strncmp(path_buf, kid->path, kid->path_len) == 0) {
- rm_watch(kid->wd, false);
- array_put(node->kids, i, NULL);
- break;
+ if (is_dir && event->mask & (IN_DELETE | IN_MOVED_FROM)) {
+ for (int i = 0; i < array_size(node->kids); i++) {
+ watch_node* kid = array_get(node->kids, i);
+ if (kid != NULL && strncmp(path_buf, kid->path, kid->path_len) == 0) {
+ rm_watch(kid, false);
+ array_put(node->kids, i, NULL);
+ break;
+ }
}
}
}
diff --git a/main.c b/main.c
index b6b2e6fdb5b0..32cc8efe7856 100644
--- a/main.c
+++ b/main.c
@@ -246,7 +246,7 @@ static void unregister_roots(void) {
watch_root* root;
while ((root = array_pop(roots)) != NULL) {
userlog(LOG_INFO, "unregistering root: %s", root->path);
- unwatch(root->id);
+ unwatch(root->id, root->path, strlen(root->path));
free(root->path);
free(root);
}
@@ -422,7 +422,7 @@ static void check_root_removal(const char* path) {
for (int i = 0; i < array_size(roots); i++) {
watch_root* root = array_get(roots, i);
if (root->id >= 0 && strcmp(path, UNFLATTEN(root->path)) == 0) {
- unwatch(root->id);
+ unwatch(root->id, root->path, strlen(root->path));
root->id = -1;
userlog(LOG_INFO, "root deleted: %s\n", root->path);
report_event("DELETE", path);

View File

@ -0,0 +1,39 @@
{ lib
, stdenv
, fetchFromGitHub
}:
stdenv.mkDerivation rec {
version = "2024.2.0";
pname = "fsnotifier";
src = fetchFromGitHub {
owner = "JetBrains";
repo = "intellij-community";
rev = "0f6d9ccb67b8fcad0d802cd76209d503c4ed66a6";
sha256 = "3TAiVvKi50JQRrVG6J7LUJKTiuOTDyKt4DhoA1QmbrM=";
sparseCheckout = [ "native/fsNotifier/linux" ];
};
# fix for hard-links in nix-store, https://github.com/JetBrains/intellij-community/pull/2171
patches = [ ./fsnotifier.patch ];
sourceRoot = "${src.name}/native/fsNotifier/linux";
buildPhase = ''
mkdir -p $out/bin
$CC -O2 -Wall -Wextra -Wpedantic -D "VERSION=\"${version}\"" -std=c11 main.c inotify.c util.c -o fsnotifier
cp fsnotifier $out/bin/fsnotifier
'';
meta = {
homepage = "https://github.com/JetBrains/intellij-community/tree/master/native/fsNotifier/linux";
description = "IntelliJ Platform companion program for watching and reporting file and directory structure modification";
license = lib.licenses.asl20;
mainProgram = "fsnotifier";
maintainers = with lib.maintainers; [ shyim ];
platforms = lib.platforms.linux;
};
}

View File

@ -16,17 +16,17 @@
buildGoModule rec { buildGoModule rec {
pname = "grafana-alloy"; pname = "grafana-alloy";
version = "1.2.1"; version = "1.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
rev = "v${version}"; rev = "v${version}";
owner = "grafana"; owner = "grafana";
repo = "alloy"; repo = "alloy";
hash = "sha256-RwTwwWz5nEk5eeCK/cZivd3r6WmoIqKjNtEQ0RVk1pw="; hash = "sha256-2OpBRSX/t6hwf1fHogrNTuDAmKArVXxwKHXuHyTXnYA=";
}; };
proxyVendor = true; proxyVendor = true;
vendorHash = "sha256-UYFZmrE0Pm5bdhloaR9zSEvlPWV/uWo85zjmIuN8Jvc="; vendorHash = "sha256-eMtwmADYbvpIm4FHTHieQ1i4xCty5xCwsZ/JD9r94/8=";
nativeBuildInputs = [ fixup-yarn-lock yarn nodejs installShellFiles ]; nativeBuildInputs = [ fixup-yarn-lock yarn nodejs installShellFiles ];
@ -57,7 +57,7 @@ buildGoModule rec {
yarnOfflineCache = fetchYarnDeps { yarnOfflineCache = fetchYarnDeps {
yarnLock = "${src}/internal/web/ui/yarn.lock"; yarnLock = "${src}/internal/web/ui/yarn.lock";
hash = "sha256-8/siWMFoUokMXJ13QT8050AXynsApiC67TP/7Hvugsk="; hash = "sha256-Jk+zqR/+NBde9ywncIEJM4kgavqiDvcIAjxJCSMrZDc=";
}; };
preBuild = '' preBuild = ''

View File

@ -1,13 +1,13 @@
{ lib, buildGoModule, fetchFromGitHub, nix-update-script, testers, immich-go }: { lib, buildGoModule, fetchFromGitHub, nix-update-script, testers, immich-go }:
buildGoModule rec { buildGoModule rec {
pname = "immich-go"; pname = "immich-go";
version = "0.20.1"; version = "0.21.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "simulot"; owner = "simulot";
repo = "immich-go"; repo = "immich-go";
rev = "${version}"; rev = "${version}";
hash = "sha256-9pIQ3xRskPZtwjCJ7MG8IaVsVkqM6s3Jxy4qG842/h8="; hash = "sha256-mN/3ctEX5R7UepJUs3Ble0s2c0gRxHe5CDey9MoE4YA=";
# Inspired by: https://github.com/NixOS/nixpkgs/blob/f2d7a289c5a5ece8521dd082b81ac7e4a57c2c5c/pkgs/applications/graphics/pdfcpu/default.nix#L20-L32 # Inspired by: https://github.com/NixOS/nixpkgs/blob/f2d7a289c5a5ece8521dd082b81ac7e4a57c2c5c/pkgs/applications/graphics/pdfcpu/default.nix#L20-L32
# The intention here is to write the information into files in the `src`'s # The intention here is to write the information into files in the `src`'s
@ -24,7 +24,7 @@ buildGoModule rec {
''; '';
}; };
vendorHash = "sha256-MKWlMoJZ0OECa7Ej26m4D6JYWjnnRuh0rdBUUPnF6SY="; vendorHash = "sha256-Y6awfvbKV0G3VFXCUHLSwUkGaMkTaacruSz8KVi6NoQ=";
# options used by upstream: # options used by upstream:
# https://github.com/simulot/immich-go/blob/0.13.2/.goreleaser.yaml # https://github.com/simulot/immich-go/blob/0.13.2/.goreleaser.yaml

View File

@ -5,25 +5,24 @@
}: }:
appimageTools.wrapType2 rec { appimageTools.wrapType2 rec {
pname = "lunar-client"; pname = "lunarclient";
version = "3.2.11"; version = "3.2.12";
src = fetchurl { src = fetchurl {
url = "https://launcherupdates.lunarclientcdn.com/Lunar%20Client-${version}.AppImage"; url = "https://launcherupdates.lunarclientcdn.com/Lunar%20Client-${version}.AppImage";
hash = "sha512-qRucW9x4LMmTb8pw0zY1EKXkPfjdahCi2PN/bfdB8CYA4wZp0bfZNaGtPpI/BKPlnR/nfpypEdnHsoqlL9KiCg=="; hash = "sha512-dqFFi5Vri5oEbyDdzKiWPF1mbSf0Qv2MBuEqF/rIs1aYMNjCQDu2CqTrhLtctu2VXxKlgzaqktFWKs9WMZayZA==";
}; };
extraInstallCommands = extraInstallCommands =
let contents = appimageTools.extract { inherit pname version src; }; let contents = appimageTools.extract { inherit pname version src; };
in '' in ''
source "${makeWrapper}/nix-support/setup-hook" source "${makeWrapper}/nix-support/setup-hook"
wrapProgram $out/bin/lunar-client \ wrapProgram $out/bin/lunarclient \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
install -Dm444 ${contents}/launcher.desktop $out/share/applications/lunar-client.desktop install -Dm444 ${contents}/lunarclient.desktop -t $out/share/applications/
install -Dm444 ${contents}/launcher.png $out/share/pixmaps/lunar-client.png install -Dm444 ${contents}/lunarclient.png -t $out/share/pixmaps/
substituteInPlace $out/share/applications/lunar-client.desktop \ substituteInPlace $out/share/applications/lunarclient.desktop \
--replace 'Exec=AppRun --no-sandbox %U' 'Exec=lunar-client' \ --replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=lunarclient' \
--replace 'Icon=launcher' 'Icon=lunar-client'
''; '';
passthru.updateScript = ./update.sh; passthru.updateScript = ./update.sh;
@ -32,7 +31,7 @@ appimageTools.wrapType2 rec {
description = "Free Minecraft client with mods, cosmetics, and performance boost"; description = "Free Minecraft client with mods, cosmetics, and performance boost";
homepage = "https://www.lunarclient.com/"; homepage = "https://www.lunarclient.com/";
license = with licenses; [ unfree ]; license = with licenses; [ unfree ];
mainProgram = "lunar-client"; mainProgram = "lunarclient";
maintainers = with maintainers; [ Technical27 surfaceflinger ]; maintainers = with maintainers; [ Technical27 surfaceflinger ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };

View File

@ -2,7 +2,6 @@
lib, lib,
rustPlatform, rustPlatform,
fetchFromGitHub, fetchFromGitHub,
nix-update-script,
pkg-config, pkg-config,
udev, udev,
stdenv, stdenv,
@ -24,8 +23,6 @@ rustPlatform.buildRustPackage rec {
lockFile = ./Cargo.lock; lockFile = ./Cargo.lock;
}; };
passthru.updateScript = nix-update-script { };
postPatch = '' postPatch = ''
ln -s ${./Cargo.lock} Cargo.lock ln -s ${./Cargo.lock} Cargo.lock
''; '';

View File

@ -0,0 +1,80 @@
{
lib,
stdenv,
removeReferencesTo,
fetchFromGitHub,
autoconf,
automake,
libtool,
gitMinimal,
perl,
python3,
flex,
hwloc,
libevent,
zlib,
pmix,
}:
stdenv.mkDerivation rec {
pname = "prrte";
version = "3.0.5";
src = fetchFromGitHub {
owner = "openpmix";
repo = "prrte";
rev = "v${version}";
sha256 = "sha256-RDxd4veLGbN+T7xCDnNp2lbOM7mwKKD+SKdPmExr1C8=";
fetchSubmodules = true;
};
outputs = [
"out"
"dev"
];
postPatch = ''
patchShebangs ./autogen.pl ./config
'';
preConfigure = ''
./autogen.pl
'';
postInstall = ''
moveToOutput "bin/prte_info" "''${!outputDev}"
# Fix a broken symlink, created due to FHS assumptions
rm "$out/bin/pcc"
ln -s ${lib.getDev pmix}/bin/pmixcc "''${!outputDev}"/bin/pcc
remove-references-to -t "''${!outputDev}" $(readlink -f $out/lib/libprrte${stdenv.hostPlatform.extensions.library})
'';
nativeBuildInputs = [
removeReferencesTo
perl
python3
autoconf
automake
libtool
flex
gitMinimal
];
buildInputs = [
libevent
hwloc
zlib
pmix
];
enableParallelBuilding = true;
meta = {
description = "PMIx Reference Runtime Environment";
homepage = "https://docs.prrte.org/";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ markuskowa ];
platforms = lib.platforms.linux;
};
}

View File

@ -21,13 +21,13 @@ let
in in
stdenv'.mkDerivation (finalAttrs: { stdenv'.mkDerivation (finalAttrs: {
pname = "renovate"; pname = "renovate";
version = "37.440.7"; version = "38.18.17";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "renovatebot"; owner = "renovatebot";
repo = "renovate"; repo = "renovate";
rev = "refs/tags/${finalAttrs.version}"; rev = "refs/tags/${finalAttrs.version}";
hash = "sha256-VMv55BVeauRa/hmg1Y7D15ltAbccdcMd4Azk5IInuH0="; hash = "sha256-Mur4UH63unYjgwkj9Rscg9V2M38XLrsNuqz+mWn0wR4=";
}; };
postPatch = '' postPatch = ''
@ -44,7 +44,7 @@ stdenv'.mkDerivation (finalAttrs: {
pnpmDeps = pnpm_9.fetchDeps { pnpmDeps = pnpm_9.fetchDeps {
inherit (finalAttrs) pname version src; inherit (finalAttrs) pname version src;
hash = "sha256-ZYQ7G2BKkRxuyg31dysim+P1Vje0VysJm+UFyy4xuKI="; hash = "sha256-3XSseB0rjFv1bsJ5S2fCveFicSQFnTwz4MmjzC7t9Jw=";
}; };
env.COREPACK_ENABLE_STRICT = 0; env.COREPACK_ENABLE_STRICT = 0;

View File

@ -0,0 +1,69 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
autoreconfHook,
gettext,
perl,
pkg-config,
libxml2,
pango,
cairo,
groff,
tcl,
darwin,
}:
perl.pkgs.toPerlModule (
stdenv.mkDerivation rec {
pname = "rrdtool";
version = "1.9.0";
src = fetchFromGitHub {
owner = "oetiker";
repo = "rrdtool-1.x";
rev = "v${version}";
hash = "sha256-CPbSu1mosNlfj2nqiNVH14a5C5njkfvJM8ix3X3aP8E=";
};
# Fix darwin build
patches = lib.optional stdenv.isDarwin (fetchpatch {
url = "https://github.com/oetiker/rrdtool-1.x/pull/1262.patch";
hash = "sha256-aP0rmDlILn6VC8Tg7HpRXbxL9+KD/PRTbXnbQ7HgPEg=";
});
nativeBuildInputs = [
pkg-config
autoreconfHook
];
buildInputs =
[
gettext
perl
libxml2
pango
cairo
groff
]
++ lib.optionals stdenv.isDarwin [
tcl
darwin.apple_sdk.frameworks.ApplicationServices
];
postInstall = ''
# for munin and rrdtool support
mkdir -p $out/${perl.libPrefix}
mv $out/lib/perl/5* $out/${perl.libPrefix}
'';
meta = with lib; {
homepage = "https://oss.oetiker.ch/rrdtool/";
description = "High performance logging in Round Robin Databases";
license = licenses.gpl2Only;
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ pSub ];
};
}
)

View File

@ -16,13 +16,13 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "saunafs"; pname = "saunafs";
version = "4.3.0"; version = "4.4.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "leil-io"; owner = "leil-io";
repo = "saunafs"; repo = "saunafs";
rev = "v${finalAttrs.version}"; rev = "v${finalAttrs.version}";
hash = "sha256-T/K13JygU7Q/ylPk5ZAby3Kepi8I4z3vBBaigboJhus="; hash = "sha256-t2fb8AA9m2I7Qna/v4F2GNL02iCU0r7zz5TgajHUmrg=";
}; };
patches = [ patches = [

View File

@ -9,18 +9,18 @@
buildGoModule rec { buildGoModule rec {
pname = "shopware-cli"; pname = "shopware-cli";
version = "0.4.50"; version = "0.4.51";
src = fetchFromGitHub { src = fetchFromGitHub {
repo = "shopware-cli"; repo = "shopware-cli";
owner = "FriendsOfShopware"; owner = "FriendsOfShopware";
rev = version; rev = version;
hash = "sha256-dVq2Aw6oYkr8LAdd0LeFvkzMYSronCsDxesqUh2IGV0="; hash = "sha256-mimFOZjWiDodCopJ23RZxWijOT7bDPUOH+A8GL/UyXs=";
}; };
nativeBuildInputs = [ installShellFiles makeWrapper ]; nativeBuildInputs = [ installShellFiles makeWrapper ];
nativeCheckInputs = [ git dart-sass ]; nativeCheckInputs = [ git dart-sass ];
vendorHash = "sha256-ABvjNRADmamYiq5A0NZjv1HlGxxAHQlut1ZR2kA04oU="; vendorHash = "sha256-NXk3wH/XHohI7aYK+dvUmh+0hUrBNiH6xouT9EM8eiE=";
postInstall = '' postInstall = ''
export HOME="$(mktemp -d)" export HOME="$(mktemp -d)"

View File

@ -6,13 +6,13 @@
buildGoModule rec { buildGoModule rec {
pname = "trickest-cli"; pname = "trickest-cli";
version = "1.8.1"; version = "1.8.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "trickest"; owner = "trickest";
repo = "trickest-cli"; repo = "trickest-cli";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-6fshMuwGv4tkaqySHVsCwX+kBpUt+u/x9qnJNZ3c0HA="; hash = "sha256-X7JGzTaTm7CE5+mTvnV93d5Hx2A1vF+aufmC5/xWRtc=";
}; };
vendorHash = "sha256-gk8YMMvTHBL7yoXU9n0jhtUS472fqLW5m+mSl4Lio6c="; vendorHash = "sha256-gk8YMMvTHBL7yoXU9n0jhtUS472fqLW5m+mSl4Lio6c=";

View File

@ -2,11 +2,11 @@
appimageTools.wrapType2 rec { appimageTools.wrapType2 rec {
pname = "xlights"; pname = "xlights";
version = "2024.13"; version = "2024.14";
src = fetchurl { src = fetchurl {
url = "https://github.com/smeighan/xLights/releases/download/${version}/xLights-${version}-x86_64.AppImage"; url = "https://github.com/smeighan/xLights/releases/download/${version}/xLights-${version}-x86_64.AppImage";
hash = "sha256-Oiavnnk5geFao7lq0GpmNg+xs1FeUOt3JhSbLUV8GkE="; hash = "sha256-WqLPesH6KaOAj7gYycyrmzG2NIkKs3cjUm+K83rvha0=";
}; };
meta = { meta = {

View File

@ -0,0 +1,37 @@
{ lib, mkCoqDerivation, coq, version ? null }:
let
repo = "stalmarck";
defaultVersion = with lib.versions; lib.switch coq.coq-version [
{ case = isEq "8.20"; out = "8.20.0"; }
] null;
release = {
"8.20.0".sha256 = "sha256-jITxQT1jLyZvWCGPnmK8i3IrwsZwMPOV0aBe9r22TIQ=";
};
releaseRev = v: "v${v}";
packages = [ "stalmarck" "stalmarck-tactic" ];
stalmarck_ = package: let
pname = package;
istac = package == "stalmarck-tactic";
propagatedBuildInputs =
lib.optional istac (stalmarck_ "stalmarck");
description =
if istac then
"Coq tactic and verified tool for proving tautologies using Stålmarck's algorithm"
else
"A two-level approach to prove tautologies using Stålmarck's algorithm in Coq.";
in mkCoqDerivation {
inherit version pname defaultVersion release releaseRev repo
propagatedBuildInputs;
mlPlugin = istac;
useDune = istac;
meta = { inherit description; license = lib.licenses.lgpl21Plus; };
passthru = lib.genAttrs packages stalmarck_;
};
in
stalmarck_ "stalmarck-tactic"

View File

@ -139,10 +139,12 @@ in stdenv.mkDerivation {
patches = [ patches = [
./opencl.patch ./opencl.patch
# Manual backport of https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30510
# Fixes video corruption / crashes when decoding video on AMD iGPUs # Fixes video corruption / crashes when decoding video on AMD iGPUs
# FIXME: remove when merged # FIXME: remove in the next update
./vcn-pagefault.patch (fetchpatch {
url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/8b35da91b23afc65256b78a59d116fd09544cd28.patch";
hash = "sha256-z0KKBtot3VxXiS16YcmwZbeg8HSCLzEbvWdufI/fOk8=";
})
]; ];
postPatch = '' postPatch = ''

View File

@ -1,10 +0,0 @@
--- a/src/gallium/drivers/radeonsi/radeon_vcn_dec.c
+++ b/src/gallium/drivers/radeonsi/radeon_vcn_dec.c
@@ -1390,6 +1390,7 @@ static unsigned rvcn_dec_dynamic_dpb_t2_message(struct radeon_decoder *dec, rvcn
dummy->dpb.res;
addr = dec->ws->buffer_get_virtual_address(dummy_res->buf);
}
+ dec->ws->cs_add_buffer(&dec->cs, d->dpb.res->buf, RADEON_USAGE_READWRITE | RADEON_USAGE_SYNCHRONIZED, RADEON_DOMAIN_VRAM);
dynamic_dpb_t2->dpbAddrLo[i] = addr;
dynamic_dpb_t2->dpbAddrHi[i] = addr >> 32;
++dynamic_dpb_t2->dpbArraySize;

View File

@ -1,136 +1,270 @@
{ lib, stdenv, fetchurl, removeReferencesTo, gfortran, perl, libnl {
, rdma-core, zlib, numactl, libevent, hwloc, targetPackages lib,
, libpsm2, libfabric, pmix, ucx, ucc, makeWrapper stdenv,
, config fetchurl,
# Enable CUDA support removeReferencesTo,
, cudaSupport ? config.cudaSupport, cudaPackages gfortran,
perl,
# Enable the Sun Grid Engine bindings libnl,
, enableSGE ? false rdma-core,
zlib,
# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default numactl,
, enablePrefix ? false libevent,
hwloc,
# Enable libfabric support (necessary for Omnipath networks) on x86_64 linux targetPackages,
, fabricSupport ? stdenv.isLinux && stdenv.isx86_64 libpsm2,
libfabric,
# Enable Fortran support pmix,
, fortranSupport ? true ucx,
ucc,
prrte,
makeWrapper,
python3,
config,
# Enable CUDA support
cudaSupport ? config.cudaSupport,
cudaPackages,
# Enable the Sun Grid Engine bindings
enableSGE ? false,
# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default
enablePrefix ? false,
# Enable libfabric support (necessary for Omnipath networks) on x86_64 linux
fabricSupport ? stdenv.isLinux && stdenv.isx86_64,
# Enable Fortran support
fortranSupport ? true,
# AVX/SSE options. See passthru.defaultAvxOptions for the available options.
# note that opempi fails to build with AVX disabled, meaning that everything
# up to AVX is enabled by default.
avxOptions ? { },
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "openmpi"; pname = "openmpi";
version = "4.1.6"; version = "5.0.3";
src = with lib.versions; fetchurl { src = fetchurl {
url = "https://www.open-mpi.org/software/ompi/v${major version}.${minor version}/downloads/${pname}-${version}.tar.bz2"; url = "https://www.open-mpi.org/software/ompi/v${lib.versions.majorMinor finalAttrs.version}/downloads/openmpi-${finalAttrs.version}.tar.bz2";
sha256 = "sha256-90CZRIVRbetjtTEa8SLCZRefUyig2FelZ7hdsAsR5BU="; sha256 = "sha256-mQWC8gazqzLpOKoxu/B8Y5No5EBdyhlvq+fw927tqQs=";
}; };
postPatch = '' postPatch = ''
patchShebangs ./ patchShebangs ./
# Ensure build is reproducible # This is dynamically detected. Configure does not provide fine grained options
ts=`date -d @$SOURCE_DATE_EPOCH` # We just disable the check in the configure script for now
sed -i 's/OPAL_CONFIGURE_USER=.*/OPAL_CONFIGURE_USER="nixbld"/' configure ${lib.pipe (finalAttrs.passthru.defaultAvxOptions // avxOptions) [
sed -i 's/OPAL_CONFIGURE_HOST=.*/OPAL_CONFIGURE_HOST="localhost"/' configure (lib.mapAttrsToList (
sed -i "s/OPAL_CONFIGURE_DATE=.*/OPAL_CONFIGURE_DATE=\"$ts\"/" configure option: val: ''
find -name "Makefile.in" -exec sed -i "s/\`date\`/$ts/" \{} \; substituteInPlace configure \
--replace-fail \
ompi_cv_op_avx_check_${option}=yes \
ompi_cv_op_avx_check_${option}=${if val then "yes" else "no"}
''
))
(lib.concatStringsSep "\n")
]}
''; '';
outputs = [ "out" "man" "dev" ]; # Ensure build is reproducible according to manual
# https://docs.open-mpi.org/en/v5.0.x/release-notes/general.html#general-notes
env = {
USER = "nixbld";
HOSTNAME = "localhost";
SOURCE_DATE_EPOCH = "0";
};
buildInputs = [ zlib ] outputs =
++ lib.optionals stdenv.isLinux [ libnl numactl pmix ucx ucc ] [ "out" ]
++ lib.optionals stdenv.isLinux [
"man"
"dev"
];
buildInputs =
[
zlib
libevent
hwloc
]
++ lib.optionals stdenv.isLinux [
libnl
numactl
pmix
ucx
ucc
prrte
]
++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_cudart ]
++ [ libevent hwloc ] ++ lib.optionals (stdenv.isLinux || stdenv.isFreeBSD) [ rdma-core ]
++ lib.optional (stdenv.isLinux || stdenv.isFreeBSD) rdma-core # needed for internal pmix
++ lib.optionals fabricSupport [ libpsm2 libfabric ]; ++ lib.optionals (!stdenv.isLinux) [ python3 ]
++ lib.optionals fabricSupport [
libpsm2
libfabric
];
nativeBuildInputs = [ perl removeReferencesTo makeWrapper ] nativeBuildInputs =
[
perl
removeReferencesTo
makeWrapper
]
++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ]
++ lib.optionals fortranSupport [ gfortran ]; ++ lib.optionals fortranSupport [ gfortran ];
configureFlags = lib.optional (!cudaSupport) "--disable-mca-dso" configureFlags = [
++ lib.optional (!fortranSupport) "--disable-mpi-fortran" (lib.enableFeature cudaSupport "mca-dso")
++ lib.optionals stdenv.isLinux [ (lib.enableFeature fortranSupport "mpi-fortran")
"--with-libnl=${lib.getDev libnl}" (lib.withFeatureAs stdenv.isLinux "libnl" (lib.getDev libnl))
"--with-pmix=${lib.getDev pmix}" "--with-pmix=${if stdenv.isLinux then (lib.getDev pmix) else "internal"}"
"--with-pmix-libdir=${pmix}/lib" (lib.withFeatureAs stdenv.isLinux "pmix-libdir" "${lib.getLib pmix}/lib")
"--enable-mpi-cxx" # Puts a "default OMPI_PRTERUN" value to mpirun / mpiexec executables
] ++ lib.optional enableSGE "--with-sge" (lib.withFeatureAs stdenv.isLinux "prrte" (lib.getBin prrte))
++ lib.optional enablePrefix "--enable-mpirun-prefix-by-default" (lib.withFeature enableSGE "sge")
(lib.enableFeature enablePrefix "mpirun-prefix-by-default")
# TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build # TODO: add UCX support, which is recommended to use with cuda for the most robust OpenMPI build
# https://github.com/openucx/ucx # https://github.com/openucx/ucx
# https://www.open-mpi.org/faq/?category=buildcuda # https://www.open-mpi.org/faq/?category=buildcuda
++ lib.optionals cudaSupport [ "--with-cuda=${lib.getDev cudaPackages.cuda_cudart}" "--enable-dlopen" ] (lib.withFeatureAs cudaSupport "cuda" (lib.getDev cudaPackages.cuda_cudart))
++ lib.optionals fabricSupport [ "--with-psm2=${lib.getDev libpsm2}" "--with-libfabric=${lib.getDev libfabric}" ] (lib.enableFeature cudaSupport "dlopen")
; (lib.withFeatureAs fabricSupport "psm2" (lib.getDev libpsm2))
(lib.withFeatureAs fabricSupport "ofi" (lib.getDev libfabric))
# The flag --without-ofi-libdir is not supported from some reason, so we
# don't use lib.withFeatureAs
] ++ lib.optionals fabricSupport [ "--with-ofi-libdir=${lib.getLib libfabric}/lib" ];
enableParallelBuilding = true; enableParallelBuilding = true;
postInstall = '' postInstall =
find $out/lib/ -name "*.la" -exec rm -f \{} \; let
# The file names we need to iterate are a combination of ${p}${s}, and there
# are 7x3 such options. We use lib.mapCartesianProduct to iterate them all.
fileNamesToIterate = {
p = [
"mpi"
"shmem"
"osh"
];
s =
[
"CC"
"c++"
"cxx"
"cc"
]
++ lib.optionals fortranSupport [
"f77"
"f90"
"fort"
];
};
wrapperDataSubstitutions =
{
# The attr key is the filename prefix. The list's 1st value is the
# compiler=_ line that should be replaced by a compiler=#2 string, where
# #2 is the 2nd value in the list.
"cc" = [
"gcc"
"${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc"
];
"c++" = [
"g++"
"${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++"
];
}
// lib.optionalAttrs fortranSupport {
"fort" = [
"gfortran"
"${targetPackages.gfortran}/bin/${targetPackages.gfortran.targetPrefix}gfortran"
];
};
# The -wrapper-data.txt files that are not symlinks, need to be iterated as
# well, here they start withw ${part1}${part2}, and we use
# lib.mapCartesianProduct as well.
wrapperDataFileNames = {
part1 = [
"mpi"
"shmem"
];
part2 = builtins.attrNames wrapperDataSubstitutions;
};
in
''
find $out/lib/ -name "*.la" -exec rm -f \{} \;
for f in mpi shmem osh; do # The main wrapper that all the rest of the commonly used binaries are
for i in f77 f90 CC c++ cxx cc fort; do # symlinked to
moveToOutput "bin/$f$i" "''${!outputDev}" moveToOutput "bin/opal_wrapper" "''${!outputDev}"
echo "move $fi$i" # All of the following files are symlinks to opal_wrapper
moveToOutput "share/openmpi/$f$i-wrapper-data.txt" "''${!outputDev}" ${lib.pipe fileNamesToIterate [
(lib.mapCartesianProduct (
{ p, s }:
''
echo "handling ${p}${s}"
moveToOutput "bin/${p}${s}" "''${!outputDev}"
moveToOutput "share/openmpi/${p}${s}-wrapper-data.txt" "''${!outputDev}"
''
))
(lib.concatStringsSep "\n")
]}
# default compilers should be indentical to the
# compilers at build time
${lib.pipe wrapperDataFileNames [
(lib.mapCartesianProduct (
{ part1, part2 }:
''
substituteInPlace "''${!outputDev}/share/openmpi/${part1}${part2}-wrapper-data.txt" \
--replace-fail \
compiler=${lib.elemAt wrapperDataSubstitutions.${part2} 0} \
compiler=${lib.elemAt wrapperDataSubstitutions.${part2} 1}
''
))
(lib.concatStringsSep "\n")
]}
# A symlink to ${lib.getDev pmix}/bin/pmixcc upstreeam puts here as well
# from some reason.
moveToOutput "bin/pcc" "''${!outputDev}"
# Handle informative binaries about the compilation
for i in {prte,ompi,oshmem}_info; do
moveToOutput "bin/$i" "''${!outputDev}"
done done
done '';
for i in ortecc orte-info ompi_info oshmem_info opal_wrapper; do postFixup =
moveToOutput "bin/$i" "''${!outputDev}" lib.optionalString (lib.elem "man" finalAttrs.outputs) ''
done remove-references-to -t "''${!outputMan}" $(readlink -f $out/lib/libopen-pal${stdenv.hostPlatform.extensions.sharedLibrary})
''
+ lib.optionalString (lib.elem "dev" finalAttrs.outputs) ''
remove-references-to -t "''${!outputDev}" $out/bin/mpirun
remove-references-to -t "''${!outputDev}" $(readlink -f $out/lib/libopen-pal${stdenv.hostPlatform.extensions.sharedLibrary})
moveToOutput "share/openmpi/ortecc-wrapper-data.txt" "''${!outputDev}" # The path to the wrapper is hard coded in libopen-pal.so, which we just cleared.
''; wrapProgram "''${!outputDev}/bin/opal_wrapper" \
--set OPAL_INCLUDEDIR "''${!outputDev}/include" \
postFixup = '' --set OPAL_PKGDATADIR "''${!outputDev}/share/openmpi"
remove-references-to -t $dev $(readlink -f $out/lib/libopen-pal${stdenv.hostPlatform.extensions.sharedLibrary}) '';
remove-references-to -t $man $(readlink -f $out/lib/libopen-pal${stdenv.hostPlatform.extensions.sharedLibrary})
# The path to the wrapper is hard coded in libopen-pal.so, which we just cleared.
wrapProgram $dev/bin/opal_wrapper \
--set OPAL_INCLUDEDIR $dev/include \
--set OPAL_PKGDATADIR $dev/share/openmpi
# default compilers should be indentical to the
# compilers at build time
echo "$dev/share/openmpi/mpicc-wrapper-data.txt"
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
$dev/share/openmpi/mpicc-wrapper-data.txt
echo "$dev/share/openmpi/ortecc-wrapper-data.txt"
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
$dev/share/openmpi/ortecc-wrapper-data.txt
echo "$dev/share/openmpi/mpic++-wrapper-data.txt"
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++:' \
$dev/share/openmpi/mpic++-wrapper-data.txt
'' + lib.optionalString fortranSupport ''
echo "$dev/share/openmpi/mpifort-wrapper-data.txt"
sed -i 's:compiler=.*:compiler=${gfortran}/bin/${gfortran.targetPrefix}gfortran:' \
$dev/share/openmpi/mpifort-wrapper-data.txt
'';
doCheck = true; doCheck = true;
passthru = { passthru = {
defaultAvxOptions = {
sse3 = true;
sse41 = true;
avx = true;
avx2 = stdenv.hostPlatform.avx2Support;
avx512 = stdenv.hostPlatform.avx512Support;
};
inherit cudaSupport; inherit cudaSupport;
cudatoolkit = cudaPackages.cudatoolkit; # For backward compatibility only cudatoolkit = cudaPackages.cudatoolkit; # For backward compatibility only
}; };
meta = with lib; { meta = {
homepage = "https://www.open-mpi.org/"; homepage = "https://www.open-mpi.org/";
description = "Open source MPI-3 implementation"; description = "Open source MPI-3 implementation";
longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers."; longDescription = "The Open MPI Project is an open source MPI-3 implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers.";
maintainers = with maintainers; [ markuskowa ]; maintainers = with lib.maintainers; [ markuskowa ];
license = licenses.bsd3; license = lib.licenses.bsd3;
platforms = platforms.unix; platforms = lib.platforms.unix;
}; };
} })

View File

@ -71,8 +71,9 @@ stdenv.mkDerivation rec {
# Pin the compiler to the current version in a cross compiler friendly way. # Pin the compiler to the current version in a cross compiler friendly way.
# Same pattern as for openmpi (see https://github.com/NixOS/nixpkgs/pull/58964#discussion_r275059427). # Same pattern as for openmpi (see https://github.com/NixOS/nixpkgs/pull/58964#discussion_r275059427).
sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \ substituteInPlace $dev/share/pmix/pmixcc-wrapper-data.txt \
$dev/share/pmix/pmixcc-wrapper-data.txt --replace-fail compiler=gcc \
compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc
''; '';
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -7,7 +7,7 @@
buildDunePackage rec { buildDunePackage rec {
pname = "algaeff"; pname = "algaeff";
version = "1.1.0"; version = "2.0.0";
minimalOCamlVersion = "5.0"; minimalOCamlVersion = "5.0";
@ -15,7 +15,7 @@ buildDunePackage rec {
owner = "RedPRL"; owner = "RedPRL";
repo = pname; repo = pname;
rev = version; rev = version;
hash = "sha256-7kwQmoT8rpQWPHc+BZQi9fcZhgHxS99158ebXAXlpQ8="; hash = "sha256-VRZfULbXKRcExU1bnEu/X1KPX+L+dzcRYZVD985rQT4=";
}; };
doCheck = true; doCheck = true;

View File

@ -1,29 +1,21 @@
{ lib, fetchFromGitHub, buildDunePackage { lib, fetchFromGitHub, buildDunePackage
, algaeff , algaeff
, bwd , bwd
, eio
, eio_main
, lsp
, notty
}: }:
buildDunePackage rec { buildDunePackage rec {
pname = "asai"; pname = "asai";
version = "0.1.1"; version = "0.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RedPRL"; owner = "RedPRL";
repo = pname; repo = pname;
rev = version; rev = version;
hash = "sha256-Jd90WhSjK4K2amFA5uyGF57NzsgHA8QiccX6qtxO1rQ="; hash = "sha256-Rp4TvSbRz+5+X4XJ1tKUDDgldpLzHHtaF7G7AG6HgKU=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [
algaeff algaeff
bwd bwd
lsp
eio
eio_main
notty
]; ];
meta = { meta = {

View File

@ -1,6 +1,7 @@
{ lib, fetchFromGitHub, nix-update-script { lib, fetchFromGitHub, nix-update-script
, buildDunePackage , buildDunePackage
, core , base
, ppx_sexp_conv
}: }:
buildDunePackage rec { buildDunePackage rec {
@ -14,10 +15,11 @@ buildDunePackage rec {
sha256 = "sha256-Z2rOaiNGvVDbRwf5XfoNIcenQdrE3fxHnfzyi6Ki2Ic="; sha256 = "sha256-Z2rOaiNGvVDbRwf5XfoNIcenQdrE3fxHnfzyi6Ki2Ic=";
}; };
minimalOCamlVersion = "4.08"; minimalOCamlVersion = "4.14";
propagatedBuildInputs = [ propagatedBuildInputs = [
core base
ppx_sexp_conv
]; ];
passthru.updateScript = nix-update-script { }; passthru.updateScript = nix-update-script { };

View File

@ -4,8 +4,8 @@
}: }:
let params = if lib.versionAtLeast ocaml.version "5.0" then { let params = if lib.versionAtLeast ocaml.version "5.0" then {
version = "5.1.0"; version = "5.2.0";
hash = "sha256-J3qkytgJkk2gT83KJ47nNM4cXqVHbx4iTPK+fLwR7Wk="; hash = "sha256-DJzXjV5Tjf69FKUiRioeHghks72pOOHYd73vqhmecS8=";
propagatedBuildInputs = [ algaeff bwd ]; propagatedBuildInputs = [ algaeff bwd ];
} else { } else {
version = "2.0.0"; version = "2.0.0";

View File

@ -4,7 +4,7 @@
buildPythonPackage, buildPythonPackage,
fetchFromGitHub, fetchFromGitHub,
hypothesis, hypothesis,
poetry-core, hatchling,
pytest-asyncio, pytest-asyncio,
pytestCheckHook, pytestCheckHook,
pythonOlder, pythonOlder,
@ -13,8 +13,8 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "aiosmtplib"; pname = "aiosmtplib";
version = "3.0.1"; version = "3.0.2";
format = "pyproject"; pyproject = true;
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -22,10 +22,10 @@ buildPythonPackage rec {
owner = "cole"; owner = "cole";
repo = "aiosmtplib"; repo = "aiosmtplib";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-67Z+k+PBIGP2oGb/52dMtsapUsHufvFcX+wWiMj5Jsg="; hash = "sha256-1GuxlgNvzVv6hEQY1Mkv7NxAoOik9gpIS90a6flfC+k=";
}; };
nativeBuildInputs = [ poetry-core ]; build-system = [ hatchling ];
nativeCheckInputs = [ nativeCheckInputs = [
aiosmtpd aiosmtpd

View File

@ -15,7 +15,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "dvc-data"; pname = "dvc-data";
version = "3.15.1"; version = "3.15.2";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -24,7 +24,7 @@ buildPythonPackage rec {
owner = "iterative"; owner = "iterative";
repo = "dvc-data"; repo = "dvc-data";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-pr5RtVlGKKtpcmmCNGqcLiBFzJcajpqtPjBbzeCCHF8="; hash = "sha256-8720nqWmi/1Be2ckuCvctfJbOSFCME27OOtA3qZMr7E=";
}; };
nativeBuildInputs = [ setuptools-scm ]; nativeBuildInputs = [ setuptools-scm ];

View File

@ -33,7 +33,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "dvclive"; pname = "dvclive";
version = "3.47.0"; version = "3.48.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.9"; disabled = pythonOlder "3.9";
@ -42,7 +42,7 @@ buildPythonPackage rec {
owner = "iterative"; owner = "iterative";
repo = "dvclive"; repo = "dvclive";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-oC45cSqiKeorbyPe3GIsJ824U3OS1cKvWxUM901/QwQ="; hash = "sha256-WIVRpJD7B6OI7ZfdHT+DunRRiaxHhri5Ge/B1BQ1kJY=";
}; };
build-system = [ setuptools-scm ]; build-system = [ setuptools-scm ];

View File

@ -13,14 +13,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "hcloud"; pname = "hcloud";
version = "2.1.0"; version = "2.2.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-cDyy2x1JINthvhuzQdwgMcykGrypnTkk4rJBk1WQ1HQ="; hash = "sha256-NlEpnSmNY8rcfCJVgKqufCmEMSp4UBr5Po2rh1V8OrA=";
}; };
build-system = [ setuptools ]; build-system = [ setuptools ];

View File

@ -14,7 +14,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "holidays"; pname = "holidays";
version = "0.53"; version = "0.54";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -23,7 +23,7 @@ buildPythonPackage rec {
owner = "vacanza"; owner = "vacanza";
repo = "python-holidays"; repo = "python-holidays";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-qL6ZjnVecAs8vHbbb2IRQPSDpFFPmFuu16UEBsY8vKw="; hash = "sha256-/mpbNuCnADuguI1v8cpYUdhBN8DjhjklCDVmMOsRvkM=";
}; };
build-system = [ build-system = [

View File

@ -1,14 +1,15 @@
{ lib {
, buildPythonPackage lib,
, fetchFromGitHub buildPythonPackage,
, setuptools-generate fetchFromGitHub,
, setuptools-scm setuptools-generate,
, colorama setuptools-scm,
, jinja2 colorama,
, jsonschema jinja2,
, pygls jsonschema,
, tree-sitter0_21 pygls,
, pytestCheckHook tree-sitter,
pytestCheckHook,
}: }:
buildPythonPackage rec { buildPythonPackage rec {
@ -33,16 +34,9 @@ buildPythonPackage rec {
jinja2 jinja2
jsonschema jsonschema
pygls pygls
# The build won't fail if we had used tree-sitter (version > 0.21), but tree-sitter
# this package is only a dependency of autotools-language-server which also
# depends on tree-sitter-languages which must use tree-sitter0_21 and not
# tree-sitter. Hence we avoid different tree-sitter versions dependency
# mismatch by defaulting here to this lower version.
tree-sitter0_21
];
nativeCheckInputs = [
pytestCheckHook
]; ];
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "lsp_tree_sitter" ]; pythonImportsCheck = [ "lsp_tree_sitter" ];

View File

@ -4,10 +4,16 @@
buildPythonPackage, buildPythonPackage,
dotmap, dotmap,
fetchFromGitHub, fetchFromGitHub,
hypothesis,
packaging, packaging,
parse,
pexpect, pexpect,
platformdirs,
ppk2-api,
print-color,
protobuf, protobuf,
pygatt, pyarrow,
pyparsing,
pypubsub, pypubsub,
pyqrcode, pyqrcode,
pyserial, pyserial,
@ -19,6 +25,7 @@
setuptools, setuptools,
tabulate, tabulate,
timeago, timeago,
webencodings,
}: }:
buildPythonPackage rec { buildPythonPackage rec {
@ -35,15 +42,22 @@ buildPythonPackage rec {
hash = "sha256-s56apVx7+EXkdw3FUjyGKGFjP+IVbO0/VDB4urXEtXQ="; hash = "sha256-s56apVx7+EXkdw3FUjyGKGFjP+IVbO0/VDB4urXEtXQ=";
}; };
pythonRelaxDeps = [ "protobuf" ];
build-system = [ setuptools ]; build-system = [ setuptools ];
dependencies = [ dependencies = [
bleak bleak
dotmap dotmap
packaging packaging
parse
pexpect pexpect
platformdirs
ppk2-api
print-color
protobuf protobuf
pygatt pyarrow
pyparsing
pypubsub pypubsub
pyqrcode pyqrcode
pyserial pyserial
@ -52,6 +66,7 @@ buildPythonPackage rec {
setuptools setuptools
tabulate tabulate
timeago timeago
webencodings
]; ];
passthru.optional-dependencies = { passthru.optional-dependencies = {
@ -59,9 +74,9 @@ buildPythonPackage rec {
}; };
nativeCheckInputs = [ nativeCheckInputs = [
pytap2 hypothesis
pytestCheckHook pytestCheckHook
]; ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
preCheck = '' preCheck = ''
export PATH="$PATH:$out/bin"; export PATH="$PATH:$out/bin";
@ -79,6 +94,7 @@ buildPythonPackage rec {
"test_main_support" "test_main_support"
"test_MeshInterface" "test_MeshInterface"
"test_message_to_json_shows_all" "test_message_to_json_shows_all"
"test_node"
"test_SerialInterface_single_port" "test_SerialInterface_single_port"
"test_support_info" "test_support_info"
"test_TCPInterface" "test_TCPInterface"

View File

@ -1,37 +1,34 @@
{ {
lib, lib,
buildPythonPackage, buildPythonPackage,
fetchFromGitHub, fetchPypi,
setuptools, setuptools,
pythonOlder, pythonOlder,
pyserial, pyserial,
pytestCheckHook,
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "modbus-tk"; pname = "modbus-tk";
version = "1.1.1"; version = "1.1.3";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.10"; disabled = pythonOlder "3.10";
src = fetchFromGitHub { src = fetchPypi {
owner = "ljean"; pname = "modbus_tk";
repo = "modbus-tk"; inherit version;
rev = "refs/tags/${version}"; hash = "sha256-aQ+nu4bql4mSRl0tYci1rMY5zg6LgzoKqW1N0XLFZEo=";
hash = "sha256-zikfVMFdlOJvuKVQGEsK03i58X6BGFsGWGrGOJZGC0g=";
}; };
build-system = [ setuptools ]; build-system = [ setuptools ];
dependencies = [ pyserial ]; dependencies = [ pyserial ];
nativeCheckInputs = [ pytestCheckHook ]; # Source no tagged anymore and PyPI doesn't ship tests
doCheck = false;
pythonImportsCheck = [ "modbus_tk" ]; pythonImportsCheck = [ "modbus_tk" ];
pytestFlagsArray = [ "tests/unittest_*.py" ];
meta = with lib; { meta = with lib; {
description = "Module for simple Modbus interactions"; description = "Module for simple Modbus interactions";
homepage = "https://github.com/ljean/modbus-tk"; homepage = "https://github.com/ljean/modbus-tk";

View File

@ -22,7 +22,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "proxy-py"; pname = "proxy-py";
version = "2.4.4"; version = "2.4.5";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -31,7 +31,7 @@ buildPythonPackage rec {
owner = "abhinavsingh"; owner = "abhinavsingh";
repo = "proxy.py"; repo = "proxy.py";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-QWwIbNt2MtRfQaX7uZJzYmS++2MH+gTjWO0aEKYSETI="; hash = "sha256-pn4YYGntG9C8mhECb7PYgN5wwicdlPcZu6Xn2M3iIKA=";
}; };
postPatch = '' postPatch = ''

View File

@ -13,14 +13,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pyfaidx"; pname = "pyfaidx";
version = "0.8.1.1"; version = "0.8.1.2";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-bwSCNSYZ8sxWADyiIyG9sNB2S2VnlbweQGKx+psIaGs="; hash = "sha256-2EUkcEVbHnePk5aUR9uOok3rRiTHxAdpUWRZy2+HvDM=";
}; };
build-system = [ build-system = [

View File

@ -3,7 +3,6 @@
buildPythonPackage, buildPythonPackage,
fetchFromGitHub, fetchFromGitHub,
mock, mock,
nose,
pexpect, pexpect,
pyserial, pyserial,
pytestCheckHook, pytestCheckHook,
@ -13,40 +12,33 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pygatt"; pname = "pygatt";
version = "4.0.5"; version = "5.0.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.5"; disabled = pythonOlder "3.10";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "peplin"; owner = "peplin";
repo = "pygatt"; repo = "pygatt";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-DUZGsztZViVNZwmhXoRN5FOQ7BgUeI0SsYgCHlvsrv0="; hash = "sha256-TMIqC+JvNOLU38a9jkacRAbdmAAd4UekFUDRoAWhHFo=";
}; };
postPatch = '' postPatch = ''
# Not support for Python < 3.4
substituteInPlace setup.py \ substituteInPlace setup.py \
--replace-fail "'enum-compat'" "" \ --replace-fail "setup_requires" "test_requires"
--replace-fail "'coverage >= 3.7.1'," "" \
--replace-fail "'nose >= 1.3.7'" ""
substituteInPlace tests/bgapi/test_bgapi.py \
--replace-fail "assertEquals" "assertEqual"
''; '';
pythonRemoveDeps = [ "enum-compat" ];
build-system = [ setuptools ]; build-system = [ setuptools ];
dependencies = [ pyserial ]; dependencies = [ pyserial ];
optional-dependencies.GATTTOOL = [ pexpect ]; optional-dependencies.GATTTOOL = [ pexpect ];
# tests require nose
doCheck = pythonOlder "3.12";
nativeCheckInputs = [ nativeCheckInputs = [
mock mock
nose
pytestCheckHook pytestCheckHook
] ++ optional-dependencies.GATTTOOL; ] ++ optional-dependencies.GATTTOOL;

View File

@ -1,28 +1,20 @@
{ {
lib, lib,
setuptools,
stdenv, stdenv,
pythonPackages,
fetchPypi, fetchPypi,
pkg-config, pkg-config,
qmake, libsForQt5,
qtbase,
qtsvg,
qtwebengine,
qtwebchannel,
qtdeclarative,
wrapQtAppsHook,
darwin, darwin,
buildPythonPackage,
python,
isPy27,
pyqt5,
sip,
pyqt-builder,
}: }:
let let
inherit (pythonPackages)
buildPythonPackage
python
isPy27
pyqt5
sip
pyqt-builder
;
inherit (darwin) autoSignDarwinBinariesHook; inherit (darwin) autoSignDarwinBinariesHook;
in in
buildPythonPackage ( buildPythonPackage (
@ -52,32 +44,33 @@ buildPythonPackage (
nativeBuildInputs = nativeBuildInputs =
[ [
pkg-config pkg-config
qmake libsForQt5.qmake
libsForQt5.wrapQtAppsHook
] ]
++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ sip ] ++ lib.optionals (stdenv.buildPlatform == stdenv.hostPlatform) [ sip ]
++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
python.pythonOnBuildForHost.pkgs.sip python.pythonOnBuildForHost.pkgs.sip
] ]
++ [ ++ [
qtbase libsForQt5.qtbase
qtsvg libsForQt5.qtsvg
qtwebengine libsForQt5.qtwebengine
pyqt-builder pyqt-builder
pythonPackages.setuptools setuptools
] ]
++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ qtdeclarative ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ libsForQt5.qtdeclarative ]
++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ autoSignDarwinBinariesHook ]; ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ autoSignDarwinBinariesHook ];
buildInputs = buildInputs =
[ [
sip sip
qtbase libsForQt5.qtbase
qtsvg libsForQt5.qtsvg
qtwebengine libsForQt5.qtwebengine
] ]
++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
qtwebchannel libsForQt5.qtwebchannel
qtdeclarative libsForQt5.qtdeclarative
]; ];
propagatedBuildInputs = [ pyqt5 ]; propagatedBuildInputs = [ pyqt5 ];
@ -98,21 +91,21 @@ buildPythonPackage (
enableParallelBuilding = true; enableParallelBuilding = true;
passthru = { passthru = {
inherit wrapQtAppsHook; inherit (libsForQt5) wrapQtAppsHook;
}; };
meta = with lib; { meta = {
description = "Python bindings for Qt5"; description = "Python bindings for Qt5";
homepage = "http://www.riverbankcomputing.co.uk"; homepage = "http://www.riverbankcomputing.co.uk";
license = licenses.gpl3; license = lib.licenses.gpl3;
hydraPlatforms = lib.lists.intersectLists qtwebengine.meta.platforms platforms.mesaPlatforms; hydraPlatforms = lib.lists.intersectLists libsForQt5.qtwebengine.meta.platforms lib.platforms.mesaPlatforms;
}; };
} }
// lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) { // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
# TODO: figure out why the env hooks aren't adding these inclusions automatically # TODO: figure out why the env hooks aren't adding these inclusions automatically
env.NIX_CFLAGS_COMPILE = lib.concatStringsSep " " [ env.NIX_CFLAGS_COMPILE = lib.concatStringsSep " " [
"-I${lib.getDev qtbase}/include/QtPrintSupport/" "-I${lib.getDev libsForQt5.qtbase}/include/QtPrintSupport/"
"-I${lib.getDev qtwebchannel}/include/QtWebChannel/" "-I${lib.getDev libsForQt5.qtwebchannel}/include/QtWebChannel/"
]; ];
} }
) )

View File

@ -0,0 +1,101 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
setuptools-scm,
pillow,
qrcode,
python-barcode,
six,
appdirs,
pyyaml,
argcomplete,
importlib-resources,
pyusb,
pyserial,
pycups,
jaconv,
pytestCheckHook,
pytest-mock,
scripttest,
mock,
hypothesis,
}:
buildPythonPackage rec {
pname = "python-escpos";
version = "3.1";
pyproject = true;
src = fetchFromGitHub {
owner = "python-escpos";
repo = "python-escpos";
rev = "refs/tags/v${version}";
hash = "sha256-f7qA1+8PwnXS526jjULEoyn0ejnvsneuWDt863p4J2g=";
fetchSubmodules = true;
};
build-system = [
setuptools
setuptools-scm
];
dependencies = [
pillow
qrcode
python-barcode
six
appdirs
pyyaml
argcomplete
importlib-resources
];
optional-dependencies = {
usb = [ pyusb ];
serial = [ pyserial ];
cups = [ pycups ];
all = [
pyusb
pyserial
pycups
];
};
preCheck = ''
# force the tests to use the module in $out
rm -r src
# disable checking coverage
substituteInPlace pyproject.toml \
--replace-fail "--cov escpos --cov-report=xml" ""
# allow tests to find the cli executable
export PATH="$out/bin:$PATH"
'';
nativeCheckInputs = [
jaconv
pytestCheckHook
pytest-mock
scripttest
mock
hypothesis
] ++ optional-dependencies.all;
pythonImportsCheck = [ "escpos" ];
meta = {
changelog = "https://github.com/python-escpos/python-escpos/blob/${src.rev}/CHANGELOG.rst";
description = "Python library to manipulate ESC/POS printers";
homepage = "https://python-escpos.readthedocs.io/";
license = lib.licenses.mit;
mainProgram = "python-escpos";
maintainers = with lib.maintainers; [ tomasajt ];
};
}

View File

@ -16,7 +16,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "python-gitlab"; pname = "python-gitlab";
version = "4.8.0"; version = "4.9.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -24,7 +24,7 @@ buildPythonPackage rec {
src = fetchPypi { src = fetchPypi {
pname = "python_gitlab"; pname = "python_gitlab";
inherit version; inherit version;
hash = "sha256-wsTXsc1QPZBa/l38Dz9mGZNDYfdq6FXGzsmmZoZNN88="; hash = "sha256-30TbtunJQefr+5JE5+1KpNuQ9cFkmMstE1uObn8Imho=";
}; };
nativeBuildInputs = [ setuptools ]; nativeBuildInputs = [ setuptools ];

View File

@ -0,0 +1,45 @@
{
lib,
fetchFromGitHub,
buildPythonPackage,
pytestCheckHook,
setuptools,
cachecontrol,
lxml-html-clean,
requests,
six,
}:
buildPythonPackage rec {
pname = "pywebcopy";
version = "7.0.2";
pyproject = true;
src = fetchFromGitHub {
owner = "rajatomar788";
repo = "pywebcopy";
rev = "v${version}";
hash = "sha256-XTPk3doF9dqImsLtTB03YKMWLzQrJpJtjNXe+691rZo=";
};
nativeCheckInputs = [ pytestCheckHook ];
pythonImportsCheck = [ "pywebcopy" ];
build-system = [ setuptools ];
dependencies = [
cachecontrol
lxml-html-clean
requests
six
];
meta = {
changelog = "https://github.com/rajatomar788/pywebcopy/blob/master/docs/changelog.md";
description = "Python package for cloning complete webpages and websites to local storage";
homepage = "https://github.com/rajatomar788/pywebcopy/";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ d3vil0p3r ];
};
}

View File

@ -2,11 +2,13 @@
lib, lib,
fetchFromGitHub, fetchFromGitHub,
buildPythonPackage, buildPythonPackage,
python3Packages,
pythonOlder, pythonOlder,
pyqt5,
poppler-qt5,
pycups,
}: }:
python3Packages.buildPythonPackage rec { buildPythonPackage rec {
pname = "qpageview"; pname = "qpageview";
version = "0.6.2"; version = "0.6.2";
format = "setuptools"; format = "setuptools";
@ -20,7 +22,7 @@ python3Packages.buildPythonPackage rec {
hash = "sha256-XFMTOD7ums8sbFHUViEI9q6/rCjUmEtXAdd3/OmLsHU="; hash = "sha256-XFMTOD7ums8sbFHUViEI9q6/rCjUmEtXAdd3/OmLsHU=";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = [
pyqt5 pyqt5
poppler-qt5 poppler-qt5
pycups pycups

View File

@ -0,0 +1,50 @@
{
lib,
buildPythonPackage,
click,
fetchFromGitHub,
modbus-tk,
poetry-core,
pyserial,
pythonOlder,
setuptools,
}:
buildPythonPackage rec {
pname = "riden";
version = "1.2.1";
pyproject = true;
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "geeksville";
repo = "riden";
rev = "refs/tags/${version}";
hash = "sha256-uR1CsVsGn/QC4krHaxl6GqRnTPbFdRaqyMEl2RVMHPU=";
};
build-system = [
poetry-core
setuptools
];
dependencies = [
click
modbus-tk
pyserial
];
# Module has no tests
doCheck = false;
pythonImportsCheck = [ "riden" ];
meta = with lib; {
description = "Module for Riden RD power supplies";
homepage = "https://github.com/geeksville/riden";
changelog = "https://github.com/geeksville/Riden/releases/tag/${version}";
license = licenses.mit;
maintainers = with maintainers; [ fab ];
};
}

View File

@ -18,7 +18,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "textual"; pname = "textual";
version = "0.75.0"; version = "0.72.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -39,7 +39,10 @@ buildPythonPackage rec {
] ++ markdown-it-py.optional-dependencies.plugins ++ markdown-it-py.optional-dependencies.linkify; ] ++ markdown-it-py.optional-dependencies.plugins ++ markdown-it-py.optional-dependencies.linkify;
optional-dependencies = { optional-dependencies = {
syntax = [ tree-sitter ] ++ lib.optionals (pythonOlder "3.12") [ tree-sitter-languages ]; syntax = [
tree-sitter
tree-sitter-languages
];
}; };
nativeCheckInputs = [ nativeCheckInputs = [
@ -48,7 +51,8 @@ buildPythonPackage rec {
pytestCheckHook pytestCheckHook
syrupy syrupy
time-machine time-machine
] ++ lib.flatten (builtins.attrValues optional-dependencies); tree-sitter
];
disabledTestPaths = [ disabledTestPaths = [
# Snapshot tests require syrupy<4 # Snapshot tests require syrupy<4

View File

@ -59,7 +59,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "transformers"; pname = "transformers";
version = "4.43.4"; version = "4.44.0";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -68,7 +68,7 @@ buildPythonPackage rec {
owner = "huggingface"; owner = "huggingface";
repo = "transformers"; repo = "transformers";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-NgCYBBFQpXF5QZEmvPBjiJfcoDvCg+aWx9+ljAcqv6Q="; hash = "sha256-i3KKfkYvKRYrs/kiwBJdyFzMiXKwyBEeUuZcHszip3k=";
}; };
build-system = [ setuptools ]; build-system = [ setuptools ];

View File

@ -1,12 +1,12 @@
{ lib {
, buildPythonPackage lib,
, fetchFromGitHub buildPythonPackage,
, setuptools fetchFromGitHub,
, wheel setuptools,
, cython cython,
, tree-sitter0_21 tree-sitter,
, pytestCheckHook pytestCheckHook,
, python python,
}: }:
buildPythonPackage rec { buildPythonPackage rec {
@ -34,20 +34,14 @@ buildPythonPackage rec {
build-system = [ build-system = [
setuptools setuptools
wheel
cython cython
]; ];
dependencies = [ dependencies = [ tree-sitter ];
# https://github.com/grantjenks/py-tree-sitter-languages/issues/67
tree-sitter0_21
];
# Generate languages.so file (build won't fail without this, but tests will). # Generate languages.so file (build won't fail without this, but tests will).
preBuild = '' preBuild = ''
${python.pythonOnBuildForHost.interpreter} build.py ${python.pythonOnBuildForHost.interpreter} build.py
''; '';
nativeCheckInputs = [ nativeCheckInputs = [ pytestCheckHook ];
pytestCheckHook
];
# Without cd $out, tests fail to import the compiled cython extensions. # Without cd $out, tests fail to import the compiled cython extensions.
# Without copying the ./tests/ directory to $out, pytest won't detect the # Without copying the ./tests/ directory to $out, pytest won't detect the
# tests and run them. See also: # tests and run them. See also:
@ -64,5 +58,7 @@ buildPythonPackage rec {
homepage = "https://github.com/grantjenks/py-tree-sitter-languages"; homepage = "https://github.com/grantjenks/py-tree-sitter-languages";
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [ doronbehar ]; maintainers = with maintainers; [ doronbehar ];
# https://github.com/grantjenks/py-tree-sitter-languages/issues/67
broken = versionAtLeast tree-sitter.version "0.22";
}; };
} }

View File

@ -10,7 +10,7 @@
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "tree-sitter0_21"; pname = "tree-sitter";
version = "0.21.3"; version = "0.21.3";
pyproject = true; pyproject = true;

View File

@ -18,14 +18,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "ufo2ft"; pname = "ufo2ft";
version = "3.2.5"; version = "3.2.7";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-PUPk92wugtIZWXP8vq8bJNxqTDhDENKdNhW1kNEcL3E="; hash = "sha256-fA5It0mr6sjAQECGPOsS//lZJ9OqKelfhdzV770sMHQ=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -57,7 +57,7 @@
grpcio, grpcio,
}: }:
let let
version = "0.15.0"; version = "0.15.1";
optional-dependencies = { optional-dependencies = {
huggingflace = [ huggingflace = [
langdetect langdetect
@ -100,7 +100,7 @@ buildPythonPackage {
owner = "Unstructured-IO"; owner = "Unstructured-IO";
repo = "unstructured"; repo = "unstructured";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-O44zmD+giqnfrEoKjU/+AkDykZdn2jLjpm+X65Em2KY="; hash = "sha256-zDlkqeP89O3u5Yir9Xi+Z6BpLd6r0QXJ563kc2krjAs=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View File

@ -12,7 +12,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "zha-quirks"; pname = "zha-quirks";
version = "0.0.117"; version = "0.0.118";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.12"; disabled = pythonOlder "3.12";
@ -21,7 +21,7 @@ buildPythonPackage rec {
owner = "zigpy"; owner = "zigpy";
repo = "zha-device-handlers"; repo = "zha-device-handlers";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-uk1G8X5TLuA4spTrd+077wggCooqvqJZh3NIwC4/BFM="; hash = "sha256-LudwIENP1KCX7+HwyklCUdAu5mRLDcnMEZBzbRH2FM0=";
}; };
postPatch = '' postPatch = ''

View File

@ -26,7 +26,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "zha"; pname = "zha";
version = "0.0.23"; version = "0.0.27";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.12"; disabled = pythonOlder "3.12";
@ -35,7 +35,7 @@ buildPythonPackage rec {
owner = "zigpy"; owner = "zigpy";
repo = "zha"; repo = "zha";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-a0rr8pJCoVtDR3iNCDpLZnapetzNHMj8uCu667lNcGE="; hash = "sha256-urECZtYmwKWboF84SVTiUJthYW0hRBKL9kwRpWvcSoc=";
}; };
postPatch = '' postPatch = ''

View File

@ -16,7 +16,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "zigpy-zigate"; pname = "zigpy-zigate";
version = "0.13.0"; version = "0.13.1";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -25,7 +25,7 @@ buildPythonPackage rec {
owner = "zigpy"; owner = "zigpy";
repo = "zigpy-zigate"; repo = "zigpy-zigate";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-fLNUTrPR1bc6H2mpdHj6O4pbrfLTb3filBE4mSDhZn0="; hash = "sha256-Mwccb0OQgSknH8prbFejkGRVI7ii/r9D87aRyQrGgWs=";
}; };
postPatch = '' postPatch = ''

View File

@ -19,7 +19,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "zigpy-znp"; pname = "zigpy-znp";
version = "0.12.3"; version = "0.12.4";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -28,7 +28,7 @@ buildPythonPackage rec {
owner = "zigpy"; owner = "zigpy";
repo = pname; repo = pname;
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
hash = "sha256-qrIYcGumOHu3/gG9MOyKngAhOkeZEmCgXIDDcghoYn0="; hash = "sha256-5DuqM7MgntV/3WquR+0Cr/vIwYL35ZVpGlNZPj92jJ4=";
}; };
nativeBuildInputs = [ setuptools ]; nativeBuildInputs = [ setuptools ];

View File

@ -11,6 +11,7 @@
cryptography, cryptography,
fetchFromGitHub, fetchFromGitHub,
freezegun, freezegun,
frozendict,
importlib-resources, importlib-resources,
jsonschema, jsonschema,
pycryptodome, pycryptodome,
@ -26,7 +27,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "zigpy"; pname = "zigpy";
version = "0.65.0"; version = "0.65.2";
pyproject = true; pyproject = true;
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -35,7 +36,7 @@ buildPythonPackage rec {
owner = "zigpy"; owner = "zigpy";
repo = "zigpy"; repo = "zigpy";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-CyVmMDZ+8B3SYRR6JKFeI/dyQbJk70/slm3hRV1f3ig="; hash = "sha256-rNqo4NtIdg9MoOKde26/RUcfX/VYiVkNj97v/RJcB4E=";
}; };
postPatch = '' postPatch = ''
@ -53,6 +54,7 @@ buildPythonPackage rec {
aiosqlite aiosqlite
crccheck crccheck
cryptography cryptography
frozendict
jsonschema jsonschema
pyserial-asyncio pyserial-asyncio
typing-extensions typing-extensions

View File

@ -2,16 +2,16 @@
buildNpmPackage rec { buildNpmPackage rec {
pname = "eslint_d"; pname = "eslint_d";
version = "13.1.2"; version = "14.0.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mantoni"; owner = "mantoni";
repo = "eslint_d.js"; repo = "eslint_d.js";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-2G6I6Tx6LqgZ5EpVw4ux/JXv+Iky6Coenbh51JoFg7Q="; hash = "sha256-r0pb9qbWfyVUHuHrNhiYm+0zlF5WId3dH7QCubzZDts=";
}; };
npmDepsHash = "sha256-L6abWbSnxY6gGMXBjxobEg8cpl0p3lMST9T42QGk4yM="; npmDepsHash = "sha256-0Db18y7MUnnnr8v+bBOUhGBCsZcZ9OGtGqSVH7/wYQc=";
dontNpmBuild = true; dontNpmBuild = true;

View File

@ -1,5 +1,9 @@
{ {
lib,
mkKdeDerivation, mkKdeDerivation,
substituteAll,
procps,
xsettingsd,
pkg-config, pkg-config,
wrapGAppsHook3, wrapGAppsHook3,
sass, sass,
@ -11,7 +15,17 @@ mkKdeDerivation {
# The gtkconfig KDED module will crash the daemon if the GSettings schemas # The gtkconfig KDED module will crash the daemon if the GSettings schemas
# aren't found. # aren't found.
patches = [./0001-gsettings-schemas-path.patch]; patches = [
./0001-gsettings-schemas-path.patch
(
substituteAll {
src = ./dependency-paths.patch;
pgrep = lib.getExe' procps "pgrep";
xsettingsd = lib.getExe xsettingsd;
}
)
];
preConfigure = '' preConfigure = ''
NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\"" NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\""
''; '';
@ -21,4 +35,10 @@ mkKdeDerivation {
dontWrapGApps = true; # There is nothing to wrap dontWrapGApps = true; # There is nothing to wrap
extraCmakeFlags = ["-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/"]; extraCmakeFlags = ["-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/"];
# Hardcoded as QStrings, which are UTF-16 so Nix can't pick these up automatically
postFixup = ''
mkdir -p $out/nix-support
echo "${procps} ${xsettingsd}" > $out/nix-support/depends
'';
} }

View File

@ -0,0 +1,22 @@
diff --git a/kded/config_editor/xsettings.cpp b/kded/config_editor/xsettings.cpp
index 1f9fe5b..9824973 100644
--- a/kded/config_editor/xsettings.cpp
+++ b/kded/config_editor/xsettings.cpp
@@ -46,7 +46,7 @@ void replaceValueInXSettingsdContents(QString &xSettingsdContents, const QString
pid_t pidOfXSettingsd()
{
QProcess pgrep;
- pgrep.start(QStringLiteral("pgrep"),
+ pgrep.start(QStringLiteral("@pgrep@"),
QStringList{
QStringLiteral("-u"),
QString::number(getuid()),
@@ -67,7 +67,7 @@ reloadXSettingsd(void *)
{
pid_t xSettingsdPid = pidOfXSettingsd();
if (xSettingsdPid == 0) {
- QProcess::startDetached(QStandardPaths::findExecutable(QStringLiteral("xsettingsd")), QStringList());
+ QProcess::startDetached(QStringLiteral("@xsettingsd@"), QStringList());
} else {
kill(xSettingsdPid, SIGHUP);
}

View File

@ -2,7 +2,9 @@
lib, lib,
mkKdeDerivation, mkKdeDerivation,
substituteAll, substituteAll,
fontconfig,
xorg, xorg,
lsof,
pkg-config, pkg-config,
spirv-tools, spirv-tools,
qtsvg, qtsvg,
@ -19,10 +21,13 @@ mkKdeDerivation {
patches = [ patches = [
(substituteAll { (substituteAll {
src = ./tool-paths.patch; src = ./dependency-paths.patch;
xmessage = "${lib.getBin xorg.xmessage}/bin/xmessage"; fc-match = lib.getExe' fontconfig "fc-match";
xsetroot = "${lib.getBin xorg.xsetroot}/bin/xsetroot"; lsof = lib.getExe lsof;
qdbus = "${lib.getBin qttools}/bin/qdbus"; qdbus = lib.getExe' qttools "qdbus";
xmessage = lib.getExe xorg.xmessage;
xrdb = lib.getExe xorg.xrdb;
xsetroot = lib.getExe xorg.xsetroot;
}) })
]; ];
@ -50,5 +55,11 @@ mkKdeDerivation {
gpsd gpsd
]; ];
# Hardcoded as QStrings, which are UTF-16 so Nix can't pick these up automatically
postFixup = ''
mkdir -p $out/nix-support
echo "${lsof} ${xorg.xmessage} ${xorg.xsetroot}" > $out/nix-support/depends
'';
passthru.providedSessions = ["plasma" "plasmax11"]; passthru.providedSessions = ["plasma" "plasmax11"];
} }

View File

@ -0,0 +1,149 @@
diff --git a/applets/devicenotifier/plugin/ksolidnotify.cpp b/applets/devicenotifier/plugin/ksolidnotify.cpp
index bcbb58a034..be2570ce97 100644
--- a/applets/devicenotifier/plugin/ksolidnotify.cpp
+++ b/applets/devicenotifier/plugin/ksolidnotify.cpp
@@ -169,7 +169,7 @@ void KSolidNotify::queryBlockingApps(const QString &devicePath)
Q_EMIT blockingAppsReady(blockApps);
p->deleteLater();
});
- p->start(QStringLiteral("lsof"), {QStringLiteral("-t"), devicePath});
+ p->start(QStringLiteral("@lsof@"), {QStringLiteral("-t"), devicePath});
// p.start(QStringLiteral("fuser"), {QStringLiteral("-m"), devicePath});
}
diff --git a/kcms/fonts/fontinit.cpp b/kcms/fonts/fontinit.cpp
index e27e21a7bd..abbf7f32e1 100644
--- a/kcms/fonts/fontinit.cpp
+++ b/kcms/fonts/fontinit.cpp
@@ -27,7 +27,7 @@ Q_DECL_EXPORT void kcminit()
const QByteArray input = "Xft.dpi: " + QByteArray::number(dpi);
QProcess p;
- p.start(QStringLiteral("xrdb"), {QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp")});
+ p.start(QStringLiteral("@xrdb@"), {QStringLiteral("-quiet"), QStringLiteral("-merge"), QStringLiteral("-nocpp")});
p.setProcessChannelMode(QProcess::ForwardedChannels);
p.write(input);
p.closeWriteChannel();
diff --git a/kcms/fonts/fonts.cpp b/kcms/fonts/fonts.cpp
index 92d8fadd44..2a973d76ef 100644
--- a/kcms/fonts/fonts.cpp
+++ b/kcms/fonts/fonts.cpp
@@ -135,7 +135,7 @@ void KFonts::save()
if (fontsAASettings()->forceFontDPI() == 0 && forceFontDPIChanged && KWindowSystem::isPlatformX11()) {
QProcess proc;
proc.setProcessChannelMode(QProcess::ForwardedChannels);
- proc.start("xrdb",
+ proc.start("@xrdb@",
QStringList() << "-quiet"
<< "-remove"
<< "-nocpp");
diff --git a/kcms/kfontinst/kcmfontinst/FcQuery.cpp b/kcms/kfontinst/kcmfontinst/FcQuery.cpp
index 771c790c74..1be64b0527 100644
--- a/kcms/kfontinst/kcmfontinst/FcQuery.cpp
+++ b/kcms/kfontinst/kcmfontinst/FcQuery.cpp
@@ -44,7 +44,7 @@ void CFcQuery::run(const QString &query)
connect(m_proc, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(procExited()));
connect(m_proc, &QProcess::readyReadStandardOutput, this, &CFcQuery::data);
- m_proc->start("fc-match", args);
+ m_proc->start("@fc-match@", args);
}
void CFcQuery::procExited()
diff --git a/kcms/krdb/krdb.cpp b/kcms/krdb/krdb.cpp
index 8fdd99f9ed..1bd7d552a5 100644
--- a/kcms/krdb/krdb.cpp
+++ b/kcms/krdb/krdb.cpp
@@ -423,7 +423,7 @@ void runRdb(unsigned int flags)
contents += "Xft.dpi: " + QString::number(dpi) + '\n';
else {
KProcess queryProc;
- queryProc << QStringLiteral("xrdb") << QStringLiteral("-query");
+ queryProc << QStringLiteral("@xrdb@") << QStringLiteral("-query");
queryProc.setOutputChannelMode(KProcess::OnlyStdoutChannel);
queryProc.start();
if (queryProc.waitForFinished()) {
@@ -443,7 +443,7 @@ void runRdb(unsigned int flags)
}
KProcess loadProc;
- loadProc << QStringLiteral("xrdb") << QStringLiteral("-quiet") << QStringLiteral("-load") << QStringLiteral("-nocpp");
+ loadProc << QStringLiteral("@xrdb@") << QStringLiteral("-quiet") << QStringLiteral("-load") << QStringLiteral("-nocpp");
loadProc.start();
if (loadProc.waitForStarted()) {
loadProc.write(db);
@@ -461,16 +461,16 @@ void runRdb(unsigned int flags)
KProcess proc;
#ifndef NDEBUG
- proc << QStringLiteral("xrdb") << QStringLiteral("-merge") << tmpFile.fileName();
+ proc << QStringLiteral("@xrdb@") << QStringLiteral("-merge") << tmpFile.fileName();
#else
- proc << "xrdb"
+ proc << "@xrdb@"
<< "-quiet"
<< "-merge" << tmpFile.fileName();
#endif
proc.execute();
// Needed for applications that don't set their own cursor.
- QProcess::execute(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
+ QProcess::execute(QStringLiteral("@xsetroot@"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
applyGtkStyles(1);
applyGtkStyles(2);
diff --git a/ksmserver/plasma-restoresession.service.in b/ksmserver/plasma-restoresession.service.in
index 2c52a4b87d..fd7fdc8ac1 100644
--- a/ksmserver/plasma-restoresession.service.in
+++ b/ksmserver/plasma-restoresession.service.in
@@ -5,5 +5,5 @@ RefuseManualStart=yes
[Service]
Type=oneshot
-ExecStart=-@QtBinariesDir@/qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession
+ExecStart=-@qdbus@ org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession
Slice=session.slice
diff --git a/startkde/kcminit/plasma-kcminit-phase1.service.in b/startkde/kcminit/plasma-kcminit-phase1.service.in
index 7218628ce9..9126475ea4 100644
--- a/startkde/kcminit/plasma-kcminit-phase1.service.in
+++ b/startkde/kcminit/plasma-kcminit-phase1.service.in
@@ -6,5 +6,5 @@ PartOf=graphical-session.target
[Service]
Type=oneshot
-ExecStart=@QtBinariesDir@/qdbus org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1
+ExecStart=@qdbus@ org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1
Slice=session.slice
diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
index 0bd4511189..602b7e9eb0 100644
--- a/startkde/startplasma.cpp
+++ b/startkde/startplasma.cpp
@@ -57,7 +57,7 @@ void sigtermHandler(int signalNumber)
void messageBox(const QString &text)
{
out << text;
- runSync(QStringLiteral("xmessage"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
+ runSync(QStringLiteral("@xmessage@"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
}
QStringList allServices(const QLatin1String &prefix)
@@ -507,7 +507,7 @@ QProcess *setupKSplash()
if (ksplashCfg.readEntry("Engine", QStringLiteral("KSplashQML")) == QLatin1String("KSplashQML")) {
p = new QProcess;
p->setProcessChannelMode(QProcess::ForwardedChannels);
- p->start(QStringLiteral("ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
+ p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
}
}
return p;
diff --git a/startkde/systemd/plasma-ksplash-ready.service.in b/startkde/systemd/plasma-ksplash-ready.service.in
index 3f6744f378..c51266794d 100644
--- a/startkde/systemd/plasma-ksplash-ready.service.in
+++ b/startkde/systemd/plasma-ksplash-ready.service.in
@@ -6,5 +6,5 @@ PartOf=graphical-session.target
[Service]
Type=oneshot
-ExecStart=-@QtBinariesDir@/qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage ready
+ExecStart=-@qdbus@ org.kde.KSplash /KSplash org.kde.KSplash.setStage ready
Slice=session.slice

View File

@ -1,68 +0,0 @@
diff --git a/kcms/krdb/krdb.cpp b/kcms/krdb/krdb.cpp
index 46363ddcb..d787f9993 100644
--- a/kcms/krdb/krdb.cpp
+++ b/kcms/krdb/krdb.cpp
@@ -468,7 +468,7 @@ void runRdb(unsigned int flags)
proc.execute();
// Needed for applications that don't set their own cursor.
- QProcess::execute(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
+ QProcess::execute(QStringLiteral("@xsetroot@"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
applyGtkStyles(1);
applyGtkStyles(2);
diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
index b0158c97d..c8f7fe223 100644
--- a/startkde/startplasma.cpp
+++ b/startkde/startplasma.cpp
@@ -50,7 +50,7 @@ void sigtermHandler(int signalNumber)
void messageBox(const QString &text)
{
out << text;
- runSync(QStringLiteral("xmessage"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
+ runSync(QStringLiteral("@xmessage@"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
}
QStringList allServices(const QLatin1String &prefix)
@@ -484,7 +484,7 @@ QProcess *setupKSplash()
if (ksplashCfg.readEntry("Engine", QStringLiteral("KSplashQML")) == QLatin1String("KSplashQML")) {
p = new QProcess;
p->setProcessChannelMode(QProcess::ForwardedChannels);
- p->start(QStringLiteral("ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
+ p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
}
}
return p;
diff --git a/ksmserver/plasma-restoresession.service.in b/ksmserver/plasma-restoresession.service.in
index 2c52a4b87..fd7fdc8ac 100644
--- a/ksmserver/plasma-restoresession.service.in
+++ b/ksmserver/plasma-restoresession.service.in
@@ -5,5 +5,5 @@ RefuseManualStart=yes
[Service]
Type=oneshot
-ExecStart=-@QtBinariesDir@/qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession
+ExecStart=-@qdbus@ org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession
Slice=session.slice
diff --git a/startkde/kcminit/plasma-kcminit-phase1.service.in b/startkde/kcminit/plasma-kcminit-phase1.service.in
index 7218628ce..9126475ea 100644
--- a/startkde/kcminit/plasma-kcminit-phase1.service.in
+++ b/startkde/kcminit/plasma-kcminit-phase1.service.in
@@ -6,5 +6,5 @@ PartOf=graphical-session.target
[Service]
Type=oneshot
-ExecStart=@QtBinariesDir@/qdbus org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1
+ExecStart=@qdbus@ org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1
Slice=session.slice
diff --git a/startkde/systemd/plasma-ksplash-ready.service.in b/startkde/systemd/plasma-ksplash-ready.service.in
index 3f6744f37..c51266794 100644
--- a/startkde/systemd/plasma-ksplash-ready.service.in
+++ b/startkde/systemd/plasma-ksplash-ready.service.in
@@ -6,5 +6,5 @@ PartOf=graphical-session.target
[Service]
Type=oneshot
-ExecStart=-@QtBinariesDir@/qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage ready
+ExecStart=-@qdbus@ org.kde.KSplash /KSplash org.kde.KSplash.setStage ready
Slice=session.slice

View File

@ -1,6 +1,6 @@
{ lib, stdenv, buildPythonApplication, fetchFromGitHub, python3Packages, pyqtwebengine, lilypond }: { lib, stdenv, fetchFromGitHub, python311Packages, lilypond }:
buildPythonApplication rec { python311Packages.buildPythonApplication rec {
pname = "frescobaldi"; pname = "frescobaldi";
version = "3.3.0"; version = "3.3.0";
@ -11,7 +11,7 @@ buildPythonApplication rec {
sha256 = "sha256-Q6ruthNcpjLlYydUetkuTECiCIzu055bw40O8BPGq/A="; sha256 = "sha256-Q6ruthNcpjLlYydUetkuTECiCIzu055bw40O8BPGq/A=";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python311Packages; [
qpageview qpageview
lilypond lilypond
pygame pygame
@ -22,7 +22,7 @@ buildPythonApplication rec {
pyqtwebengine pyqtwebengine
]; ];
nativeBuildInputs = [ pyqtwebengine.wrapQtAppsHook ]; nativeBuildInputs = [ python311Packages.pyqtwebengine.wrapQtAppsHook ];
# Needed because source is fetched from git # Needed because source is fetched from git
preBuild = '' preBuild = ''

View File

@ -15,12 +15,12 @@ callPackage ./generic.nix args {
# this attribute is the correct one for this package. # this attribute is the correct one for this package.
kernelModuleAttribute = "zfs_2_2"; kernelModuleAttribute = "zfs_2_2";
# check the release notes for compatible kernels # check the release notes for compatible kernels
kernelCompatible = kernel.kernelOlder "6.9"; kernelCompatible = kernel.kernelOlder "6.10";
latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_8; latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_9;
# this package should point to the latest release. # this package should point to the latest release.
version = "2.2.4"; version = "2.2.5";
tests = [ tests = [
nixosTests.zfs.installer nixosTests.zfs.installer
@ -29,5 +29,5 @@ callPackage ./generic.nix args {
maintainers = with lib.maintainers; [ adamcstephens amarshall ]; maintainers = with lib.maintainers; [ adamcstephens amarshall ];
hash = "sha256-SSp/1Tu1iGx5UDcG4j0k2fnYxK05cdE8gzfSn8DU5Z4="; hash = "sha256-BkwcNPk+jX8CXp5xEVrg4THof7o/5j8RY2SY6+IPNTg=";
} }

View File

@ -23,31 +23,13 @@ callPackage ./generic.nix args {
# IMPORTANT: Always use a tagged release candidate or commits from the # IMPORTANT: Always use a tagged release candidate or commits from the
# zfs-<version>-staging branch, because this is tested by the OpenZFS # zfs-<version>-staging branch, because this is tested by the OpenZFS
# maintainers. # maintainers.
version = "2.2.4-unstable-2024-07-15"; version = "2.2.5";
rev = "/54ef0fdf60a8e7633c38cb46e1f5bcfcec792f4e"; # rev = "";
isUnstable = true; isUnstable = true;
tests = [ tests = [
nixosTests.zfs.unstable nixosTests.zfs.unstable
]; ];
# 6.10 patches approved+merged to the default branch, not in staging yet hash = "sha256-BkwcNPk+jX8CXp5xEVrg4THof7o/5j8RY2SY6+IPNTg=";
# https://github.com/openzfs/zfs/pull/16250
extraPatches = [
(fetchpatch {
url = "https://github.com/openzfs/zfs/commit/7ca7bb7fd723a91366ce767aea53c4f5c2d65afb.patch";
hash = "sha256-vUX4lgywh5ox6DjtIfeC90KjbLoW3Ol0rK/L65jOENo=";
})
(fetchpatch {
url = "https://github.com/openzfs/zfs/commit/e951dba48a6330aca9c161c50189f6974e6877f0.patch";
hash = "sha256-A1h0ZLY+nlReBMTlEm3O9kwBqto1cgsZdnJsHpR6hw0=";
})
(fetchpatch {
url = "https://github.com/openzfs/zfs/commit/b409892ae5028965a6fe98dde1346594807e6e45.patch";
hash = "sha256-pW1b8ktglFhwVRapTB5th9UCyjyrPmCVPg53nMENax8=";
})
];
hash = "sha256-7vZeIzA2yDW/gSCcS2AM3+C9qbRIbA9XbCRUxikW2+M=";
} }

View File

@ -11,7 +11,9 @@ buildPythonPackage rec {
hash = "sha256-GmbIqO+03LgbUxJ1nTStXrYN3t2MfvzbeYRAipfTW1o="; hash = "sha256-GmbIqO+03LgbUxJ1nTStXrYN3t2MfvzbeYRAipfTW1o=";
}; };
propagatedBuildInputs = [ django-mailman3 readme-renderer ]; propagatedBuildInputs = [
django-mailman3 readme-renderer
] ++ readme-renderer.optional-dependencies.md;
nativeCheckInputs = [ beautifulsoup4 vcrpy mock ]; nativeCheckInputs = [ beautifulsoup4 vcrpy mock ];
# Tries to connect to database. # Tries to connect to database.

View File

@ -29,10 +29,6 @@ lib.fix (self: python3.override {
hash = "sha256-WF3FFrnrBCphnvCjnD19Vf6BvbTfCaUsnN3g0Hvxqn0="; hash = "sha256-WF3FFrnrBCphnvCjnD19Vf6BvbTfCaUsnN3g0Hvxqn0=";
}; };
}); });
readme-renderer = super.readme-renderer.overridePythonAttrs (_: {
propagatedBuildInputs = [ self.cmarkgfm ];
});
}) })
overlay; overlay;

View File

@ -38,7 +38,18 @@ in phpPackage.buildComposerProject rec {
php = phpPackage; php = phpPackage;
buildInputs = [ buildInputs = [
graphviz
ipmitool
libvirt
monitoring-plugins
mtr
net-snmp
nfdump
nmap
rrdtool
system-sendmail
unixtools.whereis unixtools.whereis
whois
(python3.withPackages (ps: with ps; [ (python3.withPackages (ps: with ps; [
pymysql pymysql
python-dotenv python-dotenv
@ -80,13 +91,15 @@ in phpPackage.buildComposerProject rec {
--replace '"default": "/usr/bin/snmpwalk",' '"default": "${net-snmp}/bin/snmpwalk",' \ --replace '"default": "/usr/bin/snmpwalk",' '"default": "${net-snmp}/bin/snmpwalk",' \
--replace '"default": "/usr/bin/virsh",' '"default": "${libvirt}/bin/virsh",' \ --replace '"default": "/usr/bin/virsh",' '"default": "${libvirt}/bin/virsh",' \
--replace '"default": "/usr/bin/whois",' '"default": "${whois}/bin/whois",' \ --replace '"default": "/usr/bin/whois",' '"default": "${whois}/bin/whois",' \
--replace '"default": "/usr/lib/nagios/plugins",' '"default": "${monitoring-plugins}/libexec",' \ --replace '"default": "/usr/lib/nagios/plugins",' '"default": "${monitoring-plugins}/bin",' \
--replace '"default": "/usr/sbin/sendmail",' '"default": "${system-sendmail}/bin/sendmail",' --replace '"default": "/usr/sbin/sendmail",' '"default": "${system-sendmail}/bin/sendmail",'
substituteInPlace $out/LibreNMS/wrapper.py --replace '/usr/bin/env php' '${phpPackage}/bin/php' substituteInPlace $out/LibreNMS/wrapper.py --replace '/usr/bin/env php' '${phpPackage}/bin/php'
substituteInPlace $out/LibreNMS/__init__.py --replace '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"' substituteInPlace $out/LibreNMS/__init__.py --replace '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"'
substituteInPlace $out/snmp-scan.py --replace '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"' substituteInPlace $out/snmp-scan.py --replace '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"'
substituteInPlace $out/lnms --replace '\App\Checks::runningUser();' '//\App\Checks::runningUser(); //removed as nix forces ownership to root'
wrapProgram $out/daily.sh --prefix PATH : ${phpPackage}/bin wrapProgram $out/daily.sh --prefix PATH : ${phpPackage}/bin
rm -rf $out/logs $out/rrd $out/bootstrap/cache $out/storage $out/.env rm -rf $out/logs $out/rrd $out/bootstrap/cache $out/storage $out/.env

View File

@ -104,7 +104,7 @@ rec {
NIX_CFLAGS_LINK = toString args.env.NIX_CFLAGS_LINK + " -static"; NIX_CFLAGS_LINK = toString args.env.NIX_CFLAGS_LINK + " -static";
}; };
} else { } else {
NIX_CFLAGS_LINK = toString (args.env.NIX_CFLAGS_LINK or "") + " -static"; NIX_CFLAGS_LINK = toString (args.NIX_CFLAGS_LINK or "") + " -static";
} // lib.optionalAttrs (!(args.dontAddStaticConfigureFlags or false)) { } // lib.optionalAttrs (!(args.dontAddStaticConfigureFlags or false)) {
configureFlags = (args.configureFlags or []) ++ [ configureFlags = (args.configureFlags or []) ++ [
"--disable-shared" # brrr... "--disable-shared" # brrr...

View File

@ -356,7 +356,7 @@ else let
then attrs.name + hostSuffix then attrs.name + hostSuffix
else else
# we cannot coerce null to a string below # we cannot coerce null to a string below
assert assertMsg (attrs ? version && attrs.version != null) "The version attribute cannot be null."; assert assertMsg (attrs ? version && attrs.version != null) "The `version` attribute cannot be null.";
"${attrs.pname}${staticMarker}${hostSuffix}-${attrs.version}" "${attrs.pname}${staticMarker}${hostSuffix}-${attrs.version}"
); );
}) // { }) // {
@ -572,14 +572,17 @@ let
checkedEnv = checkedEnv =
let let
overlappingNames = attrNames (builtins.intersectAttrs env derivationArg); overlappingNames = attrNames (builtins.intersectAttrs env derivationArg);
prettyPrint = lib.generators.toPretty {};
makeError = name: " - ${name}: in `env`: ${prettyPrint env.${name}}; in derivation arguments: ${prettyPrint derivationArg.${name}}";
errors = lib.concatMapStringsSep "\n" makeError overlappingNames;
in in
assert assertMsg envIsExportable assert assertMsg envIsExportable
"When using structured attributes, `env` must be an attribute set of environment variables."; "When using structured attributes, `env` must be an attribute set of environment variables.";
assert assertMsg (overlappingNames == [ ]) assert assertMsg (overlappingNames == [ ])
"The env attribute set cannot contain any attributes passed to derivation. The following attributes are overlapping: ${concatStringsSep ", " overlappingNames}"; "The `env` attribute set cannot contain any attributes passed to derivation. The following attributes are overlapping:\n${errors}";
mapAttrs mapAttrs
(n: v: assert assertMsg (isString v || isBool v || isInt v || isDerivation v) (n: v: assert assertMsg (isString v || isBool v || isInt v || isDerivation v)
"The env attribute set can only contain derivation, string, boolean or integer attributes. The ${n} attribute is of type ${builtins.typeOf v}."; v) "The `env` attribute set can only contain derivation, string, boolean or integer attributes. The `${n}` attribute is of type ${builtins.typeOf v}."; v)
env; env;
# Fixed-output derivations may not reference other paths, which means that # Fixed-output derivations may not reference other paths, which means that

View File

@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
license = licenses.bsd3; license = licenses.bsd3;
maintainers = with maintainers; [ romildo ]; maintainers = with maintainers; [ romildo ];
platforms = platforms.linux; platforms = platforms.linux;
mainProgram = "xsettingsd";
}; };
} }

View File

@ -1,19 +1,20 @@
{ lib {
, fetchFromGitLab lib,
, mkDerivation fetchFromGitLab,
, qtbase mkDerivation,
, cmake qtbase,
, kconfig cmake,
, kio kconfig,
, kiconthemes kio,
, kxmlgui kiconthemes,
, ki18n kxmlgui,
, kguiaddons ki18n,
, extra-cmake-modules kguiaddons,
, boost extra-cmake-modules,
, shared-mime-info boost,
, rrdtool shared-mime-info,
, breeze-icons rrdtool,
breeze-icons,
}: }:
mkDerivation rec { mkDerivation rec {
@ -26,6 +27,10 @@ mkDerivation rec {
hash = "sha256-bUVL5eRQ5UkSZo562pnyEcj0fVoSC5WHRq4BfN67jEM="; hash = "sha256-bUVL5eRQ5UkSZo562pnyEcj0fVoSC5WHRq4BfN67jEM=";
}; };
postPatch = lib.optional (!lib.versionOlder rrdtool.version "1.9.0") ''
substituteInPlace kcollectd/rrd_interface.cc --replace-fail 'char *arg[] =' 'const char *arg[] ='
'';
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
extra-cmake-modules extra-cmake-modules

View File

@ -1,48 +0,0 @@
{ lib
, stdenv
, fetchFromGitHub
, autoreconfHook
, gettext
, perl
, pkg-config
, libxml2
, pango
, cairo
, groff
, tcl
, darwin
}:
perl.pkgs.toPerlModule (stdenv.mkDerivation rec {
pname = "rrdtool";
version = "1.8.0";
src = fetchFromGitHub {
owner = "oetiker";
repo = "rrdtool-1.x";
rev = "v${version}";
hash = "sha256-a+AxU1+YpkGoFs1Iu/CHAEZ4XIkWs7Vsnr6RcfXzsBE=";
};
nativeBuildInputs = [
pkg-config
autoreconfHook
];
buildInputs = [ gettext perl libxml2 pango cairo groff ]
++ lib.optionals stdenv.isDarwin [ tcl darwin.apple_sdk.frameworks.ApplicationServices ];
postInstall = ''
# for munin and rrdtool support
mkdir -p $out/${perl.libPrefix}
mv $out/lib/perl/5* $out/${perl.libPrefix}
'';
meta = with lib; {
homepage = "https://oss.oetiker.ch/rrdtool/";
description = "High performance logging in Round Robin Databases";
license = licenses.gpl2Only;
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ pSub ];
};
})

View File

@ -1,27 +1,29 @@
{ lib {
, stdenv lib,
, autoreconfHook stdenv,
, curl autoreconfHook,
, expat curl,
, fetchFromGitHub expat,
, git fetchFromGitHub,
, json_c fetchpatch,
, libcap git,
, libmaxminddb json_c,
, libmysqlclient libcap,
, libpcap libmaxminddb,
, libsodium libmysqlclient,
, ndpi libpcap,
, net-snmp libsodium,
, openssl ndpi,
, pkg-config net-snmp,
, rdkafka openssl,
, gtest pkg-config,
, rrdtool rdkafka,
, hiredis gtest,
, sqlite rrdtool,
, which hiredis,
, zeromq sqlite,
which,
zeromq,
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
@ -36,6 +38,11 @@ stdenv.mkDerivation (finalAttrs: {
fetchSubmodules = true; fetchSubmodules = true;
}; };
patches = lib.optional (!lib.versionOlder rrdtool.version "1.9.0") (fetchpatch {
url = "https://github.com/ntop/ntopng/commit/5069aa4a6259bd0830a33f2ece980612dba5ace9.patch";
hash = "sha256-CnYzSE39J7pC2wHxp7Xst6g5pzQbpNUynJUVrTrtuOg=";
});
preConfigure = '' preConfigure = ''
substituteInPlace Makefile.in \ substituteInPlace Makefile.in \
--replace "/bin/rm" "rm" --replace "/bin/rm" "rm"

View File

@ -7968,7 +7968,7 @@ with pkgs;
wxGTK = wxGTK32; wxGTK = wxGTK32;
}; };
frescobaldi = python3Packages.callPackage ../misc/frescobaldi { }; frescobaldi = callPackage ../misc/frescobaldi { };
freshfetch = callPackage ../tools/misc/freshfetch { freshfetch = callPackage ../tools/misc/freshfetch {
inherit (darwin.apple_sdk.frameworks) AppKit CoreFoundation DiskArbitration Foundation IOKit; inherit (darwin.apple_sdk.frameworks) AppKit CoreFoundation DiskArbitration Foundation IOKit;
@ -12295,8 +12295,6 @@ with pkgs;
rpmextract = callPackage ../tools/archivers/rpmextract { }; rpmextract = callPackage ../tools/archivers/rpmextract { };
rrdtool = callPackage ../tools/misc/rrdtool { };
rscw = callPackage ../applications/radio/rscw { }; rscw = callPackage ../applications/radio/rscw { };
rset = callPackage ../tools/admin/rset { }; rset = callPackage ../tools/admin/rset { };

View File

@ -121,6 +121,8 @@ let
smpl = callPackage ../development/coq-modules/smpl { }; smpl = callPackage ../development/coq-modules/smpl { };
smtcoq = callPackage ../development/coq-modules/smtcoq { }; smtcoq = callPackage ../development/coq-modules/smtcoq { };
ssprove = callPackage ../development/coq-modules/ssprove {}; ssprove = callPackage ../development/coq-modules/ssprove {};
stalmarck-tactic = callPackage ../development/coq-modules/stalmarck {};
stalmarck = self.stalmarck-tactic.stalmarck;
stdpp = callPackage ../development/coq-modules/stdpp { }; stdpp = callPackage ../development/coq-modules/stdpp { };
StructTact = callPackage ../development/coq-modules/StructTact {}; StructTact = callPackage ../development/coq-modules/StructTact {};
tlc = callPackage ../development/coq-modules/tlc {}; tlc = callPackage ../development/coq-modules/tlc {};

View File

@ -10403,6 +10403,8 @@ self: super: with self; {
pytlv = callPackage ../development/python-modules/pytlv { }; pytlv = callPackage ../development/python-modules/pytlv { };
pywebcopy = callPackage ../development/python-modules/pywebcopy { };
python-codon-tables = callPackage ../development/python-modules/python-codon-tables { }; python-codon-tables = callPackage ../development/python-modules/python-codon-tables { };
python-creole = callPackage ../development/python-modules/python-creole { }; python-creole = callPackage ../development/python-modules/python-creole { };
@ -10415,6 +10417,8 @@ self: super: with self; {
python-ecobee-api = callPackage ../development/python-modules/python-ecobee-api { }; python-ecobee-api = callPackage ../development/python-modules/python-ecobee-api { };
python-escpos = callPackage ../development/python-modules/python-escpos { };
python-ffmpeg = callPackage ../development/python-modules/python-ffmpeg { }; python-ffmpeg = callPackage ../development/python-modules/python-ffmpeg { };
python-flirt = callPackage ../development/python-modules/python-flirt { }; python-flirt = callPackage ../development/python-modules/python-flirt { };
@ -12029,9 +12033,7 @@ self: super: with self; {
pyqtgraph = callPackage ../development/python-modules/pyqtgraph { }; pyqtgraph = callPackage ../development/python-modules/pyqtgraph { };
pyqtwebengine = pkgs.libsForQt5.callPackage ../development/python-modules/pyqtwebengine { pyqtwebengine = callPackage ../development/python-modules/pyqtwebengine { };
pythonPackages = self;
};
pyquery = callPackage ../development/python-modules/pyquery { }; pyquery = callPackage ../development/python-modules/pyquery { };
@ -13684,6 +13686,8 @@ self: super: with self; {
rich-theme-manager = callPackage ../development/python-modules/rich-theme-manager { }; rich-theme-manager = callPackage ../development/python-modules/rich-theme-manager { };
riden = callPackage ../development/python-modules/riden { };
ring-doorbell = callPackage ../development/python-modules/ring-doorbell { }; ring-doorbell = callPackage ../development/python-modules/ring-doorbell { };
rio-tiler = callPackage ../development/python-modules/rio-tiler { }; rio-tiler = callPackage ../development/python-modules/rio-tiler { };
@ -15810,7 +15814,7 @@ self: super: with self; {
tree-sitter = callPackage ../development/python-modules/tree-sitter { }; tree-sitter = callPackage ../development/python-modules/tree-sitter { };
tree-sitter0_21 = callPackage ../development/python-modules/tree-sitter0_21 { }; tree-sitter_0_21 = callPackage ../development/python-modules/tree-sitter/0_21.nix { };
tree-sitter-html = callPackage ../development/python-modules/tree-sitter-html { }; tree-sitter-html = callPackage ../development/python-modules/tree-sitter-html { };