Merge master into staging-next
This commit is contained in:
commit
ce88a19065
42 changed files with 914 additions and 355 deletions
|
@ -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 =
|
||||
|
|
|
@ -6604,7 +6604,7 @@
|
|||
};
|
||||
kylesferrazza = {
|
||||
name = "Kyle Sferrazza";
|
||||
email = "kyle.sferrazza@gmail.com";
|
||||
email = "nixpkgs@kylesferrazza.com";
|
||||
|
||||
github = "kylesferrazza";
|
||||
githubId = 6677292;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
33
nixos/lib/default.nix
Normal 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
|
||||
;
|
||||
}
|
49
nixos/lib/eval-config-minimal.nix
Normal file
49
nixos/lib/eval-config-minimal.nix
Normal 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;
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -64,6 +64,11 @@ let
|
|||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
./assertions.nix
|
||||
./meta.nix
|
||||
];
|
||||
|
||||
options.nixpkgs = {
|
||||
|
||||
pkgs = mkOption {
|
||||
|
|
8
nixos/modules/misc/nixpkgs/test.nix
Normal file
8
nixos/modules/misc/nixpkgs/test.nix
Normal 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;
|
||||
}
|
|
@ -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
|
||||
|
|
305
nixos/modules/services/web-apps/invoiceplane.nix
Normal file
305
nixos/modules/services/web-apps/invoiceplane.nix
Normal 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;
|
||||
};
|
||||
})
|
||||
|
||||
|
||||
]);
|
||||
}
|
||||
|
|
@ -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 {};
|
||||
|
|
82
nixos/tests/invoiceplane.nix
Normal file
82
nixos/tests/invoiceplane.nix
Normal 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"
|
||||
)
|
||||
'';
|
||||
})
|
|
@ -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 ];
|
||||
|
|
81
pkgs/applications/misc/pdfstudioviewer/default.nix
Normal file
81
pkgs/applications/misc/pdfstudioviewer/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
};
|
||||
|
||||
|
|
|
@ -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") ''
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ];
|
||||
|
|
32
pkgs/servers/web-apps/invoiceplane/default.nix
Normal file
32
pkgs/servers/web-apps/invoiceplane/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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" ];
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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"];
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = [];
|
||||
|
|
|
@ -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 { };
|
||||
|
|
Loading…
Reference in a new issue