diff --git a/flake.nix b/flake.nix
index bb76fae486d5..29dffa9fa4e4 100644
--- a/flake.nix
+++ b/flake.nix
@@ -18,6 +18,9 @@
in
{
lib = lib.extend (final: prev: {
+
+ nixos = import ./nixos/lib { lib = final; };
+
nixosSystem = { modules, ... } @ args:
import ./nixos/lib/eval-config.nix (args // {
modules =
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index bdb2a2c8bb63..b85bbc046c37 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -6604,7 +6604,7 @@
};
kylesferrazza = {
name = "Kyle Sferrazza";
- email = "kyle.sferrazza@gmail.com";
+ email = "nixpkgs@kylesferrazza.com";
github = "kylesferrazza";
githubId = 6677292;
diff --git a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
index 12a308dfdffb..cb537263c72e 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
@@ -108,6 +108,14 @@
services.powerdns-admin.
+
+
+ InvoicePlane,
+ web application for managing and creating invoices. Available
+ at
+ services.invoiceplane.
+
+
maddy, a
diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md
index c816b062557f..25994d8df083 100644
--- a/nixos/doc/manual/release-notes/rl-2205.section.md
+++ b/nixos/doc/manual/release-notes/rl-2205.section.md
@@ -35,6 +35,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [PowerDNS-Admin](https://github.com/ngoduykhanh/PowerDNS-Admin), a web interface for the PowerDNS server. Available at [services.powerdns-admin](options.html#opt-services.powerdns-admin.enable).
+- [InvoicePlane](https://invoiceplane.com), web application for managing and creating invoices. Available at [services.invoiceplane](options.html#opt-services.invoiceplane.enable).
+
- [maddy](https://maddy.email), a composable all-in-one mail server. Available as [services.maddy](options.html#opt-services.maddy.enable).
- [mtr-exporter](https://github.com/mgumz/mtr-exporter), a Prometheus exporter for mtr metrics. Available as [services.mtr-exporter](options.html#opt-services.mtr-exporter.enable).
diff --git a/nixos/lib/default.nix b/nixos/lib/default.nix
new file mode 100644
index 000000000000..2b3056e01457
--- /dev/null
+++ b/nixos/lib/default.nix
@@ -0,0 +1,33 @@
+let
+ # The warning is in a top-level let binding so it is only printed once.
+ minimalModulesWarning = warn "lib.nixos.evalModules is experimental and subject to change. See nixos/lib/default.nix" null;
+ inherit (nonExtendedLib) warn;
+ nonExtendedLib = import ../../lib;
+in
+{ # Optional. Allows an extended `lib` to be used instead of the regular Nixpkgs lib.
+ lib ? nonExtendedLib,
+
+ # Feature flags allow you to opt in to unfinished code. These may change some
+ # behavior or disable warnings.
+ featureFlags ? {},
+
+ # This file itself is rather new, so we accept unknown parameters to be forward
+ # compatible. This is generally not recommended, because typos go undetected.
+ ...
+}:
+let
+ seqIf = cond: if cond then builtins.seq else a: b: b;
+ # If cond, force `a` before returning any attr
+ seqAttrsIf = cond: a: lib.mapAttrs (_: v: seqIf cond a v);
+
+ eval-config-minimal = import ./eval-config-minimal.nix { inherit lib; };
+in
+/*
+ This attribute set appears as lib.nixos in the flake, or can be imported
+ using a binding like `nixosLib = import (nixpkgs + "/nixos/lib") { }`.
+*/
+{
+ inherit (seqAttrsIf (!featureFlags?minimalModules) minimalModulesWarning eval-config-minimal)
+ evalModules
+ ;
+}
diff --git a/nixos/lib/eval-config-minimal.nix b/nixos/lib/eval-config-minimal.nix
new file mode 100644
index 000000000000..d45b9ffd4261
--- /dev/null
+++ b/nixos/lib/eval-config-minimal.nix
@@ -0,0 +1,49 @@
+
+# DO NOT IMPORT. Use nixpkgsFlake.lib.nixos, or import (nixpkgs + "/nixos/lib")
+{ lib }: # read -^
+
+let
+
+ /*
+ Invoke NixOS. Unlike traditional NixOS, this does not include all modules.
+ Any such modules have to be explicitly added via the `modules` parameter,
+ or imported using `imports` in a module.
+
+ A minimal module list improves NixOS evaluation performance and allows
+ modules to be independently usable, supporting new use cases.
+
+ Parameters:
+
+ modules: A list of modules that constitute the configuration.
+
+ specialArgs: An attribute set of module arguments. Unlike
+ `config._module.args`, these are available for use in
+ `imports`.
+ `config._module.args` should be preferred when possible.
+
+ Return:
+
+ An attribute set containing `config.system.build.toplevel` among other
+ attributes. See `lib.evalModules` in the Nixpkgs library.
+
+ */
+ evalModules = {
+ prefix ? [],
+ modules ? [],
+ specialArgs ? {},
+ }:
+ # NOTE: Regular NixOS currently does use this function! Don't break it!
+ # Ideally we don't diverge, unless we learn that we should.
+ # In other words, only the public interface of nixos.evalModules
+ # is experimental.
+ lib.evalModules {
+ inherit prefix modules;
+ specialArgs = {
+ modulesPath = builtins.toString ../modules;
+ } // specialArgs;
+ };
+
+in
+{
+ inherit evalModules;
+}
diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix
index 00e58e24e926..e3eb88a60eba 100644
--- a/nixos/lib/eval-config.nix
+++ b/nixos/lib/eval-config.nix
@@ -33,6 +33,12 @@ let pkgs_ = pkgs;
in
let
+ evalModulesMinimal = (import ./default.nix {
+ inherit lib;
+ # Implicit use of feature is noted in implementation.
+ featureFlags.minimalModules = { };
+ }).evalModules;
+
pkgsModule = rec {
_file = ./eval-config.nix;
key = _file;
@@ -70,11 +76,9 @@ let
};
allUserModules = modules ++ legacyModules;
- noUserModules = lib.evalModules ({
- inherit prefix;
+ noUserModules = evalModulesMinimal ({
+ inherit prefix specialArgs;
modules = baseModules ++ extraModules ++ [ pkgsModule modulesModule ];
- specialArgs =
- { modulesPath = builtins.toString ../modules; } // specialArgs;
});
# Extra arguments that are useful for constructing a similar configuration.
diff --git a/nixos/modules/misc/nixpkgs.nix b/nixos/modules/misc/nixpkgs.nix
index 2e0c8e4cf2c4..69967c8a7601 100644
--- a/nixos/modules/misc/nixpkgs.nix
+++ b/nixos/modules/misc/nixpkgs.nix
@@ -64,6 +64,11 @@ let
in
{
+ imports = [
+ ./assertions.nix
+ ./meta.nix
+ ];
+
options.nixpkgs = {
pkgs = mkOption {
diff --git a/nixos/modules/misc/nixpkgs/test.nix b/nixos/modules/misc/nixpkgs/test.nix
new file mode 100644
index 000000000000..ec5fab9fb4a5
--- /dev/null
+++ b/nixos/modules/misc/nixpkgs/test.nix
@@ -0,0 +1,8 @@
+{ evalMinimalConfig, pkgs, lib, stdenv }:
+lib.recurseIntoAttrs {
+ invokeNixpkgsSimple =
+ (evalMinimalConfig ({ config, modulesPath, ... }: {
+ imports = [ (modulesPath + "/misc/nixpkgs.nix") ];
+ nixpkgs.system = stdenv.hostPlatform.system;
+ }))._module.args.pkgs.hello;
+}
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index fdf93f2e17c5..4b2cb803e20e 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -1022,6 +1022,7 @@
./services/web-apps/keycloak.nix
./services/web-apps/lemmy.nix
./services/web-apps/invidious.nix
+ ./services/web-apps/invoiceplane.nix
./services/web-apps/limesurvey.nix
./services/web-apps/mastodon.nix
./services/web-apps/mattermost.nix
diff --git a/nixos/modules/services/web-apps/invoiceplane.nix b/nixos/modules/services/web-apps/invoiceplane.nix
new file mode 100644
index 000000000000..095eec36dec3
--- /dev/null
+++ b/nixos/modules/services/web-apps/invoiceplane.nix
@@ -0,0 +1,305 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+let
+ cfg = config.services.invoiceplane;
+ eachSite = cfg.sites;
+ user = "invoiceplane";
+ webserver = config.services.${cfg.webserver};
+
+ invoiceplane-config = hostName: cfg: pkgs.writeText "ipconfig.php" ''
+ IP_URL=http://${hostName}
+ ENABLE_DEBUG=false
+ DISABLE_SETUP=false
+ REMOVE_INDEXPHP=false
+ DB_HOSTNAME=${cfg.database.host}
+ DB_USERNAME=${cfg.database.user}
+ # NOTE: file_get_contents adds newline at the end of returned string
+ DB_PASSWORD=${if cfg.database.passwordFile == null then "" else "trim(file_get_contents('${cfg.database.passwordFile}'), \"\\r\\n\")"}
+ DB_DATABASE=${cfg.database.name}
+ DB_PORT=${toString cfg.database.port}
+ SESS_EXPIRATION=864000
+ ENABLE_INVOICE_DELETION=false
+ DISABLE_READ_ONLY=false
+ ENCRYPTION_KEY=
+ ENCRYPTION_CIPHER=AES-256
+ SETUP_COMPLETED=false
+ '';
+
+ extraConfig = hostName: cfg: pkgs.writeText "extraConfig.php" ''
+ ${toString cfg.extraConfig}
+ '';
+
+ pkg = hostName: cfg: pkgs.stdenv.mkDerivation rec {
+ pname = "invoiceplane-${hostName}";
+ version = src.version;
+ src = pkgs.invoiceplane;
+
+ patchPhase = ''
+ # Patch index.php file to load additional config file
+ substituteInPlace index.php \
+ --replace "require('vendor/autoload.php');" "require('vendor/autoload.php'); \$dotenv = new \Dotenv\Dotenv(__DIR__, 'extraConfig.php'); \$dotenv->load();";
+ '';
+
+ installPhase = ''
+ mkdir -p $out
+ cp -r * $out/
+
+ # symlink uploads and log directories
+ rm -r $out/uploads $out/application/logs $out/vendor/mpdf/mpdf/tmp
+ ln -sf ${cfg.stateDir}/uploads $out/
+ ln -sf ${cfg.stateDir}/logs $out/application/
+ ln -sf ${cfg.stateDir}/tmp $out/vendor/mpdf/mpdf/
+
+ # symlink the InvoicePlane config
+ ln -s ${cfg.stateDir}/ipconfig.php $out/ipconfig.php
+
+ # symlink the extraConfig file
+ ln -s ${extraConfig hostName cfg} $out/extraConfig.php
+
+ # symlink additional templates
+ ${concatMapStringsSep "\n" (template: "cp -r ${template}/. $out/application/views/invoice_templates/pdf/") cfg.invoiceTemplates}
+ '';
+ };
+
+ siteOpts = { lib, name, ... }:
+ {
+ options = {
+
+ enable = mkEnableOption "InvoicePlane web application";
+
+ stateDir = mkOption {
+ type = types.path;
+ default = "/var/lib/invoiceplane/${name}";
+ description = ''
+ This directory is used for uploads of attachements and cache.
+ The directory passed here is automatically created and permissions
+ adjusted as required.
+ '';
+ };
+
+ database = {
+ host = mkOption {
+ type = types.str;
+ default = "localhost";
+ description = "Database host address.";
+ };
+
+ port = mkOption {
+ type = types.port;
+ default = 3306;
+ description = "Database host port.";
+ };
+
+ name = mkOption {
+ type = types.str;
+ default = "invoiceplane";
+ description = "Database name.";
+ };
+
+ user = mkOption {
+ type = types.str;
+ default = "invoiceplane";
+ description = "Database user.";
+ };
+
+ passwordFile = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ example = "/run/keys/invoiceplane-dbpassword";
+ description = ''
+ A file containing the password corresponding to
+ .
+ '';
+ };
+
+ createLocally = mkOption {
+ type = types.bool;
+ default = true;
+ description = "Create the database and database user locally.";
+ };
+ };
+
+ invoiceTemplates = mkOption {
+ type = types.listOf types.path;
+ default = [];
+ description = ''
+ List of path(s) to respective template(s) which are copied from the 'invoice_templates/pdf' directory.
+ These templates need to be packaged before use, see example.
+ '';
+ example = literalExpression ''
+ let
+ # Let's package an example template
+ template-vtdirektmarketing = pkgs.stdenv.mkDerivation {
+ name = "vtdirektmarketing";
+ # Download the template from a public repository
+ src = pkgs.fetchgit {
+ url = "https://git.project-insanity.org/onny/invoiceplane-vtdirektmarketing.git";
+ sha256 = "1hh0q7wzsh8v8x03i82p6qrgbxr4v5fb05xylyrpp975l8axyg2z";
+ };
+ sourceRoot = ".";
+ # Installing simply means copying template php file to the output directory
+ installPhase = ""
+ mkdir -p $out
+ cp invoiceplane-vtdirektmarketing/vtdirektmarketing.php $out/
+ "";
+ };
+ # And then pass this package to the template list like this:
+ in [ template-vtdirektmarketing ]
+ '';
+ };
+
+ poolConfig = mkOption {
+ type = with types; attrsOf (oneOf [ str int bool ]);
+ default = {
+ "pm" = "dynamic";
+ "pm.max_children" = 32;
+ "pm.start_servers" = 2;
+ "pm.min_spare_servers" = 2;
+ "pm.max_spare_servers" = 4;
+ "pm.max_requests" = 500;
+ };
+ description = ''
+ Options for the InvoicePlane PHP pool. See the documentation on php-fpm.conf
+ for details on configuration directives.
+ '';
+ };
+
+ extraConfig = mkOption {
+ type = types.nullOr types.lines;
+ default = null;
+ example = ''
+ SETUP_COMPLETED=true
+ DISABLE_SETUP=true
+ IP_URL=https://invoice.example.com
+ '';
+ description = ''
+ InvoicePlane configuration. Refer to
+
+ for details on supported values.
+ '';
+ };
+
+ };
+
+ };
+in
+{
+ # interface
+ options = {
+ services.invoiceplane = mkOption {
+ type = types.submodule {
+
+ options.sites = mkOption {
+ type = types.attrsOf (types.submodule siteOpts);
+ default = {};
+ description = "Specification of one or more WordPress sites to serve";
+ };
+
+ options.webserver = mkOption {
+ type = types.enum [ "caddy" ];
+ default = "caddy";
+ description = ''
+ Which webserver to use for virtual host management. Currently only
+ caddy is supported.
+ '';
+ };
+ };
+ default = {};
+ description = "InvoicePlane configuration.";
+ };
+
+ };
+
+ # implementation
+ config = mkIf (eachSite != {}) (mkMerge [{
+
+ assertions = flatten (mapAttrsToList (hostName: cfg:
+ [{ assertion = cfg.database.createLocally -> cfg.database.user == user;
+ message = ''services.invoiceplane.sites."${hostName}".database.user must be ${user} if the database is to be automatically provisioned'';
+ }
+ { assertion = cfg.database.createLocally -> cfg.database.passwordFile == null;
+ message = ''services.invoiceplane.sites."${hostName}".database.passwordFile cannot be specified if services.invoiceplane.sites."${hostName}".database.createLocally is set to true.'';
+ }]
+ ) eachSite);
+
+ services.mysql = mkIf (any (v: v.database.createLocally) (attrValues eachSite)) {
+ enable = true;
+ package = mkDefault pkgs.mariadb;
+ ensureDatabases = mapAttrsToList (hostName: cfg: cfg.database.name) eachSite;
+ ensureUsers = mapAttrsToList (hostName: cfg:
+ { name = cfg.database.user;
+ ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
+ }
+ ) eachSite;
+ };
+
+ services.phpfpm = {
+ phpPackage = pkgs.php74;
+ pools = mapAttrs' (hostName: cfg: (
+ nameValuePair "invoiceplane-${hostName}" {
+ inherit user;
+ group = webserver.group;
+ settings = {
+ "listen.owner" = webserver.user;
+ "listen.group" = webserver.group;
+ } // cfg.poolConfig;
+ }
+ )) eachSite;
+ };
+
+ }
+
+ {
+ systemd.tmpfiles.rules = flatten (mapAttrsToList (hostName: cfg: [
+ "d ${cfg.stateDir} 0750 ${user} ${webserver.group} - -"
+ "f ${cfg.stateDir}/ipconfig.php 0750 ${user} ${webserver.group} - -"
+ "d ${cfg.stateDir}/logs 0750 ${user} ${webserver.group} - -"
+ "d ${cfg.stateDir}/uploads 0750 ${user} ${webserver.group} - -"
+ "d ${cfg.stateDir}/uploads/archive 0750 ${user} ${webserver.group} - -"
+ "d ${cfg.stateDir}/uploads/customer_files 0750 ${user} ${webserver.group} - -"
+ "d ${cfg.stateDir}/uploads/temp 0750 ${user} ${webserver.group} - -"
+ "d ${cfg.stateDir}/uploads/temp/mpdf 0750 ${user} ${webserver.group} - -"
+ "d ${cfg.stateDir}/tmp 0750 ${user} ${webserver.group} - -"
+ ]) eachSite);
+
+ systemd.services.invoiceplane-config = {
+ serviceConfig.Type = "oneshot";
+ script = concatStrings (mapAttrsToList (hostName: cfg:
+ ''
+ mkdir -p ${cfg.stateDir}/logs \
+ ${cfg.stateDir}/uploads
+ if ! grep -q IP_URL "${cfg.stateDir}/ipconfig.php"; then
+ cp "${invoiceplane-config hostName cfg}" "${cfg.stateDir}/ipconfig.php"
+ fi
+ '') eachSite);
+ wantedBy = [ "multi-user.target" ];
+ };
+
+ users.users.${user} = {
+ group = webserver.group;
+ isSystemUser = true;
+ };
+ }
+
+ (mkIf (cfg.webserver == "caddy") {
+ services.caddy = {
+ enable = true;
+ virtualHosts = mapAttrs' (hostName: cfg: (
+ nameValuePair "http://${hostName}" {
+ extraConfig = ''
+ root * ${pkg hostName cfg}
+ file_server
+
+ php_fastcgi unix/${config.services.phpfpm.pools."invoiceplane-${hostName}".socket}
+ '';
+ }
+ )) eachSite;
+ };
+ })
+
+
+ ]);
+}
+
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index b2f223e7ccdc..940ae11ddd1f 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -19,6 +19,13 @@ let
handleTestOn = systems: path: args:
if elem system systems then handleTest path args
else {};
+
+ nixosLib = import ../lib {
+ # Experimental features need testing too, but there's no point in warning
+ # about it, so we enable the feature flag.
+ featureFlags.minimalModules = {};
+ };
+ evalMinimalConfig = module: nixosLib.evalModules { modules = [ module ]; };
in
{
_3proxy = handleTest ./3proxy.nix {};
@@ -208,6 +215,7 @@ in
initrd-secrets = handleTest ./initrd-secrets.nix {};
inspircd = handleTest ./inspircd.nix {};
installer = handleTest ./installer.nix {};
+ invoiceplane = handleTest ./invoiceplane.nix {};
iodine = handleTest ./iodine.nix {};
ipfs = handleTest ./ipfs.nix {};
ipv6 = handleTest ./ipv6.nix {};
@@ -331,6 +339,7 @@ in
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
nixops = handleTest ./nixops/default.nix {};
nixos-generate-config = handleTest ./nixos-generate-config.nix {};
+ nixpkgs = pkgs.callPackage ../modules/misc/nixpkgs/test.nix { inherit evalMinimalConfig; };
node-red = handleTest ./node-red.nix {};
nomad = handleTest ./nomad.nix {};
novacomd = handleTestOn ["x86_64-linux"] ./novacomd.nix {};
diff --git a/nixos/tests/invoiceplane.nix b/nixos/tests/invoiceplane.nix
new file mode 100644
index 000000000000..4e63f8ac21c9
--- /dev/null
+++ b/nixos/tests/invoiceplane.nix
@@ -0,0 +1,82 @@
+import ./make-test-python.nix ({ pkgs, ... }:
+
+{
+ name = "invoiceplane";
+ meta = with pkgs.lib.maintainers; {
+ maintainers = [
+ onny
+ ];
+ };
+
+ nodes = {
+ invoiceplane_caddy = { ... }: {
+ services.invoiceplane.webserver = "caddy";
+ services.invoiceplane.sites = {
+ "site1.local" = {
+ #database.name = "invoiceplane1";
+ database.createLocally = true;
+ enable = true;
+ };
+ "site2.local" = {
+ #database.name = "invoiceplane2";
+ database.createLocally = true;
+ enable = true;
+ };
+ };
+
+ networking.firewall.allowedTCPPorts = [ 80 ];
+ networking.hosts."127.0.0.1" = [ "site1.local" "site2.local" ];
+ };
+ };
+
+ testScript = ''
+ start_all()
+
+ invoiceplane_caddy.wait_for_unit("caddy")
+ invoiceplane_caddy.wait_for_open_port(80)
+ invoiceplane_caddy.wait_for_open_port(3306)
+
+ site_names = ["site1.local", "site2.local"]
+
+ for site_name in site_names:
+ machine.wait_for_unit(f"phpfpm-invoiceplane-{site_name}")
+
+ with subtest("Website returns welcome screen"):
+ assert "Please install InvoicePlane" in machine.succeed(f"curl -L {site_name}")
+
+ with subtest("Finish InvoicePlane setup"):
+ machine.succeed(
+ f"curl -sSfL --cookie-jar cjar {site_name}/index.php/setup/language"
+ )
+ csrf_token = machine.succeed(
+ "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
+ )
+ machine.succeed(
+ f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&ip_lang=english&btn_continue=Continue' {site_name}/index.php/setup/language"
+ )
+ csrf_token = machine.succeed(
+ "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
+ )
+ machine.succeed(
+ f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/index.php/setup/prerequisites"
+ )
+ csrf_token = machine.succeed(
+ "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
+ )
+ machine.succeed(
+ f"curl -sSfL --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/index.php/setup/configure_database"
+ )
+ csrf_token = machine.succeed(
+ "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
+ )
+ machine.succeed(
+ f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/index.php/setup/install_tables"
+ )
+ csrf_token = machine.succeed(
+ "grep ip_csrf_cookie cjar | cut -f 7 | tr -d '\n'"
+ )
+ machine.succeed(
+ f"curl -sSfl --cookie cjar --cookie-jar cjar -d '_ip_csrf={csrf_token}&btn_continue=Continue' {site_name}/index.php/setup/upgrade_tables"
+ )
+ '';
+})
diff --git a/pkgs/applications/audio/spotify-qt/default.nix b/pkgs/applications/audio/spotify-qt/default.nix
index 70acbd4c31a2..45ff1bebc79e 100644
--- a/pkgs/applications/audio/spotify-qt/default.nix
+++ b/pkgs/applications/audio/spotify-qt/default.nix
@@ -9,13 +9,13 @@
mkDerivation rec {
pname = "spotify-qt";
- version = "3.7";
+ version = "3.8";
src = fetchFromGitHub {
owner = "kraxarn";
repo = pname;
rev = "v${version}";
- sha256 = "sha256-oRrgZtSDebbUVPc+hxE9GJ2n1AmGvZt/2aWrBMmRtNA=";
+ sha256 = "sha256-Rgtw+nrM8YUBHPIIe9zVhLij/ep07piPf/2MSmTVQKk=";
};
buildInputs = [ libxcb qtbase qtsvg ];
diff --git a/pkgs/applications/misc/pdfstudioviewer/default.nix b/pkgs/applications/misc/pdfstudioviewer/default.nix
new file mode 100644
index 000000000000..9dc01108e657
--- /dev/null
+++ b/pkgs/applications/misc/pdfstudioviewer/default.nix
@@ -0,0 +1,81 @@
+{ stdenv
+, lib
+, fetchurl
+, dpkg
+, makeDesktopItem
+, copyDesktopItems
+, autoPatchelfHook
+, sane-backends
+, jdk11
+}:
+
+let year = "2021";
+in stdenv.mkDerivation rec {
+ pname = "pdfstudioviewer";
+ version = "${year}.1.2";
+ autoPatchelfIgnoreMissingDeps = false;
+ strictDeps = true;
+
+ src = fetchurl {
+ url = "https://download.qoppa.com/${pname}/v${year}/PDFStudioViewer_v${
+ builtins.replaceStrings [ "." ] [ "_" ] version
+ }_linux64.deb";
+ sha256 = "128k3fm8m8zdykx4s30g5m2zl7cgmvs4qinf1w525zh84v56agz6";
+ };
+
+ buildInputs = [
+ sane-backends
+ jdk11
+ ];
+
+ nativeBuildInputs = [
+ autoPatchelfHook
+ dpkg
+ copyDesktopItems
+ ];
+
+ desktopItems = [
+ (makeDesktopItem {
+ name = "${pname}${year}";
+ desktopName = "PDF Studio";
+ genericName = "View and edit PDF files";
+ exec = "${pname} %f";
+ icon = "${pname}${year}";
+ comment = "Views and edits PDF files";
+ mimeType = "application/pdf";
+ categories = "Office";
+ type = "Application";
+ terminal = false;
+ })
+ ];
+
+ unpackPhase = "dpkg-deb -x $src .";
+ dontBuild = true;
+
+ postPatch = ''
+ substituteInPlace opt/${pname}${year}/${pname}${year} --replace "# INSTALL4J_JAVA_HOME_OVERRIDE=" "INSTALL4J_JAVA_HOME_OVERRIDE=${jdk11.out}"
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/bin
+ mkdir -p $out/share
+ mkdir -p $out/share/pixmaps
+ cp -r opt/${pname}${year} $out/share/
+ rm -rf $out/share/${pname}${year}/jre
+ ln -s $out/share/${pname}${year}/.install4j/${pname}${year}.png $out/share/pixmaps/
+ ln -s $out/share/${pname}${year}/${pname}${year} $out/bin/${pname}
+
+ runHook postInstall
+ '';
+
+ meta = with lib; {
+ homepage = "https://www.qoppa.com/pdfstudio/";
+ description = "An easy to use, full-featured PDF editing software";
+ license = licenses.unfree;
+ platforms = platforms.linux;
+ mainProgram = pname;
+ maintainers = [ maintainers.pwoelfel ];
+ };
+}
diff --git a/pkgs/applications/science/chemistry/molden/default.nix b/pkgs/applications/science/chemistry/molden/default.nix
index 9595639d381e..03f7c6c2b40f 100644
--- a/pkgs/applications/science/chemistry/molden/default.nix
+++ b/pkgs/applications/science/chemistry/molden/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
pname = "molden";
src = fetchurl {
- url = "ftp://ftp.cmbi.umcn.nl/pub/molgraph/molden/molden${version}.tar.gz";
+ url = "https://ftp.science.ru.nl/Molden//molden${version}.tar.gz";
sha256 = "02qi16pz2wffn3cc47dpjqhfafzwfmb79waw4nnhfyir8a4h3cq1";
};
diff --git a/pkgs/applications/science/physics/sherpa/default.nix b/pkgs/applications/science/physics/sherpa/default.nix
index dd726c96606e..29c72b7f11c0 100644
--- a/pkgs/applications/science/physics/sherpa/default.nix
+++ b/pkgs/applications/science/physics/sherpa/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "sherpa";
- version = "2.2.11";
+ version = "2.2.12";
src = fetchurl {
url = "https://www.hepforge.org/archive/sherpa/SHERPA-MC-${version}.tar.gz";
- sha256 = "sha256-DrA/h/f/MjGylKxAtVMq6OLvEdb6yB7pRt8UJXNmwi0=";
+ sha256 = "sha256-UpRkd1yoKLncllEQUm80DedDtgA8Hm+Kvi/BRVCu0AE=";
};
postPatch = lib.optionalString (stdenv.hostPlatform.libc == "glibc") ''
diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix
index ceca7fa636f1..bbf5bd9aa16d 100644
--- a/pkgs/development/libraries/openssl/default.nix
+++ b/pkgs/development/libraries/openssl/default.nix
@@ -19,8 +19,6 @@ assert (
# cgit) that are needed here should be included directly in Nixpkgs as
# files.
-with lib;
-
let
common = { version, sha256, patches ? [], withDocs ? false, extraMeta ? {} }:
stdenv.mkDerivation rec {
@@ -36,7 +34,7 @@ let
postPatch = ''
patchShebangs Configure
- '' + optionalString (versionOlder version "1.1.0") ''
+ '' + lib.optionalString (lib.versionOlder version "1.1.0") ''
patchShebangs test/*
for a in test/t* ; do
substituteInPlace "$a" \
@@ -44,15 +42,15 @@ let
done
''
# config is a configure script which is not installed.
- + optionalString (versionAtLeast version "1.1.1") ''
+ + lib.optionalString (lib.versionAtLeast version "1.1.1") ''
substituteInPlace config --replace '/usr/bin/env' '${buildPackages.coreutils}/bin/env'
- '' + optionalString (versionAtLeast version "1.1.0" && stdenv.hostPlatform.isMusl) ''
+ '' + lib.optionalString (lib.versionAtLeast version "1.1.0" && stdenv.hostPlatform.isMusl) ''
substituteInPlace crypto/async/arch/async_posix.h \
--replace '!defined(__ANDROID__) && !defined(__OpenBSD__)' \
'!defined(__ANDROID__) && !defined(__OpenBSD__) && 0'
'';
- outputs = [ "bin" "dev" "out" "man" ] ++ optional withDocs "doc";
+ outputs = [ "bin" "dev" "out" "man" ] ++ lib.optional withDocs "doc";
setOutputFlags = false;
separateDebugInfo =
!stdenv.hostPlatform.isDarwin &&
@@ -86,7 +84,7 @@ let
else if stdenv.hostPlatform.isBSD
then "./Configure BSD-generic${toString stdenv.hostPlatform.parsed.cpu.bits}"
else if stdenv.hostPlatform.isMinGW
- then "./Configure mingw${optionalString
+ then "./Configure mingw${lib.optionalString
(stdenv.hostPlatform.parsed.cpu.bits != 32)
(toString stdenv.hostPlatform.parsed.cpu.bits)}"
else if stdenv.hostPlatform.isLinux
@@ -108,12 +106,12 @@ let
"-DUSE_CRYPTODEV_DIGESTS"
] ++ lib.optional enableSSL2 "enable-ssl2"
++ lib.optional enableSSL3 "enable-ssl3"
- ++ lib.optional (versionAtLeast version "3.0.0") "enable-ktls"
- ++ lib.optional (versionAtLeast version "1.1.0" && stdenv.hostPlatform.isAarch64) "no-afalgeng"
+ ++ lib.optional (lib.versionAtLeast version "3.0.0") "enable-ktls"
+ ++ lib.optional (lib.versionAtLeast version "1.1.0" && stdenv.hostPlatform.isAarch64) "no-afalgeng"
# OpenSSL needs a specific `no-shared` configure flag.
# See https://wiki.openssl.org/index.php/Compilation_and_Installation#Configure_Options
# for a comprehensive list of configuration options.
- ++ lib.optional (versionAtLeast version "1.1.0" && static) "no-shared";
+ ++ lib.optional (lib.versionAtLeast version "1.1.0" && static) "no-shared";
makeFlags = [
"MANDIR=$(man)/share/man"
@@ -192,7 +190,7 @@ in {
extraMeta.knownVulnerabilities = [ "Support for OpenSSL 1.0.2 ended with 2019." ];
};
- openssl_1_1 = common {
+ openssl_1_1 = common rec {
version = "1.1.1m";
sha256 = "sha256-+JGZvosjykX8fLnx2NPuZzEjGChq0DD1MWrKZGLbbJY=";
patches = [
diff --git a/pkgs/development/libraries/ucx/default.nix b/pkgs/development/libraries/ucx/default.nix
index 06c0ada16feb..76118edfcb3b 100644
--- a/pkgs/development/libraries/ucx/default.nix
+++ b/pkgs/development/libraries/ucx/default.nix
@@ -13,13 +13,13 @@ let
in stdenv.mkDerivation rec {
pname = "ucx";
- version = "1.11.2";
+ version = "1.12.0";
src = fetchFromGitHub {
owner = "openucx";
repo = "ucx";
rev = "v${version}";
- sha256 = "0a4rbgr3hn3h42krb7lasfidhqcavacbpp1pv66l4lvfc0gkwi2i";
+ sha256 = "0jwza9ivfnhkfwg4c58pxalkga5scz803k631xw4hcliy62gk53w";
};
nativeBuildInputs = [ autoreconfHook doxygen ];
diff --git a/pkgs/development/ocaml-modules/lablgtk3/default.nix b/pkgs/development/ocaml-modules/lablgtk3/default.nix
index 29bc928e6220..81fb51d1f1e2 100644
--- a/pkgs/development/ocaml-modules/lablgtk3/default.nix
+++ b/pkgs/development/ocaml-modules/lablgtk3/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, pkg-config, buildDunePackage, dune-configurator, gtk3, cairo2 }:
+{ lib, fetchFromGitHub, fetchpatch, pkg-config, buildDunePackage, dune-configurator, gtk3, cairo2 }:
buildDunePackage rec {
version = "3.1.2";
@@ -15,6 +15,11 @@ buildDunePackage rec {
sha256 = "sha256:0b17w9qb1f02h3313cm62mrqlhwxficppzm72n7sf8mmwrylxbm7";
};
+ patches = [ (fetchpatch {
+ name = "dune-project.patch";
+ url = "https://raw.githubusercontent.com/ocaml/opam-repository/10a48cb9fab88f67f6cb70280e0fec035c32d41c/packages/lablgtk3/lablgtk3.3.1.2/files/dune-project.patch";
+ sha256 = "03jf5hclqdq7iq84djaqcnfnnnd7z3hb48rr8n1gyxzjyx86b3fh";
+ }) ];
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dune-configurator ];
propagatedBuildInputs = [ gtk3 cairo2 ];
diff --git a/pkgs/development/python-modules/deep-translator/default.nix b/pkgs/development/python-modules/deep-translator/default.nix
index ae7bf52e1fe7..cdc18f159fb9 100644
--- a/pkgs/development/python-modules/deep-translator/default.nix
+++ b/pkgs/development/python-modules/deep-translator/default.nix
@@ -2,11 +2,11 @@
buildPythonPackage rec {
pname = "deep-translator";
- version = "1.6.0";
+ version = "1.6.1";
src = fetchPypi {
inherit pname version;
- sha256 = "sha256-B/SnLSaCRVhQvSU2hmdKPswM2N73nHAzQfVNBMgCofI=";
+ sha256 = "2611c54209b234730f3e5e6481cb875e120e49d9ec1a27a1fa89850150485975";
};
propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/pa-ringbuffer/default.nix b/pkgs/development/python-modules/pa-ringbuffer/default.nix
index 466d3937a1fb..066c4a47ae4e 100644
--- a/pkgs/development/python-modules/pa-ringbuffer/default.nix
+++ b/pkgs/development/python-modules/pa-ringbuffer/default.nix
@@ -2,13 +2,13 @@
buildPythonPackage rec {
pname = "pa-ringbuffer";
- version = "0.1.3";
+ version = "0.1.4";
src = fetchFromGitHub {
owner = "spatialaudio";
repo = "python-pa-ringbuffer";
rev = version;
- sha256 = "0afpydy1l20hd1xncjppjhqa2c8dj5h9nlv4z8m55cs9hc9h1mxv";
+ sha256 = "1d4k6z13mc1f88m6wbhfx8hillb7q78n33ws5bmyblsdkv1gx607";
};
meta = {
diff --git a/pkgs/development/python-modules/pyswitchbot/default.nix b/pkgs/development/python-modules/pyswitchbot/default.nix
index a51f15f5eeb7..96037d512838 100644
--- a/pkgs/development/python-modules/pyswitchbot/default.nix
+++ b/pkgs/development/python-modules/pyswitchbot/default.nix
@@ -6,14 +6,14 @@
buildPythonPackage rec {
pname = "pyswitchbot";
- version = "0.13.0";
+ version = "0.13.2";
format = "setuptools";
src = fetchFromGitHub {
owner = "Danielhiversen";
repo = "pySwitchbot";
rev = version;
- sha256 = "sha256-dx3OMzWJohOYCg7TnrqL4FLZoC+Q1dyJyUAdreDyfl0=";
+ sha256 = "0pdmssd5dr364p3lrkxqryjc0rbaw6xp724zwqf3i87qs6ljs928";
};
propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/python-telegram-bot/default.nix b/pkgs/development/python-modules/python-telegram-bot/default.nix
index 2bff91864c85..939c4404d836 100644
--- a/pkgs/development/python-modules/python-telegram-bot/default.nix
+++ b/pkgs/development/python-modules/python-telegram-bot/default.nix
@@ -13,14 +13,14 @@
buildPythonPackage rec {
pname = "python-telegram-bot";
- version = "13.9";
+ version = "13.10";
format = "setuptools";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
- sha256 = "512d7a84f4bf4e59b7acaf87a38e29c60f65a2717ebf6455b4d66fd058326b1b";
+ sha256 = "d2c555431821f4ace0c1b7ce12af41999f01b793b275dee131f1034d08c01e3e";
};
propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/shodan/default.nix b/pkgs/development/python-modules/shodan/default.nix
index 8b378e844e43..772b38be30f2 100644
--- a/pkgs/development/python-modules/shodan/default.nix
+++ b/pkgs/development/python-modules/shodan/default.nix
@@ -5,16 +5,20 @@
, colorama
, requests
, setuptools
+, pythonOlder
, XlsxWriter
}:
buildPythonPackage rec {
pname = "shodan";
- version = "1.26.0";
+ version = "1.26.1";
+ format = "setuptools";
+
+ disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
- sha256 = "4f2ee19bdcad41a5f4618c8e7e1759f62c337cc2214416b53ad3d0c04a1146bc";
+ sha256 = "sha256-8oJ7QNaRiYjvn18W3LihM4OqrhooRYmPcBLqyJBru4c=";
};
propagatedBuildInputs = [
@@ -27,7 +31,10 @@ buildPythonPackage rec {
# The tests require a shodan api key, so skip them.
doCheck = false;
- pythonImportsCheck = [ "shodan" ];
+
+ pythonImportsCheck = [
+ "shodan"
+ ];
meta = with lib; {
description = "Python library and command-line utility for Shodan";
diff --git a/pkgs/misc/cups/drivers/canon/default.nix b/pkgs/misc/cups/drivers/canon/default.nix
index 93bc1f79e250..6a9fc808004e 100644
--- a/pkgs/misc/cups/drivers/canon/default.nix
+++ b/pkgs/misc/cups/drivers/canon/default.nix
@@ -4,9 +4,15 @@
, unzip
, autoconf
, automake
-, libtool
+, libtool_1_5
, makeWrapper
, cups
+, jbigkit
+, glib
+, gtk3
+, pkg-config
+, gnome2
+, libxml2
, ghostscript
, pkgsi686Linux
, zlib
@@ -15,16 +21,14 @@
let
i686_NIX_GCC = pkgsi686Linux.callPackage ({ gcc }: gcc) { };
- i686_libxml2 = pkgsi686Linux.callPackage ({ libxml2 }: libxml2) { };
- commonVer = "4.10";
- version = "3.70";
- dl = "4/0100010264/01";
+ version = "5.40";
+ dl = "6/0100009236/10";
versionNoDots = builtins.replaceStrings [ "." ] [ "" ] version;
src_canon = fetchurl {
- url = "http://gdlp01.c-wss.com/gds/${dl}/linux-UFRII-drv-v${versionNoDots}-uken-07.tar.gz";
- sha256 = "01nxpg3h1c64p5skxv904fg5c4sblmif486vkij2v62wwn6l65pz";
+ url = "http://gdlp01.c-wss.com/gds/${dl}/linux-UFRII-drv-v${versionNoDots}-usen-20.tar.gz";
+ sha256 = "sha256:069z6ijmql62mcdyxnzc9mf0dxa6z1107cd0ab4i1adk8kr3d75k";
};
in
@@ -36,190 +40,122 @@ stdenv.mkDerivation {
src = src_canon;
postUnpack = ''
- (cd $sourceRoot; tar -xzf Sources/cndrvcups-common-${commonVer}-1.tar.gz)
- (cd $sourceRoot; tar -xzf Sources/cndrvcups-lb-${version}-1.tar.gz)
+ (cd $sourceRoot; tar -xzf Sources/cnrdrvcups-lb-${version}-1.tar.gz)
+ (cd $sourceRoot; sed -ie "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-common-${version}/allgen.sh)
+ (cd $sourceRoot; sed -ie "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-common-${version}/allgen.sh)
+ (cd $sourceRoot; sed -ie "s@_bindir=/usr/bin@_libdir=$out/bin@" cnrdrvcups-common-${version}/allgen.sh)
+ (cd $sourceRoot; sed -ie "s@etc/cngplp@$out/etc/cngplp@" cnrdrvcups-common-${version}/cngplp/Makefile.am)
+ (cd $sourceRoot; sed -ie "s@usr/share/cngplp@$out/usr/share/cngplp@" cnrdrvcups-common-${version}/cngplp/src/Makefile.am)
+ (cd $sourceRoot; patchShebangs cnrdrvcups-common-${version})
+
+ (cd $sourceRoot; sed -ie "s@_prefix=/usr@_prefix=$out@" cnrdrvcups-lb-${version}/allgen.sh)
+ (cd $sourceRoot; sed -ie "s@_libdir=/usr/lib@_libdir=$out/lib@" cnrdrvcups-lb-${version}/allgen.sh)
+ (cd $sourceRoot; sed -ie "s@_bindir=/usr/bin@_libdir=$out/bin@" cnrdrvcups-lb-${version}/allgen.sh)
+ (cd $sourceRoot; sed -ie '/^cd \.\.\/cngplp/,/^cd files/{/^cd files/!{d}}' cnrdrvcups-lb-${version}/allgen.sh)
+ (cd $sourceRoot; sed -ie "s@cd \.\./pdftocpca@cd pdftocpca@" cnrdrvcups-lb-${version}/allgen.sh)
+ (cd $sourceRoot; sed -i "/CNGPLPDIR/d" cnrdrvcups-lb-${version}/Makefile)
+ (cd $sourceRoot; patchShebangs cnrdrvcups-lb-${version})
'';
- nativeBuildInputs = [ makeWrapper unzip autoconf automake libtool ];
+ nativeBuildInputs = [ makeWrapper unzip autoconf automake libtool_1_5 ];
- buildInputs = [ cups zlib ];
+ buildInputs = [ cups zlib jbigkit glib gtk3 pkg-config gnome2.libglade libxml2 ];
installPhase = ''
runHook preInstall
- ##
- ## cndrvcups-common buildPhase
- ##
- ( cd cndrvcups-common-${commonVer}/buftool
- autoreconf -fi
- ./autogen.sh --prefix=$out --enable-progpath=$out/bin --libdir=$out/lib --disable-shared --enable-static
- make
- )
-
- ( cd cndrvcups-common-${commonVer}/backend
- ./autogen.sh --prefix=$out --libdir=$out/lib
- make
- )
-
- ( cd cndrvcups-common-${commonVer}/c3plmod_ipc
- make
- )
-
- ##
- ## cndrvcups-common installPhase
- ##
-
- ( cd cndrvcups-common-${commonVer}/buftool
+ (
+ cd cnrdrvcups-common-${version}
+ ./allgen.sh
make install
)
-
- ( cd cndrvcups-common-${commonVer}/backend
- make install
- )
-
- ( cd cndrvcups-common-${commonVer}/c3plmod_ipc
- make install DESTDIR=$out/lib
- )
-
- ( cd cndrvcups-common-${commonVer}/libs
- chmod 755 *
- mkdir -p $out/lib32
- mkdir -p $out/bin
- cp libcaiowrap.so.1.0.0 $out/lib32
- cp libcaiousb.so.1.0.0 $out/lib32
- cp libc3pl.so.0.0.1 $out/lib32
- cp libcaepcm.so.1.0 $out/lib32
- cp libColorGear.so.0.0.0 $out/lib32
- cp libColorGearC.so.1.0.0 $out/lib32
- cp libcanon_slim.so.1.0.0 $out/lib32
- cp c3pldrv $out/bin
- )
-
- (cd cndrvcups-common-${commonVer}/Rule
+ (
+ cd cnrdrvcups-common-${version}/Rule
mkdir -p $out/share/usb
- chmod 644 *.usb-quirks $out/share/usb
+ install -m 644 *.usb-quirks $out/share/usb
)
-
- (cd cndrvcups-common-${commonVer}/data
- chmod 644 *.ICC
- mkdir -p $out/share/caepcm
- cp *.ICC $out/share/caepcm
- cp *.icc $out/share/caepcm
- cp *.PRF $out/share/caepcm
- )
-
- (cd $out/lib32
- ln -sf libc3pl.so.0.0.1 libc3pl.so.0
- ln -sf libc3pl.so.0.0.1 libc3pl.so
- ln -sf libcaepcm.so.1.0 libcaepcm.so.1
- ln -sf libcaepcm.so.1.0 libcaepcm.so
- ln -sf libcaiowrap.so.1.0.0 libcaiowrap.so.1
- ln -sf libcaiowrap.so.1.0.0 libcaiowrap.so
- ln -sf libcaiousb.so.1.0.0 libcaiousb.so.1
- ln -sf libcaiousb.so.1.0.0 libcaiousb.so
- ln -sf libcanon_slim.so.1.0.0 libcanon_slim.so.1
- ln -sf libcanon_slim.so.1.0.0 libcanon_slim.so
- ln -sf libColorGear.so.0.0.0 libColorGear.so.0
- ln -sf libColorGear.so.0.0.0 libColorGear.so
- ln -sf libColorGearC.so.1.0.0 libColorGearC.so.1
- ln -sf libColorGearC.so.1.0.0 libColorGearC.so
- )
-
- (cd $out/lib
- ln -sf libcanonc3pl.so.1.0.0 libcanonc3pl.so
- ln -sf libcanonc3pl.so.1.0.0 libcanonc3pl.so.1
- )
-
- patchelf --set-rpath "$(cat ${i686_NIX_GCC}/nix-support/orig-cc)/lib" $out/lib32/libColorGear.so.0.0.0
- patchelf --set-rpath "$(cat ${i686_NIX_GCC}/nix-support/orig-cc)/lib" $out/lib32/libColorGearC.so.1.0.0
-
- patchelf --interpreter "$(cat ${i686_NIX_GCC}/nix-support/dynamic-linker)" --set-rpath "$out/lib32" $out/bin/c3pldrv
-
- # c3pldrv is programmed with fixed paths that point to "/usr/{bin,lib.share}/..."
- # preload32 wrappes all necessary function calls to redirect the fixed paths
- # into $out.
- mkdir -p $out/libexec
- preload32=$out/libexec/libpreload32.so
- ${i686_NIX_GCC}/bin/gcc -shared ${./preload.c} -o $preload32 -ldl -DOUT=\"$out\" -fPIC
- wrapProgram "$out/bin/c3pldrv" \
- --set PRELOAD_DEBUG 1 \
- --set LD_PRELOAD $preload32 \
- --prefix LD_LIBRARY_PATH : "$out/lib32"
-
-
-
- ##
- ## cndrvcups-lb buildPhase
- ##
-
- ( cd cndrvcups-lb-${version}/buftool
- ./autogen.sh --prefix=$out --libdir=$out/lib --enable-progpath=$out/bin --enable-static
- make
- )
-
- ( cd cndrvcups-lb-${version}/pstoufr2cpca
- ./autogen.sh --prefix=$out --libdir=$out/lib
- make
- )
-
- ##
- ## cndrvcups-lb installPhase
- ##
-
- ( cd cndrvcups-lb-${version}/pstoufr2cpca
+ (
+ cd cnrdrvcups-lb-${version}
+ ./allgen.sh
make install
)
-
- ( cd cndrvcups-lb-${version}/libs
- chmod 755 *
+ (
+ cd lib
mkdir -p $out/lib32
- mkdir -p $out/bin
- cp libcanonufr2.la $out/lib32
- cp libcanonufr2.so.1.0.0 $out/lib32
- cp libufr2filter.so.1.0.0 $out/lib32
- cp libEnoJBIG.so.1.0.0 $out/lib32
- cp libEnoJPEG.so.1.0.0 $out/lib32
- cp libcaiocnpkbidi.so.1.0.0 $out/lib32
- cp libcnlbcm.so.1.0 $out/lib32
+ install -m 755 libs32/intel/libColorGearCufr2.so.2.0.0 $out/lib32
+ install -m 755 libs32/intel/libcaepcmufr2.so.1.0 $out/lib32
+ install -m 755 libs32/intel/libcaiocnpkbidir.so.1.0.0 $out/lib32
+ install -m 755 libs32/intel/libcaiousb.so.1.0.0 $out/lib32
+ install -m 755 libs32/intel/libcaiowrapufr2.so.1.0.0 $out/lib32
+ install -m 755 libs32/intel/libcanon_slimufr2.so.1.0.0 $out/lib32
+ install -m 755 libs32/intel/libcanonufr2r.so.1.0.0 $out/lib32
+ install -m 755 libs32/intel/libcnaccm.so.1.0 $out/lib32
+ install -m 755 libs32/intel/libcnlbcmr.so.1.0 $out/lib32
+ install -m 755 libs32/intel/libcnncapcmr.so.1.0 $out/lib32
+ install -m 755 libs32/intel/libufr2filterr.so.1.0.0 $out/lib32
- cp cnpkmoduleufr2 $out/bin #maybe needs setuid 4755
- cp cnpkbidi $out/bin
- )
+ mkdir -p $out/lib
+ install -m 755 libs64/intel/libColorGearCufr2.so.2.0.0 $out/lib
+ install -m 755 libs64/intel/libcaepcmufr2.so.1.0 $out/lib
+ install -m 755 libs64/intel/libcaiocnpkbidir.so.1.0.0 $out/lib
+ install -m 755 libs64/intel/libcaiousb.so.1.0.0 $out/lib
+ install -m 755 libs64/intel/libcaiowrapufr2.so.1.0.0 $out/lib
+ install -m 755 libs64/intel/libcanon_slimufr2.so.1.0.0 $out/lib
+ install -m 755 libs64/intel/libcanonufr2r.so.1.0.0 $out/lib
+ install -m 755 libs64/intel/libcnaccm.so.1.0 $out/lib
+ install -m 755 libs64/intel/libcnlbcmr.so.1.0 $out/lib
+ install -m 755 libs64/intel/libcnncapcmr.so.1.0 $out/lib
+ install -m 755 libs64/intel/libufr2filterr.so.1.0.0 $out/lib
- ( cd $out/lib32
- ln -sf libcanonufr2.so.1.0.0 libcanonufr2.so
- ln -sf libcanonufr2.so.1.0.0 libcanonufr2.so.1
- ln -sf libufr2filter.so.1.0.0 libufr2filter.so
- ln -sf libufr2filter.so.1.0.0 libufr2filter.so.1
- ln -sf libEnoJBIG.so.1.0.0 libEnoJBIG.so
- ln -sf libEnoJBIG.so.1.0.0 libEnoJBIG.so.1
- ln -sf libEnoJPEG.so.1.0.0 libEnoJPEG.so
- ln -sf libEnoJPEG.so.1.0.0 libEnoJPEG.so.1
- ln -sf libcaiocnpkbidi.so.1.0.0 libcaiocnpkbidi.so
- ln -sf libcaiocnpkbidi.so.1.0.0 libcaiocnpkbidi.so.1
- ln -sf libcnlbcm.so.1.0 libcnlbcm.so.1
- ln -sf libcnlbcm.so.1.0 libcnlbcm.so
- )
+ install -m 755 libs64/intel/cnpdfdrv $out/bin
+ install -m 755 libs64/intel/cnpkbidir $out/bin
+ install -m 755 libs64/intel/cnpkmoduleufr2r $out/bin
+ install -m 755 libs64/intel/cnrsdrvufr2 $out/bin
+ install -m 755 libs64/intel/cnsetuputil2 $out/bin
+
+ mkdir -p $out/share/cnpkbidir
+ install -m 644 libs64/intel/cnpkbidir_info* $out/share/cnpkbidir
- ( cd cndrvcups-lb-${version}
- chmod 644 data/CnLB*
- chmod 644 libs/cnpkbidi_info*
- chmod 644 libs/ThLB*
- mkdir -p $out/share/caepcm
- mkdir -p $out/share/cnpkbidi
mkdir -p $out/share/ufr2filter
- cp data/CnLB* $out/share/caepcm
- cp libs/cnpkbidi_info* $out/share/cnpkbidi
- cp libs/ThLB* $out/share/ufr2filter
+ install -m 644 libs64/intel/ThLB* $out/share/ufr2filter
+ )
+
+ (
+ cd $out/lib32
+ ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so
+ ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so
+ ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so.1
+ ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so
+ ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so.1
+ ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so
+ ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so.1
+ )
+
+ (
+ cd $out/lib
+ ln -sf libcaepcmufr2.so.1.0 libcaepcmufr2.so
+ ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so
+ ln -sf libcaiowrapufr2.so.1.0.0 libcaiowrapufr2.so.1
+ ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so
+ ln -sf libcanon_slimufr2.so.1.0.0 libcanon_slimufr2.so.1
+ ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so
+ ln -sf libufr2filterr.so.1.0.0 libufr2filterr.so.1
+ )
+
+ # Perhaps patch the lib64 version as well???
+ patchelf --set-rpath "$(cat ${i686_NIX_GCC}/nix-support/orig-cc)/lib" $out/lib32/libColorGearCufr2.so.2.0.0
+
+ (
+ cd lib/data/ufr2
+ mkdir -p $out/share/caepcm
+ install -m 644 *.ICC $out/share/caepcm
+ install -m 644 *.icc $out/share/caepcm
+ install -m 644 *.PRF $out/share/caepcm
+ install -m 644 CnLB* $out/share/caepcm
)
mkdir -p $out/share/cups/model
- install -c -m 644 cndrvcups-lb-${version}/ppd/CN*.ppd $out/share/cups/model/
-
- patchelf --set-rpath "$out/lib32:${i686_libxml2.out}/lib" $out/lib32/libcanonufr2.so.1.0.0
-
- patchelf --interpreter "$(cat ${i686_NIX_GCC}/nix-support/dynamic-linker)" --set-rpath "$out/lib32" $out/bin/cnpkmoduleufr2
- patchelf --interpreter "$(cat ${i686_NIX_GCC}/nix-support/dynamic-linker)" --set-rpath "$out/lib32:${i686_libxml2.out}/lib" $out/bin/cnpkbidi
+ install -m 644 cnrdrvcups-lb-${version}/ppd/*.ppd $out/share/cups/model/
makeWrapper "${ghostscript}/bin/gs" "$out/bin/gs" \
--prefix LD_LIBRARY_PATH ":" "$out/lib" \
@@ -233,7 +169,7 @@ stdenv.mkDerivation {
homepage = "http://www.canon.com/";
license = licenses.unfree;
maintainers = with maintainers; [
- kylesferrazza
+ # please consider maintaining if you are updating this package
];
};
}
diff --git a/pkgs/misc/cups/drivers/canon/preload.c b/pkgs/misc/cups/drivers/canon/preload.c
deleted file mode 100644
index f3a30063a6e3..000000000000
--- a/pkgs/misc/cups/drivers/canon/preload.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * LD_PRELOAD trick to make c3pldrv handle the absolute path to /usr/{bin,lib,share)}.
- * As c3pldrv is a 32 bit executable, /lib will be rewritten to /lib32.
- *
- * Usage:
- * gcc -shared -fPIC -DOUT="$out" preload.c -o preload.so -ldl
- * LD_PRELOAD=$PWD/preload.so ./c3pldrv
- */
-
-#define _GNU_SOURCE
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#ifndef OUT
-#error Missing OUT define - path to the installation directory.
-#endif
-
-typedef void *(*dlopen_func_t)(const char *filename, int flag);
-typedef int (*open_func_t)(const char *pathname, int flags, ...);
-typedef int (*execv_func_t)(const char *path, char *const argv[]);
-
-
-void *dlopen(const char *filename, int flag)
-{
- dlopen_func_t orig_dlopen;
- const char *new_filename;
- char buffer[PATH_MAX];
-
- orig_dlopen = (dlopen_func_t)dlsym(RTLD_NEXT, "dlopen");
-
- new_filename = filename;
- if (strncmp("/usr/lib", filename, 8) == 0) {
- snprintf(buffer, PATH_MAX, OUT "/lib32%s", filename+8);
- buffer[PATH_MAX-1] = '\0';
- new_filename = buffer;
- }
-
- return orig_dlopen(new_filename, flag);
-}
-
-int open(const char *pathname, int flags, ...)
-{
- open_func_t orig_open;
- const char *new_pathname;
- char buffer[PATH_MAX];
-
- orig_open = (open_func_t)dlsym(RTLD_NEXT, "open");
-
- new_pathname = pathname;
- if (strncmp("/usr/share", pathname, 10) == 0) {
- snprintf(buffer, PATH_MAX, OUT "%s", pathname+4);
- buffer[PATH_MAX-1] = '\0';
- new_pathname = buffer;
- }
-
- return orig_open(new_pathname, flags);
-}
-
-int execv(const char *path, char *const argv[])
-{
- execv_func_t orig_execv;
- const char *new_path;
- char buffer[PATH_MAX];
-
- orig_execv = (execv_func_t)dlsym(RTLD_NEXT, "execv");
-
- new_path = path;
- if (strncmp("/usr/bin", path, 8) == 0) {
- snprintf(buffer, PATH_MAX, OUT "%s", path+4);
- buffer[PATH_MAX-1] = '\0';
- new_path = buffer;
- }
-
- return orig_execv(new_path, argv);
-}
-
diff --git a/pkgs/misc/vim-plugins/generated.nix b/pkgs/misc/vim-plugins/generated.nix
index 4d49ce5308d5..62264f10857f 100644
--- a/pkgs/misc/vim-plugins/generated.nix
+++ b/pkgs/misc/vim-plugins/generated.nix
@@ -1710,6 +1710,18 @@ final: prev:
meta.homepage = "https://github.com/dracula/vim/";
};
+ dressing-nvim = buildVimPluginFrom2Nix {
+ pname = "dressing.nvim";
+ version = "2022-01-18";
+ src = fetchFromGitHub {
+ owner = "stevearc";
+ repo = "dressing.nvim";
+ rev = "3f23266f0c623415ab8051c6e05c35e0981025b5";
+ sha256 = "0khdg2wn204f0rrh5m26iaymf4ic73lk5h5z0zkc1ahdhfy3alsv";
+ };
+ meta.homepage = "https://github.com/stevearc/dressing.nvim/";
+ };
+
echodoc-vim = buildVimPluginFrom2Nix {
pname = "echodoc.vim";
version = "2021-11-26";
diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names
index d3b6466e9643..49cbb06dd828 100644
--- a/pkgs/misc/vim-plugins/vim-plugin-names
+++ b/pkgs/misc/vim-plugins/vim-plugin-names
@@ -755,6 +755,7 @@ steelsojka/pears.nvim
stefandtw/quickfix-reflector.vim
stephpy/vim-yaml
stevearc/aerial.nvim
+stevearc/dressing.nvim
stsewd/fzf-checkout.vim
sudormrfbin/cheatsheet.nvim
sunaku/vim-dasht
diff --git a/pkgs/servers/amqp/rabbitmq-server/default.nix b/pkgs/servers/amqp/rabbitmq-server/default.nix
index a5b36ad5c4ac..7203ac704c70 100644
--- a/pkgs/servers/amqp/rabbitmq-server/default.nix
+++ b/pkgs/servers/amqp/rabbitmq-server/default.nix
@@ -27,12 +27,12 @@
stdenv.mkDerivation rec {
pname = "rabbitmq-server";
- version = "3.9.8";
+ version = "3.9.13";
# when updating, consider bumping elixir version in all-packages.nix
src = fetchurl {
url = "https://github.com/rabbitmq/rabbitmq-server/releases/download/v${version}/${pname}-${version}.tar.xz";
- sha256 = "sha256-l77pOFNzw83Qj+MbnwGiClA7HIGvAtI0N/9k12GV7lU=";
+ sha256 = "sha256-DndZ74m+CFyrukxKyOpfoRCb86RID2XL7x0eUZifcno=";
};
nativeBuildInputs = [ unzip xmlto docbook_xml_dtd_45 docbook_xsl zip rsync ];
diff --git a/pkgs/servers/web-apps/invoiceplane/default.nix b/pkgs/servers/web-apps/invoiceplane/default.nix
new file mode 100644
index 000000000000..6c9ffd44b9d7
--- /dev/null
+++ b/pkgs/servers/web-apps/invoiceplane/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchurl, writeText, unzip, nixosTests }:
+
+stdenv.mkDerivation rec {
+ pname = "invoiceplane";
+ version = "1.5.11";
+
+ src = fetchurl {
+ url = "https://github.com/InvoicePlane/InvoicePlane/releases/download/v${version}/v${version}.zip";
+ sha256 = "137g0xps4kb3j7f5gz84ql18iggbya6d9dnrfp05g2qcbbp8kqad";
+ };
+
+ nativeBuildInputs = [ unzip ];
+
+ sourceRoot = ".";
+
+ installPhase = ''
+ mkdir -p $out/
+ cp -r . $out/
+ '';
+
+ passthru.tests = {
+ inherit (nixosTests) invoiceplane;
+ };
+
+ meta = with lib; {
+ description = "Self-hosted open source application for managing your invoices, clients and payments";
+ license = licenses.mit;
+ homepage = "https://www.invoiceplane.com";
+ platforms = platforms.all;
+ maintainers = with maintainers; [ onny ];
+ };
+}
diff --git a/pkgs/tools/X11/caffeine-ng/default.nix b/pkgs/tools/X11/caffeine-ng/default.nix
index cadfa2c99973..36d43ea75d4d 100644
--- a/pkgs/tools/X11/caffeine-ng/default.nix
+++ b/pkgs/tools/X11/caffeine-ng/default.nix
@@ -4,11 +4,11 @@
python3Packages.buildPythonApplication rec {
pname = "caffeine-ng";
- version = "3.4.2";
+ version = "3.5.1";
src = python3Packages.fetchPypi{
inherit pname version;
- sha256="05k8smjlfjcccgmp8qi04l7106k46fs4p8fl5bdqqjwv6pwl7y4w";
+ sha256="0akzldqvxnqngpj1s6y2phgj7ch8wfm02j6z2drqvsbvaadw0jbm";
};
nativeBuildInputs = [ wrapGAppsHook glib ];
@@ -18,7 +18,7 @@ python3Packages.buildPythonApplication rec {
];
pythonPath = with python3Packages; [
dbus-python docopt ewmh pygobject3 pyxdg
- setproctitle
+ setproctitle pulsectl
];
doCheck = false; # There are no tests.
diff --git a/pkgs/tools/admin/amazon-ecr-credential-helper/default.nix b/pkgs/tools/admin/amazon-ecr-credential-helper/default.nix
index e661af0f949f..b70ddb76fc1f 100644
--- a/pkgs/tools/admin/amazon-ecr-credential-helper/default.nix
+++ b/pkgs/tools/admin/amazon-ecr-credential-helper/default.nix
@@ -2,7 +2,7 @@
buildGoPackage rec {
pname = "amazon-ecr-credential-helper";
- version = "0.5.0";
+ version = "0.6.0";
goPackagePath = "github.com/awslabs/amazon-ecr-credential-helper";
@@ -10,13 +10,13 @@ buildGoPackage rec {
owner = "awslabs";
repo = "amazon-ecr-credential-helper";
rev = "v${version}";
- sha256 = "sha256-GmGse+N7QeG2sAjCumGkUAWu/KfhnMltzeh+s8o+tiw=";
+ sha256 = "sha256-lkc8plWWmth8SjeWBCf1HTnCfg09QNIsN3xPePqnv6Y=";
};
meta = with lib; {
description = "The Amazon ECR Docker Credential Helper is a credential helper for the Docker daemon that makes it easier to use Amazon Elastic Container Registry";
homepage = "https://github.com/awslabs/amazon-ecr-credential-helper";
- license = licenses.asl20 ;
+ license = licenses.asl20;
maintainers = with maintainers; [ kalbasit ];
platforms = platforms.linux ++ platforms.darwin;
};
diff --git a/pkgs/tools/networking/amass/default.nix b/pkgs/tools/networking/amass/default.nix
index c15633a4f5d4..7b8e6e07dcc9 100644
--- a/pkgs/tools/networking/amass/default.nix
+++ b/pkgs/tools/networking/amass/default.nix
@@ -5,16 +5,16 @@
buildGoModule rec {
pname = "amass";
- version = "3.15.2";
+ version = "3.16.0";
src = fetchFromGitHub {
owner = "OWASP";
repo = "Amass";
rev = "v${version}";
- sha256 = "sha256-0zTnknpjTvUEai06JsRfQASclxpvaJnEfYK7biZeqU0=";
+ sha256 = "sha256-V3FqiAvHnd3q3yhrhDaeka22R+mBqFdPjGqY4FGCx9M=";
};
- vendorSha256 = "sha256-Lh/VN+IBXpT8e7ok5Qjfk5tgXEUVwKMHYcp9WrChN3A=";
+ vendorSha256 = "sha256-0hor9Sldl8HhlKfYhWhb79wnZSMn5/Hg0Ux937qQkT4=";
outputs = [ "out" "wordlists" ];
diff --git a/pkgs/tools/security/metasploit/Gemfile b/pkgs/tools/security/metasploit/Gemfile
index 22b2cb70e0ed..4e770c3ead14 100644
--- a/pkgs/tools/security/metasploit/Gemfile
+++ b/pkgs/tools/security/metasploit/Gemfile
@@ -1,4 +1,4 @@
# frozen_string_literal: true
source "https://rubygems.org"
-gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.1.24"
+gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.1.25"
diff --git a/pkgs/tools/security/metasploit/Gemfile.lock b/pkgs/tools/security/metasploit/Gemfile.lock
index 38c9bda14349..d7be1df5a86e 100644
--- a/pkgs/tools/security/metasploit/Gemfile.lock
+++ b/pkgs/tools/security/metasploit/Gemfile.lock
@@ -1,9 +1,9 @@
GIT
remote: https://github.com/rapid7/metasploit-framework
- revision: 0991344df7a2b343b99e83507bf217137f11801d
- ref: refs/tags/6.1.24
+ revision: 4a1ba0f9095d5c6e954ba58bc71d02feefc411a5
+ ref: refs/tags/6.1.25
specs:
- metasploit-framework (6.1.24)
+ metasploit-framework (6.1.25)
actionpack (~> 6.0)
activerecord (~> 6.0)
activesupport (~> 6.0)
@@ -19,12 +19,11 @@ GIT
em-http-request
eventmachine
faker
- faraday (= 1.8.0)
+ faraday
faye-websocket
filesize
hrr_rb_ssh-ed25519
http-cookie
- io-console (= 0.5.9)
irb
jsobfu
json
@@ -129,13 +128,13 @@ GEM
arel-helpers (2.14.0)
activerecord (>= 3.1.0, < 8)
aws-eventstream (1.2.0)
- aws-partitions (1.547.0)
- aws-sdk-core (3.125.2)
+ aws-partitions (1.549.0)
+ aws-sdk-core (3.125.5)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.525.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
- aws-sdk-ec2 (1.291.0)
+ aws-sdk-ec2 (1.294.0)
aws-sdk-core (~> 3, >= 3.125.0)
aws-sigv4 (~> 1.1)
aws-sdk-iam (1.65.0)
@@ -153,17 +152,17 @@ GEM
bcrypt (3.1.16)
bcrypt_pbkdf (1.1.0)
bindata (2.4.10)
- bson (4.13.0)
+ bson (4.14.0)
builder (3.2.4)
concurrent-ruby (1.0.5)
cookiejar (0.3.3)
crass (1.0.6)
daemons (1.4.1)
- dnsruby (1.61.7)
+ dnsruby (1.61.9)
simpleidn (~> 0.1)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
- ed25519 (1.2.4)
+ ed25519 (1.3.0)
em-http-request (1.1.7)
addressable (>= 2.3.4)
cookiejar (!= 0.3.1)
@@ -176,25 +175,29 @@ GEM
eventmachine (1.2.7)
faker (2.19.0)
i18n (>= 1.6, < 2)
- faraday (1.8.0)
+ faraday (1.9.3)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
- faraday-httpclient (~> 1.0.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
- faraday-net_http_persistent (~> 1.1)
+ faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
- multipart-post (>= 1.2, < 3)
+ faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.3)
+ multipart-post (>= 1.2, < 3)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
faye-websocket (0.11.1)
eventmachine (>= 0.12.0)
websocket-driver (>= 0.5.1)
@@ -215,7 +218,7 @@ GEM
httpclient (2.8.3)
i18n (1.8.11)
concurrent-ruby (~> 1.0)
- io-console (0.5.9)
+ io-console (0.5.11)
irb (1.3.6)
reline (>= 0.2.5)
jmespath (1.5.0)
@@ -264,7 +267,7 @@ GEM
mini_portile2 (2.7.1)
minitest (5.15.0)
mqtt (0.5.0)
- msgpack (1.4.2)
+ msgpack (1.4.3)
multi_json (1.15.0)
multipart-post (2.1.1)
mustermann (1.1.1)
@@ -275,11 +278,11 @@ GEM
network_interface (0.0.2)
nexpose (7.3.0)
nio4r (2.5.8)
- nokogiri (1.13.0)
+ nokogiri (1.13.1)
mini_portile2 (~> 2.7.0)
racc (~> 1.4)
nori (2.6.0)
- octokit (4.21.0)
+ octokit (4.22.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
openssl-ccm (1.2.2)
@@ -373,7 +376,7 @@ GEM
rex-text
rexml (3.2.5)
rkelly-remix (0.0.7)
- ruby-macho (2.5.1)
+ ruby-macho (3.0.0)
ruby-rc4 (0.1.5)
ruby2_keywords (0.0.5)
ruby_smb (3.0.0)
@@ -419,7 +422,7 @@ GEM
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
win32api (0.1.0)
- windows_error (0.1.2)
+ windows_error (0.1.3)
winrm (2.3.6)
builder (>= 2.1.2)
erubi (~> 1.8)
diff --git a/pkgs/tools/security/metasploit/default.nix b/pkgs/tools/security/metasploit/default.nix
index 727518fe81df..d9a508640ca9 100644
--- a/pkgs/tools/security/metasploit/default.nix
+++ b/pkgs/tools/security/metasploit/default.nix
@@ -15,13 +15,13 @@ let
};
in stdenv.mkDerivation rec {
pname = "metasploit-framework";
- version = "6.1.24";
+ version = "6.1.25";
src = fetchFromGitHub {
owner = "rapid7";
repo = "metasploit-framework";
rev = version;
- sha256 = "sha256-eCnudckLCiE6L2EC/IHqbXdOrGBkSmWZHyHFvvFUqQ4=";
+ sha256 = "sha256-lfTueN3s7wsyQRrulsx7TKVMhOu6//4Z6DDjR/Lm6Vw=";
};
nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/security/metasploit/gemset.nix b/pkgs/tools/security/metasploit/gemset.nix
index a9bcf2c227f4..56bc01387144 100644
--- a/pkgs/tools/security/metasploit/gemset.nix
+++ b/pkgs/tools/security/metasploit/gemset.nix
@@ -104,30 +104,30 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "1fi4irlxam3bmvafm6iiqj0vlzqg10vc4bzznl4c5w6zmg0lzp6b";
+ sha256 = "02d86hv5jfs27hszd9d92q31dz3wl3s1racimkhb7nx8xg0l9ldj";
type = "gem";
};
- version = "1.547.0";
+ version = "1.549.0";
};
aws-sdk-core = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "1jp8nz18r9skri118haqy0slqmr5bwjw7xvrghcmj9lx409f0m6p";
+ sha256 = "1i6835n7d2ss3k3ljwbw8by0fagymk0122ill3i9ipghz21xpqld";
type = "gem";
};
- version = "3.125.2";
+ version = "3.125.5";
};
aws-sdk-ec2 = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "1awg6wdq5nqlxq5zqj2h06898d9b24ci3jnczpss9pqgis4g0w0n";
+ sha256 = "0rzbd111n7pgzpgjabcxi2mpnkxf3fcxkvy4rqidyf80m4633gwy";
type = "gem";
};
- version = "1.291.0";
+ version = "1.294.0";
};
aws-sdk-iam = {
groups = ["default"];
@@ -204,10 +204,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "0ir2fml3d6gjzqhiqpxl8rqmgrp5lqrx8xdwz9cmcnxhfzmqgxbp";
+ sha256 = "0vfwqzd89542xm8sc1ni6jvjy6wgycnri67q7agxnc5jmwawmcgf";
type = "gem";
};
- version = "4.13.0";
+ version = "4.14.0";
};
builder = {
groups = ["default"];
@@ -264,10 +264,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "1pbhj4xmj4262in6c1nwl5ssw0qypg8ysjrrkwn2akkzbxzy9rfq";
+ sha256 = "0v8jfxamsdvs8rdl28ylcp5xphb03kmf5f1aqrnr2020ras618kc";
type = "gem";
};
- version = "1.61.7";
+ version = "1.61.9";
};
domain_name = {
groups = ["default"];
@@ -284,10 +284,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "1f5kr8za7hvla38fc0n9jiv55iq62k5bzclsa5kdb14l3r4w6qnw";
+ sha256 = "0zb2dr2ihb1qiknn5iaj1ha1w9p7lj9yq5waasndlfadz225ajji";
type = "gem";
};
- version = "1.2.4";
+ version = "1.3.0";
};
em-http-request = {
groups = ["default"];
@@ -344,10 +344,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "0afhlqgby2cizcwgh7h2sq5f77q01axjbdl25bsvfwsry9n7gyyi";
+ sha256 = "0y32gj994ll3zlcqjmwp78r7s03iiwayij6fz2pjpkfywgvp71s6";
type = "gem";
};
- version = "1.8.0";
+ version = "1.9.3";
};
faraday-em_http = {
groups = ["default"];
@@ -389,6 +389,16 @@
};
version = "1.0.1";
};
+ faraday-multipart = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "03qfi9020ynf7hkdiaq01sd2mllvw7fg4qiin3pk028b4wv23j3j";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
faraday-net_http = {
groups = ["default"];
platforms = [];
@@ -429,6 +439,16 @@
};
version = "1.0.0";
};
+ faraday-retry = {
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd";
+ type = "gem";
+ };
+ version = "1.0.3";
+ };
faye-websocket = {
groups = ["default"];
platforms = [];
@@ -554,10 +574,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "0pmafwxh8z1apnk7bb1ibnbhfrgb1jgilxm4j8d0fcqlc2ggmbja";
+ sha256 = "0r9kxrf9jccrr329pa3s37rf16vy426cbqmfwxkav1fidwvih93y";
type = "gem";
};
- version = "0.5.9";
+ version = "0.5.11";
};
irb = {
groups = ["default"];
@@ -664,12 +684,12 @@
platforms = [];
source = {
fetchSubmodules = false;
- rev = "0991344df7a2b343b99e83507bf217137f11801d";
- sha256 = "03m9akqvxi913ycnajk4c2n4wxvdxa0zq0k15wx222hbr5sywabq";
+ rev = "4a1ba0f9095d5c6e954ba58bc71d02feefc411a5";
+ sha256 = "0p79wvr4gqrhx0czxzxsxf24r9acgg69dvhs84r0pvzcvmwfxx4m";
type = "git";
url = "https://github.com/rapid7/metasploit-framework";
};
- version = "6.1.24";
+ version = "6.1.25";
};
metasploit-model = {
groups = ["default"];
@@ -756,10 +776,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "06iajjyhx0rvpn4yr3h1hc4w4w3k59bdmfhxnjzzh76wsrdxxrc6";
+ sha256 = "14kg9wdfls7s63lds9blrd77n8mx780bzyh05dj8kn0aimw3l9dx";
type = "gem";
};
- version = "1.4.2";
+ version = "1.4.3";
};
multi_json = {
groups = ["default"];
@@ -857,10 +877,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "1cvx23d8z1nf5nsr5cv55m5dhr3f1bnvgdfqqfnjvhcd8cfnkgcd";
+ sha256 = "1zqzawia52cdcmi55lp7v8jmiqyw7pcpwsksqlnirwfm3f7bnf11";
type = "gem";
};
- version = "1.13.0";
+ version = "1.13.1";
};
nori = {
groups = ["default"];
@@ -877,10 +897,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "0ak64rb48d8z98nw6q70r6i0i3ivv61iqla40ss5l79491qfnn27";
+ sha256 = "1nmdd7klyinvrrv2mggwwmc99ykaq7i379j00i37hvvaqx4giifj";
type = "gem";
};
- version = "4.21.0";
+ version = "4.22.0";
};
openssl-ccm = {
groups = ["default"];
@@ -1307,10 +1327,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "1jgmhj4srl7cck1ipbjys6q4klcs473gq90bm59baw4j1wpfaxch";
+ sha256 = "0sg0kzqrldx9mlpvymif3dcgz8j8q1nc8jaszrd03nfh5bvp3fd5";
type = "gem";
};
- version = "2.5.1";
+ version = "3.0.0";
};
ruby-rc4 = {
groups = ["default"];
@@ -1567,10 +1587,10 @@
platforms = [];
source = {
remotes = ["https://rubygems.org"];
- sha256 = "0kbcv9j5sc7pvjzf1dkp6h69i6lmj205zyy2arxcfgqg11bsz2kp";
+ sha256 = "1dy35rfdmj6pfhdicix1kcgpj5y7844a43i6bnklngn7b1wmy3av";
type = "gem";
};
- version = "0.1.2";
+ version = "0.1.3";
};
winrm = {
groups = ["default"];
diff --git a/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile
index feb1437d6d40..9e65ac43afa1 100644
--- a/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile
+++ b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile
@@ -1,11 +1,13 @@
source 'https://rubygems.org'
gem 'asciidoctor'
-gem 'asciidoctor-diagram'
-gem 'asciidoctor-pdf'
-gem 'asciidoctor-epub3'
-gem 'asciidoctor-mathematical'
gem 'asciidoctor-bibtex'
+gem 'asciidoctor-diagram'
+gem 'asciidoctor-epub3'
+gem 'asciidoctor-html5s'
+gem 'asciidoctor-mathematical'
+gem 'asciidoctor-pdf'
gem 'asciidoctor-revealjs'
+gem 'asciidoctor-rouge'
gem 'coderay'
gem 'pygments.rb'
gem 'rouge'
diff --git a/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock
index 14829ed7b0a6..98418e183d45 100644
--- a/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock
+++ b/pkgs/tools/typesetting/asciidoctor-with-extensions/Gemfile.lock
@@ -23,6 +23,9 @@ GEM
asciidoctor (>= 1.5.6, < 3.0.0)
gepub (~> 1.0.0)
mime-types (~> 3.0)
+ asciidoctor-html5s (0.5.1)
+ asciidoctor (>= 1.5.7, < 3.0)
+ thread_safe (~> 0.3.4)
asciidoctor-mathematical (0.3.5)
asciidoctor (~> 2.0)
asciimath (~> 2.0)
@@ -41,6 +44,9 @@ GEM
asciidoctor (>= 2.0.0, < 3.0.0)
concurrent-ruby (~> 1.0)
thread_safe (~> 0.3.5)
+ asciidoctor-rouge (0.4.0)
+ asciidoctor (>= 1.5.6, < 2.1)
+ rouge (>= 2.2, < 4)
asciimath (2.0.3)
bibtex-ruby (5.1.6)
latex-decode (~> 0.0)
@@ -120,9 +126,11 @@ DEPENDENCIES
asciidoctor-bibtex
asciidoctor-diagram
asciidoctor-epub3
+ asciidoctor-html5s
asciidoctor-mathematical
asciidoctor-pdf
asciidoctor-revealjs
+ asciidoctor-rouge
coderay
pygments.rb
rouge
diff --git a/pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix b/pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix
index 6bd49e099623..e88f9701d0d3 100644
--- a/pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix
+++ b/pkgs/tools/typesetting/asciidoctor-with-extensions/gemset.nix
@@ -93,6 +93,17 @@
};
version = "1.5.1";
};
+ asciidoctor-html5s = {
+ dependencies = ["asciidoctor" "thread_safe"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "1zfbfcqyrsk8bnd526ang3b4j3m5pbns7x3fdxarrm8vv1qplss1";
+ type = "gem";
+ };
+ version = "0.5.1";
+ };
asciidoctor-mathematical = {
dependencies = ["asciidoctor" "asciimath" "mathematical"];
groups = ["default"];
@@ -126,6 +137,17 @@
};
version = "4.1.0";
};
+ asciidoctor-rouge = {
+ dependencies = ["asciidoctor" "rouge"];
+ groups = ["default"];
+ platforms = [];
+ source = {
+ remotes = ["https://rubygems.org"];
+ sha256 = "197sbzs9km58pgfqdnnglhqr7anhb0m330cv1vxfc3s2qz106zjz";
+ type = "gem";
+ };
+ version = "0.4.0";
+ };
asciimath = {
groups = ["default"];
platforms = [];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b553b28ae5e3..0f9558a93790 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3242,6 +3242,8 @@ with pkgs;
interlock = callPackage ../servers/interlock {};
+ invoiceplane = callPackage ../servers/web-apps/invoiceplane { };
+
iotools = callPackage ../tools/misc/iotools { };
jellyfin = callPackage ../servers/jellyfin { };
@@ -24216,6 +24218,8 @@ with pkgs;
pdfstudio = callPackage ../applications/misc/pdfstudio { };
+ pdfstudioviewer = callPackage ../applications/misc/pdfstudioviewer { };
+
aeolus = callPackage ../applications/audio/aeolus { };
aewan = callPackage ../applications/editors/aewan { };