Merge master into haskell-updates

main
github-actions[bot] 2 years ago committed by GitHub
commit 37e3234f74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      doc/languages-frameworks/python.section.md
  2. 13
      maintainers/maintainer-list.nix
  3. 6
      nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
  4. 2
      nixos/doc/manual/release-notes/rl-2205.section.md
  5. 2
      nixos/maintainers/scripts/lxd/lxd-image.nix
  6. 1
      nixos/modules/module-list.nix
  7. 9
      nixos/modules/services/home-automation/home-assistant.nix
  8. 2
      nixos/modules/services/misc/heisenbridge.nix
  9. 345
      nixos/modules/services/security/kanidm.nix
  10. 102
      nixos/modules/system/boot/plymouth.nix
  11. 6
      nixos/modules/system/boot/systemd/nspawn.nix
  12. 199
      nixos/modules/tasks/filesystems/zfs.nix
  13. 2
      nixos/tests/all-tests.nix
  14. 24
      nixos/tests/common/lxd/config.yaml
  15. 1
      nixos/tests/installed-tests/default.nix
  16. 9
      nixos/tests/installed-tests/power-profiles-daemon.nix
  17. 2
      nixos/tests/installer-systemd-stage-1.nix
  18. 75
      nixos/tests/kanidm.nix
  19. 63
      nixos/tests/lxd-image-server.nix
  20. 89
      nixos/tests/lxd-image.nix
  21. 134
      nixos/tests/lxd.nix
  22. 6
      pkgs/applications/editors/emacs/elisp-packages/ement/default.nix
  23. 7
      pkgs/applications/graphics/inkscape/default.nix
  24. 4
      pkgs/applications/misc/ausweisapp2/default.nix
  25. 9
      pkgs/applications/misc/mediainfo-gui/default.nix
  26. 7
      pkgs/applications/misc/swaynotificationcenter/default.nix
  27. 23
      pkgs/applications/misc/sweethome3d/default.nix
  28. 6
      pkgs/applications/networking/browsers/firefox/librewolf/src.json
  29. 12
      pkgs/applications/networking/browsers/microsoft-edge/default.nix
  30. 4
      pkgs/applications/networking/instant-messengers/psi-plus/default.nix
  31. 7
      pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix
  32. 4
      pkgs/applications/networking/mailreaders/neomutt/default.nix
  33. 10
      pkgs/applications/networking/n8n/default.nix
  34. 2
      pkgs/applications/networking/n8n/generate-dependencies.sh
  35. 4
      pkgs/applications/networking/n8n/node-composition.nix
  36. 32
      pkgs/applications/networking/n8n/node-env.nix
  37. 118
      pkgs/applications/networking/n8n/node-packages.nix
  38. 4
      pkgs/applications/networking/newsreaders/liferea/default.nix
  39. 3
      pkgs/applications/office/libreoffice/default.nix
  40. 100
      pkgs/applications/office/libreoffice/poppler-22-04-0.patch
  41. 4
      pkgs/applications/office/portfolio/default.nix
  42. 4
      pkgs/applications/office/qownnotes/default.nix
  43. 5
      pkgs/applications/office/scribus/unstable.nix
  44. 6
      pkgs/applications/office/timeular/default.nix
  45. 4
      pkgs/applications/science/electronics/verilator/default.nix
  46. 8
      pkgs/applications/version-management/got/default.nix
  47. 7
      pkgs/applications/version-management/meld/default.nix
  48. 48
      pkgs/applications/version-management/p4v/default.nix
  49. 3
      pkgs/build-support/rust/build-rust-crate/default.nix
  50. 2
      pkgs/desktops/plasma-5/fetch.sh
  51. 424
      pkgs/desktops/plasma-5/srcs.nix
  52. 8
      pkgs/development/compilers/hip/default.nix
  53. 29
      pkgs/development/compilers/intel-graphics-compiler/default.nix
  54. 10
      pkgs/development/compilers/llvm/rocm/default.nix
  55. 7
      pkgs/development/compilers/llvm/rocm/lld.nix
  56. 2
      pkgs/development/compilers/llvm/rocm/llvm/default.nix
  57. 6
      pkgs/development/compilers/open-watcom/v2.nix
  58. 21
      pkgs/development/compilers/spirv-llvm-translator/default.nix
  59. 64
      pkgs/development/libraries/libffi/3.3.nix
  60. 20
      pkgs/development/libraries/libgit2/default.nix
  61. 17
      pkgs/development/libraries/libmediainfo/default.nix
  62. 18
      pkgs/development/libraries/libwebsockets/default.nix
  63. 21
      pkgs/development/libraries/lmdb/bin-ext.patch
  64. 9
      pkgs/development/libraries/lmdb/default.nix
  65. 9
      pkgs/development/libraries/lucene++/default.nix
  66. 6
      pkgs/development/libraries/opencl-clang/default.nix
  67. 4
      pkgs/development/libraries/poppler/default.nix
  68. 6
      pkgs/development/libraries/presage/default.nix
  69. 11
      pkgs/development/libraries/rocclr/default.nix
  70. 5
      pkgs/development/libraries/rocm-opencl-runtime/default.nix
  71. 4
      pkgs/development/libraries/rocm-runtime/default.nix
  72. 25
      pkgs/development/libraries/umockdev/default.nix
  73. 69
      pkgs/development/libraries/umockdev/hardcode-paths.patch
  74. 4
      pkgs/development/libraries/wolfssl/default.nix
  75. 4
      pkgs/development/python-modules/aioairzone/default.nix
  76. 65
      pkgs/development/python-modules/aiolimiter/default.nix
  77. 9
      pkgs/development/python-modules/aioslimproto/default.nix
  78. 4
      pkgs/development/python-modules/androidtv/default.nix
  79. 5
      pkgs/development/python-modules/ansible/default.nix
  80. 4
      pkgs/development/python-modules/async-upnp-client/default.nix
  81. 2
      pkgs/development/python-modules/awkward/default.nix
  82. 15
      pkgs/development/python-modules/azure-mgmt-msi/default.nix
  83. 4
      pkgs/development/python-modules/azure-mgmt-resource/default.nix
  84. 19
      pkgs/development/python-modules/backports-zoneinfo/default.nix
  85. 4
      pkgs/development/python-modules/bond-api/default.nix
  86. 4
      pkgs/development/python-modules/databricks-connect/default.nix
  87. 46
      pkgs/development/python-modules/gcal-sync/default.nix
  88. 4
      pkgs/development/python-modules/globus-sdk/default.nix
  89. 4
      pkgs/development/python-modules/impacket/default.nix
  90. 26
      pkgs/development/python-modules/insteon-frontend-home-assistant/default.nix
  91. 7
      pkgs/development/python-modules/intbitset/default.nix
  92. 26
      pkgs/development/python-modules/ipywidgets/default.nix
  93. 37
      pkgs/development/python-modules/meater-python/default.nix
  94. 36
      pkgs/development/python-modules/nbclient/default.nix
  95. 4
      pkgs/development/python-modules/nettigo-air-monitor/default.nix
  96. 34
      pkgs/development/python-modules/notify-events/default.nix
  97. 24
      pkgs/development/python-modules/paramiko/default.nix
  98. 20
      pkgs/development/python-modules/plugwise/default.nix
  99. 25
      pkgs/development/python-modules/pyahocorasick/default.nix
  100. 4
      pkgs/development/python-modules/pychromecast/default.nix
  101. Some files were not shown because too many files have changed in this diff Show More

@ -288,7 +288,7 @@ self: super: {
ps: with ps; [ ps: with ps; [
pyflakes pyflakes
pytest pytest
python-language-server black
] ]
)) ))

@ -972,6 +972,12 @@
githubId = 1118815; githubId = 1118815;
name = "Vikram Narayanan"; name = "Vikram Narayanan";
}; };
armeenm = {
email = "mahdianarmeen@gmail.com";
github = "armeenm";
githubId = 29145250;
name = "Armeen Mahdian";
};
armijnhemel = { armijnhemel = {
email = "armijn@tjaldur.nl"; email = "armijn@tjaldur.nl";
github = "armijnhemel"; github = "armijnhemel";
@ -13976,6 +13982,13 @@
githubId = 6191421; githubId = 6191421;
name = "Edward d'Albon"; name = "Edward d'Albon";
}; };
zebreus = {
matrix = "@lennart:cicen.net";
email = "lennarteichhorn+nixpkgs@gmail.com";
github = "Zebreus";
githubId = 1557253;
name = "Lennart Eichhorn";
};
zef = { zef = {
email = "zef@zef.me"; email = "zef@zef.me";
name = "Zef Hemel"; name = "Zef Hemel";

@ -455,6 +455,12 @@
<link xlink:href="options.html#opt-services.nifi.enable">services.nifi</link>. <link xlink:href="options.html#opt-services.nifi.enable">services.nifi</link>.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
<link xlink:href="https://kanidm.github.io/kanidm/stable/">kanidm</link>,
an identity management server written in Rust.
</para>
</listitem>
</itemizedlist> </itemizedlist>
</section> </section>
<section xml:id="sec-release-22.05-incompatibilities"> <section xml:id="sec-release-22.05-incompatibilities">

@ -135,6 +135,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [nifi](https://nifi.apache.org), an easy to use, powerful, and reliable system to process and distribute data. Available as [services.nifi](options.html#opt-services.nifi.enable). - [nifi](https://nifi.apache.org), an easy to use, powerful, and reliable system to process and distribute data. Available as [services.nifi](options.html#opt-services.nifi.enable).
- [kanidm](https://kanidm.github.io/kanidm/stable/), an identity management server written in Rust.
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. --> <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
## Backward Incompatibilities {#sec-release-22.05-incompatibilities} ## Backward Incompatibilities {#sec-release-22.05-incompatibilities}

@ -27,7 +27,7 @@ with lib;
networking.useDHCP = false; networking.useDHCP = false;
networking.interfaces.eth0.useDHCP = true; networking.interfaces.eth0.useDHCP = true;
# As this is intended as a stadalone image, undo some of the minimal profile stuff # As this is intended as a standalone image, undo some of the minimal profile stuff
documentation.enable = true; documentation.enable = true;
documentation.nixos.enable = true; documentation.nixos.enable = true;
environment.noXlibs = false; environment.noXlibs = false;

@ -975,6 +975,7 @@
./services/security/hockeypuck.nix ./services/security/hockeypuck.nix
./services/security/hologram-server.nix ./services/security/hologram-server.nix
./services/security/hologram-agent.nix ./services/security/hologram-agent.nix
./services/security/kanidm.nix
./services/security/munge.nix ./services/security/munge.nix
./services/security/nginx-sso.nix ./services/security/nginx-sso.nix
./services/security/oauth2_proxy.nix ./services/security/oauth2_proxy.nix

@ -360,7 +360,14 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ]; assertions = [
{
assertion = cfg.openFirewall -> !isNull cfg.config;
message = "openFirewall can only be used with a declarative config";
}
];
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.config.http.server_port ];
systemd.services.home-assistant = { systemd.services.home-assistant = {
description = "Home Assistant"; description = "Home Assistant";

@ -204,7 +204,7 @@ in
NoNewPrivileges = true; NoNewPrivileges = true;
LockPersonality = true; LockPersonality = true;
RestrictRealtime = true; RestrictRealtime = true;
SystemCallFilter = ["@system-service" "~@priviledged" "@chown"]; SystemCallFilter = ["@system-service" "~@privileged" "@chown"];
SystemCallArchitectures = "native"; SystemCallArchitectures = "native";
RestrictAddressFamilies = "AF_INET AF_INET6"; RestrictAddressFamilies = "AF_INET AF_INET6";
}; };

@ -0,0 +1,345 @@
{ config, lib, options, pkgs, ... }:
let
cfg = config.services.kanidm;
settingsFormat = pkgs.formats.toml { };
# Remove null values, so we can document optional values that don't end up in the generated TOML file.
filterConfig = lib.converge (lib.filterAttrsRecursive (_: v: v != null));
serverConfigFile = settingsFormat.generate "server.toml" (filterConfig cfg.serverSettings);
clientConfigFile = settingsFormat.generate "kanidm-config.toml" (filterConfig cfg.clientSettings);
unixConfigFile = settingsFormat.generate "kanidm-unixd.toml" (filterConfig cfg.unixSettings);
defaultServiceConfig = {
BindReadOnlyPaths = [
"/nix/store"
"-/etc/resolv.conf"
"-/etc/nsswitch.conf"
"-/etc/hosts"
"-/etc/localtime"
];
CapabilityBoundingSet = "";
# ProtectClock= adds DeviceAllow=char-rtc r
DeviceAllow = "";
# Implies ProtectSystem=strict, which re-mounts all paths
# DynamicUser = true;
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateMounts = true;
PrivateNetwork = true;
PrivateTmp = true;
PrivateUsers = true;
ProcSubset = "pid";
ProtectClock = true;
ProtectHome = true;
ProtectHostname = true;
# Would re-mount paths ignored by temporary root
#ProtectSystem = "strict";
ProtectControlGroups = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
RestrictAddressFamilies = [ ];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [ "@system-service" "~@privileged @resources @setuid @keyring" ];
# Does not work well with the temporary root
#UMask = "0066";
};
in
{
options.services.kanidm = {
enableClient = lib.mkEnableOption "the Kanidm client";
enableServer = lib.mkEnableOption "the Kanidm server";
enablePam = lib.mkEnableOption "the Kanidm PAM and NSS integration.";
serverSettings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
options = {
bindaddress = lib.mkOption {
description = "Address/port combination the webserver binds to.";
example = "[::1]:8443";
type = lib.types.str;
};
# Should be optional but toml does not accept null
ldapbindaddress = lib.mkOption {
description = ''
Address and port the LDAP server is bound to. Setting this to <literal>null</literal> disables the LDAP interface.
'';
example = "[::1]:636";
default = null;
type = lib.types.nullOr lib.types.str;
};
origin = lib.mkOption {
description = "The origin of your Kanidm instance. Must have https as protocol.";
example = "https://idm.example.org";
type = lib.types.strMatching "^https://.*";
};
domain = lib.mkOption {
description = ''
The <literal>domain</literal> that Kanidm manages. Must be below or equal to the domain
specified in <literal>serverSettings.origin</literal>.
This can be left at <literal>null</literal>, only if your instance has the role <literal>ReadOnlyReplica</literal>.
While it is possible to change the domain later on, it requires extra steps!
Please consider the warnings and execute the steps described
<link xlink:href="https://kanidm.github.io/kanidm/stable/administrivia.html#rename-the-domain">in the documentation</link>.
'';
example = "example.org";
default = null;
type = lib.types.nullOr lib.types.str;
};
db_path = lib.mkOption {
description = "Path to Kanidm database.";
default = "/var/lib/kanidm/kanidm.db";
readOnly = true;
type = lib.types.path;
};
log_level = lib.mkOption {
description = "Log level of the server.";
default = "default";
type = lib.types.enum [ "default" "verbose" "perfbasic" "perffull" ];
};
role = lib.mkOption {
description = "The role of this server. This affects the replication relationship and thereby available features.";
default = "WriteReplica";
type = lib.types.enum [ "WriteReplica" "WriteReplicaNoUI" "ReadOnlyReplica" ];
};
};
};
default = { };
description = ''
Settings for Kanidm, see
<link xlink:href="https://github.com/kanidm/kanidm/blob/master/kanidm_book/src/server_configuration.md">the documentation</link>
and <link xlink:href="https://github.com/kanidm/kanidm/blob/master/examples/server.toml">example configuration</link>
for possible values.
'';
};
clientSettings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
options.uri = lib.mkOption {
description = "Address of the Kanidm server.";
example = "http://127.0.0.1:8080";
type = lib.types.str;
};
};
description = ''
Configure Kanidm clients, needed for the PAM daemon. See
<link xlink:href="https://github.com/kanidm/kanidm/blob/master/kanidm_book/src/client_tools.md#kanidm-configuration">the documentation</link>
and <link xlink:href="https://github.com/kanidm/kanidm/blob/master/examples/config">example configuration</link>
for possible values.
'';
};
unixSettings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
options.pam_allowed_login_groups = lib.mkOption {
description = "Kanidm groups that are allowed to login using PAM.";
example = "my_pam_group";
type = lib.types.listOf lib.types.str;
};
};
description = ''
Configure Kanidm unix daemon.
See <link xlink:href="https://github.com/kanidm/kanidm/blob/master/kanidm_book/src/pam_and_nsswitch.md#the-unix-daemon">the documentation</link>
and <link xlink:href="https://github.com/kanidm/kanidm/blob/master/examples/unixd">example configuration</link>
for possible values.
'';
};
};
config = lib.mkIf (cfg.enableClient || cfg.enableServer || cfg.enablePam) {
assertions =
[
{
assertion = !cfg.enableServer || ((cfg.serverSettings.tls_chain or null) == null) || (!lib.isStorePath cfg.serverSettings.tls_chain);
message = ''
<option>services.kanidm.serverSettings.tls_chain</option> points to
a file in the Nix store. You should use a quoted absolute path to
prevent this.
'';
}
{
assertion = !cfg.enableServer || ((cfg.serverSettings.tls_key or null) == null) || (!lib.isStorePath cfg.serverSettings.tls_key);
message = ''
<option>services.kanidm.serverSettings.tls_key</option> points to
a file in the Nix store. You should use a quoted absolute path to
prevent this.
'';
}
{
assertion = !cfg.enableClient || options.services.kanidm.clientSettings.isDefined;
message = ''
<option>services.kanidm.clientSettings</option> needs to be configured
if the client is enabled.
'';
}
{
assertion = !cfg.enablePam || options.services.kanidm.clientSettings.isDefined;
message = ''
<option>services.kanidm.clientSettings</option> needs to be configured
for the PAM daemon to connect to the Kanidm server.
'';
}
{
assertion = !cfg.enableServer || (cfg.serverSettings.domain == null
-> cfg.serverSettings.role == "WriteReplica" || cfg.serverSettings.role == "WriteReplicaNoUI");
message = ''
<option>services.kanidm.serverSettings.domain</option> can only be set if this instance
is not a ReadOnlyReplica. Otherwise the db would inherit it from
the instance it follows.
'';
}
];
environment.systemPackages = lib.mkIf cfg.enableClient [ pkgs.kanidm ];
systemd.services.kanidm = lib.mkIf cfg.enableServer {
description = "kanidm identity management daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = defaultServiceConfig // {
StateDirectory = "kanidm";
StateDirectoryMode = "0700";
ExecStart = "${pkgs.kanidm}/bin/kanidmd server -c ${serverConfigFile}";
User = "kanidm";
Group = "kanidm";
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
# This would otherwise override the CAP_NET_BIND_SERVICE capability.
PrivateUsers = false;
# Port needs to be exposed to the host network
PrivateNetwork = false;
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
TemporaryFileSystem = "/:ro";
};
environment.RUST_LOG = "info";
};
systemd.services.kanidm-unixd = lib.mkIf cfg.enablePam {
description = "Kanidm PAM daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
restartTriggers = [ unixConfigFile clientConfigFile ];
serviceConfig = defaultServiceConfig // {
CacheDirectory = "kanidm-unixd";
CacheDirectoryMode = "0700";
RuntimeDirectory = "kanidm-unixd";
ExecStart = "${pkgs.kanidm}/bin/kanidm_unixd";
User = "kanidm-unixd";
Group = "kanidm-unixd";
BindReadOnlyPaths = [
"/nix/store"
"-/etc/resolv.conf"
"-/etc/nsswitch.conf"
"-/etc/hosts"
"-/etc/localtime"
"-/etc/kanidm"
"-/etc/static/kanidm"
];
BindPaths = [
# To create the socket
"/run/kanidm-unixd:/var/run/kanidm-unixd"
];
# Needs to connect to kanidmd
PrivateNetwork = false;
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" ];
TemporaryFileSystem = "/:ro";
};
environment.RUST_LOG = "info";
};
systemd.services.kanidm-unixd-tasks = lib.mkIf cfg.enablePam {
description = "Kanidm PAM home management daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "kanidm-unixd.service" ];
partOf = [ "kanidm-unixd.service" ];
restartTriggers = [ unixConfigFile clientConfigFile ];
serviceConfig = {
ExecStart = "${pkgs.kanidm}/bin/kanidm_unixd_tasks";
BindReadOnlyPaths = [
"/nix/store"
"-/etc/resolv.conf"
"-/etc/nsswitch.conf"
"-/etc/hosts"
"-/etc/localtime"
"-/etc/kanidm"
"-/etc/static/kanidm"
];
BindPaths = [
# To manage home directories
"/home"
# To connect to kanidm-unixd
"/run/kanidm-unixd:/var/run/kanidm-unixd"
];
# CAP_DAC_OVERRIDE is needed to ignore ownership of unixd socket
CapabilityBoundingSet = [ "CAP_CHOWN" "CAP_FOWNER" "CAP_DAC_OVERRIDE" "CAP_DAC_READ_SEARCH" ];
IPAddressDeny = "any";
# Need access to users
PrivateUsers = false;
# Need access to home directories
ProtectHome = false;
RestrictAddressFamilies = [ "AF_UNIX" ];
TemporaryFileSystem = "/:ro";
};
environment.RUST_LOG = "info";
};
# These paths are hardcoded
environment.etc = lib.mkMerge [
(lib.mkIf options.services.kanidm.clientSettings.isDefined {
"kanidm/config".source = clientConfigFile;
})
(lib.mkIf cfg.enablePam {
"kanidm/unixd".source = unixConfigFile;
})
];
system.nssModules = lib.mkIf cfg.enablePam [ pkgs.kanidm ];
system.nssDatabases.group = lib.optional cfg.enablePam "kanidm";
system.nssDatabases.passwd = lib.optional cfg.enablePam "kanidm";
users.groups = lib.mkMerge [
(lib.mkIf cfg.enableServer {
kanidm = { };
})
(lib.mkIf cfg.enablePam {
kanidm-unixd = { };
})
];
users.users = lib.mkMerge [
(lib.mkIf cfg.enableServer {
kanidm = {
description = "Kanidm server";
isSystemUser = true;
group = "kanidm";
packages = with pkgs; [ kanidm ];
};
})
(lib.mkIf cfg.enablePam {
kanidm-unixd = {
description = "Kanidm PAM daemon";
isSystemUser = true;
group = "kanidm-unixd";
};
})
];
};
meta.maintainers = with lib.maintainers; [ erictapen Flakebi ];
meta.buildDocsInSandbox = false;
}

@ -4,7 +4,10 @@ with lib;
let let
inherit (pkgs) plymouth nixos-icons; inherit (pkgs) nixos-icons;
plymouth = pkgs.plymouth.override {
systemd = config.boot.initrd.systemd.package;
};
cfg = config.boot.plymouth; cfg = config.boot.plymouth;
opt = options.boot.plymouth; opt = options.boot.plymouth;
@ -143,7 +146,88 @@ in
systemd.services.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ]; systemd.services.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ];
systemd.paths.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ]; systemd.paths.systemd-ask-password-plymouth.wantedBy = [ "multi-user.target" ];
boot.initrd.extraUtilsCommands = '' boot.initrd.systemd = {
extraBin.plymouth = "${plymouth}/bin/plymouth"; # for the recovery shell
storePaths = [
"${lib.getBin config.boot.initrd.systemd.package}/bin/systemd-tty-ask-password-agent"
"${plymouth}/bin/plymouthd"
"${plymouth}/sbin/plymouthd"
];
packages = [ plymouth ]; # systemd units
contents = {
# Files
"/etc/plymouth/plymouthd.conf".source = configFile;
"/etc/plymouth/plymouthd.defaults".source = "${plymouth}/share/plymouth/plymouthd.defaults";
"/etc/plymouth/logo.png".source = cfg.logo;
# Directories
"/etc/plymouth/plugins".source = pkgs.runCommand "plymouth-initrd-plugins" {} ''
# Check if the actual requested theme is here
if [[ ! -d ${themesEnv}/share/plymouth/themes/${cfg.theme} ]]; then
echo "The requested theme: ${cfg.theme} is not provided by any of the packages in boot.plymouth.themePackages"
exit 1
fi
moduleName="$(sed -n 's,ModuleName *= *,,p' ${themesEnv}/share/plymouth/themes/${cfg.theme}/${cfg.theme}.plymouth)"
mkdir -p $out/renderers
# module might come from a theme
cp ${themesEnv}/lib/plymouth/{text,details,label,$moduleName}.so $out
cp ${plymouth}/lib/plymouth/renderers/{drm,frame-buffer}.so $out/renderers
'';
"/etc/plymouth/themes".source = pkgs.runCommand "plymouth-initrd-themes" {} ''
# Check if the actual requested theme is here
if [[ ! -d ${themesEnv}/share/plymouth/themes/${cfg.theme} ]]; then
echo "The requested theme: ${cfg.theme} is not provided by any of the packages in boot.plymouth.themePackages"
exit 1
fi
mkdir $out
cp -r ${themesEnv}/share/plymouth/themes/${cfg.theme} $out
# Copy more themes if the theme depends on others
for theme in $(grep -hRo '/etc/plymouth/themes/.*$' ${themesEnv} | xargs -n1 basename); do
if [[ -d "${themesEnv}/theme" ]]; then
cp -r "${themesEnv}/theme" $out
fi
done
'';
# Fonts
"/etc/plymouth/fonts".source = pkgs.runCommand "plymouth-initrd-fonts" {} ''
mkdir -p $out
cp ${cfg.font} $out
'';
"/etc/fonts/fonts.conf".text = ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<dir>/etc/plymouth/fonts</dir>
</fontconfig>
'';
};
# Properly enable units. These are the units that arch copies
services = {
plymouth-halt.wantedBy = [ "halt.target" ];
plymouth-kexec.wantedBy = [ "kexec.target" ];
plymouth-poweroff.wantedBy = [ "poweroff.target" ];
plymouth-quit-wait.wantedBy = [ "multi-user.target" ];
plymouth-quit.wantedBy = [ "multi-user.target" ];
plymouth-read-write.wantedBy = [ "sysinit.target" ];
plymouth-reboot.wantedBy = [ "reboot.target" ];
plymouth-start.wantedBy = [ "initrd-switch-root.target" "sysinit.target" ];
plymouth-switch-root-initramfs.wantedBy = [ "halt.target" "kexec.target" "plymouth-switch-root-initramfs.service" "poweroff.target" "reboot.target" ];
plymouth-switch-root.wantedBy = [ "initrd-switch-root.target" ];
};
};
# Insert required udev rules. We take stage 2 systemd because the udev
# rules are only generated when building with logind.
boot.initrd.services.udev.packages = [ (pkgs.runCommand "initrd-plymouth-udev-rules" {} ''
mkdir -p $out/etc/udev/rules.d
cp ${config.systemd.package.out}/lib/udev/rules.d/{70-uaccess,71-seat}.rules $out/etc/udev/rules.d
sed -i '/loginctl/d' $out/etc/udev/rules.d/71-seat.rules
'') ];
boot.initrd.extraUtilsCommands = lib.mkIf (!config.boot.initrd.systemd.enable) ''
copy_bin_and_libs ${plymouth}/bin/plymouth copy_bin_and_libs ${plymouth}/bin/plymouth
copy_bin_and_libs ${plymouth}/bin/plymouthd copy_bin_and_libs ${plymouth}/bin/plymouthd
@ -198,18 +282,18 @@ in
EOF EOF
''; '';
boot.initrd.extraUtilsCommandsTest = '' boot.initrd.extraUtilsCommandsTest = mkIf (!config.boot.initrd.enable) ''
$out/bin/plymouthd --help >/dev/null $out/bin/plymouthd --help >/dev/null
$out/bin/plymouth --help >/dev/null $out/bin/plymouth --help >/dev/null
''; '';
boot.initrd.extraUdevRulesCommands = '' boot.initrd.extraUdevRulesCommands = mkIf (!config.boot.initrd.enable) ''
cp ${config.systemd.package}/lib/udev/rules.d/{70-uaccess,71-seat}.rules $out cp ${config.systemd.package}/lib/udev/rules.d/{70-uaccess,71-seat}.rules $out
sed -i '/loginctl/d' $out/71-seat.rules sed -i '/loginctl/d' $out/71-seat.rules
''; '';
# We use `mkAfter` to ensure that LUKS password prompt would be shown earlier than the splash screen. # We use `mkAfter` to ensure that LUKS password prompt would be shown earlier than the splash screen.
boot.initrd.preLVMCommands = mkAfter '' boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.enable) (mkAfter ''
mkdir -p /etc/plymouth mkdir -p /etc/plymouth
mkdir -p /run/plymouth mkdir -p /run/plymouth
ln -s ${configFile} /etc/plymouth/plymouthd.conf ln -s ${configFile} /etc/plymouth/plymouthd.conf
@ -221,16 +305,16 @@ in
plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
plymouth show-splash plymouth show-splash
''; '');
boot.initrd.postMountCommands = '' boot.initrd.postMountCommands = mkIf (!config.boot.initrd.enable) ''
plymouth update-root-fs --new-root-dir="$targetRoot" plymouth update-root-fs --new-root-dir="$targetRoot"
''; '';
# `mkBefore` to ensure that any custom prompts would be visible. # `mkBefore` to ensure that any custom prompts would be visible.
boot.initrd.preFailCommands = mkBefore '' boot.initrd.preFailCommands = mkIf (!config.boot.initrd.enable) (mkBefore ''
plymouth quit --wait plymouth quit --wait
''; '');
}; };

@ -16,7 +16,7 @@ let
"LimitNOFILE" "LimitAS" "LimitNPROC" "LimitMEMLOCK" "LimitLOCKS" "LimitNOFILE" "LimitAS" "LimitNPROC" "LimitMEMLOCK" "LimitLOCKS"
"LimitSIGPENDING" "LimitMSGQUEUE" "LimitNICE" "LimitRTPRIO" "LimitRTTIME" "LimitSIGPENDING" "LimitMSGQUEUE" "LimitNICE" "LimitRTPRIO" "LimitRTTIME"
"OOMScoreAdjust" "CPUAffinity" "Hostname" "ResolvConf" "Timezone" "OOMScoreAdjust" "CPUAffinity" "Hostname" "ResolvConf" "Timezone"
"LinkJournal" "LinkJournal" "Ephemeral" "AmbientCapability"
]) ])
(assertValueOneOf "Boot" boolValues) (assertValueOneOf "Boot" boolValues)
(assertValueOneOf "ProcessTwo" boolValues) (assertValueOneOf "ProcessTwo" boolValues)
@ -26,11 +26,13 @@ let
checkFiles = checkUnitConfig "Files" [ checkFiles = checkUnitConfig "Files" [
(assertOnlyFields [ (assertOnlyFields [
"ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystem" "ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystem"
"Overlay" "OverlayReadOnly" "PrivateUsersChown" "Overlay" "OverlayReadOnly" "PrivateUsersChown" "BindUser"
"Inaccessible" "PrivateUserOwnership"
]) ])
(assertValueOneOf "ReadOnly" boolValues) (assertValueOneOf "ReadOnly" boolValues)
(assertValueOneOf "Volatile" (boolValues ++ [ "state" ])) (assertValueOneOf "Volatile" (boolValues ++ [ "state" ]))
(assertValueOneOf "PrivateUsersChown" boolValues) (assertValueOneOf "PrivateUsersChown" boolValues)
(assertValueOneOf "PrivateUserOwnership" [ "off" "chown" "map" "auto" ])
]; ];
checkNetwork = checkUnitConfig "Network" [ checkNetwork = checkUnitConfig "Network" [

@ -58,6 +58,13 @@ let
# latter case it makes one last attempt at importing, allowing the system to # latter case it makes one last attempt at importing, allowing the system to
# (eventually) boot even with a degraded pool. # (eventually) boot even with a degraded pool.
importLib = {zpoolCmd, awkCmd, cfgZfs}: '' importLib = {zpoolCmd, awkCmd, cfgZfs}: ''
for o in $(cat /proc/cmdline); do
case $o in
zfs_force|zfs_force=1|zfs_force=y)
ZFS_FORCE="-f"
;;
esac
done
poolReady() { poolReady() {
pool="$1" pool="$1"
state="$("${zpoolCmd}" import 2>/dev/null | "${awkCmd}" "/pool: $pool/ { found = 1 }; /state:/ { if (found == 1) { print \$2; exit } }; END { if (found == 0) { print \"MISSING\" } }")" state="$("${zpoolCmd}" import 2>/dev/null | "${awkCmd}" "/pool: $pool/ { found = 1 }; /state:/ { if (found == 1) { print \$2; exit } }; END { if (found == 0) { print \"MISSING\" } }")"
@ -78,6 +85,95 @@ let
} }
''; '';
getPoolFilesystems = pool:
filter (x: x.fsType == "zfs" && (fsToPool x) == pool) config.system.build.fileSystems;
getPoolMounts = prefix: pool:
let
# Remove the "/" suffix because even though most mountpoints
# won't have it, the "/" mountpoint will, and we can't have the
# trailing slash in "/sysroot/" in stage 1.
mountPoint = fs: escapeSystemdPath (prefix + (lib.removeSuffix "/" fs.mountPoint));
in
map (x: "${mountPoint x}.mount") (getPoolFilesystems pool);
getKeyLocations = pool:
if isBool cfgZfs.requestEncryptionCredentials
then "${cfgZfs.package}/sbin/zfs list -rHo name,keylocation,keystatus ${pool}"
else "${cfgZfs.package}/sbin/zfs list -Ho name,keylocation,keystatus ${toString (filter (x: datasetToPool x == pool) cfgZfs.requestEncryptionCredentials)}";
createImportService = { pool, systemd, force, prefix ? "" }:
nameValuePair "zfs-import-${pool}" {
description = "Import ZFS pool \"${pool}\"";
# we need systemd-udev-settle to ensure devices are available
# In the future, hopefully someone will complete this:
# https://github.com/zfsonlinux/zfs/pull/4943
requires = [ "systemd-udev-settle.service" ];
after = [
"systemd-udev-settle.service"
"systemd-modules-load.service"
"systemd-ask-password-console.service"
];
wantedBy = (getPoolMounts prefix pool) ++ [ "local-fs.target" ];
before = (getPoolMounts prefix pool) ++ [ "local-fs.target" ];
unitConfig = {
DefaultDependencies = "no";
};
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
environment.ZFS_FORCE = optionalString force "-f";
script = (importLib {
# See comments at importLib definition.
zpoolCmd = "${cfgZfs.package}/sbin/zpool";
awkCmd = "${pkgs.gawk}/bin/awk";
inherit cfgZfs;
}) + ''
poolImported "${pool}" && exit
echo -n "importing ZFS pool \"${pool}\"..."
# Loop across the import until it succeeds, because the devices needed may not be discovered yet.
for trial in `seq 1 60`; do
poolReady "${pool}" && poolImport "${pool}" && break
sleep 1
done
poolImported "${pool}" || poolImport "${pool}" # Try one last time, e.g. to import a degraded pool.
if poolImported "${pool}"; then
${optionalString (if isBool cfgZfs.requestEncryptionCredentials
then cfgZfs.requestEncryptionCredentials
else cfgZfs.requestEncryptionCredentials != []) ''
${getKeyLocations pool} | while IFS=$'\t' read ds kl ks; do
{
if [[ "$ks" != unavailable ]]; then
continue
fi
case "$kl" in
none )
;;
prompt )
tries=3
success=false
while [[ $success != true ]] && [[ $tries -gt 0 ]]; do
${systemd}/bin/systemd-ask-password "Enter key for $ds:" | ${cfgZfs.package}/sbin/zfs load-key "$ds" \
&& success=true \
|| tries=$((tries - 1))
done
[[ $success = true ]]
;;
* )
${cfgZfs.package}/sbin/zfs load-key "$ds"
;;
esac
} < /dev/null # To protect while read ds kl in case anything reads stdin
done
''}
echo "Successfully imported ${pool}"
else
exit 1
fi
'';
};
zedConf = generators.toKeyValue { zedConf = generators.toKeyValue {
mkKeyValue = generators.mkKeyValueDefault { mkKeyValue = generators.mkKeyValueDefault {
mkValueString = v: mkValueString = v:
@ -428,14 +524,6 @@ in
''; '';
postDeviceCommands = concatStringsSep "\n" (['' postDeviceCommands = concatStringsSep "\n" ([''
ZFS_FORCE="${optionalString cfgZfs.forceImportRoot "-f"}" ZFS_FORCE="${optionalString cfgZfs.forceImportRoot "-f"}"
for o in $(cat /proc/cmdline); do
case $o in
zfs_force|zfs_force=1)
ZFS_FORCE="-f"
;;
esac
done
''] ++ [(importLib { ''] ++ [(importLib {
# See comments at importLib definition. # See comments at importLib definition.
zpoolCmd = "zpool"; zpoolCmd = "zpool";
@ -464,6 +552,21 @@ in
zfs load-key ${fs} zfs load-key ${fs}
'') cfgZfs.requestEncryptionCredentials} '') cfgZfs.requestEncryptionCredentials}
'') rootPools)); '') rootPools));
# Systemd in stage 1
systemd = {
packages = [cfgZfs.package];
services = listToAttrs (map (pool: createImportService {
inherit pool;
systemd = config.boot.initrd.systemd.package;
force = cfgZfs.forceImportRoot;
prefix = "/sysroot";
}) rootPools);
extraBin = {
# zpool and zfs are already in thanks to fsPackages
awk = "${pkgs.gawk}/bin/awk";
};
};
}; };
systemd.shutdownRamfs.contents."/etc/systemd/system-shutdown/zpool".source = pkgs.writeShellScript "zpool-sync-shutdown" '' systemd.shutdownRamfs.contents."/etc/systemd/system-shutdown/zpool".source = pkgs.writeShellScript "zpool-sync-shutdown" ''
@ -521,79 +624,11 @@ in
systemd.packages = [ cfgZfs.package ]; systemd.packages = [ cfgZfs.package ];
systemd.services = let systemd.services = let
getPoolFilesystems = pool: createImportService' = pool: createImportService {
filter (x: x.fsType == "zfs" && (fsToPool x) == pool) config.system.build.fileSystems; inherit pool;
systemd = config.systemd.package;
getPoolMounts = pool: force = cfgZfs.forceImportAll;
let };
mountPoint = fs: escapeSystemdPath fs.mountPoint;
in
map (x: "${mountPoint x}.mount") (getPoolFilesystems pool);
createImportService = pool:
nameValuePair "zfs-import-${pool}" {
description = "Import ZFS pool \"${pool}\"";
# we need systemd-udev-settle until https://github.com/zfsonlinux/zfs/pull/4943 is merged
requires = [ "systemd-udev-settle.service" ];
after = [
"systemd-udev-settle.service"
"systemd-modules-load.service"
"systemd-ask-password-console.service"
];
wantedBy = (getPoolMounts pool) ++ [ "local-fs.target" ];
before = (getPoolMounts pool) ++ [ "local-fs.target" ];
unitConfig = {
DefaultDependencies = "no";
};
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
environment.ZFS_FORCE = optionalString cfgZfs.forceImportAll "-f";
script = (importLib {
# See comments at importLib definition.
zpoolCmd = "${cfgZfs.package}/sbin/zpool";
awkCmd = "${pkgs.gawk}/bin/awk";
inherit cfgZfs;
}) + ''
poolImported "${pool}" && exit
echo -n "importing ZFS pool \"${pool}\"..."
# Loop across the import until it succeeds, because the devices needed may not be discovered yet.
for trial in `seq 1 60`; do
poolReady "${pool}" && poolImport "${pool}" && break
sleep 1
done
poolImported "${pool}" || poolImport "${pool}" # Try one last time, e.g. to import a degraded pool.
if poolImported "${pool}"; then
${optionalString (if isBool cfgZfs.requestEncryptionCredentials
then cfgZfs.requestEncryptionCredentials
else cfgZfs.requestEncryptionCredentials != []) ''
${cfgZfs.package}/sbin/zfs list -rHo name,keylocation ${pool} | while IFS=$'\t' read ds kl; do
{
${optionalString (!isBool cfgZfs.requestEncryptionCredentials) ''
if ! echo '${concatStringsSep "\n" cfgZfs.requestEncryptionCredentials}' | grep -qFx "$ds"; then
continue
fi
''}
case "$kl" in
none )
;;
prompt )
${config.systemd.package}/bin/systemd-ask-password "Enter key for $ds:" | ${cfgZfs.package}/sbin/zfs load-key "$ds"
;;
* )
${cfgZfs.package}/sbin/zfs load-key "$ds"
;;
esac
} < /dev/null # To protect while read ds kl in case anything reads stdin
done
''}
echo "Successfully imported ${pool}"
else
exit 1
fi
'';
};
# This forces a sync of any ZFS pools prior to poweroff, even if they're set # This forces a sync of any ZFS pools prior to poweroff, even if they're set
# to sync=disabled. # to sync=disabled.
@ -619,7 +654,7 @@ in
wantedBy = [ "zfs.target" ]; wantedBy = [ "zfs.target" ];
}; };
in listToAttrs (map createImportService dataPools ++ in listToAttrs (map createImportService' dataPools ++
map createSyncService allPools ++ map createSyncService allPools ++
map createZfsService [ "zfs-mount" "zfs-share" "zfs-zed" ]); map createZfsService [ "zfs-mount" "zfs-share" "zfs-zed" ]);

@ -253,6 +253,7 @@ in
k3s-single-node = handleTest ./k3s-single-node.nix {}; k3s-single-node = handleTest ./k3s-single-node.nix {};
k3s-single-node-docker = handleTest ./k3s-single-node-docker.nix {}; k3s-single-node-docker = handleTest ./k3s-single-node-docker.nix {};
kafka = handleTest ./kafka.nix {}; kafka = handleTest ./kafka.nix {};
kanidm = handleTest ./kanidm.nix {};
kbd-setfont-decompress = handleTest ./kbd-setfont-decompress.nix {}; kbd-setfont-decompress = handleTest ./kbd-setfont-decompress.nix {};
kbd-update-search-paths-patch = handleTest ./kbd-update-search-paths-patch.nix {}; kbd-update-search-paths-patch = handleTest ./kbd-update-search-paths-patch.nix {};
kea = handleTest ./kea.nix {}; kea = handleTest ./kea.nix {};
@ -284,7 +285,6 @@ in
loki = handleTest ./loki.nix {}; loki = handleTest ./loki.nix {};
lvm2 = handleTest ./lvm2 {}; lvm2 = handleTest ./lvm2 {};
lxd = handleTest ./lxd.nix {}; lxd = handleTest ./lxd.nix {};
lxd-image = handleTest ./lxd-image.nix {};
lxd-nftables = handleTest ./lxd-nftables.nix {}; lxd-nftables = handleTest ./lxd-nftables.nix {};
lxd-image-server = handleTest ./lxd-image-server.nix {}; lxd-image-server = handleTest ./lxd-image-server.nix {};
#logstash = handleTest ./logstash.nix {}; #logstash = handleTest ./logstash.nix {};

@ -0,0 +1,24 @@
storage_pools:
- name: default
driver: dir
config:
source: /var/lxd-pool
networks:
- name: lxdbr0
type: bridge
config:
ipv4.address: auto
ipv6.address: none
profiles:
- name: default
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk

@ -106,6 +106,5 @@ in
malcontent = callInstalledTest ./malcontent.nix {}; malcontent = callInstalledTest ./malcontent.nix {};
ostree = callInstalledTest ./ostree.nix {}; ostree = callInstalledTest ./ostree.nix {};
pipewire = callInstalledTest ./pipewire.nix {}; pipewire = callInstalledTest ./pipewire.nix {};
power-profiles-daemon = callInstalledTest ./power-profiles-daemon.nix {};
xdg-desktop-portal = callInstalledTest ./xdg-desktop-portal.nix {}; xdg-desktop-portal = callInstalledTest ./xdg-desktop-portal.nix {};
} }

@ -1,9 +0,0 @@
{ pkgs, lib, makeInstalledTest, ... }:
makeInstalledTest {
tested = pkgs.power-profiles-daemon;
testConfig = {
services.power-profiles-daemon.enable = true;
};
}

@ -27,7 +27,7 @@
simpleUefiGrubSpecialisation simpleUefiGrubSpecialisation
simpleUefiSystemdBoot simpleUefiSystemdBoot
# swraid # swraid
# zfsroot zfsroot
; ;
} }

@ -0,0 +1,75 @@
import ./make-test-python.nix ({ pkgs, ... }:
let
certs = import ./common/acme/server/snakeoil-certs.nix;
serverDomain = certs.domain;
in
{
name = "kanidm";
meta.maintainers = with pkgs.lib.maintainers; [ erictapen Flakebi ];
nodes.server = { config, pkgs, lib, ... }: {
services.kanidm = {
enableServer = true;
serverSettings = {
origin = "https://${serverDomain}";
domain = serverDomain;
bindaddress = "[::1]:8443";
ldapbindaddress = "[::1]:636";
};
};
services.nginx = {
enable = true;
recommendedProxySettings = true;
virtualHosts."${serverDomain}" = {
forceSSL = true;
sslCertificate = certs."${serverDomain}".cert;
sslCertificateKey = certs."${serverDomain}".key;
locations."/".proxyPass = "http://[::1]:8443";
};
};
security.pki.certificateFiles = [ certs.ca.cert ];
networking.hosts."::1" = [ serverDomain ];
networking.firewall.allowedTCPPorts = [ 80 443 ];
users.users.kanidm.shell = pkgs.bashInteractive;
environment.systemPackages = with pkgs; [ kanidm openldap ripgrep ];
};
nodes.client = { pkgs, nodes, ... }: {
services.kanidm = {
enableClient = true;
clientSettings = {
uri = "https://${serverDomain}";
};
};
networking.hosts."${nodes.server.config.networking.primaryIPAddress}" = [ serverDomain ];
security.pki.certificateFiles = [ certs.ca.cert ];
};
testScript = { nodes, ... }:
let
ldapBaseDN = builtins.concatStringsSep "," (map (s: "dc=" + s) (pkgs.lib.splitString "." serverDomain));
# We need access to the config file in the test script.
filteredConfig = pkgs.lib.converge
(pkgs.lib.filterAttrsRecursive (_: v: v != null))
nodes.server.config.services.kanidm.serverSettings;
serverConfigFile = (pkgs.formats.toml { }).generate "server.toml" filteredConfig;
in
''
start_all()
server.wait_for_unit("kanidm.service")
server.wait_until_succeeds("curl -sf https://${serverDomain} | grep Kanidm")
server.wait_until_succeeds("ldapsearch -H ldap://[::1]:636 -b '${ldapBaseDN}' -x '(name=test)'")
client.wait_until_succeeds("kanidm login -D anonymous && kanidm self whoami | grep anonymous@${serverDomain}")
(rv, result) = server.execute("kanidmd recover_account -d quiet -c ${serverConfigFile} -n admin 2>&1 | rg -o '[A-Za-z0-9]{48}'")
assert rv == 0
'';
})

@ -1,54 +1,21 @@
import ./make-test-python.nix ({ pkgs, ...} : import ./make-test-python.nix ({ pkgs, lib, ... } :
let let
# Since we don't have access to the internet during the tests, we have to lxd-image = import ../release.nix {
# pre-fetch lxd containers beforehand. configuration = {
# # Building documentation makes the test unnecessarily take a longer time:
# I've chosen to import Alpine Linux, because its image is turbo-tiny and, documentation.enable = lib.mkForce false;
# generally, sufficient for our tests. };
alpine-meta = pkgs.fetchurl {
url = "https://tarballs.nixos.org/alpine/3.12/lxd.tar.xz";
hash = "sha256-1tcKaO9lOkvqfmG/7FMbfAEToAuFy2YMewS8ysBKuLA=";
};
alpine-rootfs = pkgs.fetchurl {
url = "https://tarballs.nixos.org/alpine/3.12/rootfs.tar.xz";
hash = "sha256-Tba9sSoaiMtQLY45u7p5DMqXTSDgs/763L/SQp0bkCA=";
}; };
lxd-config = pkgs.writeText "config.yaml" '' lxd-image-metadata = lxd-image.lxdMeta.${pkgs.system};
storage_pools: lxd-image-rootfs = lxd-image.lxdImage.${pkgs.system};
- name: default
driver: dir
config:
source: /var/lxd-pool
networks:
- name: lxdbr0
type: bridge
config:
ipv4.address: auto
ipv6.address: none
profiles:
- name: default
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
'';
in { in {
name = "lxd-image-server"; name = "lxd-image-server";
meta = with pkgs.lib.maintainers; { meta = with pkgs.lib.maintainers; {
maintainers = [ mkg20001 ]; maintainers = [ mkg20001 patryk27 ];
}; };
nodes.machine = { lib, ... }: { nodes.machine = { lib, ... }: {
@ -100,20 +67,20 @@ in {
# lxd expects the pool's directory to already exist # lxd expects the pool's directory to already exist
machine.succeed("mkdir /var/lxd-pool") machine.succeed("mkdir /var/lxd-pool")
machine.succeed( machine.succeed(
"cat ${lxd-config} | lxd init --preseed" "cat ${./common/lxd/config.yaml} | lxd init --preseed"
) )
machine.succeed( machine.succeed(
"lxc image import ${alpine-meta} ${alpine-rootfs} --alias alpine" "lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs}/*/*.tar.xz --alias nixos"
) )
loc = "/var/www/simplestreams/images/iats/alpine/amd64/default/v1" loc = "/var/www/simplestreams/images/iats/nixos/amd64/default/v1"
with subtest("push image to server"): with subtest("push image to server"):
machine.succeed("lxc launch alpine test") machine.succeed("lxc launch nixos test")
machine.succeed("lxc stop test") machine.sleep(5)
machine.succeed("lxc stop -f test")
machine.succeed("lxc publish --public test --alias=testimg") machine.succeed("lxc publish --public test --alias=testimg")
machine.succeed("lxc image export testimg") machine.succeed("lxc image export testimg")
machine.succeed("ls >&2") machine.succeed("ls >&2")

@ -1,89 +0,0 @@
# This test ensures that the nixOS lxd images builds and functions properly
# It has been extracted from `lxd.nix` to seperate failures of just the image and the lxd software
import ./make-test-python.nix ({ pkgs, ...} : let
release = import ../release.nix {
/* configuration = {
environment.systemPackages = with pkgs; [ stdenv ]; # inject stdenv so rebuild test works
}; */
};
metadata = release.lxdMeta.${pkgs.system};
image = release.lxdImage.${pkgs.system};
lxd-config = pkgs.writeText "config.yaml" ''
storage_pools:
- name: default
driver: dir
config:
source: /var/lxd-pool
networks:
- name: lxdbr0
type: bridge
config:
ipv4.address: auto
ipv6.address: none
profiles:
- name: default
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
'';
in {
name = "lxd-image";
meta = with pkgs.lib.maintainers; {
maintainers = [ mkg20001 ];
};
nodes.machine = { lib, ... }: {
virtualisation = {
# disk full otherwise
diskSize = 2048;
lxc.lxcfs.enable = true;
lxd.enable = true;
};
};
testScript = ''
machine.wait_for_unit("sockets.target")
machine.wait_for_unit("lxd.service")
machine.wait_for_file("/var/lib/lxd/unix.socket")
# It takes additional second for lxd to settle
machine.sleep(1)
# lxd expects the pool's directory to already exist
machine.succeed("mkdir /var/lxd-pool")
machine.succeed(
"cat ${lxd-config} | lxd init --preseed"
)
# TODO: test custom built container aswell
with subtest("importing container works"):
machine.succeed("lxc image import ${metadata}/*/*.tar.xz ${image}/*/*.tar.xz --alias nixos")
with subtest("launching container works"):
machine.succeed("lxc launch nixos machine -c security.nesting=true")
# make sure machine boots up properly
machine.sleep(5)
with subtest("container shell works"):
machine.succeed("echo true | lxc exec machine /run/current-system/sw/bin/bash -")
machine.succeed("lxc exec machine /run/current-system/sw/bin/true")
# with subtest("rebuilding works"):
# machine.succeed("lxc exec machine /run/current-system/sw/bin/nixos-rebuild switch")
'';
})

@ -1,79 +1,18 @@
import ./make-test-python.nix ({ pkgs, ...} : import ./make-test-python.nix ({ pkgs, lib, ... } :
let let
# Since we don't have access to the internet during the tests, we have to lxd-image = import ../release.nix {
# pre-fetch lxd containers beforehand. configuration = {
# # Building documentation makes the test unnecessarily take a longer time:
# I've chosen to import Alpine Linux, because its image is turbo-tiny and, documentation.enable = lib.mkForce false;
# generally, sufficient for our tests.
alpine-meta-x86 = pkgs.fetchurl {
url = "https://tarballs.nixos.org/alpine/3.12/lxd.tar.xz";
hash = "sha256-1tcKaO9lOkvqfmG/7FMbfAEToAuFy2YMewS8ysBKuLA=";
};
alpine-meta-for = arch: pkgs.stdenv.mkDerivation {
name = "alpine-meta-${arch}";
version = "3.12";
unpackPhase = "true";
buildPhase = ''
runHook preBuild
tar xvf ${alpine-meta-x86}
sed -i 's/architecture: .*/architecture: ${arch}/' metadata.yaml
runHook postBuild
'';
installPhase = ''
runHook preInstall
tar czRf $out *
runHook postInstall
'';
};
alpine-meta = { # Our tests require `grep` & friends:
x86_64-linux = alpine-meta-x86; environment.systemPackages = with pkgs; [ busybox ];
aarch64-linux = alpine-meta-for "aarch64";
}.${pkgs.system} or (throw "Unsupported system: ${pkgs.system}");
alpine-rootfs = {
x86_64-linux = pkgs.fetchurl {
url = "https://tarballs.nixos.org/alpine/3.12/rootfs.tar.xz";
hash = "sha256-Tba9sSoaiMtQLY45u7p5DMqXTSDgs/763L/SQp0bkCA=";
};
aarch64-linux = pkgs.fetchurl {
url = "https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/aarch64/alpine-minirootfs-3.15.4-aarch64.tar.gz";
hash = "sha256-9kBz8Jwmo8XepJhTMt5zilCaHHpflnUH7y9+0To39Us=";
}; };
}.${pkgs.system} or (throw "Unsupported system: ${pkgs.system}"); };
lxd-config = pkgs.writeText "config.yaml" ''
storage_pools:
- name: default
driver: dir
config:
source: /var/lxd-pool
networks:
- name: lxdbr0
type: bridge
config:
ipv4.address: auto
ipv6.address: none
profiles:
- name: default
devices:
eth0:
name: eth0
network: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
'';
lxd-image-metadata = lxd-image.lxdMeta.${pkgs.system};
lxd-image-rootfs = lxd-image.lxdImage.${pkgs.system};
in { in {
name = "lxd"; name = "lxd";
@ -84,6 +23,8 @@ in {
nodes.machine = { lib, ... }: { nodes.machine = { lib, ... }: {
virtualisation = { virtualisation = {
diskSize = 2048;
# Since we're testing `limits.cpu`, we've gotta have a known number of # Since we're testing `limits.cpu`, we've gotta have a known number of
# cores to lean on # cores to lean on
cores = 2; cores = 2;
@ -108,61 +49,66 @@ in {
machine.succeed("mkdir /var/lxd-pool") machine.succeed("mkdir /var/lxd-pool")
machine.succeed( machine.succeed(
"cat ${lxd-config} | lxd init --preseed" "cat ${./common/lxd/config.yaml} | lxd init --preseed"
) )
machine.succeed( machine.succeed(
"lxc image import ${alpine-meta} ${alpine-rootfs} --alias alpine" "lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs}/*/*.tar.xz --alias nixos"
) )
with subtest("Containers can be launched and destroyed"): with subtest("Container can be managed"):
machine.succeed("lxc launch alpine test") machine.succeed("lxc launch nixos container")
machine.succeed("lxc exec test true") machine.sleep(5)
machine.succeed("lxc delete -f test") machine.succeed("echo true | lxc exec container /run/current-system/sw/bin/bash -")
machine.succeed("lxc exec container true")
machine.succeed("lxc delete -f container")
with subtest("Containers are being mounted with lxcfs inside"): with subtest("Container is mounted with lxcfs inside"):
machine.succeed("lxc launch alpine test") machine.succeed("lxc launch nixos container")
machine.sleep(5)
## ---------- ## ## ---------- ##
## limits.cpu ## ## limits.cpu ##
machine.succeed("lxc config set test limits.cpu 1") machine.succeed("lxc config set container limits.cpu 1")
machine.succeed("lxc restart test") machine.succeed("lxc restart container")
machine.sleep(5)
# Since Alpine doesn't have `nproc` pre-installed, we've gotta resort
# to the primal methods
assert ( assert (
"1" "1"
== machine.succeed("lxc exec test grep -- -c ^processor /proc/cpuinfo").strip() == machine.succeed("lxc exec container grep -- -c ^processor /proc/cpuinfo").strip()
) )
machine.succeed("lxc config set test limits.cpu 2") machine.succeed("lxc config set container limits.cpu 2")
machine.succeed("lxc restart test") machine.succeed("lxc restart container")
machine.sleep(5)
assert ( assert (
"2" "2"
== machine.succeed("lxc exec test grep -- -c ^processor /proc/cpuinfo").strip() == machine.succeed("lxc exec container grep -- -c ^processor /proc/cpuinfo").strip()
) )
## ------------- ## ## ------------- ##
## limits.memory ## ## limits.memory ##
machine.succeed("lxc config set test limits.memory 64MB") machine.succeed("lxc config set container limits.memory 64MB")
machine.succeed("lxc restart test") machine.succeed("lxc restart container")
machine.sleep(5)
assert ( assert (
"MemTotal: 62500 kB" "MemTotal: 62500 kB"
== machine.succeed("lxc exec test grep -- MemTotal /proc/meminfo").strip() == machine.succeed("lxc exec container grep -- MemTotal /proc/meminfo").strip()
) )
machine.succeed("lxc config set test limits.memory 128MB") machine.succeed("lxc config set container limits.memory 128MB")
machine.succeed("lxc restart test") machine.succeed("lxc restart container")
machine.sleep(5)
assert ( assert (
"MemTotal: 125000 kB" "MemTotal: 125000 kB"
== machine.succeed("lxc exec test grep -- MemTotal /proc/meminfo").strip() == machine.succeed("lxc exec container grep -- MemTotal /proc/meminfo").strip()
) )
machine.succeed("lxc delete -f test") machine.succeed("lxc delete -f container")
''; '';
}) })

@ -13,13 +13,13 @@
trivialBuild { trivialBuild {
pname = "ement"; pname = "ement";
version = "unstable-2022-04-22"; version = "unstable-2022-05-05";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "alphapapa"; owner = "alphapapa";
repo = "ement.el"; repo = "ement.el";
rev = "70da19e4c9210d362b1d6d9c17ab2c034a03250d"; rev = "84739451afa8355360966dfa788d469d9dc4a8e3";
sha256 = "sha256-Pxul0WrtyH2XZzF0fOOitLc3x/kc+Qc11RDH0n+Hm04="; sha256 = "sha256-XdegBKZfoKbFaMM/l8249VD9KKC5/4gQIK6ggPcoOaE=";
}; };
packageRequires = [ packageRequires = [

@ -80,6 +80,13 @@ stdenv.mkDerivation rec {
url = "https://gitlab.com/inkscape/inkscape/-/commit/a18c57ffff313fd08bc8a44f6b6bf0b01d7e9b75.patch"; url = "https://gitlab.com/inkscape/inkscape/-/commit/a18c57ffff313fd08bc8a44f6b6bf0b01d7e9b75.patch";
sha256 = "UZb8ZTtfA5667uo5ZlVQ5vPowiSgd4ItAJ9U1BOsRQg="; sha256 = "UZb8ZTtfA5667uo5ZlVQ5vPowiSgd4ItAJ9U1BOsRQg=";
}) })
# Fix build with poppler 22.04
# https://gitlab.com/inkscape/inkscape/-/merge_requests/4266
(fetchpatch {
url = "https://gitlab.com/inkscape/inkscape/-/commit/d989cdf1059c78bc3bb6414330242073768d640b.patch";
sha256 = "2cJZdunbRgPIwhJgz1dQoQRw3ZYZ2Fp6c3hpVBV2PbE=";
})
]; ];
postPatch = '' postPatch = ''

@ -3,13 +3,13 @@
mkDerivation rec { mkDerivation rec {
pname = "AusweisApp2"; pname = "AusweisApp2";
version = "1.22.4"; version = "1.22.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Governikus"; owner = "Governikus";
repo = "AusweisApp2"; repo = "AusweisApp2";
rev = version; rev = version;
sha256 = "sha256-Mms7Vibq1Rlb2XbxiV4o1UsjDRJcwG5ZZdPOWHjnW2A="; sha256 = "sha256-EuHg8JrI6ZoyTXqD3v4cfk4/NovAj4fF2NY1V2ZF64c=";
}; };
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];

@ -1,17 +1,16 @@
{ lib, stdenv, fetchurl, autoreconfHook, pkg-config, libzen, libmediainfo, wxGTK30-gtk3 { lib, stdenv, fetchurl, autoreconfHook, pkg-config, libmediainfo, wxGTK30-gtk3
, desktop-file-utils, libSM, imagemagick }: , desktop-file-utils, libSM, imagemagick }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "21.09"; version = "22.03";
pname = "mediainfo-gui"; pname = "mediainfo-gui";
src = fetchurl { src = fetchurl {
url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz"; url = "https://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
sha256 = "0mqcqm8y2whnbdi2ry7jd755gfl5ccdqhwjh67hsyr7c0ajxk3vv"; sha256 = "sha256-Yjb5Kh1XqBdLPzDqbd6Kq1ONj2IPcoIk2FE3MWmAK+Q=";
}; };
nativeBuildInputs = [ autoreconfHook pkg-config ]; nativeBuildInputs = [ autoreconfHook pkg-config ];
buildInputs = [ libzen libmediainfo wxGTK30-gtk3 desktop-file-utils libSM buildInputs = [ libmediainfo wxGTK30-gtk3 desktop-file-utils libSM imagemagick ];
imagemagick ];
sourceRoot = "./MediaInfo/Project/GNU/GUI/"; sourceRoot = "./MediaInfo/Project/GNU/GUI/";

@ -4,6 +4,7 @@
, meson , meson
, ninja , ninja
, pkg-config , pkg-config
, scdoc
, vala , vala
, gtk3 , gtk3
, glib , glib
@ -20,16 +21,16 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "SwayNotificationCenter"; pname = "SwayNotificationCenter";
version = "0.3"; version = "0.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ErikReider"; owner = "ErikReider";
repo = "SwayNotificationCenter"; repo = "SwayNotificationCenter";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-gXo/V2FHkHZBRmaimqJCzi0BqS4tP9IniIlubBmK5u0="; hash = "sha256-Jjbr6GJ0MHlO+T/simPNYQnB5b7Cr85j4GRjRGa5B6s=";
}; };
nativeBuildInputs = [ gobject-introspection meson ninja pkg-config vala wrapGAppsHook ]; nativeBuildInputs = [ gobject-introspection meson ninja pkg-config scdoc vala wrapGAppsHook ];
buildInputs = [ dbus dbus-glib gdk-pixbuf glib gtk-layer-shell gtk3 json-glib libhandy librsvg ]; buildInputs = [ dbus dbus-glib gdk-pixbuf glib gtk-layer-shell gtk3 json-glib libhandy librsvg ];

@ -10,6 +10,7 @@
, gtk3 , gtk3
, gsettings-desktop-schemas , gsettings-desktop-schemas
, p7zip , p7zip
, autoPatchelfHook
, libXxf86vm , libXxf86vm
, unzip , unzip
}: }:
@ -41,14 +42,17 @@ let
}; };
postPatch = '' postPatch = ''
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/amd64/libnativewindow_awt.so addAutoPatchelfSearchPath ${jre8}/lib/openjdk/jre/lib/
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/amd64/libnativewindow_x11.so autoPatchelf lib
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_awt.so
patchelf --set-rpath ${libXxf86vm}/lib lib/java3d-1.6/linux/i586/libnativewindow_x11.so # Nix cannot see the runtime references to the paths we just patched in
# once they've been compressed into the .jar. Scan for and remember them
# as plain text so they don't get overlooked.
find . -name '*.so' | xargs strings | { grep '/nix/store' || :; } >> ./.jar-paths
''; '';
nativeBuildInputs = [ makeWrapper unzip ]; nativeBuildInputs = [ makeWrapper unzip autoPatchelfHook ];
buildInputs = [ ant jdk8 p7zip gtk3 gsettings-desktop-schemas ]; buildInputs = [ ant jdk8 p7zip gtk3 gsettings-desktop-schemas libXxf86vm ];
buildPhase = '' buildPhase = ''
runHook preBuild runHook preBuild
@ -80,6 +84,13 @@ let
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \ --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3.out}/share:${gsettings-desktop-schemas}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
--add-flags "-Dsun.java2d.opengl=true -jar $out/share/java/${module}-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}" --add-flags "-Dsun.java2d.opengl=true -jar $out/share/java/${module}-${version}.jar -cp $out/share/java/Furniture.jar:$out/share/java/Textures.jar:$out/share/java/Help.jar -d${toString stdenv.hostPlatform.parsed.cpu.bits}"
# remember the store paths found inside the .jar libraries. note that
# which file they are in does not matter in particular, just that some
# file somewhere lists them in plain-text
mkdir -p $out/nix-support
cp .jar-paths $out/nix-support/depends
runHook postInstall runHook postInstall
''; '';

@ -1,8 +1,8 @@
{ {
"packageVersion": "100.0-1", "packageVersion": "100.0-2",
"source": { "source": {
"rev": "100.0-1", "rev": "100.0-2",
"sha256": "1xczvsd39g821bh5n12vnn7sgi0x5dqj6vfizkavxj0a05jb4fla" "sha256": "0pr7fb91zw5qlnfvaavzksd3c2xzgn1344mmfnz9yx2g42vcyi7d"
}, },
"firefox": { "firefox": {
"version": "100.0", "version": "100.0",

@ -1,20 +1,20 @@
{ {
beta = import ./browser.nix { beta = import ./browser.nix {
channel = "beta"; channel = "beta";
version = "99.0.1150.16"; version = "101.0.1210.19";
revision = "1"; revision = "1";
sha256 = "sha256:0qsgs889d6qwxz9qf42psmjqfhmrqgp07srq5r38npl5pncr137h"; sha256 = "sha256:1kgc19ryw69xiqppz90d6sa45g99hzkh7x5yk9d3xlh1gc1xn54p";
}; };
dev = import ./browser.nix { dev = import ./browser.nix {
channel = "dev"; channel = "dev";
version = "100.0.1163.1"; version = "102.0.1227.0";
revision = "1"; revision = "1";
sha256 = "sha256:153faqxyw5f5b6cqnvd71dl7941znkzci8dwbcgaxway0b6882jq"; sha256 = "sha256:0dnyandri7yg7c9812pnsxqszxyqcssxf87yskjg2vw95hawf11x";
}; };
stable = import ./browser.nix { stable = import ./browser.nix {
channel = "stable"; channel = "stable";
version = "98.0.1108.56"; version = "100.0.1185.44";
revision = "1"; revision = "1";
sha256 = "sha256:03jbj2s2fs60fzfgsmyb284q7nckji87qgb86mvl5g0hbl19aza7"; sha256 = "sha256:0zv1zyijh620xz36a6nmhv7rbv4ln5f245hyh0w1sngynsl1rz89";
}; };
} }

@ -43,13 +43,13 @@ assert enablePsiMedia -> enablePlugins;
mkDerivation rec { mkDerivation rec {
pname = "psi-plus"; pname = "psi-plus";
version = "1.5.1615"; version = "1.5.1618";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "psi-plus"; owner = "psi-plus";
repo = "psi-plus-snapshots"; repo = "psi-plus-snapshots";
rev = version; rev = version;
sha256 = "sha256-aD+JVGmBWHUav2bH9rXGtgqI+/5lJTMrYLRP7E65JxI="; sha256 = "sha256-ueZYFOZFCPQrg9etZCrY5ZTn7PZMkcuwbXVPPbW9S/A=";
}; };
cmakeFlags = [ cmakeFlags = [

@ -24,6 +24,9 @@ let
buildInputs = [ gmp ]; buildInputs = [ gmp ];
# Tests are relying on old Python 2 modules.
doCheck = false;
preConfigure = '' preConfigure = ''
sed -i 's,/usr/include,/no-such-dir,' configure sed -i 's,/usr/include,/no-such-dir,' configure
sed -i "s!,'/usr/include/'!!" setup.py sed -i "s!,'/usr/include/'!!" setup.py
@ -66,5 +69,9 @@ in stdenv.mkDerivation rec {
license = licenses.gpl3; license = licenses.gpl3;
maintainers = with maintainers; [ oxzi ]; maintainers = with maintainers; [ oxzi ];
description = "WeeChat script for Off-the-Record messaging"; description = "WeeChat script for Off-the-Record messaging";
knownVulnerabilities = [
"There is no upstream release since 2018-03."
"Utilizes deprecated and vulnerable pycrypto library with Debian patches from 2020-04."
];
}; };
} }

@ -4,14 +4,14 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20220415"; version = "20220429";
pname = "neomutt"; pname = "neomutt";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neomutt"; owner = "neomutt";
repo = "neomutt"; repo = "neomutt";
rev = version; rev = version;
sha256 = "sha256-iVKDgVN7YFPEMP+OISS7jRG9Whs2QG60yH1r2kw3MUQ="; sha256 = "sha256-LBY7WtmEMg/PcMS/Tc5XEYunIWjoI4IQfUJURKgy1YA=";
}; };
buildInputs = [ buildInputs = [

@ -1,9 +1,8 @@
{ pkgs, nodejs-14_x, stdenv, lib }: { pkgs, nodejs-16_x, stdenv, lib }:
let let
nodePackages = import ./node-composition.nix { nodePackages = import ./node-composition.nix {
inherit pkgs; inherit pkgs;
nodejs = nodejs-14_x;
inherit (stdenv.hostPlatform) system; inherit (stdenv.hostPlatform) system;
}; };
in in
@ -12,6 +11,13 @@ nodePackages.n8n.override {
node-pre-gyp node-pre-gyp
]; ];
dontNpmInstall = true;
postInstall = ''
mkdir -p $out/bin
ln -s $out/lib/node_modules/n8n/bin/n8n $out/bin/n8n
'';
passthru.updateScript = ./generate-dependencies.sh; passthru.updateScript = ./generate-dependencies.sh;
meta = with lib; { meta = with lib; {

@ -13,7 +13,7 @@
cd "$(dirname $(readlink -f $0))" cd "$(dirname $(readlink -f $0))"
node2nix \ node2nix \
--14 \ --nodejs-16 \
--strip-optional-dependencies \ --strip-optional-dependencies \
--node-env node-env.nix \ --node-env node-env.nix \
--input package.json \ --input package.json \

@ -1,8 +1,8 @@
# This file has been generated by node2nix 1.9.0. Do not edit! # This file has been generated by node2nix 1.11.1. Do not edit!
{pkgs ? import <nixpkgs> { {pkgs ? import <nixpkgs> {
inherit system; inherit system;
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}: }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-16_x"}:
let let
nodeEnv = import ./node-env.nix { nodeEnv = import ./node-env.nix {

@ -98,7 +98,7 @@ let
'' ''
+ (lib.concatMapStrings (dependency: + (lib.concatMapStrings (dependency:
'' ''
if [ ! -e "${dependency.name}" ]; then if [ ! -e "${dependency.packageName}" ]; then
${composePackage dependency} ${composePackage dependency}
fi fi
'' ''
@ -257,8 +257,8 @@ let
var packageLock = JSON.parse(fs.readFileSync("./package-lock.json")); var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
if(![1, 2].includes(packageLock.lockfileVersion)) { if(![1, 2].includes(packageLock.lockfileVersion)) {
process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n"); process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n");
process.exit(1); process.exit(1);
} }
if(packageLock.dependencies !== undefined) { if(packageLock.dependencies !== undefined) {
@ -390,7 +390,7 @@ let
buildNodePackage = buildNodePackage =
{ name { name
, packageName , packageName
, version , version ? null
, dependencies ? [] , dependencies ? []
, buildInputs ? [] , buildInputs ? []
, production ? true , production ? true
@ -409,7 +409,7 @@ let
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ]; extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
in in
stdenv.mkDerivation ({ stdenv.mkDerivation ({
name = "${name}-${version}"; name = "${name}${if version == null then "" else "-${version}"}";
buildInputs = [ tarWrapper python nodejs ] buildInputs = [ tarWrapper python nodejs ]
++ lib.optional (stdenv.isLinux) utillinux ++ lib.optional (stdenv.isLinux) utillinux
++ lib.optional (stdenv.isDarwin) libtool ++ lib.optional (stdenv.isDarwin) libtool
@ -441,6 +441,14 @@ let
if [ -d "$out/lib/node_modules/.bin" ] if [ -d "$out/lib/node_modules/.bin" ]
then then
ln -s $out/lib/node_modules/.bin $out/bin ln -s $out/lib/node_modules/.bin $out/bin
# Patch the shebang lines of all the executables
ls $out/bin/* | while read i
do
file="$(readlink -f "$i")"
chmod u+rwx "$file"
patchShebangs "$file"
done
fi fi
# Create symlinks to the deployed manual page folders, if applicable # Create symlinks to the deployed manual page folders, if applicable
@ -471,7 +479,7 @@ let
buildNodeDependencies = buildNodeDependencies =
{ name { name
, packageName , packageName
, version , version ? null
, src , src
, dependencies ? [] , dependencies ? []
, buildInputs ? [] , buildInputs ? []
@ -489,7 +497,7 @@ let
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ]; extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
in in
stdenv.mkDerivation ({ stdenv.mkDerivation ({
name = "node-dependencies-${name}-${version}"; name = "node-dependencies-${name}${if version == null then "" else "-${version}"}";
buildInputs = [ tarWrapper python nodejs ] buildInputs = [ tarWrapper python nodejs ]
++ lib.optional (stdenv.isLinux) utillinux ++ lib.optional (stdenv.isLinux) utillinux
@ -519,6 +527,7 @@ let
if [ -f ${src}/package-lock.json ] if [ -f ${src}/package-lock.json ]
then then
cp ${src}/package-lock.json . cp ${src}/package-lock.json .
chmod 644 package-lock.json
fi fi
''} ''}
@ -541,7 +550,7 @@ let
buildNodeShell = buildNodeShell =
{ name { name
, packageName , packageName
, version , version ? null
, src , src
, dependencies ? [] , dependencies ? []
, buildInputs ? [] , buildInputs ? []
@ -557,9 +566,10 @@ let
let let
nodeDependencies = buildNodeDependencies args; nodeDependencies = buildNodeDependencies args;
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "unpackPhase" "buildPhase" ];
in in
stdenv.mkDerivation { stdenv.mkDerivation ({
name = "node-shell-${name}-${version}"; name = "node-shell-${name}${if version == null then "" else "-${version}"}";
buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs; buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
buildCommand = '' buildCommand = ''
@ -578,7 +588,7 @@ let
export NODE_PATH=${nodeDependencies}/lib/node_modules export NODE_PATH=${nodeDependencies}/lib/node_modules
export PATH="${nodeDependencies}/bin:$PATH" export PATH="${nodeDependencies}/bin:$PATH"
''; '';
}; } // extraArgs);
in in
{ {
buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist; buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;

@ -1,16 +1,16 @@
# This file has been generated by node2nix 1.9.0. Do not edit! # This file has been generated by node2nix 1.11.1. Do not edit!
{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}: {nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
let let
sources = { sources = {
"@azure/abort-controller-1.0.5" = { "@azure/abort-controller-1.1.0" = {
name = "_at_azure_slash_abort-controller"; name = "_at_azure_slash_abort-controller";
packageName = "@azure/abort-controller"; packageName = "@azure/abort-controller";
version = "1.0.5"; version = "1.1.0";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.5.tgz"; url = "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz";
sha512 = "G5sjKExiVsbFQo+4YY5MBPOSsh3EUv6XmqjgJaF/VCjckWLGGKPUPGfbCSn6Xal6gzGoPQMOQ+wCCGNCX9NAPg=="; sha512 = "TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==";
}; };
}; };
"@azure/core-asynciterator-polyfill-1.0.2" = { "@azure/core-asynciterator-polyfill-1.0.2" = {
@ -31,13 +31,13 @@ let
sha512 = "7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA=="; sha512 = "7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA==";
}; };
}; };
"@azure/core-http-2.2.4" = { "@azure/core-http-2.2.5" = {
name = "_at_azure_slash_core-http"; name = "_at_azure_slash_core-http";
packageName = "@azure/core-http"; packageName = "@azure/core-http";
version = "2.2.4"; version = "2.2.5";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/@azure/core-http/-/core-http-2.2.4.tgz"; url = "https://registry.npmjs.org/@azure/core-http/-/core-http-2.2.5.tgz";
sha512 = "QmmJmexXKtPyc3/rsZR/YTLDvMatzbzAypJmLzvlfxgz/SkgnqV/D4f6F2LsK6tBj1qhyp8BoXiOebiej0zz3A=="; sha512 = "kctMqSQ6zfnlFpuYzfUKadeTyOQYbIQ+3Rj7dzVC3Dk1dOnHroTwR9hLYKX8/n85iJpkyaksaXpuh5L7GJRYuQ==";
}; };
}; };
"@azure/core-lro-2.2.4" = { "@azure/core-lro-2.2.4" = {
@ -976,13 +976,13 @@ let
sha512 = "z4oo33lmnvvNRqfUe3YjDGGpqu/L2+wXBIhMtwq6oqZ+exOUAkQYM6zd2VWKF7AIlajOF8ZZuPFfryTG9iLC/w=="; sha512 = "z4oo33lmnvvNRqfUe3YjDGGpqu/L2+wXBIhMtwq6oqZ+exOUAkQYM6zd2VWKF7AIlajOF8ZZuPFfryTG9iLC/w==";
}; };
}; };
"aws-sdk-2.1125.0" = { "aws-sdk-2.1129.0" = {
name = "aws-sdk"; name = "aws-sdk";
packageName = "aws-sdk"; packageName = "aws-sdk";
version = "2.1125.0"; version = "2.1129.0";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1125.0.tgz"; url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1129.0.tgz";
sha512 = "2syNkKDqDcDmB/chc61a5xx+KYzaarLs1/KshE0b1Opp2oSq2FARyUBbk59HgwKaDUB61uPF33ZG9sHiIVx2hQ=="; sha512 = "gQZaByfW7zKCg1n/kA+xDdLhI/SauaokRTq+lztK1cCCdFkR5CShcKeK/qUgVxjy43mwB7CkeTh1WUr2NMb0jg==";
}; };
}; };
"aws-sign2-0.7.0" = { "aws-sign2-0.7.0" = {
@ -1858,13 +1858,13 @@ let
sha512 = "Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="; sha512 = "Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==";
}; };
}; };
"core-js-3.22.3" = { "core-js-3.22.4" = {
name = "core-js"; name = "core-js";
packageName = "core-js"; packageName = "core-js";
version = "3.22.3"; version = "3.22.4";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/core-js/-/core-js-3.22.3.tgz"; url = "https://registry.npmjs.org/core-js/-/core-js-3.22.4.tgz";
sha512 = "1t+2a/d2lppW1gkLXx3pKPVGbBdxXAkqztvWb1EJ8oF8O2gIGiytzflNiFEehYwVK/t2ryUsGBoOFFvNx95mbg=="; sha512 = "1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==";
}; };
}; };
"core-util-is-1.0.2" = { "core-util-is-1.0.2" = {
@ -2641,13 +2641,13 @@ let
sha512 = "GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="; sha512 = "GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==";
}; };
}; };
"follow-redirects-1.14.9" = { "follow-redirects-1.15.0" = {
name = "follow-redirects"; name = "follow-redirects";
packageName = "follow-redirects"; packageName = "follow-redirects";
version = "1.14.9"; version = "1.15.0";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz"; url = "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.0.tgz";
sha512 = "MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="; sha512 = "aExlJShTV4qOUOL7yF1U5tvLCB0xQuudbf6toyYA0E/acBNw71mvjFTnLaRp50aQaYocMR0a/RMMBIHeZnGyjQ==";
}; };
}; };
"for-each-0.3.3" = { "for-each-0.3.3" = {
@ -4522,13 +4522,13 @@ let
sha512 = "qIcmHAtVJotgiYo3vVMLwC9qaU5ih5ti4+aPu2I1onD6WEu8GMNF38AzIAceYl6U8EhvDB+DOsF/SjYHfl26iw=="; sha512 = "qIcmHAtVJotgiYo3vVMLwC9qaU5ih5ti4+aPu2I1onD6WEu8GMNF38AzIAceYl6U8EhvDB+DOsF/SjYHfl26iw==";
}; };
}; };
"n8n-editor-ui-0.142.0" = { "n8n-editor-ui-0.142.1" = {
name = "n8n-editor-ui"; name = "n8n-editor-ui";
packageName = "n8n-editor-ui"; packageName = "n8n-editor-ui";
version = "0.142.0"; version = "0.142.1";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/n8n-editor-ui/-/n8n-editor-ui-0.142.0.tgz"; url = "https://registry.npmjs.org/n8n-editor-ui/-/n8n-editor-ui-0.142.1.tgz";
sha512 = "aDXm64Y+tcLicd0z9pIxhSfqCb/JjsMIAOJ7DB35HKg7riOE7TGBHkWQ6F61XEjusJLl6ZGr15V+9EoCTu+02g=="; sha512 = "Me8fk76HeWUmTPnksH4kzG0bKOp1yLFjAC4F+EcEllIIf+x75kjN+gSH4uwgvspzGCVO88ZnppWoGQwvHQpXQw==";
}; };
}; };
"n8n-nodes-base-0.173.0" = { "n8n-nodes-base-0.173.0" = {
@ -4567,13 +4567,13 @@ let
sha512 = "wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA=="; sha512 = "wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==";
}; };
}; };
"nanoid-3.3.3" = { "nanoid-3.3.4" = {
name = "nanoid"; name = "nanoid";
packageName = "nanoid"; packageName = "nanoid";
version = "3.3.3"; version = "3.3.4";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz"; url = "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz";
sha512 = "p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w=="; sha512 = "MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==";
}; };
}; };
"native-duplexpair-1.0.0" = { "native-duplexpair-1.0.0" = {
@ -4693,13 +4693,13 @@ let
sha512 = "KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g=="; sha512 = "KUdDsspqx89sD4UUyUKzdlUOper3hRkDVkrKh/89G+d9WKsU5ox51NWS4tB1XR5dPUdR4SP0E3molyEfOvSa3g==";
}; };
}; };
"nodemailer-6.7.4" = { "nodemailer-6.7.5" = {
name = "nodemailer"; name = "nodemailer";
packageName = "nodemailer"; packageName = "nodemailer";
version = "6.7.4"; version = "6.7.5";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.4.tgz"; url = "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.5.tgz";
sha512 = "TBSS3qS8WG45ycUwEvEA/3UM1o3sLz9jUl4TPUKPz4ImWWM6UgRCb5pLO+HOouDKEj57yNLOrzQlO8+9IjWZoA=="; sha512 = "6VtMpwhsrixq1HDYSBBHvW0GwiWawE75dS3oal48VqRhUvKJNnKnJo2RI/bCVQubj1vgrgscMNW4DHaD6xtMCg==";
}; };
}; };
"nopt-5.0.0" = { "nopt-5.0.0" = {
@ -6367,13 +6367,13 @@ let
sha512 = "VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="; sha512 = "VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==";
}; };
}; };
"sqlite3-5.0.6" = { "sqlite3-5.0.7" = {
name = "sqlite3"; name = "sqlite3";
packageName = "sqlite3"; packageName = "sqlite3";
version = "5.0.6"; version = "5.0.7";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.6.tgz"; url = "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.7.tgz";
sha512 = "uT1dC6N3ReF+jchY01zvl1wVFFJ5xO86wSnCpK39uA/zmAHBDm6TiAq1v876QKv8JgiijxQ7/fb5C2LPm7ZAJA=="; sha512 = "9PUfvpol1/5SI3WZawFINwpRz6qhUeJJtFNG6rr0CvDWMXN75PJPv+3b0aVEOOx5rAZIPcXW2zVasH8foqw7Gg==";
}; };
}; };
"sqlstring-2.3.3" = { "sqlstring-2.3.3" = {
@ -6493,22 +6493,22 @@ let
sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="; sha512 = "wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==";
}; };
}; };
"string.prototype.trimend-1.0.4" = { "string.prototype.trimend-1.0.5" = {
name = "string.prototype.trimend"; name = "string.prototype.trimend";
packageName = "string.prototype.trimend"; packageName = "string.prototype.trimend";
version = "1.0.4"; version = "1.0.5";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz"; url = "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz";
sha512 = "y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A=="; sha512 = "I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==";
}; };
}; };
"string.prototype.trimstart-1.0.4" = { "string.prototype.trimstart-1.0.5" = {
name = "string.prototype.trimstart"; name = "string.prototype.trimstart";
packageName = "string.prototype.trimstart"; packageName = "string.prototype.trimstart";
version = "1.0.4"; version = "1.0.5";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz"; url = "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz";
sha512 = "jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw=="; sha512 = "THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==";
}; };
}; };
"string_decoder-0.10.31" = { "string_decoder-0.10.31" = {
@ -7534,13 +7534,13 @@ in
n8n = nodeEnv.buildNodePackage { n8n = nodeEnv.buildNodePackage {
name = "n8n"; name = "n8n";
packageName = "n8n"; packageName = "n8n";
version = "0.175.0"; version = "0.175.1";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/n8n/-/n8n-0.175.0.tgz"; url = "https://registry.npmjs.org/n8n/-/n8n-0.175.1.tgz";
sha512 = "FKIroWsEZNZ/HUdM6iQ8QY6WxYs4uQufodBoKpbcu6JJKF/ufYO4U8lpIM0nV2YCMaB+JAVvswim0SUDB6KF3A=="; sha512 = "rInwNB6wxOs79EvC2HFALyDhdDPJwLVT+z1LivxLRD9dZOrtlMD9wdDfESpHYS5ikND4T5JW32HaxGF9nnzlJA==";
}; };
dependencies = [ dependencies = [
(sources."@azure/abort-controller-1.0.5" // { (sources."@azure/abort-controller-1.1.0" // {
dependencies = [ dependencies = [
sources."tslib-2.4.0" sources."tslib-2.4.0"
]; ];
@ -7551,7 +7551,7 @@ in
sources."tslib-2.4.0" sources."tslib-2.4.0"
]; ];
}) })
(sources."@azure/core-http-2.2.4" // { (sources."@azure/core-http-2.2.5" // {
dependencies = [ dependencies = [
sources."tough-cookie-4.0.0" sources."tough-cookie-4.0.0"
sources."tslib-2.4.0" sources."tslib-2.4.0"
@ -7725,7 +7725,7 @@ in
]; ];
}) })
sources."avsc-5.7.4" sources."avsc-5.7.4"
(sources."aws-sdk-2.1125.0" // { (sources."aws-sdk-2.1129.0" // {
dependencies = [ dependencies = [
sources."buffer-4.9.2" sources."buffer-4.9.2"
sources."events-1.1.1" sources."events-1.1.1"
@ -7902,7 +7902,7 @@ in
sources."cookie-0.4.1" sources."cookie-0.4.1"
sources."cookie-parser-1.4.6" sources."cookie-parser-1.4.6"
sources."cookie-signature-1.0.6" sources."cookie-signature-1.0.6"
sources."core-js-3.22.3" sources."core-js-3.22.4"
sources."core-util-is-1.0.2" sources."core-util-is-1.0.2"
sources."crc-32-1.2.2" sources."crc-32-1.2.2"
sources."cron-1.7.2" sources."cron-1.7.2"
@ -8012,7 +8012,7 @@ in
}) })
sources."flatted-3.2.5" sources."flatted-3.2.5"
sources."fn.name-1.1.0" sources."fn.name-1.1.0"
sources."follow-redirects-1.14.9" sources."follow-redirects-1.15.0"
sources."for-each-0.3.3" sources."for-each-0.3.3"
sources."forever-agent-0.6.1" sources."forever-agent-0.6.1"
sources."form-data-4.0.0" sources."form-data-4.0.0"
@ -8282,7 +8282,7 @@ in
sources."mz-2.7.0" sources."mz-2.7.0"
sources."n8n-core-0.116.0" sources."n8n-core-0.116.0"
sources."n8n-design-system-0.19.0" sources."n8n-design-system-0.19.0"
sources."n8n-editor-ui-0.142.0" sources."n8n-editor-ui-0.142.1"
(sources."n8n-nodes-base-0.173.0" // { (sources."n8n-nodes-base-0.173.0" // {
dependencies = [ dependencies = [
sources."iconv-lite-0.6.3" sources."iconv-lite-0.6.3"
@ -8296,7 +8296,7 @@ in
]; ];
}) })
sources."nanoclone-0.2.1" sources."nanoclone-0.2.1"
sources."nanoid-3.3.3" sources."nanoid-3.3.4"
sources."native-duplexpair-1.0.0" sources."native-duplexpair-1.0.0"
(sources."nearley-2.20.1" // { (sources."nearley-2.20.1" // {
dependencies = [ dependencies = [
@ -8317,7 +8317,7 @@ in
sources."node-html-parser-5.3.3" sources."node-html-parser-5.3.3"
sources."node-ssh-12.0.4" sources."node-ssh-12.0.4"
sources."nodeify-1.0.1" sources."nodeify-1.0.1"
sources."nodemailer-6.7.4" sources."nodemailer-6.7.5"
sources."nopt-5.0.0" sources."nopt-5.0.0"
sources."normalize-path-3.0.0" sources."normalize-path-3.0.0"
sources."normalize-wheel-1.0.1" sources."normalize-wheel-1.0.1"
@ -8577,7 +8577,7 @@ in
]; ];
}) })
sources."sprintf-js-1.1.2" sources."sprintf-js-1.1.2"
sources."sqlite3-5.0.6" sources."sqlite3-5.0.7"
sources."sqlstring-2.3.3" sources."sqlstring-2.3.3"
sources."sse-channel-3.1.1" sources."sse-channel-3.1.1"
sources."ssf-0.11.2" sources."ssf-0.11.2"
@ -8591,8 +8591,8 @@ in
sources."stream-shift-1.0.1" sources."stream-shift-1.0.1"
sources."string-similarity-4.0.4" sources."string-similarity-4.0.4"
sources."string-width-4.2.3" sources."string-width-4.2.3"
sources."string.prototype.trimend-1.0.4" sources."string.prototype.trimend-1.0.5"
sources."string.prototype.trimstart-1.0.4" sources."string.prototype.trimstart-1.0.5"
sources."string_decoder-0.10.31" sources."string_decoder-0.10.31"
sources."strip-ansi-6.0.1" sources."strip-ansi-6.0.1"
sources."strtok3-6.3.0" sources."strtok3-6.3.0"

@ -23,11 +23,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "liferea"; pname = "liferea";
version = "1.12.9"; version = "1.13.8";
src = fetchurl { src = fetchurl {
url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${pname}-${version}.tar.bz2"; url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${pname}-${version}.tar.bz2";
sha256 = "06ybr1wjlfir8iqjx6x0v1knd4b2hsy30qmkk4kssy6ky2ahc66q"; sha256 = "0x2857nhn98hlzqxmxb2h2wcasr5jkhciih71wcnp0cja60aw20h";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

@ -90,6 +90,9 @@ in (mkDrv rec {
url = "https://github.com/archlinux/svntogit-packages/raw/f82958b9538f86e41b51f1ba7134968d2f3788d1/trunk/poppler-22.03.0.patch"; url = "https://github.com/archlinux/svntogit-packages/raw/f82958b9538f86e41b51f1ba7134968d2f3788d1/trunk/poppler-22.03.0.patch";
sha256 = "5h4qJmx6Q3Q3dHUlSi8JXBziN2mAswGVWk5aDTLTwls="; sha256 = "5h4qJmx6Q3Q3dHUlSi8JXBziN2mAswGVWk5aDTLTwls=";
}) })
# Fix build with poppler 22.04
./poppler-22-04-0.patch
]; ];
### QT/KDE ### QT/KDE

@ -0,0 +1,100 @@
Patch from OpenSUSE
https://build.opensuse.org/package/view_file/LibreOffice:Factory/libreoffice/poppler-22-04-0.patch?expand=1&rev=45e176f964509ebe3560d0dbf1ec8be9
Index: libreoffice-7.3.3.1/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
===================================================================
--- libreoffice-7.3.3.1.orig/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
+++ libreoffice-7.3.3.1/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx
@@ -474,12 +474,21 @@ int PDFOutDev::parseFont( long long nNew
{
// TODO(P3): Unfortunately, need to read stream twice, since
// we must write byte count to stdout before
+#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
+ auto pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef());
+ if ( pBuf )
+ {
+ aNewFont.isEmbedded = true;
+ nSize = pBuf->size();
+ }
+#else
char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
if( pBuf )
{
aNewFont.isEmbedded = true;
gfree(pBuf);
}
+#endif
}
m_aFontMap[ nNewId ] = aNewFont;
@@ -492,21 +501,35 @@ void PDFOutDev::writeFontFile( GfxFont*
return;
int nSize = 0;
+#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
+ auto pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef());
+ if ( !pBuf )
+ return;
+ nSize = pBuf->size();
+#else
char* pBuf = gfxFont->readEmbFontFile( m_pDoc->getXRef(), &nSize );
if( !pBuf )
return;
+#endif
// ---sync point--- see SYNC STREAMS above
fflush(stdout);
+#if POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
+ if( fwrite(pBuf->data(), sizeof(unsigned char), nSize, g_binary_out) != static_cast<size_t>(nSize) )
+ {
+#else
if( fwrite(pBuf, sizeof(char), nSize, g_binary_out) != static_cast<size_t>(nSize) )
{
gfree(pBuf);
+#endif
exit(1); // error
}
// ---sync point--- see SYNC STREAMS above
fflush(g_binary_out);
+#if !POPPLER_CHECK_VERSION(22, 04, 0) // readEmbFontFile signature changed
gfree(pBuf);
+#endif
}
#if POPPLER_CHECK_VERSION(0, 83, 0)
@@ -759,7 +782,11 @@ void PDFOutDev::updateFont(GfxState *sta
{
assert(state);
+#if POPPLER_CHECK_VERSION(22, 04, 0)
+ std::shared_ptr<GfxFont> gfxFont = state->getFont();
+#else
GfxFont *gfxFont = state->getFont();
+#endif
if( !gfxFont )
return;
@@ -776,7 +803,11 @@ void PDFOutDev::updateFont(GfxState *sta
m_aFontMap.find( fontID );
if( it == m_aFontMap.end() )
{
+#if POPPLER_CHECK_VERSION(22, 04, 0)
+ nEmbedSize = parseFont( fontID, gfxFont.get(), state );
+#else
nEmbedSize = parseFont( fontID, gfxFont, state );
+#endif
it = m_aFontMap.find( fontID );
}
@@ -806,7 +837,11 @@ void PDFOutDev::updateFont(GfxState *sta
if (nEmbedSize)
{
+#if POPPLER_CHECK_VERSION(22, 04, 0)
+ writeFontFile(gfxFont.get());
+#else
writeFontFile(gfxFont);
+#endif
}
}

@ -25,11 +25,11 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "PortfolioPerformance"; pname = "PortfolioPerformance";
version = "0.57.1"; version = "0.57.2";
src = fetchurl { src = fetchurl {
url = "https://github.com/buchen/portfolio/releases/download/${version}/PortfolioPerformance-${version}-linux.gtk.x86_64.tar.gz"; url = "https://github.com/buchen/portfolio/releases/download/${version}/PortfolioPerformance-${version}-linux.gtk.x86_64.tar.gz";
sha256 = "sha256-uEEFkHyApf+TObcu+Yo5vBOs2Erq0IXGhbjzlEe8NmI="; sha256 = "sha256-ftLKlNzr46iL/V+P3J1wtoUByGHHl7wrh4xctU4JYkM=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

@ -5,13 +5,13 @@
mkDerivation rec { mkDerivation rec {
pname = "qownnotes"; pname = "qownnotes";
version = "22.4.1"; version = "22.5.0";
src = fetchurl { src = fetchurl {
url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz"; url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
# Fetch the checksum of current version with curl: # Fetch the checksum of current version with curl:
# curl https://download.tuxfamily.org/qownnotes/src/qownnotes-<version>.tar.xz.sha256 # curl https://download.tuxfamily.org/qownnotes/src/qownnotes-<version>.tar.xz.sha256
sha256 = "b9ce77ecd5bb48bd6534068b0582dfaa3b828f800b19ddec80387a84e00766da"; sha256 = "52a81401a4a03c77e28f37f56c3ebdc6696ff43c75cc9330d10ba7e801f48ccd";
}; };
nativeBuildInputs = [ qmake qttools ]; nativeBuildInputs = [ qmake qttools ];

@ -84,6 +84,11 @@ mkDerivation rec {
url = "https://github.com/scribusproject/scribus/commit/48263954a7dee0be815b00f417ae365ab26cdd85.patch"; url = "https://github.com/scribusproject/scribus/commit/48263954a7dee0be815b00f417ae365ab26cdd85.patch";
sha256 = "1WE9kALFw79bQH88NUafXaZ1Y/vJEKTIWxlk5c+opsQ="; sha256 = "1WE9kALFw79bQH88NUafXaZ1Y/vJEKTIWxlk5c+opsQ=";
}) })
# For Poppler 22.04
(fetchpatch {
url = "https://github.com/scribusproject/scribus/commit/f2237b8f0b5cf7690e864a22ef7a63a6d769fa36.patch";
sha256 = "FXpLoX/a2Jy3GcfzrUUyVUfEAp5wAy2UfzfVA5lhwJw=";
})
]; ];
nativeBuildInputs = [ nativeBuildInputs = [

@ -7,13 +7,13 @@
}: }:
let let
version = "3.9.1"; version = "4.7.1";
pname = "timeular"; pname = "timeular";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "https://s3.amazonaws.com/timeular-desktop-packages/linux/production/Timeular-${version}.AppImage"; url = "https://s3.amazonaws.com/timeular-desktop-packages/linux/production/Timeular-${version}.AppImage";
sha256 = "103hy443p697jdkz6li8s1n6kg1r55jmiw2vbjz12kskf7njg4y4"; sha256 = "sha256:0k8ywbdb41imq10ya9y27zks67a6drjb1h0hn8ycd7a6z6703rjz";
}; };
appimageContents = appimageTools.extractType2 { appimageContents = appimageTools.extractType2 {
@ -35,7 +35,7 @@ in appimageTools.wrapType2 rec {
install -m 444 -D ${appimageContents}/timeular.desktop $out/share/applications/timeular.desktop install -m 444 -D ${appimageContents}/timeular.desktop $out/share/applications/timeular.desktop
install -m 444 -D ${appimageContents}/timeular.png $out/share/icons/hicolor/512x512/apps/timeular.png install -m 444 -D ${appimageContents}/timeular.png $out/share/icons/hicolor/512x512/apps/timeular.png
substituteInPlace $out/share/applications/timeular.desktop \ substituteInPlace $out/share/applications/timeular.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}' --replace "Exec=AppRun --no-sandbox %U" "Exec=$out/bin/${pname}"
''; '';
meta = with lib; { meta = with lib; {

@ -4,13 +4,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "verilator"; pname = "verilator";
version = "4.220"; version = "4.222";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-Y0j6j8kPCONlegFoWl46LXtfoiLhzMsHCVv+kLe7UyE="; sha256 = "sha256-AvjcStbiXDdhJnaSJJ5Mp6zscvaxhb+A2J+0gpm2rFI=";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

@ -1,17 +1,17 @@
{ lib, stdenv, fetchurl, pkg-config, openssl, libuuid, libmd, zlib, ncurses }: { lib, stdenv, fetchurl, pkg-config, openssl, libbsd, libuuid, libmd, zlib, ncurses }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "got"; pname = "got";
version = "0.68.1"; version = "0.69";
src = fetchurl { src = fetchurl {
url = "https://gameoftrees.org/releases/portable/got-portable-${version}.tar.gz"; url = "https://gameoftrees.org/releases/portable/got-portable-${version}.tar.gz";
sha256 = "122wignzrhsw00mfnh7mxcxvjyp9rk73yxzfyvmg7f5kmb0hng35"; sha256 = "1cnl0yk866wzjwgas587kvb08njq7db71b5xqsdrwd1varp010vm";
}; };
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl libuuid libmd zlib ncurses ]; buildInputs = [ openssl libbsd libuuid libmd zlib ncurses ];
doInstallCheck = true; doInstallCheck = true;

@ -36,6 +36,13 @@ python3.pkgs.buildPythonApplication rec {
url = "https://gitlab.gnome.org/GNOME/meld/-/commit/cc7746c141d976a4779cf868774fae1fe7627a6d.patch"; url = "https://gitlab.gnome.org/GNOME/meld/-/commit/cc7746c141d976a4779cf868774fae1fe7627a6d.patch";
sha256 = "sha256-4uJZyF00Z6svzrOebByZV1hutCZRkIQYC4rUxQr5fdQ="; sha256 = "sha256-4uJZyF00Z6svzrOebByZV1hutCZRkIQYC4rUxQr5fdQ=";
}) })
# Fix view not rendering with adwaita-icon-theme 42 due to removed icons.
# https://gitlab.gnome.org/GNOME/meld/-/merge_requests/83
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/meld/-/commit/f850cdf3eaf0f08abea003d5fae118a5e92a3d61.patch";
sha256 = "PaK8Rpv79UwMUligm9pIY16JW/dm7eVXntAwTV4hnbE=";
})
]; ];
nativeBuildInputs = [ nativeBuildInputs = [

@ -1,12 +1,38 @@
{ stdenv, fetchurl, lib, qtbase, qtmultimedia, qtscript, qtsensors, qtwebengine, qtwebkit, openssl, xkeyboard_config, patchelfUnstable, wrapQtAppsHook }: { stdenv
, fetchurl
, lib
, qtbase
, qtwebengine
, qtdeclarative
, qtwebchannel
, syntax-highlighting
, openssl
, xkeyboard_config
, patchelfUnstable
, wrapQtAppsHook
, writeText
}:
let
# This abomination exists because p4v calls CRYPTO_set_mem_functions and
# expects it to succeed. The function will fail if CRYPTO_malloc has already
# been called, which happens at init time via qtwebengine -> ... -> libssh. I
# suspect it was meant to work with a version of Qt where openssl is
# statically linked or some other library is used.
crypto-hack = writeText "crypto-hack.c" ''
#include <stddef.h>
int CRYPTO_set_mem_functions(
void *(*m)(size_t, const char *, int),
void *(*r)(void *, size_t, const char *, int),
void (*f)(void *, const char *, int)) { return 1; }
'';
stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "p4v"; pname = "p4v";
version = "2020.1.1966006"; version = "2021.3.2186916";
src = fetchurl { src = fetchurl {
url = "https://cdist2.perforce.com/perforce/r20.1/bin.linux26x86_64/p4v.tgz"; url = "http://web.archive.org/web/20211118024745/https://cdist2.perforce.com/perforce/r21.3/bin.linux26x86_64/p4v.tgz";
sha256 = "0zc70d7jgdrd2jli338n1h05hgb7jmmv8hvq205wh78vvllrlv10"; sha256 = "1zldg21xq4srww9pcfbv3p8320ghjnh333pz5r70z1gwbq4vf3jq";
}; };
dontBuild = true; dontBuild = true;
@ -15,11 +41,10 @@ stdenv.mkDerivation rec {
ldLibraryPath = lib.makeLibraryPath [ ldLibraryPath = lib.makeLibraryPath [
stdenv.cc.cc.lib stdenv.cc.cc.lib
qtbase qtbase
qtmultimedia
qtscript
qtsensors
qtwebengine qtwebengine
qtwebkit qtdeclarative
qtwebchannel
syntax-highlighting
openssl openssl
]; ];
@ -29,14 +54,17 @@ stdenv.mkDerivation rec {
cp -r bin $out cp -r bin $out
mkdir -p $out/lib mkdir -p $out/lib
cp -r lib/P4VResources $out/lib cp -r lib/P4VResources $out/lib
$CC -fPIC -shared -o $out/lib/libcrypto-hack.so ${crypto-hack}
for f in $out/bin/*.bin ; do for f in $out/bin/*.bin ; do
patchelf --set-rpath $ldLibraryPath --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $f patchelf --set-rpath $ldLibraryPath --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $f
# combining this with above breaks rpath (patchelf bug?) # combining this with above breaks rpath (patchelf bug?)
patchelf --add-needed libstdc++.so $f \ patchelf --add-needed libstdc++.so \
--add-needed $out/lib/libcrypto-hack.so \
--clear-symbol-version _ZNSt20bad_array_new_lengthD1Ev \ --clear-symbol-version _ZNSt20bad_array_new_lengthD1Ev \
--clear-symbol-version _ZTVSt20bad_array_new_length \ --clear-symbol-version _ZTVSt20bad_array_new_length \
--clear-symbol-version _ZTISt20bad_array_new_length \ --clear-symbol-version _ZTISt20bad_array_new_length \
--clear-symbol-version _ZdlPvm \
$f $f
wrapQtApp $f \ wrapQtApp $f \
--suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb

@ -346,6 +346,9 @@ crate_: lib.makeOverridable
outputs = if buildTests then [ "out" ] else [ "out" "lib" ]; outputs = if buildTests then [ "out" ] else [ "out" "lib" ];
outputDev = if buildTests then [ "out" ] else [ "lib" ]; outputDev = if buildTests then [ "out" ] else [ "lib" ];
meta = {
mainProgram = crateName;
};
} // extraDerivationAttrs } // extraDerivationAttrs
) )
) )

@ -1 +1 @@
WGET_ARGS=( https://download.kde.org/stable/plasma/5.24.4/ -A '*.tar.xz' ) WGET_ARGS=( https://download.kde.org/stable/plasma/5.24.5/ -A '*.tar.xz' )

@ -4,427 +4,427 @@
{ {
bluedevil = { bluedevil = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/bluedevil-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/bluedevil-5.24.5.tar.xz";
sha256 = "1mph04r6l9bxml1brwifbnk6lkjxkzxx75b3g3myzijjv6f8wxw3"; sha256 = "1yhynfpgm2cwvimh63hihg5dm0hzjp20364bvjyyh108830rjsf9";
name = "bluedevil-5.24.4.tar.xz"; name = "bluedevil-5.24.5.tar.xz";
}; };
}; };
breeze = { breeze = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/breeze-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/breeze-5.24.5.tar.xz";
sha256 = "01cqji6figwb95drcq9vrqlkv7xmpn2csbi2mvixbcdawqhywsg3"; sha256 = "18zhm9my0vhwiq95v3p48z8s5m4a5c7kw8n144ykqlm51nssc9c5";
name = "breeze-5.24.4.tar.xz"; name = "breeze-5.24.5.tar.xz";
}; };
}; };
breeze-grub = { breeze-grub = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/breeze-grub-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/breeze-grub-5.24.5.tar.xz";
sha256 = "1p154g2x1g00iam2gkv7pml1r0b91b21s8fgrfrqg5pj45ysp5bc"; sha256 = "02lcv23l3zr0g6nggmrxz4pgq852fir9yramhaxmcg634pxiacni";
name = "breeze-grub-5.24.4.tar.xz"; name = "breeze-grub-5.24.5.tar.xz";
}; };
}; };
breeze-gtk = { breeze-gtk = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/breeze-gtk-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/breeze-gtk-5.24.5.tar.xz";
sha256 = "0s51azc2xmh7agbqlm9rn39c5qh6rfwyc2dq4sfv6vspm1883zmj"; sha256 = "0c25z69lyjczm05jraqk2f09sipkhpsz5zirwzqdq3apip06qw93";
name = "breeze-gtk-5.24.4.tar.xz"; name = "breeze-gtk-5.24.5.tar.xz";
}; };
}; };
breeze-plymouth = { breeze-plymouth = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/breeze-plymouth-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/breeze-plymouth-5.24.5.tar.xz";
sha256 = "038pglghl40nyq6lzydijy3wnr5agvfzddjxrf6lc9m6qapqd37v"; sha256 = "044sbffr4sqvgkfbraa4rvlsih7zz9b300hipp33mwhpzyjjcpdc";
name = "breeze-plymouth-5.24.4.tar.xz"; name = "breeze-plymouth-5.24.5.tar.xz";
}; };
}; };
discover = { discover = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/discover-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/discover-5.24.5.tar.xz";
sha256 = "0smhys51chvjh2ij4mk03cfnq09n8cq22iag1ld9j2125l5iwa99"; sha256 = "18a8z9ifyyjmmc620dsh491vb1q3q9bxd8gfjf5k87mgwmg1wmwk";
name = "discover-5.24.4.tar.xz"; name = "discover-5.24.5.tar.xz";
}; };
}; };
drkonqi = { drkonqi = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/drkonqi-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/drkonqi-5.24.5.tar.xz";
sha256 = "1yn7yj8nwnxm1s0si2353wl17jv7c7l5dc7833ndl56phv2999x0"; sha256 = "1ps1p8pvp51rswynbv337qr3qj2z7r7kd9qpxgcrha9pql01h5gy";
name = "drkonqi-5.24.4.tar.xz"; name = "drkonqi-5.24.5.tar.xz";
}; };
}; };
kactivitymanagerd = { kactivitymanagerd = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kactivitymanagerd-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kactivitymanagerd-5.24.5.tar.xz";
sha256 = "0aamfgc4bdrysq7ps134pf5v4bgiwrsxffi0nb6d8zazswgkfa41"; sha256 = "0j6d50cjry4j3vzxb6hd4w95y2h3l0yfhyrhl693njr64aq7d4pa";
name = "kactivitymanagerd-5.24.4.tar.xz"; name = "kactivitymanagerd-5.24.5.tar.xz";
}; };
}; };
kde-cli-tools = { kde-cli-tools = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kde-cli-tools-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kde-cli-tools-5.24.5.tar.xz";
sha256 = "1w2rhz32xaqhmq5lyvfmjrbssqf9f35k5fk02f05fz79yk9wir7z"; sha256 = "0afksrxd6mq9rcvh3g8y05kl0la4wmn1yksif8p1bcxpd4sdvw77";
name = "kde-cli-tools-5.24.4.tar.xz"; name = "kde-cli-tools-5.24.5.tar.xz";
}; };
}; };
kde-gtk-config = { kde-gtk-config = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kde-gtk-config-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kde-gtk-config-5.24.5.tar.xz";
sha256 = "02spbx2rniiyvzj4qb6lgzj0f83k4vq53fk4i1m45438z7aslymi"; sha256 = "0sg8kqlkklvjhj69z5wzhvi0hddxa192j4vc4wc9hmfl1wirr8cq";
name = "kde-gtk-config-5.24.4.tar.xz"; name = "kde-gtk-config-5.24.5.tar.xz";
}; };
}; };
kdecoration = { kdecoration = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kdecoration-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kdecoration-5.24.5.tar.xz";
sha256 = "05ccyb314mxf0d4ivj71l9lh13s3fqr7f4d2rmg6qshsql39569c"; sha256 = "1hjjl6k09zi8n9nblbcm69c3br6d4dhzaw55xyygglaz6kb8fc17";
name = "kdecoration-5.24.4.tar.xz"; name = "kdecoration-5.24.5.tar.xz";
}; };
}; };
kdeplasma-addons = { kdeplasma-addons = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kdeplasma-addons-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kdeplasma-addons-5.24.5.tar.xz";
sha256 = "03b8d3kdzwpyqrqkmpswryksrhav3mwcnbyzdc3g2kpk2qnx68fp"; sha256 = "03p8wmsb5nl7j6kwl6j8nwlf6v7snh933jyglgp2vnclqp1jpd9x";
name = "kdeplasma-addons-5.24.4.tar.xz"; name = "kdeplasma-addons-5.24.5.tar.xz";
}; };
}; };
kgamma5 = { kgamma5 = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kgamma5-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kgamma5-5.24.5.tar.xz";
sha256 = "0z1zrw5id455idjbaqracs1vcwgs93an7w27ggfqs6i8nabrivbk"; sha256 = "1i7i3dc5qfb3v9hz9w9hszr8jbbdbfq0b59a4bh1p6xakxx8k1l0";
name = "kgamma5-5.24.4.tar.xz"; name = "kgamma5-5.24.5.tar.xz";
}; };
}; };
khotkeys = { khotkeys = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/khotkeys-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/khotkeys-5.24.5.tar.xz";
sha256 = "033dgz8wbsw2nj133hnmygz1izmcpxdn80jbjbm66nhbbyq7bb2s"; sha256 = "06m7yrs75arwdfrkpkn9b5kiz2xlrsxlpsjr18j1pjhxras0f8vs";
name = "khotkeys-5.24.4.tar.xz"; name = "khotkeys-5.24.5.tar.xz";
}; };
}; };
kinfocenter = { kinfocenter = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kinfocenter-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kinfocenter-5.24.5.tar.xz";
sha256 = "0f5q6ajyd794p1z9j3il8sajlqkdcnf06xq4612qxdp49nb88nyw"; sha256 = "0c2bq7m8c9r17s8qalp4cdz1qimzwnvh9wrba4rqcmxwbv043ln1";
name = "kinfocenter-5.24.4.tar.xz"; name = "kinfocenter-5.24.5.tar.xz";
}; };
}; };
kmenuedit = { kmenuedit = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kmenuedit-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kmenuedit-5.24.5.tar.xz";
sha256 = "0ril8jxqkaavc4bkpksnyxn3bww7b81gnp9bnb17acrr2nd7wyhl"; sha256 = "02il6bhayjni0jsx1d1cnmxv5yc7r0d02s2v6cs87fbdrnl7d9vq";
name = "kmenuedit-5.24.4.tar.xz"; name = "kmenuedit-5.24.5.tar.xz";
}; };
}; };
kscreen = { kscreen = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kscreen-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kscreen-5.24.5.tar.xz";
sha256 = "0shvhymdfxw1gz49y1s79zik9kkg5qh0mqdj6dx0s6r3w6vysj1h"; sha256 = "1g5mlc78giq8zrpyq6d2jhqgyj6yh2nhbqv6wjm9cdbq4nnm3hyr";
name = "kscreen-5.24.4.tar.xz"; name = "kscreen-5.24.5.tar.xz";
}; };
}; };
kscreenlocker = { kscreenlocker = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kscreenlocker-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kscreenlocker-5.24.5.tar.xz";
sha256 = "1xzc80awsapsg65kk21ssp7y0jb374k1w2bb7gvzj8j40rrn48pv"; sha256 = "13prkdwxd200ps4cy6rf2n4g9ll6fp1f93dk1njr9ilzbj2a2w1j";
name = "kscreenlocker-5.24.4.tar.xz"; name = "kscreenlocker-5.24.5.tar.xz";
}; };
}; };
ksshaskpass = { ksshaskpass = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/ksshaskpass-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/ksshaskpass-5.24.5.tar.xz";
sha256 = "1pa41w793dbi3rv6mm1a4xp46n80qwdpdlwhi6z4x76hjvqx9i9l"; sha256 = "1jw3hfnlplqsss1h49p5f3722qc22ln22sahs5ypsxszmqihpqiz";
name = "ksshaskpass-5.24.4.tar.xz"; name = "ksshaskpass-5.24.5.tar.xz";
}; };
}; };
ksystemstats = { ksystemstats = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/ksystemstats-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/ksystemstats-5.24.5.tar.xz";
sha256 = "1pa7xrw5ij32bm66pn72zkzz8y70fq71n4kigm9ixc1s2glkbiwd"; sha256 = "1xsrlwm1hhagwjyjm240bfmri24z88v95m9pz95dpbcllkwdib0b";
name = "ksystemstats-5.24.4.tar.xz"; name = "ksystemstats-5.24.5.tar.xz";
}; };
}; };
kwallet-pam = { kwallet-pam = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kwallet-pam-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kwallet-pam-5.24.5.tar.xz";
sha256 = "0s6z7ds42a7kba25jd7pzylw7d2mc27xgymmdrpkg2afqanf3m4r"; sha256 = "1smclklxcfbxxxi3lgw2p6wmvj50fg40323j1b8p5z731ywdk3i3";
name = "kwallet-pam-5.24.4.tar.xz"; name = "kwallet-pam-5.24.5.tar.xz";
}; };
}; };
kwayland-integration = { kwayland-integration = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kwayland-integration-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kwayland-integration-5.24.5.tar.xz";
sha256 = "1cnfb81yv6m37m2kyk523skqbk5in1kpbpxq60ivjri91sm4pryj"; sha256 = "1v12631xdjdp2wkjvyls8g0sv18amy7g4mddrh45pybhpc3rcsl0";
name = "kwayland-integration-5.24.4.tar.xz"; name = "kwayland-integration-5.24.5.tar.xz";
}; };
}; };
kwayland-server = { kwayland-server = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kwayland-server-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kwayland-server-5.24.5.tar.xz";
sha256 = "1279nqhy1qyz84dkn23rvzak8bg71hbrp09jlhv9mkjdb3bhnyfi"; sha256 = "0ydj6p489psqblqd88lk04q62qn1spa1m0zdjq8d32a4g4lvxnid";
name = "kwayland-server-5.24.4.tar.xz"; name = "kwayland-server-5.24.5.tar.xz";
}; };
}; };
kwin = { kwin = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kwin-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kwin-5.24.5.tar.xz";
sha256 = "1qwcd6iw6yvpchiwmvq5nwsr465jmrmscf286mjrc65im4hj6572"; sha256 = "10mgbs1mbhjzbwx07q77wdzhj11yc156j75fbvy8mszb9hjiappk";
name = "kwin-5.24.4.tar.xz"; name = "kwin-5.24.5.tar.xz";
}; };
}; };
kwrited = { kwrited = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/kwrited-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/kwrited-5.24.5.tar.xz";
sha256 = "0j86ih4g762a94cyzilcbigh7iv04a80bqrlxm02fbqhffv01mv2"; sha256 = "0gfjvj8wnfgb3s2daz7xpg9flc8xv6hk12z6ckbchq71w4gs6132";
name = "kwrited-5.24.4.tar.xz"; name = "kwrited-5.24.5.tar.xz";
}; };
}; };
layer-shell-qt = { layer-shell-qt = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/layer-shell-qt-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/layer-shell-qt-5.24.5.tar.xz";
sha256 = "03qyf6pvk36ig6ilimq02q19frdlsmrkbng2iz3d59k15zdrz5x0"; sha256 = "0ydjfxrkmpi052gfhkccsp9m5az3z6qiggb5wx6cjz39q06614gm";
name = "layer-shell-qt-5.24.4.tar.xz"; name = "layer-shell-qt-5.24.5.tar.xz";
}; };
}; };
libkscreen = { libkscreen = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/libkscreen-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/libkscreen-5.24.5.tar.xz";
sha256 = "1xv7vml5lxj1lnansisfbfym35h265ggwsyjplz76aibj5nyqv81"; sha256 = "1jbgq1ddl0q5y8cx4m7k5q38gl0kxv929wxr3hn3vr906fpiiwbz";
name = "libkscreen-5.24.4.tar.xz"; name = "libkscreen-5.24.5.tar.xz";
}; };
}; };
libksysguard = { libksysguard = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/libksysguard-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/libksysguard-5.24.5.tar.xz";
sha256 = "00i4l2kc02wymmiqh7wam8dp4h9hvn8nsxfv258waq7pnxzjmnkn"; sha256 = "1v21xckvwx6xkiqihv3pc2ps5mmc4ahp5vadxm3lrh0pdqxb6v5h";
name = "libksysguard-5.24.4.tar.xz"; name = "libksysguard-5.24.5.tar.xz";
}; };
}; };
milou = { milou = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/milou-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/milou-5.24.5.tar.xz";
sha256 = "0z7kmygvjzj30llwg8gpibjja2gzc09nh9pxrpy78pa1jxnas29i"; sha256 = "1rh5zy1x427cv07zmikmh0rmviz7vcvnz2pyravyfzaxay5lwnf1";
name = "milou-5.24.4.tar.xz"; name = "milou-5.24.5.tar.xz";
}; };
}; };
oxygen = { oxygen = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/oxygen-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/oxygen-5.24.5.tar.xz";
sha256 = "1d3sz2qc1cz9x6g04r0scvw9fmrazfn5v3iav4cn7wdkz8x06kc0"; sha256 = "1gh06wwm6gdjpsbjlxnrrlgsfd5w7lb0pddcml9l2w0dvlgfyn1v";
name = "oxygen-5.24.4.tar.xz"; name = "oxygen-5.24.5.tar.xz";
}; };
}; };
plasma-browser-integration = { plasma-browser-integration = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-browser-integration-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-browser-integration-5.24.5.tar.xz";
sha256 = "1havd775d4x2y36nkba2k6vdf839dspk10mxccnk2wkhdxmzfyk7"; sha256 = "1xybyn6vsahr5j0g57bsfxmz78w35ibzavcax1inrdlnb7sblrqv";
name = "plasma-browser-integration-5.24.4.tar.xz"; name = "plasma-browser-integration-5.24.5.tar.xz";
}; };
}; };
plasma-desktop = { plasma-desktop = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-desktop-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-desktop-5.24.5.tar.xz";
sha256 = "09fhqz2sp4caabr1li1shjd8l052vp4d10ci7pwsqj8f61331qmh"; sha256 = "0iic01iwg4bkp8sfp4mbm5lvbj98wjcyi0k79jfr1sx78dn7jn5g";
name = "plasma-desktop-5.24.4.tar.xz"; name = "plasma-desktop-5.24.5.tar.xz";
}; };
}; };
plasma-disks = { plasma-disks = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-disks-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-disks-5.24.5.tar.xz";
sha256 = "1mi5fp3305kjw41zhbccxyg666gcmmrvckipjhnnnfwd3gl372ng"; sha256 = "1x3lm5cnwa51i8kcmp7pq29fpa9za3ypsmmldf2jbisawjnrb50k";
name = "plasma-disks-5.24.4.tar.xz"; name = "plasma-disks-5.24.5.tar.xz";
}; };
}; };
plasma-firewall = { plasma-firewall = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-firewall-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-firewall-5.24.5.tar.xz";
sha256 = "0f9g5m2ddbp2axfxqc4d92fzg6r4z1l56i6nsry6nlz6cqky3fm2"; sha256 = "0mk9plb1rwng77qy55c7y7ga4fkafan89bf4vqsc4i9nfn49d944";
name = "plasma-firewall-5.24.4.tar.xz"; name = "plasma-firewall-5.24.5.tar.xz";
}; };
}; };
plasma-integration = { plasma-integration = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-integration-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-integration-5.24.5.tar.xz";
sha256 = "1d2d7cmhdhmdzs91vpc2p3fg413daqhqilp8d2qbpsks5hyrkm3k"; sha256 = "0ynzx99jn4fqzbrv9mav0sw06rzf7mm1rv17g17vsxijwbhr0i6d";
name = "plasma-integration-5.24.4.tar.xz"; name = "plasma-integration-5.24.5.tar.xz";
}; };
}; };
plasma-mobile = { plasma-mobile = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-mobile-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-mobile-5.24.5.tar.xz";
sha256 = "1hgcnb4flw224j57fxkhaiwapymq6ccjwqj8s6jgqzc3ax0py0vr"; sha256 = "0400rwx4pbz4kfy06f2vxchlf9vr6dx71wsi6vir3vdmvl43yazd";
name = "plasma-mobile-5.24.4.tar.xz"; name = "plasma-mobile-5.24.5.tar.xz";
}; };
}; };
plasma-nano = { plasma-nano = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-nano-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-nano-5.24.5.tar.xz";
sha256 = "1fdq4r5zlkf3qb0a47zv3apgnqs4gqqfj8pdlcmzkyn9xykzs9vw"; sha256 = "0zxvqzg1p6ci6581bh4nhsq2p6pq66pmvs93zlj89ml4am176213";
name = "plasma-nano-5.24.4.tar.xz"; name = "plasma-nano-5.24.5.tar.xz";
}; };
}; };
plasma-nm = { plasma-nm = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-nm-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-nm-5.24.5.tar.xz";
sha256 = "0bzc48vdrnd6n9qcm8ms7wrjm2yl7h9dik32arwdxx56vb7jhv08"; sha256 = "0adl5wfrz16hc7j64830cx1ga0bh9zd8bff95a30zdiggp7jc45f";
name = "plasma-nm-5.24.4.tar.xz"; name = "plasma-nm-5.24.5.tar.xz";
}; };
}; };
plasma-pa = { plasma-pa = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-pa-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-pa-5.24.5.tar.xz";
sha256 = "09fkaq2zzicgr214zi2wf7cirffm7mwh55bivvafblp1wlavkrgz"; sha256 = "1lgq2lydl65bh01043ji7kkignrb5lfcvbhy0g4g7lw778whv3q6";
name = "plasma-pa-5.24.4.tar.xz"; name = "plasma-pa-5.24.5.tar.xz";
}; };
}; };
plasma-sdk = { plasma-sdk = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-sdk-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-sdk-5.24.5.tar.xz";
sha256 = "1zkggp9a1yz5mwwvndizwlan6wlb2fy8n940ljnhldccl91mgwzc"; sha256 = "0d35sckjvi77b3475pfh1ixdsdx0m7b0hbsx5rbjgj4b05cdpm0w";
name = "plasma-sdk-5.24.4.tar.xz"; name = "plasma-sdk-5.24.5.tar.xz";
}; };
}; };
plasma-systemmonitor = { plasma-systemmonitor = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-systemmonitor-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-systemmonitor-5.24.5.tar.xz";
sha256 = "0jcsmmg0asf2npl3f1nbzazz3i8m9b34q55088k8jjakwwxqbwhz"; sha256 = "1vx0w5kmnp3chhydas7ijy8h1xf6dggd1ryhbr3k9qz2qihxfsqm";
name = "plasma-systemmonitor-5.24.4.tar.xz"; name = "plasma-systemmonitor-5.24.5.tar.xz";
}; };
}; };
plasma-tests = { plasma-tests = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-tests-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-tests-5.24.5.tar.xz";
sha256 = "1ms298h9wghj9gpi7laf1dsd7s3yiycy44k4s5v4id8vfarnbs27"; sha256 = "1aqmmix0ds9vg4cjj8dagaya10ainhcciixamdylz1p7vgzpsrkx";
name = "plasma-tests-5.24.4.tar.xz"; name = "plasma-tests-5.24.5.tar.xz";
}; };
}; };
plasma-thunderbolt = { plasma-thunderbolt = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-thunderbolt-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-thunderbolt-5.24.5.tar.xz";
sha256 = "1cqabdsg8v8b00ppbabrg2gih16lf79lr5i8mqvjnc73npacvzhy"; sha256 = "1q0r9l2b06qkbyxa25lvqdwz0rgcjvp48gwkw0xhhaf6fyaai1cl";
name = "plasma-thunderbolt-5.24.4.tar.xz"; name = "plasma-thunderbolt-5.24.5.tar.xz";
}; };
}; };
plasma-vault = { plasma-vault = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-vault-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-vault-5.24.5.tar.xz";
sha256 = "0rj9z2c52mya2fjm4bimqz5z3lj2qg764zri6bqwrgwgsjwc4s81"; sha256 = "16cyzyfzwqwqsg7hhg576acvxvbd12b7mznvicrrqnyf4wvw68l1";
name = "plasma-vault-5.24.4.tar.xz"; name = "plasma-vault-5.24.5.tar.xz";
}; };
}; };
plasma-workspace = { plasma-workspace = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-workspace-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-workspace-5.24.5.tar.xz";
sha256 = "0w7cnawnpcg5zk9bycjcnc8yfz21whrhd9h2z7hizgfnj2q403jv"; sha256 = "1xk4424az7sgb0kyysr1s2x756vj4km50xxzkn1s1kxyw28jd4dr";
name = "plasma-workspace-5.24.4.tar.xz"; name = "plasma-workspace-5.24.5.tar.xz";
}; };
}; };
plasma-workspace-wallpapers = { plasma-workspace-wallpapers = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plasma-workspace-wallpapers-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plasma-workspace-wallpapers-5.24.5.tar.xz";
sha256 = "0hpg7nn5wsn56my48jk225x1qb70sgf3hf8q5swwqc1xc6xzcg14"; sha256 = "0aabmd4zswmzdy958y1yq0yp1v9i8kzl959d6r4pwi0lmhr6g6qi";
name = "plasma-workspace-wallpapers-5.24.4.tar.xz"; name = "plasma-workspace-wallpapers-5.24.5.tar.xz";
}; };
}; };
plymouth-kcm = { plymouth-kcm = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/plymouth-kcm-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/plymouth-kcm-5.24.5.tar.xz";
sha256 = "0s5h25vyk5yzipwj91rb62xzgi6aafpwikh7ibpmmh2wn71x3amr"; sha256 = "04m4129hxgq4g9v8gvi8q0hzhqzd866j3j1ffxs5vfd27r155wcr";
name = "plymouth-kcm-5.24.4.tar.xz"; name = "plymouth-kcm-5.24.5.tar.xz";
}; };
}; };
polkit-kde-agent = { polkit-kde-agent = {
version = "1-5.24.4"; version = "1-5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/polkit-kde-agent-1-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/polkit-kde-agent-1-5.24.5.tar.xz";
sha256 = "1bc5ss6v4d7kwk1chhvpis5srs8lfypims46wgxjncyhjg2lcllm"; sha256 = "0w78c59nm71xnd5prm035z94r5bzlqr0fyri43a8vrfyyb21r9l9";
name = "polkit-kde-agent-1-5.24.4.tar.xz"; name = "polkit-kde-agent-1-5.24.5.tar.xz";
}; };
}; };
powerdevil = { powerdevil = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/powerdevil-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/powerdevil-5.24.5.tar.xz";
sha256 = "0sjlx5fhfdld1i352adi2bhyd29ja9lbmzhfxgnvmpfl6q7c0w7g"; sha256 = "1wr3rk318j93rnyh24icl4yxdj40zasymlddc71ram80fswa2k4n";
name = "powerdevil-5.24.4.tar.xz"; name = "powerdevil-5.24.5.tar.xz";
}; };
}; };
qqc2-breeze-style = { qqc2-breeze-style = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/qqc2-breeze-style-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/qqc2-breeze-style-5.24.5.tar.xz";
sha256 = "1d0cgsxvnm0zza7n5hz47n28yrr35hp0vniggifncm0ag8sn0kmd"; sha256 = "1m0xnx46zkv1dlwkgns1ibgsl934jbcfz35jlm4p8l6n1y2jcjyg";
name = "qqc2-breeze-style-5.24.4.tar.xz"; name = "qqc2-breeze-style-5.24.5.tar.xz";
}; };
}; };
sddm-kcm = { sddm-kcm = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/sddm-kcm-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/sddm-kcm-5.24.5.tar.xz";
sha256 = "0pfqp5das7pxpmh111i2dlfqm6xzzd99bcb32bbmd9v6w2wlgwxy"; sha256 = "15z5hfpczi73vqjfj9z2ai2r4187fyrvfnikcfb18g2bdh1n54ng";
name = "sddm-kcm-5.24.4.tar.xz"; name = "sddm-kcm-5.24.5.tar.xz";
}; };
}; };
systemsettings = { systemsettings = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/systemsettings-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/systemsettings-5.24.5.tar.xz";
sha256 = "0cqm7s89jvzqz1fw32284ppnm3dc69yvc8bqqgw5jdbbjnc1z4k9"; sha256 = "1rg9zx7fhrg91nlarv0cz384agbik47sccj7hhshnxnq1czvawjv";
name = "systemsettings-5.24.4.tar.xz"; name = "systemsettings-5.24.5.tar.xz";
}; };
}; };
xdg-desktop-portal-kde = { xdg-desktop-portal-kde = {
version = "5.24.4"; version = "5.24.5";
src = fetchurl { src = fetchurl {
url = "${mirror}/stable/plasma/5.24.4/xdg-desktop-portal-kde-5.24.4.tar.xz"; url = "${mirror}/stable/plasma/5.24.5/xdg-desktop-portal-kde-5.24.5.tar.xz";
sha256 = "07nwb6ff8rnlk2play9gar52d8d44b8y412hnx9a9d4b50b4js0i"; sha256 = "1zn6wln8pccj1x3labms7xippn6xgv4aamwpmzk2rvwss9jwz75m";
name = "xdg-desktop-portal-kde-5.24.4.tar.xz"; name = "xdg-desktop-portal-kde-5.24.5.tar.xz";
}; };
}; };
} }

@ -31,13 +31,13 @@
let let
hip = stdenv.mkDerivation rec { hip = stdenv.mkDerivation rec {
pname = "hip"; pname = "hip";
version = "5.0.2"; version = "5.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ROCm-Developer-Tools"; owner = "ROCm-Developer-Tools";
repo = "HIP"; repo = "HIP";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-w023vBLJaiFbRdvz9UfZLPasRjk3VqM9zwctCIJ5hGU="; hash = "sha256-/kIZrbzq1u1pIs1jlmRYZNUGteqVQTI4TlXsHsVIUKE=";
}; };
# - fix bash paths # - fix bash paths
@ -102,13 +102,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "hip"; pname = "hip";
version = "5.0.2"; version = "5.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ROCm-Developer-Tools"; owner = "ROCm-Developer-Tools";
repo = "hipamd"; repo = "hipamd";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-hhTwKG0wDpbIBI8S61AhdNldX+STO8C66xi2EzmJSBs="; hash = "sha256-TuCMRJb6G/bhD8hG6Ot7MIkgBoShjVboeXrlGh9eYpQ=";
}; };
nativeBuildInputs = [ cmake python3 makeWrapper perl ]; nativeBuildInputs = [ cmake python3 makeWrapper perl ];

@ -9,6 +9,8 @@
, lld_11 , lld_11
, opencl-clang , opencl-clang
, python3 , python3
, spirv-tools
, spirv-headers
, spirv-llvm-translator , spirv-llvm-translator
, buildWithPatches ? true , buildWithPatches ? true
@ -18,8 +20,8 @@ let
vc_intrinsics_src = fetchFromGitHub { vc_intrinsics_src = fetchFromGitHub {
owner = "intel"; owner = "intel";
repo = "vc-intrinsics"; repo = "vc-intrinsics";
rev = "e5ad7e02aa4aa21a3cd7b3e5d1f3ec9b95f58872"; rev = "v0.3.0";
sha256 = "Vg1mngwpIQ3Tik0GgRXPG22lE4sLEAEFch492G2aIXs="; sha256 = "sha256-1Rm4TCERTOcPGWJF+yNoKeB9x3jfqnh7Vlv+0Xpmjbk=";
}; };
llvmPkgs = llvmPackages_11 // { llvmPkgs = llvmPackages_11 // {
inherit spirv-llvm-translator; inherit spirv-llvm-translator;
@ -31,18 +33,18 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "intel-graphics-compiler"; pname = "intel-graphics-compiler";
version = "1.0.8744"; version = "1.0.11061";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "intel"; owner = "intel";
repo = "intel-graphics-compiler"; repo = "intel-graphics-compiler";
rev = "igc-${version}"; rev = "igc-${version}";
sha256 = "G5+dYD8uZDPkRyn1sgXsRngdq4NJndiCJCYTRXyUgTA="; sha256 = "sha256-qS/+GTqHtp3T6ggPKrCDsrTb7XvVOUaNbMzGU51jTu4=";
}; };
nativeBuildInputs = [ clang cmake bison flex python3 ]; nativeBuildInputs = [ clang cmake bison flex python3 ];
buildInputs = [ clang opencl-clang spirv-llvm-translator llvm lld_11 ]; buildInputs = [ spirv-headers spirv-tools clang opencl-clang spirv-llvm-translator llvm lld_11 ];
strictDeps = true; strictDeps = true;
@ -52,6 +54,21 @@ stdenv.mkDerivation rec {
# https://github.com/intel/intel-graphics-compiler/issues/98 # https://github.com/intel/intel-graphics-compiler/issues/98
doCheck = false; doCheck = false;
patchPhase = ''
substituteInPlace ./external/SPIRV-Tools/CMakeLists.txt \
--replace '$'''{SPIRV-Tools_DIR}../../..' \
'${spirv-tools}' \
--replace 'SPIRV-Headers_INCLUDE_DIR "/usr/include"' \
'SPIRV-Headers_INCLUDE_DIR "${spirv-headers}/include"' \
--replace 'set_target_properties(SPIRV-Tools' \
'set_target_properties(SPIRV-Tools-shared' \
--replace 'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools' \
'IGC_BUILD__PROJ__SPIRV-Tools SPIRV-Tools-shared'
substituteInPlace ./IGC/AdaptorOCL/igc-opencl.pc.in \
--replace '/@CMAKE_INSTALL_INCLUDEDIR@' "/include" \
--replace '/@CMAKE_INSTALL_LIBDIR@' "/lib"
'';
# Handholding the braindead build script # Handholding the braindead build script
# cmake requires an absolute path # cmake requires an absolute path
prebuilds = runCommandLocal "igc-cclang-prebuilds" { } '' prebuilds = runCommandLocal "igc-cclang-prebuilds" { } ''
@ -64,7 +81,9 @@ stdenv.mkDerivation rec {
''; '';
cmakeFlags = [ cmakeFlags = [
"-Wno-dev"
"-DVC_INTRINSICS_SRC=${vc_intrinsics_src}" "-DVC_INTRINSICS_SRC=${vc_intrinsics_src}"
"-DIGC_OPTION__SPIRV_TOOLS_MODE=Prebuilds"
"-DINSTALL_SPIRVDLL=0" "-DINSTALL_SPIRVDLL=0"
"-DCCLANG_BUILD_PREBUILDS=ON" "-DCCLANG_BUILD_PREBUILDS=ON"
"-DCCLANG_BUILD_PREBUILDS_DIR=${prebuilds}" "-DCCLANG_BUILD_PREBUILDS_DIR=${prebuilds}"

@ -1,12 +1,12 @@
{ stdenv, lib, buildPackages, fetchFromGitHub, callPackage, wrapCCWith, overrideCC }: { stdenv, lib, buildPackages, fetchFromGitHub, callPackage, wrapCCWith, overrideCC }:
let let
version = "5.0.2"; version = "5.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "llvm-project"; repo = "llvm-project";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-wPzwbeQUFE6RAytrz5lBa6UUPoVL0UeMyY3qa4M6W6M="; hash = "sha256-5SGIWiyfHvfwIUc4bhdWrlhBfK5ssA7tm5r3zKdr3kg=";
}; };
in rec { in rec {
clang = wrapCCWith rec { clang = wrapCCWith rec {
@ -52,12 +52,10 @@ in rec {
}; };
lld = callPackage ./lld.nix { lld = callPackage ./lld.nix {
inherit llvm version; inherit llvm src version;
src = "${src}/lld";
}; };
llvm = callPackage ./llvm { llvm = callPackage ./llvm {
inherit version; inherit src version;
src = "${src}/llvm";
}; };
} }

@ -3,6 +3,7 @@
, cmake , cmake
, libxml2 , libxml2
, llvm , llvm
, ninja
, version , version
, src , src
@ -11,15 +12,17 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
inherit version src; inherit version src;
sourceRoot = "${src.name}/lld";
pname = "lld"; pname = "lld";
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ninja ];
buildInputs = [ libxml2 llvm ]; buildInputs = [ libxml2 llvm ];
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
cmakeFlags = [ "-DLLVM_MAIN_SRC_DIR=${llvm.src}" ]; cmakeFlags = [ "-DLLVM_MAIN_SRC_DIR=${src}/llvm" ];
postInstall = '' postInstall = ''
moveToOutput include "$dev" moveToOutput include "$dev"

@ -28,6 +28,8 @@ in stdenv.mkDerivation rec {
pname = "rocm-llvm"; pname = "rocm-llvm";
sourceRoot = "${src.name}/llvm";
outputs = [ "out" "python" ] outputs = [ "out" "python" ]
++ lib.optional enableSharedLibraries "lib"; ++ lib.optional enableSharedLibraries "lib";

@ -12,14 +12,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "open-watcom-v2"; pname = "open-watcom-v2";
version = "unstable-2022-04-29"; version = "unstable-2022-05-03";
name = "${pname}-unwrapped-${version}"; name = "${pname}-unwrapped-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "open-watcom"; owner = "open-watcom";
repo = "open-watcom-v2"; repo = "open-watcom-v2";
rev = "520d9d7025b46b926123257b029b3dbce9a96065"; rev = "a927247a40e69261e7d8891b6f002c91450e01f2";
sha256 = "aACkkTzOH8F82GPyySjtb7CGozR8OjgzqZVRiNTiS10="; sha256 = "/CuPNCEoSjxwYL07b07XqnaAeFZGS8NjXBuj+gFCsOA=";
}; };
postPatch = '' postPatch = ''

@ -4,29 +4,42 @@
, pkg-config , pkg-config
, lit , lit
, llvm_11 , llvm_11
, spirv-headers
, spirv-tools
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "SPIRV-LLVM-Translator"; pname = "SPIRV-LLVM-Translator";
version = "unstable-2021-06-13"; version = "unstable-2022-05-04";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "KhronosGroup"; owner = "KhronosGroup";
repo = "SPIRV-LLVM-Translator"; repo = "SPIRV-LLVM-Translator";
rev = "c67e6f26a7285aa753598ef792593ac4a545adf9"; rev = "99420daab98998a7e36858befac9c5ed109d4920";
sha256 = "sha256-1s3lVNTQDl+pUvbzSMsp3cOUSm6I4DzqJxnLMeeE3F4="; sha256 = "sha256-/vUyL6Wh8hykoGz1QmT1F7lfGDEmG4U3iqmqrJxizOg=";
}; };
nativeBuildInputs = [ pkg-config cmake llvm_11.dev ]; nativeBuildInputs = [ pkg-config cmake llvm_11.dev ];
buildInputs = [ llvm_11 ]; buildInputs = [ spirv-headers spirv-tools llvm_11 ];
checkInputs = [ lit ]; checkInputs = [ lit ];
makeFlags = [ "llvm-spirv" ];
cmakeFlags = [ cmakeFlags = [
"-DLLVM_INCLUDE_TESTS=ON" "-DLLVM_INCLUDE_TESTS=ON"
"-DLLVM_DIR=${llvm_11.dev}"
"-DBUILD_SHARED_LIBS=YES"
"-DLLVM_SPIRV_BUILD_EXTERNAL=YES"
]; ];
prePatch = ''
substituteInPlace ./test/CMakeLists.txt \
--replace 'SPIRV-Tools' 'SPIRV-Tools-shared'
'';
# FIXME: CMake tries to run "/llvm-lit" which of course doesn't exist # FIXME: CMake tries to run "/llvm-lit" which of course doesn't exist
doCheck = false; doCheck = false;

@ -0,0 +1,64 @@
{ lib, stdenv, fetchurl, fetchpatch
, autoreconfHook
, doCheck ? true # test suite depends on dejagnu which cannot be used during bootstrapping
, dejagnu
}:
stdenv.mkDerivation rec {
pname = "libffi";
version = "3.3";
src = fetchurl {
url = "https://github.com/libffi/libffi/releases/download/v${version}/${pname}-${version}.tar.gz";
hash = "sha256-cvunkicD3fp6Ao1ROsFahcjVTI1n9V+lpIAohdxlIFY=";
};
patches = [];
outputs = [ "out" "dev" "man" "info" ];
configureFlags = [
"--with-gcc-arch=generic" # no detection of -march= or -mtune=
"--enable-pax_emutramp"
# Causes issues in downstream packages which misuse ffi_closure_alloc
# Reenable once these issues are fixed and merged:
# https://gitlab.haskell.org/ghc/ghc/-/merge_requests/6155
# https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/283
"--disable-exec-static-tramp"
];
preCheck = ''
# The tests use -O0 which is not compatible with -D_FORTIFY_SOURCE.
NIX_HARDENING_ENABLE=''${NIX_HARDENING_ENABLE/fortify/}
'';
dontStrip = stdenv.hostPlatform != stdenv.buildPlatform; # Don't run the native `strip' when cross-compiling.
inherit doCheck;
checkInputs = [ dejagnu ];
meta = with lib; {
description = "A foreign function call interface library";
longDescription = ''
The libffi library provides a portable, high level programming
interface to various calling conventions. This allows a
programmer to call any function specified by a call interface
description at run-time.
FFI stands for Foreign Function Interface. A foreign function
interface is the popular name for the interface that allows code
written in one language to call code written in another
language. The libffi library really only provides the lowest,
machine dependent layer of a fully featured foreign function
interface. A layer must exist above libffi that handles type
conversions for values passed between the two languages.
'';
homepage = "http://sourceware.org/libffi/";
license = licenses.mit;
maintainers = with maintainers; [ armeenm ];
platforms = platforms.all;
};
}

@ -1,7 +1,6 @@
{ lib { lib
, stdenv , stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, cmake , cmake
, pkg-config , pkg-config
, python3 , python3
@ -16,23 +15,16 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libgit2"; pname = "libgit2";
version = "1.4.0"; version = "1.4.3";
# also check the following packages for updates: python3.pkgs.pygit2 and libgit2-glib # also check the following packages for updates: python3.pkgs.pygit2 and libgit2-glib
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "libgit2"; owner = "libgit2";
repo = "libgit2"; repo = "libgit2";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-21t7fD/5O+HIHUDEv8MqloDmAIm9sSpJYqreCD3Co2k="; sha256 = "sha256-WnRzH5uMVEStA5ns4GNgMD5YoLQoats9aPLfnz9RoQs=";
}; };
patches = [
(fetchpatch {
url = "https://github.com/libgit2/libgit2/commit/8bc9eda779b2e2602fc74944aba5d39198e0642f.patch";
sha256 = "sha256-r2i4+WsrxIpSwH0g/AikBdAajBncXb1zz0uOQB0h1Jk=";
})
];
cmakeFlags = [ cmakeFlags = [
"-DTHREADSAFE=ON" "-DTHREADSAFE=ON"
"-DUSE_HTTP_PARSER=system" "-DUSE_HTTP_PARSER=system"
@ -48,11 +40,11 @@ stdenv.mkDerivation rec {
doCheck = false; # hangs. or very expensive? doCheck = false; # hangs. or very expensive?
meta = { meta = with lib; {
description = "Linkable library implementation of Git that you can use in your application"; description = "Linkable library implementation of Git that you can use in your application";
homepage = "https://libgit2.org/"; homepage = "https://libgit2.org/";
license = lib.licenses.gpl2Plus; license = licenses.gpl2Plus;
platforms = lib.platforms.all; platforms = platforms.all;
maintainers = with lib.maintainers; [ ]; maintainers = with maintainers; [ SuperSandro2000 ];
}; };
} }

@ -1,23 +1,16 @@
{ lib, stdenv, fetchurl, autoreconfHook, pkg-config, libzen, zlib, fetchpatch }: { lib, stdenv, fetchurl, autoreconfHook, pkg-config, libzen, zlib }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "21.09"; version = "22.03";
pname = "libmediainfo"; pname = "libmediainfo";
src = fetchurl { src = fetchurl {
url = "https://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz"; url = "https://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz";
sha256 = "09pinxqw3z3hxrafn67clw1cb1z9aqfy6gkiavginfm0yr299gk9"; sha256 = "sha256-/FC6u2KOnPumVSiNrgbVw0Kw1+aUGjLWT7uxEySMgLk=";
}; };
nativeBuildInputs = [ autoreconfHook pkg-config ]; nativeBuildInputs = [ autoreconfHook pkg-config ];
buildInputs = [ libzen zlib ]; buildInputs = [ zlib ];
propagatedBuildInputs = [ libzen ];
patches = [
# fixes pkgsMusl.libmediainfo build
(fetchpatch {
url = "https://git.alpinelinux.org/aports/plain/community/libmediainfo/fix-include-signal.patch?id=b8d666a3d33575c184308e1176f4de9e519af577";
sha256 = "sha256-b3HoIwy/hKSh8jUakwVJpnPmYw5KUwZXgLW7IPMY4/c=";
})
];
postPatch = "cd Project/GNU/Library"; postPatch = "cd Project/GNU/Library";

@ -32,13 +32,12 @@ let
"-DLWS_WITH_PLUGINS=ON" "-DLWS_WITH_PLUGINS=ON"
"-DLWS_WITH_IPV6=ON" "-DLWS_WITH_IPV6=ON"
"-DLWS_WITH_SOCKS5=ON" "-DLWS_WITH_SOCKS5=ON"
"-DDISABLE_WERROR=ON"
# Required since v4.2.0 # Required since v4.2.0
"-DLWS_BUILD_HASH=no_hash" "-DLWS_BUILD_HASH=no_hash"
] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "-DLWS_WITHOUT_TESTAPPS=ON" ] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) "-DLWS_WITHOUT_TESTAPPS=ON"
++ lib.optional withExternalPoll "-DLWS_WITH_EXTERNAL_POLL=ON"; ++ lib.optional withExternalPoll "-DLWS_WITH_EXTERNAL_POLL=ON";
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isGNU "-Wno-error=unused-but-set-variable";
postInstall = '' postInstall = ''
rm -r ${placeholder "out"}/share/libwebsockets-test-server rm -r ${placeholder "out"}/share/libwebsockets-test-server
''; '';
@ -63,21 +62,6 @@ let
}; };
in { in {
libwebsockets_3_1 = generic {
sha256 = "1w1wz6snf3cmcpa3f4dci2nz9za2f5rrylxl109id7bcb36xhbdl";
version = "3.1.0";
};
libwebsockets_3_2 = generic {
version = "3.2.2";
sha256 = "0m1kn4p167jv63zvwhsvmdn8azx3q7fkk8qc0fclwyps2scz6dna";
};
libwebsockets_4_2 = generic {
version = "4.2.1";
sha256 = "sha256-C+WGfNF4tAgbp/7aRraBgjNOe4I5ihm+8CGelXzfxbU=";
};
libwebsockets_4_3 = generic { libwebsockets_4_3 = generic {
version = "4.3.1"; version = "4.3.1";
sha256 = "sha256-lB3JHh058cQc5rycLnHk3JAOgtku0nRCixN5U6lPKq8="; sha256 = "sha256-lB3JHh058cQc5rycLnHk3JAOgtku0nRCixN5U6lPKq8=";

@ -0,0 +1,21 @@
diff --git a/libraries/liblmdb/Makefile b/libraries/liblmdb/Makefile
index 612484e..2e6b562 100644
--- a/libraries/liblmdb/Makefile
+++ b/libraries/liblmdb/Makefile
@@ -27,6 +27,7 @@ CFLAGS = $(THREADS) $(OPT) $(W) $(XCFLAGS)
LDLIBS =
SOLIBS =
SOEXT = .so
+BINEXT =
prefix = /usr/local
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
@@ -49,7 +50,7 @@ install: $(ILIBS) $(IPROGS) $(IHDRS)
mkdir -p $(DESTDIR)$(libdir)
mkdir -p $(DESTDIR)$(includedir)
mkdir -p $(DESTDIR)$(mandir)/man1
- for f in $(IPROGS); do cp $$f $(DESTDIR)$(bindir); done
+ for f in $(IPROGS); do cp $$f$(BINEXT) $(DESTDIR)$(bindir); done
for f in $(ILIBS); do cp $$f $(DESTDIR)$(libdir); done
for f in $(IHDRS); do cp $$f $(DESTDIR)$(includedir); done
for f in $(IDOCS); do cp $$f $(DESTDIR)$(mandir)/man1; done

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitLab }: { lib, stdenv, fetchFromGitLab, windows }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "lmdb"; pname = "lmdb";
@ -14,17 +14,20 @@ stdenv.mkDerivation rec {
postUnpack = "sourceRoot=\${sourceRoot}/libraries/liblmdb"; postUnpack = "sourceRoot=\${sourceRoot}/libraries/liblmdb";
patches = [ ./hardcoded-compiler.patch ]; patches = [ ./hardcoded-compiler.patch ./bin-ext.patch ];
patchFlags = [ "-p3" ]; patchFlags = [ "-p3" ];
outputs = [ "bin" "out" "dev" ]; outputs = [ "bin" "out" "dev" ];
buildInputs = lib.optional stdenv.hostPlatform.isWindows windows.pthreads;
makeFlags = [ makeFlags = [
"prefix=$(out)" "prefix=$(out)"
"CC=${stdenv.cc.targetPrefix}cc" "CC=${stdenv.cc.targetPrefix}cc"
"AR=${stdenv.cc.targetPrefix}ar" "AR=${stdenv.cc.targetPrefix}ar"
] ]
++ lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/liblmdb.so"; ++ lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/liblmdb.so"
++ lib.optionals stdenv.hostPlatform.isWindows [ "SOEXT=.dll" "BINEXT=.exe" ];
doCheck = true; doCheck = true;
checkTarget = "test"; checkTarget = "test";

@ -14,13 +14,13 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = [ boost gtest zlib ]; buildInputs = [ boost gtest zlib ];
doCheck = true;
postPatch = '' postPatch = ''
substituteInPlace src/test/CMakeLists.txt \ substituteInPlace src/test/CMakeLists.txt \
--replace "add_subdirectory(gtest)" "" --replace "add_subdirectory(gtest)" ""
''; '';
doCheck = true;
checkPhase = '' checkPhase = ''
runHook preCheck runHook preCheck
LD_LIBRARY_PATH=$PWD/src/contrib:$PWD/src/core \ LD_LIBRARY_PATH=$PWD/src/contrib:$PWD/src/core \
@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
postInstall = '' postInstall = ''
mv $out/include/pkgconfig $out/lib/ mv $out/include/pkgconfig $out/lib/
cp $src/src/contrib/include/*h $out/include/lucene++/
''; '';
meta = { meta = {

@ -67,15 +67,15 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "opencl-clang"; pname = "opencl-clang";
version = "unstable-2021-06-22"; version = "unstable-2022-03-16";
inherit passthru; inherit passthru;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "intel"; owner = "intel";
repo = "opencl-clang"; repo = "opencl-clang";
rev = "fd68f64b33e67d58f6c36b9e25c31c1178a1962a"; rev = "bbdd1587f577397a105c900be114b56755d1f7dc";
sha256 = "sha256-q1YPBb/LY67iEuQx1fMUQD/I7OsNfobW3yNfJxLXx3E="; sha256 = "sha256-qEZoQ6h4XAvSnJ7/gLXBb1qrzeYa6Jp6nij9VFo8MwQ=";
}; };
patches = [ patches = [

@ -35,13 +35,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "poppler-${suffix}"; pname = "poppler-${suffix}";
version = "22.03.0"; # beware: updates often break cups-filters build, check texlive and scribusUnstable too! version = "22.04.0"; # beware: updates often break cups-filters build, check texlive and scribusUnstable too!
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
src = fetchurl { src = fetchurl {
url = "https://poppler.freedesktop.org/poppler-${version}.tar.xz"; url = "https://poppler.freedesktop.org/poppler-${version}.tar.xz";
sha256 = "sha256-cox4upTXWlX2tjVdT72qb0mTTZYWvljl5nmpz9CYDh4="; sha256 = "sha256-gT+0uQ572mPfUyBcVIYCuucoiHpg9ASKrk29mxkn3v8=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

@ -30,6 +30,12 @@ stdenv.mkDerivation rec {
sha256 = "0243nx1ygggmsly7057vndb4pkjxg9rpay5gyqqrq9jjzjzh63dj"; sha256 = "0243nx1ygggmsly7057vndb4pkjxg9rpay5gyqqrq9jjzjzh63dj";
}) })
./fixed-cppunit-detection.patch ./fixed-cppunit-detection.patch
# fix gcc11 build
(fetchpatch {
name = "presage-0.9.1-gcc11.patch";
url = "https://build.opensuse.org/public/source/openSUSE:Factory/presage/presage-0.9.1-gcc11.patch?rev=3f8b4b19c99276296d6ea595cc6c431f";
sha256 = "sha256-pLrIFXvJHRvv4x9gBIfal4Y68lByDE3XE2NZNiAXe9k=";
})
]; ];
nativeBuildInputs = [ nativeBuildInputs = [

@ -1,5 +1,6 @@
{ lib, stdenv { lib, stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, writeScript , writeScript
, rocm-comgr , rocm-comgr
}: }:
@ -15,6 +16,16 @@ stdenv.mkDerivation rec {
hash = "sha256-SFWEGKffhuiTE7ICbkElVV5cldXu4Xbwvjb6LiNmijA="; hash = "sha256-SFWEGKffhuiTE7ICbkElVV5cldXu4Xbwvjb6LiNmijA=";
}; };
patches = [
# Enable support for gfx8 again
# See the upstream issue: https://github.com/RadeonOpenCompute/ROCm/issues/1659
# And the arch patch: https://github.com/rocm-arch/rocm-arch/pull/742
(fetchpatch {
url = "https://raw.githubusercontent.com/John-Gee/rocm-arch/d6812d308fee3caf2b6bb01b4d19fe03a6a0e3bd/rocm-opencl-runtime/enable-gfx800.patch";
hash = "sha256-59jFDIIsTTZcNns9RyMVWPRUggn/bSlAGrky4quu8B4=";
})
];
prePatch = '' prePatch = ''
substituteInPlace device/comgrctx.cpp \ substituteInPlace device/comgrctx.cpp \
--replace "libamd_comgr.so" "${rocm-comgr}/lib/libamd_comgr.so" --replace "libamd_comgr.so" "${rocm-comgr}/lib/libamd_comgr.so"

@ -24,13 +24,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-opencl-runtime"; pname = "rocm-opencl-runtime";
version = "5.0.2"; version = "5.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "ROCm-OpenCL-Runtime"; repo = "ROCm-OpenCL-Runtime";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-ovYwElZGRKySH1mWFIISxuNNxCjaqoe9oCvqYZGdfq0="; hash = "sha256-O7q3uTjspO/rZ2+8+g7pRfBXsCRaEr4DZxEqABHbOeY=";
}; };
nativeBuildInputs = [ cmake rocm-cmake ]; nativeBuildInputs = [ cmake rocm-cmake ];
@ -55,6 +55,7 @@ stdenv.mkDerivation rec {
cmakeFlags = [ cmakeFlags = [
"-DAMD_OPENCL_PATH=${src}" "-DAMD_OPENCL_PATH=${src}"
"-DROCCLR_PATH=${rocclr}" "-DROCCLR_PATH=${rocclr}"
"-DCPACK_PACKAGING_INSTALL_PREFIX=/opt/rocm/opencl"
]; ];
dontStrip = true; dontStrip = true;

@ -14,13 +14,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rocm-runtime"; pname = "rocm-runtime";
version = "5.1.0"; version = "5.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "RadeonOpenCompute"; owner = "RadeonOpenCompute";
repo = "ROCR-Runtime"; repo = "ROCR-Runtime";
rev = "rocm-${version}"; rev = "rocm-${version}";
hash = "sha256-MGm7YmnoFNk7VsxsbsUgSD9Y5r1OBm6Ycg3wXNme8EI="; hash = "sha256-IP5ylfUXOFkw9+Frfh+tNaZ83ozAbOK9kO2AzFVzzWk=";
}; };
sourceRoot = "source/src"; sourceRoot = "source/src";

@ -19,15 +19,21 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "umockdev"; pname = "umockdev";
version = "0.17.8"; version = "0.17.9";
outputs = [ "bin" "out" "dev" "devdoc" ]; outputs = [ "bin" "out" "dev" "devdoc" ];
src = fetchurl { src = fetchurl {
url = "https://github.com/martinpitt/umockdev/releases/download/${version}/${pname}-${version}.tar.xz"; url = "https://github.com/martinpitt/umockdev/releases/download/${version}/${pname}-${version}.tar.xz";
sha256 = "sha256-s3zeWJxw5ohUtsv4NZGKcdP8khEYzIXycbBrAzdnVoU="; sha256 = "sha256-FEmWjJVmKKckC30zULGI/mZ3VNtirnweZq2gKh/Y5VE=";
}; };
patches = [
# Hardcode absolute paths to libraries so that consumers
# do not need to set LD_LIBRARY_PATH themselves.
./hardcode-paths.patch
];
nativeBuildInputs = [ nativeBuildInputs = [
docbook-xsl-nons docbook-xsl-nons
gobject-introspection gobject-introspection
@ -57,6 +63,21 @@ stdenv.mkDerivation rec {
doCheck = true; doCheck = true;
postPatch = ''
# Substitute the path to this derivation in the patch we apply.
substituteInPlace src/umockdev-wrapper \
--subst-var-by 'LIBDIR' "''${!outputLib}/lib"
'';
preCheck = ''
# Our patch makes the path to the `LD_PRELOAD`ed library absolute.
# When running tests, the library is not yet installed, though,
# so we need to replace the absolute path with a local one during build.
# We are using a symlink that will be overridden during installation.
mkdir -p "$out/lib"
ln -s "$PWD/libumockdev-preload.so.0" "$out/lib/libumockdev-preload.so.0"
'';
meta = with lib; { meta = with lib; {
description = "Mock hardware devices for creating unit tests"; description = "Mock hardware devices for creating unit tests";
license = licenses.lgpl21Plus; license = licenses.lgpl21Plus;

@ -0,0 +1,69 @@
diff --git a/meson.build b/meson.build
index 2ed9027..1f6bbf2 100644
--- a/meson.build
+++ b/meson.build
@@ -38,6 +38,7 @@ g_ir_compiler = find_program('g-ir-compiler', required: false)
conf.set('PACKAGE_NAME', meson.project_name())
conf.set_quoted('VERSION', meson.project_version())
+conf.set_quoted('LIBDIR', get_option('prefix') / get_option('libdir'))
# glibc versions somewhere between 2.28 and 2.34
if cc.has_function('__fxstatat', prefix: '#include <sys/stat.h>')
@@ -148,7 +149,7 @@ hacked_gir = custom_target('UMockdev-1.0 hacked gir',
if g_ir_compiler.found()
umockdev_typelib = custom_target('UMockdev-1.0 typelib',
- command: [g_ir_compiler, '--output', '@OUTPUT@', '-l', 'libumockdev.so.0', '@INPUT@'],
+ command: [g_ir_compiler, '--output', '@OUTPUT@', '-l', get_option('prefix') / get_option('libdir') / 'libumockdev.so.0', '@INPUT@'],
input: hacked_gir,
output: 'UMockdev-1.0.typelib',
install: true,
diff --git a/src/config.vapi b/src/config.vapi
index 5269dd0..a2ec46d 100644
--- a/src/config.vapi
+++ b/src/config.vapi
@@ -2,5 +2,6 @@
namespace Config {
public const string PACKAGE_NAME;
public const string VERSION;
+ public const string LIBDIR;
}
diff --git a/src/umockdev-record.vala b/src/umockdev-record.vala
index 8434d32..68c7f8e 100644
--- a/src/umockdev-record.vala
+++ b/src/umockdev-record.vala
@@ -435,7 +435,7 @@ main (string[] args)
preload = "";
else
preload = preload + ":";
- Environment.set_variable("LD_PRELOAD", preload + "libumockdev-preload.so.0", true);
+ Environment.set_variable("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0", true);
try {
root_dir = DirUtils.make_tmp("umockdev.XXXXXX");
diff --git a/src/umockdev-run.vala b/src/umockdev-run.vala
index 9a1ba10..6df2522 100644
--- a/src/umockdev-run.vala
+++ b/src/umockdev-run.vala
@@ -95,7 +95,7 @@ main (string[] args)
preload = "";
else
preload = preload + ":";
- Environment.set_variable ("LD_PRELOAD", preload + "libumockdev-preload.so.0", true);
+ Environment.set_variable ("LD_PRELOAD", preload + Config.LIBDIR + "/libumockdev-preload.so.0", true);
var testbed = new UMockdev.Testbed ();
diff --git a/src/umockdev-wrapper b/src/umockdev-wrapper
index 6ce4dcd..706c49a 100755
--- a/src/umockdev-wrapper
+++ b/src/umockdev-wrapper
@@ -1,5 +1,5 @@
#!/bin/sh
# Wrapper program to preload the libumockdev library, so that test programs can
# set $UMOCKDEV_DIR for redirecting sysfs and other queries to a test bed.
-exec env LD_PRELOAD=libumockdev-preload.so.0:$LD_PRELOAD "$@"
+exec env LD_PRELOAD=@LIBDIR@/libumockdev-preload.so.0:$LD_PRELOAD "$@"

@ -7,13 +7,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wolfssl"; pname = "wolfssl";
version = "5.2.0"; version = "5.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "wolfSSL"; owner = "wolfSSL";
repo = "wolfssl"; repo = "wolfssl";
rev = "v${version}-stable"; rev = "v${version}-stable";
sha256 = "1xdhbhn31q7waw7w158hz9n0vj76zlfn5njq7hncf73ks38drj6k"; sha256 = "sha256-KteArWAgDohlqEYaNfzLPuBn6uy5ABA8vV/LRCVIPGA=";
}; };
postPatch = '' postPatch = ''

@ -7,7 +7,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "aioairzone"; pname = "aioairzone";
version = "0.3.4"; version = "0.4.2";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -16,7 +16,7 @@ buildPythonPackage rec {
owner = "Noltari"; owner = "Noltari";
repo = pname; repo = pname;
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-ENdgaG30Fll5HQOTcghkmqOAiMYEY1aHRIel4Bd25Pk="; hash = "sha256-SPxSIcsDjsT7dZQs1CoU7DstQTxYN1c0qAB+XQjVXlo=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -0,0 +1,65 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, fetchpatch
, poetry-core
, importlib-metadata
, pytest-asyncio
, pytestCheckHook
, pythonOlder
, toml
}:
buildPythonPackage rec {
pname = "aiolimiter";
version = "1.0.0";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchFromGitHub {
owner = "mjpieters";
repo = pname;
rev = "v${version}";
sha256 = "sha256-4wByVZoOLhrXFx9oK19GBmRcjGoJolQ3Gwx9vQV/n8s=";
};
nativeBuildInputs = [
poetry-core
];
propagatedBuildInputs = lib.optionals (pythonOlder "3.8") [
importlib-metadata
];
checkInputs = [
pytest-asyncio
pytestCheckHook
toml
];
patches = [
# Switch to poetry-core, https://github.com/mjpieters/aiolimiter/pull/77
(fetchpatch {
name = "switch-to-peotry-core.patch";
url = "https://github.com/mjpieters/aiolimiter/commit/84a85eff42621b0daff8fcf6bb485db313faae0b.patch";
sha256 = "sha256-xUfJwLvMF2Xt/V1bKBFn/fjn1uyw7bGNo9RpWxtyr50=";
})
];
postPatch = ''
substituteInPlace tox.ini \
--replace " --cov=aiolimiter --cov-config=tox.ini --cov-report term-missing" ""
'';
pythonImportsCheck = [
"aiolimiter"
];
meta = with lib; {
description = "Implementation of a rate limiter for asyncio";
homepage = "https://github.com/mjpieters/aiolimiter";
license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ];
};
}

@ -7,7 +7,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "aioslimproto"; pname = "aioslimproto";
version = "2.0.0"; version = "2.0.1";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.9"; disabled = pythonOlder "3.9";
@ -16,13 +16,18 @@ buildPythonPackage rec {
owner = "home-assistant-libs"; owner = "home-assistant-libs";
repo = pname; repo = pname;
rev = version; rev = version;
hash = "sha256-7xFbxWay2aPCBkf3pBUGshROtssbi//PxxsI8ELeS+c="; hash = "sha256-xa0LZGq0di4lnJGVMbb1Un0Ebd4vXRlbkxbatJ9GwB0=";
}; };
checkInputs = [ checkInputs = [
pytestCheckHook pytestCheckHook
]; ];
disabledTests = [
# AssertionError: assert ['mixer', 'volume', '50'] == ['volume', '50']
"test_msg_instantiation"
];
pythonImportsCheck = [ pythonImportsCheck = [
"aioslimproto" "aioslimproto"
]; ];

@ -11,7 +11,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "androidtv"; pname = "androidtv";
version = "0.0.66"; version = "0.0.67";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "JeffLIrion"; owner = "JeffLIrion";
repo = "python-androidtv"; repo = "python-androidtv";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-gSbckVjM49nVfzpk9sfynJDx15+zQ/KgaI7oxEkXQpo="; hash = "sha256-MAlKD2PDQJQaKPiMQDu1CMvn4xnxb8FmeYqzcW4hso0=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -20,7 +20,7 @@
let let
pname = "ansible"; pname = "ansible";
version = "5.7.0"; version = "5.7.1";
in in
buildPythonPackage { buildPythonPackage {
inherit pname version; inherit pname version;
@ -30,7 +30,7 @@ buildPythonPackage {
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-6AwOdN4XdK2ufAIzskf/crj72LXxBwd9tdC38DcNa4Y="; sha256 = "sha256-kKCaNFENGU1jVWiVoiWonkqLdIua4hW1XlF6N94GOmE=";
}; };
postPatch = '' postPatch = ''
@ -78,6 +78,7 @@ buildPythonPackage {
meta = with lib; { meta = with lib; {
description = "Radically simple IT automation"; description = "Radically simple IT automation";
homepage = "https://www.ansible.com"; homepage = "https://www.ansible.com";
changelog = "https://github.com/ansible-community/ansible-build-data/blob/${version}/${lib.versions.major version}/CHANGELOG-v${lib.versions.major version}.rst";
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
maintainers = with maintainers; [ hexa ]; maintainers = with maintainers; [ hexa ];
}; };

@ -14,7 +14,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "async-upnp-client"; pname = "async-upnp-client";
version = "0.28.0"; version = "0.29.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -23,7 +23,7 @@ buildPythonPackage rec {
owner = "StevenLooman"; owner = "StevenLooman";
repo = "async_upnp_client"; repo = "async_upnp_client";
rev = version; rev = version;
sha256 = "sha256-ZyYIZLIlLQV3Yj4a+M5vZVaTe9lEsrWhBe/g9wzM1TY="; sha256 = "sha256-IzT48ABfk/v8VZJRJEMU/Rsi6mJG4IvtF7HNRv6TLeA=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -30,7 +30,7 @@ buildPythonPackage rec {
meta = with lib; { meta = with lib; {
description = "Manipulate JSON-like data with NumPy-like idioms"; description = "Manipulate JSON-like data with NumPy-like idioms";
homepage = "https://github.com/scikit-hep/awkward-1.0"; homepage = "https://github.com/scikit-hep/awkward";
license = licenses.bsd3; license = licenses.bsd3;
maintainers = with maintainers; [ veprbl ]; maintainers = with maintainers; [ veprbl ];
}; };

@ -1,16 +1,20 @@
{ lib { lib
, buildPythonPackage , buildPythonPackage
, pythonOlder
, fetchPypi , fetchPypi
, msrest , msrest
, msrestazure
, azure-common , azure-common
, azure-mgmt-nspkg , azure-mgmt-core
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "azure-mgmt-msi"; pname = "azure-mgmt-msi";
version = "6.0.0"; version = "6.0.0";
disabled = pythonOlder "3.6";
format = "setuptools";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
extension = "zip"; extension = "zip";
@ -19,9 +23,8 @@ buildPythonPackage rec {
propagatedBuildInputs = [ propagatedBuildInputs = [
msrest msrest
msrestazure
azure-common azure-common
azure-mgmt-nspkg azure-mgmt-core
]; ];
pythonNamespaces = [ "azure.mgmt" ]; pythonNamespaces = [ "azure.mgmt" ];
@ -29,9 +32,11 @@ buildPythonPackage rec {
# has no tests # has no tests
doCheck = false; doCheck = false;
pythonImportsCheck = [ "azure.mgmt.msi" ];
meta = with lib; { meta = with lib; {
description = "This is the Microsoft Azure MSI Management Client Library"; description = "This is the Microsoft Azure MSI Management Client Library";
homepage = "https://github.com/Azure/azure-sdk-for-python"; homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/resources/azure-mgmt-msi";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ maxwilson ]; maintainers = with maintainers; [ maxwilson ];
}; };

@ -8,14 +8,14 @@
buildPythonPackage rec { buildPythonPackage rec {
version = "21.0.0"; version = "21.1.0";
pname = "azure-mgmt-resource"; pname = "azure-mgmt-resource";
disabled = !isPy3k; disabled = !isPy3k;
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
extension = "zip"; extension = "zip";
sha256 = "sha256-y9J/UhxwtA/YO/Y88XsStbwD5ecNwrbnpxtevYuQDQM="; sha256 = "sha256-UpZa3jHNBZ/qKxUT1l/mFgRuQz3g5YPc9cnJvr8+vWk=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -7,6 +7,7 @@
, tzdata , tzdata
, hypothesis , hypothesis
, pytestCheckHook , pytestCheckHook
, fetchpatch
}: }:
buildPythonPackage rec { buildPythonPackage rec {
@ -22,7 +23,25 @@ buildPythonPackage rec {
sha256 = "sha256-00xdDOVdDanfsjQTd3yjMN2RFGel4cWRrAA3CvSnl24="; sha256 = "sha256-00xdDOVdDanfsjQTd3yjMN2RFGel4cWRrAA3CvSnl24=";
}; };
# Make sure test data update patch applies
prePatch = ''
substituteInPlace tests/data/zoneinfo_data.json --replace \"2020a\" \"2021a\"
'';
patches = [ patches = [
# Update test suite's test data to zoneinfo 2022a
# https://github.com/pganssle/zoneinfo/pull/115
(fetchpatch {
name = "backports-zoneinfo-2022a-update-test-data1.patch";
url = "https://github.com/pganssle/zoneinfo/pull/115/commits/837e2a0f9f1a1332e4233f83e3648fa564a9ec9e.patch";
sha256 = "196knwa212mr0b7zsh8papzr3f5mii87gcjjjx1r9zzvmk3g3ri0";
})
(fetchpatch {
name = "backports-zoneinfo-2022a-update-test-data2.patch";
url = "https://github.com/pganssle/zoneinfo/pull/115/commits/9fd330265b177916d6182249439bb40d5691eb58.patch";
sha256 = "1zxa5bkwi8hbnh4c0qv72wv6vdp5jlxqizfjsc05ymzvwa99cf75";
})
(substituteAll { (substituteAll {
name = "zoneinfo-path"; name = "zoneinfo-path";
src = ./zoneinfo.patch; src = ./zoneinfo.patch;

@ -10,7 +10,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "bond-api"; pname = "bond-api";
version = "0.1.16"; version = "0.1.17";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
@ -19,7 +19,7 @@ buildPythonPackage rec {
owner = "prystupa"; owner = "prystupa";
repo = "bond-api"; repo = "bond-api";
rev = "v${version}"; rev = "v${version}";
sha256 = "1nqf090b14nd7an2n776mb37yskddfnihmas2fy56pxclwvwqr9n"; hash = "sha256-fuVYyDy3fG+XobFe2GCzMWRWPk8VDPLU4RHJzcF5MLg=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -9,14 +9,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "databricks-connect"; pname = "databricks-connect";
version = "9.1.14"; version = "9.1.15";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-l+mTqiQPuPJfGbEVSILpCTlxAka0GeCgIXjMG4Vs82o="; sha256 = "sha256-qXS/hgF2qKUtTfo9UZ5KBa9N0PHJqKA8SC/vgE46LmA=";
}; };
sourceRoot = "."; sourceRoot = ".";

@ -0,0 +1,46 @@
{ lib
, buildPythonPackage
, pythonOlder
, fetchFromGitHub
, aiohttp
, pydantic
, freezegun
, pytest-aiohttp
, pytest-asyncio
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "gcal-sync";
version = "0.7.1";
disabled = pythonOlder "3.9";
src = fetchFromGitHub {
owner = "allenporter";
repo = "gcal_sync";
rev = version;
hash = "sha256-NOB74P+5i63FEeHJsPXRdRgY6iyIUEn7BogbVKm8P5M=";
};
propagatedBuildInputs = [
aiohttp
pydantic
];
checkInputs = [
freezegun
pytest-aiohttp
pytest-asyncio
pytestCheckHook
];
pythonImportsCheck = [ "gcal_sync" ];
meta = {
description = "Python library for syncing Google Calendar to local storage";
homepage = "https://github.com/allenporter/gcal_sync";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ dotlambda ];
};
}

@ -13,7 +13,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "globus-sdk"; pname = "globus-sdk";
version = "3.7.0"; version = "3.8.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.6"; disabled = pythonOlder "3.6";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "globus"; owner = "globus";
repo = "globus-sdk-python"; repo = "globus-sdk-python";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-Us3SCkrBPL3v9YCOQ7ceF3neCUZkJTrchYsvCRSX84Y="; hash = "sha256-JaAiAAf0zIJDXXl3zb4UE9XpmjZ8KQiEcZJm1ps+efA=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -14,14 +14,14 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "impacket"; pname = "impacket";
version = "0.9.24"; version = "0.10.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7"; disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
hash = "sha256-GNVX04f0kU+vpzmBO5FyvD+L2cA26Tv1iajg67cwS7o="; hash = "sha256-uOsCCiy7RxRmac/jHGS7Ln1kmdBJxJPWQYuXFvXHRYM=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -0,0 +1,26 @@
{ lib
, buildPythonPackage
, fetchPypi
}:
buildPythonPackage rec {
pname = "insteon-frontend-home-assistant";
version = "0.1.0";
src = fetchPypi {
inherit pname version;
sha256 = "70ee413cae8717416f5add1be7647158d8ff4303942dafccac0792ef44336cdf";
};
# upstream has no tests
doCheck = false;
pythonImportsCheck = [ "insteon_frontend" ];
meta = {
description = "The Insteon frontend for Home Assistant";
homepage = "https://github.com/teharris1/insteon-panel";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ dotlambda ];
};
}

@ -2,6 +2,7 @@
, fetchPypi , fetchPypi
, buildPythonPackage , buildPythonPackage
, pytestCheckHook , pytestCheckHook
, pythonOlder
}: }:
buildPythonPackage rec { buildPythonPackage rec {
@ -9,9 +10,11 @@ buildPythonPackage rec {
version = "3.0.1"; version = "3.0.1";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-8ebQPGcpkioiPFGEnfZbnpFuYlrvuRF4Tn+azUwgfVM="; hash = "sha256-8ebQPGcpkioiPFGEnfZbnpFuYlrvuRF4Tn+azUwgfVM=";
}; };
checkInputs = [ checkInputs = [
@ -25,7 +28,7 @@ buildPythonPackage rec {
meta = with lib; { meta = with lib; {
description = "C-based extension implementing fast integer bit sets"; description = "C-based extension implementing fast integer bit sets";
homepage = "https://github.com/inveniosoftware/intbitset"; homepage = "https://github.com/inveniosoftware/intbitset";
license = licenses.lgpl3Only; license = licenses.lgpl3Plus;
maintainers = teams.determinatesystems.members; maintainers = teams.determinatesystems.members;
}; };
} }

@ -1,43 +1,35 @@
{ lib { buildPythonPackage
, buildPythonPackage
, fetchPypi , fetchPypi
, python
, nose
, pytest
, mock
, ipython
, ipykernel , ipykernel
, ipython
, jupyterlab-widgets , jupyterlab-widgets
, lib
, nbformat
, pytestCheckHook
, traitlets , traitlets
, notebook
, widgetsnbextension , widgetsnbextension
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "ipywidgets"; pname = "ipywidgets";
version = "7.7.0"; version = "7.7.0";
format = "setuptools";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-q0pVloVaiLg3YZIcdocH1l5YRwaBObwXKd3+g0cDVCo="; hash = "sha256-q0pVloVaiLg3YZIcdocH1l5YRwaBObwXKd3+g0cDVCo=";
}; };
# Tests are not distributed
# doCheck = false;
buildInputs = [ nose pytest mock ];
propagatedBuildInputs = [ propagatedBuildInputs = [
ipython ipython
ipykernel ipykernel
jupyterlab-widgets jupyterlab-widgets
traitlets traitlets
notebook nbformat
widgetsnbextension widgetsnbextension
]; ];
checkPhase = '' checkInputs = [ pytestCheckHook ];
${python.interpreter} -m unittest discover
'';
meta = { meta = {
description = "IPython HTML widgets for Jupyter"; description = "IPython HTML widgets for Jupyter";

@ -0,0 +1,37 @@
{ lib
, aiohttp
, buildPythonPackage
, fetchPypi
, pythonOlder
}:
buildPythonPackage rec {
pname = "meater-python";
version = "0.0.8";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
hash = "sha256-86XJmKOc2MCyU9v0UAZsPCUL/kAXywOlQOIHaykNF1o=";
};
propagatedBuildInputs = [
aiohttp
];
# Module has no tests
doCheck = false;
pythonImportsCheck = [
"meater"
];
meta = with lib; {
description = "Library for the Apption Labs Meater cooking probe";
homepage = "https://github.com/Sotolotl/meater-python";
license = licenses.asl20;
maintainers = with maintainers; [ fab ];
};
}

@ -1,9 +1,19 @@
{ lib, buildPythonPackage, fetchPypi, pythonOlder, { lib
async_generator, traitlets, nbformat, nest-asyncio, jupyter-client, , buildPythonPackage
pytest, xmltodict, nbconvert, ipywidgets , fetchPypi
, pythonOlder
, async_generator
, traitlets
, nbformat
, nest-asyncio
, jupyter-client
, pytestCheckHook
, xmltodict
, nbconvert
, ipywidgets
}: }:
buildPythonPackage rec { let nbclient = buildPythonPackage rec {
pname = "nbclient"; pname = "nbclient";
version = "0.6.2"; version = "0.6.2";
format = "setuptools"; format = "setuptools";
@ -15,14 +25,26 @@ buildPythonPackage rec {
hash = "sha256-i0dVPxztB3zXxFN/1dcB1G92gfJLKCdeXMHTR+fJtGs="; hash = "sha256-i0dVPxztB3zXxFN/1dcB1G92gfJLKCdeXMHTR+fJtGs=";
}; };
doCheck = false; # Avoid infinite recursion
checkInputs = [ pytest xmltodict nbconvert ipywidgets ];
propagatedBuildInputs = [ async_generator traitlets nbformat nest-asyncio jupyter-client ]; propagatedBuildInputs = [ async_generator traitlets nbformat nest-asyncio jupyter-client ];
# circular dependencies if enabled by default
doCheck = false;
checkInputs = [ pytestCheckHook xmltodict nbconvert ipywidgets ];
preCheck = ''
export HOME=$(mktemp -d)
'';
passthru.tests = {
check = nbclient.overridePythonAttrs (_: { doCheck = true; });
};
meta = with lib; { meta = with lib; {
homepage = "https://github.com/jupyter/nbclient"; homepage = "https://github.com/jupyter/nbclient";
description = "A client library for executing notebooks"; description = "A client library for executing notebooks";
license = licenses.bsd3; license = licenses.bsd3;
maintainers = [ maintainers.erictapen ]; maintainers = [ maintainers.erictapen ];
}; };
} };
in nbclient

@ -12,7 +12,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "nettigo-air-monitor"; pname = "nettigo-air-monitor";
version = "1.2.2"; version = "1.2.3";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.8"; disabled = pythonOlder "3.8";
@ -21,7 +21,7 @@ buildPythonPackage rec {
owner = "bieniu"; owner = "bieniu";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "sha256-gHgFEDUji43vTBZp5FLK90H+D44sfH2AuCc7Gu2T1pg="; sha256 = "sha256-aCDw3JwX8LVrJp3jYvuYQ3ycRHjSnWU0n1LdTjV08VA=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

@ -0,0 +1,34 @@
{ lib
, buildPythonPackage
, fetchPypi
, requests
}:
buildPythonPackage rec {
pname = "notify-events";
version = "1.1.3";
format = "setuptools";
src = fetchPypi {
pname = "notify_events";
inherit version;
sha256 = "e63ba935c3300ff7f48cba115f7cb4474906e83c2e9b60b95a0881eb949701e7";
};
propagatedBuildInputs = [
requests
];
# upstream has no tests
doCheck = false;
pythonImportsCheck = [ "notify_events" ];
meta = {
description = "Python client for Notify.Events";
homepage = "https://github.com/notify-events/python";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ dotlambda ];
};
}

@ -14,14 +14,23 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "paramiko"; pname = "paramiko";
version = "2.10.3"; version = "2.10.4";
format = "setuptools"; format = "setuptools";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-3bGXeFOu+CgEs11yoOWXskT6MmxATDUL0AxbAdv+5xo="; sha256 = "sha256-PS5lC2gSzm0WCr/3AdbvRDTsl5NLE+lc8a09pw/7XFg=";
}; };
patches = [
# Fix usage of dsa keys
# https://github.com/paramiko/paramiko/pull/1606/
(fetchpatch {
url = "https://github.com/paramiko/paramiko/commit/18e38b99f515056071fb27b9c1a4f472005c324a.patch";
sha256 = "sha256-bPDghPeLo3NiOg+JwD5CJRRLv2VEqmSx1rOF2Tf8ZDA=";
})
];
propagatedBuildInputs = [ propagatedBuildInputs = [
bcrypt bcrypt
cryptography cryptography
@ -51,15 +60,6 @@ buildPythonPackage rec {
"paramiko" "paramiko"
]; ];
patches = [
# Fix usage of dsa keys
# https://github.com/paramiko/paramiko/pull/1606/
(fetchpatch {
url = "https://github.com/paramiko/paramiko/commit/18e38b99f515056071fb27b9c1a4f472005c324a.patch";
sha256 = "sha256-bPDghPeLo3NiOg+JwD5CJRRLv2VEqmSx1rOF2Tf8ZDA=";
})
];
__darwinAllowLocalNetworking = true; __darwinAllowLocalNetworking = true;
meta = with lib; { meta = with lib; {
@ -72,6 +72,6 @@ buildPythonPackage rec {
between python scripts. All major ciphers and hash methods are between python scripts. All major ciphers and hash methods are
supported. SFTP client and server mode are both supported too. supported. SFTP client and server mode are both supported too.
''; '';
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ SuperSandro2000 ];
}; };
} }

@ -13,27 +13,25 @@
, pytest-asyncio , pytest-asyncio
, pytestCheckHook , pytestCheckHook
, python-dateutil , python-dateutil
, pythonOlder
, pytz , pytz
, semver , semver
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "plugwise"; pname = "plugwise";
version = "0.17.8"; version = "0.18.0";
format = "setuptools"; format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = "python-plugwise"; repo = "python-plugwise";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "sha256-ZNlkdubB6E5ak+EaXsEBGa1xpm5ms4Rp3DG/M4/+WOg="; sha256 = "sha256-kpEs5LvUz61Wm2IUI6sNXx2R+vtuHq1Y6aaj+zLrr+Q=";
}; };
postPatch = ''
substituteInPlace setup.py \
--replace "aiohttp==3.8.0" "aiohttp>=3.8.0"
'';
propagatedBuildInputs = [ propagatedBuildInputs = [
aiohttp aiohttp
async-timeout async-timeout
@ -54,16 +52,14 @@ buildPythonPackage rec {
pytestCheckHook pytestCheckHook
]; ];
pythonImportsCheck = [ "plugwise" ]; pythonImportsCheck = [
"plugwise"
];
__darwinAllowLocalNetworking = true; __darwinAllowLocalNetworking = true;
meta = with lib; { meta = with lib; {
description = "Python module for Plugwise Smiles, Stretch and USB stick"; description = "Python module for Plugwise Smiles, Stretch and USB stick";
longDescription = ''
XKNX is an asynchronous Python library for reading and writing KNX/IP
packets. It provides support for KNX/IP routing and tunneling devices.
'';
homepage = "https://github.com/plugwise/python-plugwise"; homepage = "https://github.com/plugwise/python-plugwise";
license = with licenses; [ mit ]; license = with licenses; [ mit ];
maintainers = with maintainers; [ fab ]; maintainers = with maintainers; [ fab ];

@ -3,31 +3,34 @@
, fetchFromGitHub , fetchFromGitHub
, fetchpatch , fetchpatch
, pytestCheckHook , pytestCheckHook
, pythonOlder
}: }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "pyahocorasick"; pname = "pyahocorasick";
version = "1.4.1"; version = "1.4.4";
format = "setuptools";
disabled = pythonOlder "3.7";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "WojciechMula"; owner = "WojciechMula";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "13x3718if28l50474xrz1b9709kvnvdg3nzm6y8bh7mc9a4zyss5"; hash = "sha256-X6ifwOwf7GAaNUxInKhR3NX6hKhvFMkvfbK6XpH8CBo=";
}; };
patches = [ checkInputs = [
# Use proper temporary directory on Hydra pytestCheckHook
(fetchpatch {
url = "https://github.com/WojciechMula/pyahocorasick/commit/b6549e06f3cced7ffdf4d1b587cd7de12041f495.patch";
sha256 = "sha256-v3J/0aIPOnBhLlJ18r/l7O0MckqLOCtcmqIS9ZegaSI=";
})
]; ];
checkInputs = [ pytestCheckHook ]; pytestFlagsArray = [
"unittests.py"
];
pytestFlagsArray = [ "unittests.py" ]; pythonImportsCheck = [
pythonImportsCheck = [ "ahocorasick" ]; "ahocorasick"
];
meta = with lib; { meta = with lib; {
description = "Python module implementing Aho-Corasick algorithm"; description = "Python module implementing Aho-Corasick algorithm";

@ -10,7 +10,7 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "pychromecast"; pname = "pychromecast";
version = "11.0.0"; version = "12.0.0";
format = "setuptools"; format = "setuptools";
disabled = !isPy3k; disabled = !isPy3k;
@ -18,7 +18,7 @@ buildPythonPackage rec {
src = fetchPypi { src = fetchPypi {
pname = "PyChromecast"; pname = "PyChromecast";
inherit version; inherit version;
sha256 = "sha256-FRcjsXgRAFK2c7h2WhIMhdFurowi11V13O6+K+HrHvY="; sha256 = "sha256-asvEJix8/3glVhenll/rlTwSZdX0LRPMX4uCSURohJ4=";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save