Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2022-01-20 18:01:55 +00:00 committed by GitHub
commit aeb6db8171
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 914 additions and 355 deletions

View file

@ -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 =

View file

@ -6604,7 +6604,7 @@
};
kylesferrazza = {
name = "Kyle Sferrazza";
email = "kyle.sferrazza@gmail.com";
email = "nixpkgs@kylesferrazza.com";
github = "kylesferrazza";
githubId = 6677292;

View file

@ -108,6 +108,14 @@
<link xlink:href="options.html#opt-services.powerdns-admin.enable">services.powerdns-admin</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://invoiceplane.com">InvoicePlane</link>,
web application for managing and creating invoices. Available
at
<link xlink:href="options.html#opt-services.invoiceplane.enable">services.invoiceplane</link>.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://maddy.email">maddy</link>, a

View file

@ -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).

33
nixos/lib/default.nix Normal file
View file

@ -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
;
}

View file

@ -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;
}

View file

@ -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.

View file

@ -64,6 +64,11 @@ let
in
{
imports = [
./assertions.nix
./meta.nix
];
options.nixpkgs = {
pkgs = mkOption {

View file

@ -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;
}

View file

@ -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

View file

@ -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
<option>database.user</option>.
'';
};
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.
<note><para>These templates need to be packaged before use, see example.</para></note>
'';
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 <literal>php-fpm.conf</literal>
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
<link xlink:href="https://github.com/InvoicePlane/InvoicePlane/blob/master/ipconfig.php.example"/>
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;
};
})
]);
}

View file

@ -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 {};

View file

@ -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"
)
'';
})

View file

@ -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 ];

View file

@ -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 ];
};
}

View file

@ -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";
};

View file

@ -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") ''

View file

@ -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 = [

View file

@ -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 ];

View file

@ -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 ];

View file

@ -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 = [

View file

@ -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 = {

View file

@ -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 = [

View file

@ -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 = [

View file

@ -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";

View file

@ -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
];
};
}

View file

@ -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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <dlfcn.h>
#include <limits.h>
#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);
}

View file

@ -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";

View file

@ -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

View file

@ -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 ];

View file

@ -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 ];
};
}

View file

@ -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.

View file

@ -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;
};

View file

@ -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" ];

View file

@ -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"

View file

@ -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)

View file

@ -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 ];

View file

@ -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"];

View file

@ -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'

View file

@ -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

View file

@ -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 = [];

View file

@ -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 { };