Merge remote-tracking branch 'upstream/master' into staging
This commit is contained in:
commit
84497cabd1
@ -56,6 +56,9 @@ let
|
||||
# back-compat aliases
|
||||
platforms = systems.doubles;
|
||||
|
||||
# linux kernel configuration
|
||||
kernel = callLibs ./kernel.nix;
|
||||
|
||||
inherit (builtins) add addErrorContext attrNames concatLists
|
||||
deepSeq elem elemAt filter genericClosure genList getAttr
|
||||
hasAttr head isAttrs isBool isInt isList isString length
|
||||
|
@ -1,12 +1,7 @@
|
||||
{ lib, version }:
|
||||
{ lib }:
|
||||
|
||||
with lib;
|
||||
{
|
||||
# Common patterns/legacy
|
||||
whenAtLeast = ver: mkIf (versionAtLeast version ver);
|
||||
whenOlder = ver: mkIf (versionOlder version ver);
|
||||
# range is (inclusive, exclusive)
|
||||
whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh);
|
||||
|
||||
|
||||
# Keeping these around in case we decide to change this horrible implementation :)
|
||||
@ -18,4 +13,14 @@ with lib;
|
||||
module = { tristate = "m"; };
|
||||
freeform = x: { freeform = x; };
|
||||
|
||||
/*
|
||||
Common patterns/legacy used in common-config/hardened-config.nix
|
||||
*/
|
||||
whenHelpers = version: {
|
||||
whenAtLeast = ver: mkIf (versionAtLeast version ver);
|
||||
whenOlder = ver: mkIf (versionOlder version ver);
|
||||
# range is (inclusive, exclusive)
|
||||
whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1958,7 +1958,7 @@
|
||||
drewrisinger = {
|
||||
email = "drisinger+nixpkgs@gmail.com";
|
||||
github = "drewrisinger";
|
||||
gitHubId = 10198051;
|
||||
githubId = 10198051;
|
||||
name = "Drew Risinger";
|
||||
};
|
||||
dsferruzza = {
|
||||
@ -3099,7 +3099,7 @@
|
||||
illiusdope = {
|
||||
email = "mat@marini.ca";
|
||||
github = "illiusdope";
|
||||
gitHubId = 61913481;
|
||||
githubId = 61913481;
|
||||
name = "Mat Marini";
|
||||
};
|
||||
ilya-fedin = {
|
||||
@ -4544,6 +4544,12 @@
|
||||
githubId = 1711539;
|
||||
name = "matklad";
|
||||
};
|
||||
matt-snider = {
|
||||
email = "matt.snider@protonmail.com";
|
||||
github = "matt-snider";
|
||||
githubId = 11810057;
|
||||
name = "Matt Snider";
|
||||
};
|
||||
matthewbauer = {
|
||||
email = "mjbauer95@gmail.com";
|
||||
github = "matthewbauer";
|
||||
@ -4884,7 +4890,7 @@
|
||||
mmilata = {
|
||||
email = "martin@martinmilata.cz";
|
||||
github = "mmilata";
|
||||
gitHubId = 85857;
|
||||
githubId = 85857;
|
||||
name = "Martin Milata";
|
||||
};
|
||||
mmlb = {
|
||||
@ -7253,6 +7259,12 @@
|
||||
githubId = 844343;
|
||||
name = "Thiago K. Okada";
|
||||
};
|
||||
thmzlt = {
|
||||
email = "git@thomazleite.com";
|
||||
github = "thmzlt";
|
||||
githubId = 7709;
|
||||
name = "Thomaz Leite";
|
||||
};
|
||||
ThomasMader = {
|
||||
email = "thomas.mader@gmail.com";
|
||||
github = "ThomasMader";
|
||||
|
@ -41,6 +41,12 @@ let
|
||||
# default to the argument. That way this new default could propagate all
|
||||
# they way through, but has the last priority behind everything else.
|
||||
nixpkgs.system = lib.mkDefault system;
|
||||
|
||||
# Stash the value of the `system` argument. When using `nesting.children`
|
||||
# we want to have the same default value behavior (immediately above)
|
||||
# without any interference from the user's configuration.
|
||||
nixpkgs.initialSystem = system;
|
||||
|
||||
_module.args.pkgs = lib.mkIf (pkgs_ != null) (lib.mkForce pkgs_);
|
||||
};
|
||||
};
|
||||
|
@ -175,13 +175,13 @@ in rec {
|
||||
|
||||
nodeNames = builtins.attrNames nodes;
|
||||
invalidNodeNames = lib.filter
|
||||
(node: builtins.match "^[A-z_][A-z0-9_]+$" node == null) nodeNames;
|
||||
(node: builtins.match "^[A-z_]([A-z0-9_]+)?$" node == null) nodeNames;
|
||||
|
||||
in
|
||||
if lib.length invalidNodeNames > 0 then
|
||||
throw ''
|
||||
Cannot create machines out of (${lib.concatStringsSep ", " invalidNodeNames})!
|
||||
All machines are referenced as perl variables in the testing framework which will break the
|
||||
All machines are referenced as python variables in the testing framework which will break the
|
||||
script when special characters are used.
|
||||
|
||||
Please stick to alphanumeric chars and underscores as separation.
|
||||
|
@ -35,12 +35,22 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
networking.hostFiles = lib.mkOption {
|
||||
type = types.listOf types.path;
|
||||
defaultText = lib.literalExample "Hosts from `networking.hosts` and `networking.extraHosts`";
|
||||
example = lib.literalExample ''[ "''${pkgs.my-blocklist-package}/share/my-blocklist/hosts" ]'';
|
||||
description = ''
|
||||
Files that should be concatenated together to form <filename>/etc/hosts</filename>.
|
||||
'';
|
||||
};
|
||||
|
||||
networking.extraHosts = lib.mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example = "192.168.0.1 lanlocalhost";
|
||||
description = ''
|
||||
Additional verbatim entries to be appended to <filename>/etc/hosts</filename>.
|
||||
For adding hosts from derivation results, use <option>networking.hostFiles</option> instead.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -159,6 +169,15 @@ in
|
||||
"::1" = [ "localhost" ];
|
||||
};
|
||||
|
||||
networking.hostFiles = let
|
||||
stringHosts =
|
||||
let
|
||||
oneToString = set: ip: ip + " " + concatStringsSep " " set.${ip} + "\n";
|
||||
allToString = set: concatMapStrings (oneToString set) (attrNames set);
|
||||
in pkgs.writeText "string-hosts" (allToString (filterAttrs (_: v: v != []) cfg.hosts));
|
||||
extraHosts = pkgs.writeText "extra-hosts" cfg.extraHosts;
|
||||
in mkBefore [ stringHosts extraHosts ];
|
||||
|
||||
environment.etc =
|
||||
{ # /etc/services: TCP/UDP port assignments.
|
||||
services.source = pkgs.iana-etc + "/etc/services";
|
||||
@ -167,12 +186,8 @@ in
|
||||
protocols.source = pkgs.iana-etc + "/etc/protocols";
|
||||
|
||||
# /etc/hosts: Hostname-to-IP mappings.
|
||||
hosts.text = let
|
||||
oneToString = set: ip: ip + " " + concatStringsSep " " set.${ip};
|
||||
allToString = set: concatMapStringsSep "\n" (oneToString set) (attrNames set);
|
||||
in ''
|
||||
${allToString (filterAttrs (_: v: v != []) cfg.hosts)}
|
||||
${cfg.extraHosts}
|
||||
hosts.source = pkgs.runCommandNoCC "hosts" {} ''
|
||||
cat ${escapeShellArgs cfg.hostFiles} > $out
|
||||
'';
|
||||
|
||||
# /etc/host.conf: resolver configuration file
|
||||
|
@ -216,6 +216,14 @@ in
|
||||
Ignored when <code>nixpkgs.pkgs</code> is set.
|
||||
'';
|
||||
};
|
||||
|
||||
initialSystem = mkOption {
|
||||
type = types.str;
|
||||
internal = true;
|
||||
description = ''
|
||||
Preserved value of <literal>system</literal> passed to <literal>eval-config.nix</literal>.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
|
@ -406,6 +406,7 @@
|
||||
./services/mail/sympa.nix
|
||||
./services/mail/nullmailer.nix
|
||||
./services/misc/airsonic.nix
|
||||
./services/misc/ankisyncd.nix
|
||||
./services/misc/apache-kafka.nix
|
||||
./services/misc/autofs.nix
|
||||
./services/misc/autorandr.nix
|
||||
|
@ -47,7 +47,7 @@ in {
|
||||
config = mkIf cfg.enable {
|
||||
security.wrappers.firejail.source = "${lib.getBin pkgs.firejail}/bin/firejail";
|
||||
|
||||
environment.systemPackages = [ wrappedBins ];
|
||||
environment.systemPackages = [ pkgs.firejail ] ++ [ wrappedBins ];
|
||||
};
|
||||
|
||||
meta.maintainers = with maintainers; [ peterhoeg ];
|
||||
|
@ -14,18 +14,34 @@ let
|
||||
base_dir = ${baseDir}
|
||||
protocols = ${concatStringsSep " " cfg.protocols}
|
||||
sendmail_path = /run/wrappers/bin/sendmail
|
||||
# defining mail_plugins must be done before the first protocol {} filter because of https://doc.dovecot.org/configuration_manual/config_file/config_file_syntax/#variable-expansion
|
||||
mail_plugins = $mail_plugins ${concatStringsSep " " cfg.mailPlugins.globally.enable}
|
||||
''
|
||||
|
||||
(if cfg.sslServerCert == null then ''
|
||||
ssl = no
|
||||
disable_plaintext_auth = no
|
||||
'' else ''
|
||||
ssl_cert = <${cfg.sslServerCert}
|
||||
ssl_key = <${cfg.sslServerKey}
|
||||
${optionalString (cfg.sslCACert != null) ("ssl_ca = <" + cfg.sslCACert)}
|
||||
ssl_dh = <${config.security.dhparams.params.dovecot2.path}
|
||||
disable_plaintext_auth = yes
|
||||
'')
|
||||
(
|
||||
concatStringsSep "\n" (
|
||||
mapAttrsToList (
|
||||
protocol: plugins: ''
|
||||
protocol ${protocol} {
|
||||
mail_plugins = $mail_plugins ${concatStringsSep " " plugins.enable}
|
||||
}
|
||||
''
|
||||
) cfg.mailPlugins.perProtocol
|
||||
)
|
||||
)
|
||||
|
||||
(
|
||||
if cfg.sslServerCert == null then ''
|
||||
ssl = no
|
||||
disable_plaintext_auth = no
|
||||
'' else ''
|
||||
ssl_cert = <${cfg.sslServerCert}
|
||||
ssl_key = <${cfg.sslServerKey}
|
||||
${optionalString (cfg.sslCACert != null) ("ssl_ca = <" + cfg.sslCACert)}
|
||||
ssl_dh = <${config.security.dhparams.params.dovecot2.path}
|
||||
disable_plaintext_auth = yes
|
||||
''
|
||||
)
|
||||
|
||||
''
|
||||
default_internal_user = ${cfg.user}
|
||||
@ -45,55 +61,58 @@ let
|
||||
}
|
||||
''
|
||||
|
||||
(optionalString cfg.enablePAM ''
|
||||
userdb {
|
||||
driver = passwd
|
||||
}
|
||||
|
||||
passdb {
|
||||
driver = pam
|
||||
args = ${optionalString cfg.showPAMFailure "failure_show_msg=yes"} dovecot2
|
||||
}
|
||||
'')
|
||||
|
||||
(optionalString (cfg.sieveScripts != {}) ''
|
||||
plugin {
|
||||
${concatStringsSep "\n" (mapAttrsToList (to: from: "sieve_${to} = ${stateDir}/sieve/${to}") cfg.sieveScripts)}
|
||||
}
|
||||
'')
|
||||
|
||||
(optionalString (cfg.mailboxes != []) ''
|
||||
protocol imap {
|
||||
namespace inbox {
|
||||
inbox=yes
|
||||
${concatStringsSep "\n" (map mailboxConfig cfg.mailboxes)}
|
||||
(
|
||||
optionalString cfg.enablePAM ''
|
||||
userdb {
|
||||
driver = passwd
|
||||
}
|
||||
}
|
||||
'')
|
||||
|
||||
(optionalString cfg.enableQuota ''
|
||||
mail_plugins = $mail_plugins quota
|
||||
service quota-status {
|
||||
executable = ${dovecotPkg}/libexec/dovecot/quota-status -p postfix
|
||||
inet_listener {
|
||||
port = ${cfg.quotaPort}
|
||||
passdb {
|
||||
driver = pam
|
||||
args = ${optionalString cfg.showPAMFailure "failure_show_msg=yes"} dovecot2
|
||||
}
|
||||
client_limit = 1
|
||||
}
|
||||
''
|
||||
)
|
||||
|
||||
protocol imap {
|
||||
mail_plugins = $mail_plugins imap_quota
|
||||
}
|
||||
(
|
||||
optionalString (cfg.sieveScripts != {}) ''
|
||||
plugin {
|
||||
${concatStringsSep "\n" (mapAttrsToList (to: from: "sieve_${to} = ${stateDir}/sieve/${to}") cfg.sieveScripts)}
|
||||
}
|
||||
''
|
||||
)
|
||||
|
||||
plugin {
|
||||
quota_rule = *:storage=${cfg.quotaGlobalPerUser}
|
||||
quota = maildir:User quota # per virtual mail user quota # BUG/FIXME broken, we couldn't get this working
|
||||
quota_status_success = DUNNO
|
||||
quota_status_nouser = DUNNO
|
||||
quota_status_overquota = "552 5.2.2 Mailbox is full"
|
||||
quota_grace = 10%%
|
||||
}
|
||||
'')
|
||||
(
|
||||
optionalString (cfg.mailboxes != []) ''
|
||||
protocol imap {
|
||||
namespace inbox {
|
||||
inbox=yes
|
||||
${concatStringsSep "\n" (map mailboxConfig cfg.mailboxes)}
|
||||
}
|
||||
}
|
||||
''
|
||||
)
|
||||
|
||||
(
|
||||
optionalString cfg.enableQuota ''
|
||||
service quota-status {
|
||||
executable = ${dovecotPkg}/libexec/dovecot/quota-status -p postfix
|
||||
inet_listener {
|
||||
port = ${cfg.quotaPort}
|
||||
}
|
||||
client_limit = 1
|
||||
}
|
||||
|
||||
plugin {
|
||||
quota_rule = *:storage=${cfg.quotaGlobalPerUser}
|
||||
quota = maildir:User quota # per virtual mail user quota # BUG/FIXME broken, we couldn't get this working
|
||||
quota_status_success = DUNNO
|
||||
quota_status_nouser = DUNNO
|
||||
quota_status_overquota = "552 5.2.2 Mailbox is full"
|
||||
quota_grace = 10%%
|
||||
}
|
||||
''
|
||||
)
|
||||
|
||||
cfg.extraConfig
|
||||
];
|
||||
@ -107,7 +126,7 @@ let
|
||||
mailbox "${mailbox.name}" {
|
||||
auto = ${toString mailbox.auto}
|
||||
'' + optionalString (mailbox.specialUse != null) ''
|
||||
special_use = \${toString mailbox.specialUse}
|
||||
special_use = \${toString mailbox.specialUse}
|
||||
'' + "}";
|
||||
|
||||
mailboxes = { ... }: {
|
||||
@ -160,7 +179,7 @@ in
|
||||
|
||||
protocols = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
default = [];
|
||||
description = "Additional listeners to start when Dovecot is enabled.";
|
||||
};
|
||||
|
||||
@ -183,6 +202,43 @@ in
|
||||
description = "Additional entries to put verbatim into Dovecot's config file.";
|
||||
};
|
||||
|
||||
mailPlugins =
|
||||
let
|
||||
plugins = hint: types.submodule {
|
||||
options = {
|
||||
enable = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = "mail plugins to enable as a list of strings to append to the ${hint} <literal>$mail_plugins</literal> configuration variable";
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
mkOption {
|
||||
type = with types; submodule {
|
||||
options = {
|
||||
globally = mkOption {
|
||||
description = "Additional entries to add to the mail_plugins variable for all protocols";
|
||||
type = plugins "top-level";
|
||||
example = { enable = [ "virtual" ]; };
|
||||
default = { enable = []; };
|
||||
};
|
||||
perProtocol = mkOption {
|
||||
description = "Additional entries to add to the mail_plugins variable, per protocol";
|
||||
type = attrsOf (plugins "corresponding per-protocol");
|
||||
default = {};
|
||||
example = { imap = [ "imap_acl" ]; };
|
||||
};
|
||||
};
|
||||
};
|
||||
description = "Additional entries to add to the mail_plugins variable, globally and per protocol";
|
||||
example = {
|
||||
globally.enable = [ "acl" ];
|
||||
perProtocol.imap.enable = [ "imap_acl" ];
|
||||
};
|
||||
default = { globally.enable = []; perProtocol = {}; };
|
||||
};
|
||||
|
||||
configFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
@ -305,27 +361,33 @@ in
|
||||
enable = true;
|
||||
params.dovecot2 = {};
|
||||
};
|
||||
services.dovecot2.protocols =
|
||||
optional cfg.enableImap "imap"
|
||||
++ optional cfg.enablePop3 "pop3"
|
||||
++ optional cfg.enableLmtp "lmtp";
|
||||
services.dovecot2.protocols =
|
||||
optional cfg.enableImap "imap"
|
||||
++ optional cfg.enablePop3 "pop3"
|
||||
++ optional cfg.enableLmtp "lmtp";
|
||||
|
||||
services.dovecot2.mailPlugins = mkIf cfg.enableQuota {
|
||||
globally.enable = [ "quota" ];
|
||||
perProtocol.imap.enable = [ "imap_quota" ];
|
||||
};
|
||||
|
||||
users.users = {
|
||||
dovenull =
|
||||
{ uid = config.ids.uids.dovenull2;
|
||||
{
|
||||
uid = config.ids.uids.dovenull2;
|
||||
description = "Dovecot user for untrusted logins";
|
||||
group = "dovenull";
|
||||
};
|
||||
} // optionalAttrs (cfg.user == "dovecot2") {
|
||||
dovecot2 =
|
||||
{ uid = config.ids.uids.dovecot2;
|
||||
description = "Dovecot user";
|
||||
group = cfg.group;
|
||||
};
|
||||
{
|
||||
uid = config.ids.uids.dovecot2;
|
||||
description = "Dovecot user";
|
||||
group = cfg.group;
|
||||
};
|
||||
} // optionalAttrs (cfg.createMailUser && cfg.mailUser != null) {
|
||||
${cfg.mailUser} =
|
||||
{ description = "Virtual Mail User"; } //
|
||||
optionalAttrs (cfg.mailGroup != null)
|
||||
{ description = "Virtual Mail User"; } // optionalAttrs (cfg.mailGroup != null)
|
||||
{ group = cfg.mailGroup; };
|
||||
};
|
||||
|
||||
@ -334,7 +396,7 @@ in
|
||||
} // optionalAttrs (cfg.group == "dovecot2") {
|
||||
dovecot2.gid = config.ids.gids.dovecot2;
|
||||
} // optionalAttrs (cfg.createMailUser && cfg.mailGroup != null) {
|
||||
${cfg.mailGroup} = { };
|
||||
${cfg.mailGroup} = {};
|
||||
};
|
||||
|
||||
environment.etc."dovecot/modules".source = modulesDir;
|
||||
@ -363,15 +425,19 @@ in
|
||||
rm -rf ${stateDir}/sieve
|
||||
'' + optionalString (cfg.sieveScripts != {}) ''
|
||||
mkdir -p ${stateDir}/sieve
|
||||
${concatStringsSep "\n" (mapAttrsToList (to: from: ''
|
||||
if [ -d '${from}' ]; then
|
||||
mkdir '${stateDir}/sieve/${to}'
|
||||
cp -p "${from}/"*.sieve '${stateDir}/sieve/${to}'
|
||||
else
|
||||
cp -p '${from}' '${stateDir}/sieve/${to}'
|
||||
fi
|
||||
${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/sieve/${to}'
|
||||
'') cfg.sieveScripts)}
|
||||
${concatStringsSep "\n" (
|
||||
mapAttrsToList (
|
||||
to: from: ''
|
||||
if [ -d '${from}' ]; then
|
||||
mkdir '${stateDir}/sieve/${to}'
|
||||
cp -p "${from}/"*.sieve '${stateDir}/sieve/${to}'
|
||||
else
|
||||
cp -p '${from}' '${stateDir}/sieve/${to}'
|
||||
fi
|
||||
${pkgs.dovecot_pigeonhole}/bin/sievec '${stateDir}/sieve/${to}'
|
||||
''
|
||||
) cfg.sieveScripts
|
||||
)}
|
||||
chown -R '${cfg.mailUser}:${cfg.mailGroup}' '${stateDir}/sieve'
|
||||
'';
|
||||
};
|
||||
@ -379,17 +445,21 @@ in
|
||||
environment.systemPackages = [ dovecotPkg ];
|
||||
|
||||
assertions = [
|
||||
{ assertion = intersectLists cfg.protocols [ "pop3" "imap" ] != [];
|
||||
{
|
||||
assertion = intersectLists cfg.protocols [ "pop3" "imap" ] != [];
|
||||
message = "dovecot needs at least one of the IMAP or POP3 listeners enabled";
|
||||
}
|
||||
{ assertion = (cfg.sslServerCert == null) == (cfg.sslServerKey == null)
|
||||
&& (cfg.sslCACert != null -> !(cfg.sslServerCert == null || cfg.sslServerKey == null));
|
||||
{
|
||||
assertion = (cfg.sslServerCert == null) == (cfg.sslServerKey == null)
|
||||
&& (cfg.sslCACert != null -> !(cfg.sslServerCert == null || cfg.sslServerKey == null));
|
||||
message = "dovecot needs both sslServerCert and sslServerKey defined for working crypto";
|
||||
}
|
||||
{ assertion = cfg.showPAMFailure -> cfg.enablePAM;
|
||||
{
|
||||
assertion = cfg.showPAMFailure -> cfg.enablePAM;
|
||||
message = "dovecot is configured with showPAMFailure while enablePAM is disabled";
|
||||
}
|
||||
{ assertion = cfg.sieveScripts != {} -> (cfg.mailUser != null && cfg.mailGroup != null);
|
||||
{
|
||||
assertion = cfg.sieveScripts != {} -> (cfg.mailUser != null && cfg.mailGroup != null);
|
||||
message = "dovecot requires mailUser and mailGroup to be set when sieveScripts is set";
|
||||
}
|
||||
];
|
||||
|
79
nixos/modules/services/misc/ankisyncd.nix
Normal file
79
nixos/modules/services/misc/ankisyncd.nix
Normal file
@ -0,0 +1,79 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.ankisyncd;
|
||||
|
||||
name = "ankisyncd";
|
||||
|
||||
stateDir = "/var/lib/${name}";
|
||||
|
||||
authDbPath = "${stateDir}/auth.db";
|
||||
|
||||
sessionDbPath = "${stateDir}/session.db";
|
||||
|
||||
configFile = pkgs.writeText "ankisyncd.conf" (lib.generators.toINI {} {
|
||||
sync_app = {
|
||||
host = cfg.host;
|
||||
port = cfg.port;
|
||||
data_root = stateDir;
|
||||
auth_db_path = authDbPath;
|
||||
session_db_path = sessionDbPath;
|
||||
|
||||
base_url = "/sync/";
|
||||
base_media_url = "/msync/";
|
||||
};
|
||||
});
|
||||
in
|
||||
{
|
||||
options.services.ankisyncd = {
|
||||
enable = mkEnableOption "ankisyncd";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.ankisyncd;
|
||||
defaultText = literalExample "pkgs.ankisyncd";
|
||||
description = "The package to use for the ankisyncd command.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = "ankisyncd host";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 27701;
|
||||
description = "ankisyncd port";
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = "Whether to open the firewall for the specified port.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ];
|
||||
|
||||
environment.etc."ankisyncd/ankisyncd.conf".source = configFile;
|
||||
|
||||
systemd.services.ankisyncd = {
|
||||
description = "ankisyncd - Anki sync server";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ cfg.package ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
DynamicUser = true;
|
||||
StateDirectory = name;
|
||||
ExecStart = "${cfg.package}/bin/ankisyncd";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -29,17 +29,13 @@ let
|
||||
};
|
||||
|
||||
# Additional /etc/hosts entries for peers with an associated hostname
|
||||
cjdnsExtraHosts = import (pkgs.runCommand "cjdns-hosts" {}
|
||||
# Generate a builder that produces an output usable as a Nix string value
|
||||
''
|
||||
exec >$out
|
||||
echo \'\'
|
||||
${concatStringsSep "\n" (mapAttrsToList (k: v:
|
||||
optionalString (v.hostname != "")
|
||||
"echo $(${pkgs.cjdns}/bin/publictoip6 ${v.publicKey}) ${v.hostname}")
|
||||
(cfg.ETHInterface.connectTo // cfg.UDPInterface.connectTo))}
|
||||
echo \'\'
|
||||
'');
|
||||
cjdnsExtraHosts = pkgs.runCommandNoCC "cjdns-hosts" {} ''
|
||||
exec >$out
|
||||
${concatStringsSep "\n" (mapAttrsToList (k: v:
|
||||
optionalString (v.hostname != "")
|
||||
"echo $(${pkgs.cjdns}/bin/publictoip6 ${v.publicKey}) ${v.hostname}")
|
||||
(cfg.ETHInterface.connectTo // cfg.UDPInterface.connectTo))}
|
||||
'';
|
||||
|
||||
parseModules = x:
|
||||
x // { connectTo = mapAttrs (name: value: { inherit (value) password publicKey; }) x.connectTo; };
|
||||
@ -144,13 +140,15 @@ in
|
||||
connectTo = mkOption {
|
||||
type = types.attrsOf ( types.submodule ( connectToSubmodule ) );
|
||||
default = { };
|
||||
example = {
|
||||
"192.168.1.1:27313" = {
|
||||
hostname = "homer.hype";
|
||||
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
||||
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
||||
};
|
||||
};
|
||||
example = literalExample ''
|
||||
{
|
||||
"192.168.1.1:27313" = {
|
||||
hostname = "homer.hype";
|
||||
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
||||
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Credentials for making UDP tunnels.
|
||||
'';
|
||||
@ -189,13 +187,15 @@ in
|
||||
connectTo = mkOption {
|
||||
type = types.attrsOf ( types.submodule ( connectToSubmodule ) );
|
||||
default = { };
|
||||
example = {
|
||||
"01:02:03:04:05:06" = {
|
||||
hostname = "homer.hype";
|
||||
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
||||
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
||||
};
|
||||
};
|
||||
example = literalExample ''
|
||||
{
|
||||
"01:02:03:04:05:06" = {
|
||||
hostname = "homer.hype";
|
||||
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
||||
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Credentials for connecting look similar to UDP credientials
|
||||
except they begin with the mac address.
|
||||
@ -278,7 +278,7 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
networking.extraHosts = mkIf cfg.addExtraHosts cjdnsExtraHosts;
|
||||
networking.hostFiles = mkIf cfg.addExtraHosts [ cjdnsExtraHosts ];
|
||||
|
||||
assertions = [
|
||||
{ assertion = ( cfg.ETHInterface.bind != "" || cfg.UDPInterface.bind != "" || cfg.confFile != null );
|
||||
|
@ -23,6 +23,8 @@ let
|
||||
restrict -6 ::1
|
||||
|
||||
${toString (map (server: "server " + server + " iburst\n") cfg.servers)}
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
ntpFlags = "-c ${configFile} -u ${ntpUser}:nogroup ${toString cfg.extraFlags}";
|
||||
@ -81,6 +83,17 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example = ''
|
||||
fudge 127.127.1.0 stratum 10
|
||||
'';
|
||||
description = ''
|
||||
Additional text appended to <filename>ntp.conf</filename>.
|
||||
'';
|
||||
};
|
||||
|
||||
extraFlags = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "Extra flags passed to the ntpd command.";
|
||||
|
@ -15,6 +15,7 @@ let
|
||||
map (childConfig:
|
||||
(import ../../../lib/eval-config.nix {
|
||||
inherit baseModules;
|
||||
system = config.nixpkgs.initialSystem;
|
||||
modules =
|
||||
(optionals inheritParent modules)
|
||||
++ [ ./no-clone.nix ]
|
||||
|
@ -118,12 +118,17 @@ in
|
||||
fs' = utils.escapeSystemdPath fs;
|
||||
in nameValuePair "btrfs-scrub-${fs'}" {
|
||||
description = "btrfs scrub on ${fs}";
|
||||
# scrub prevents suspend2ram or proper shutdown
|
||||
conflicts = [ "shutdown.target" "sleep.target" ];
|
||||
before = [ "shutdown.target" "sleep.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
# simple and not oneshot, otherwise ExecStop is not used
|
||||
Type = "simple";
|
||||
Nice = 19;
|
||||
IOSchedulingClass = "idle";
|
||||
ExecStart = "${pkgs.btrfs-progs}/bin/btrfs scrub start -B ${fs}";
|
||||
ExecStop = "${pkgs.btrfs-progs}/bin/btrfs scrub cancel ${fs}";
|
||||
};
|
||||
};
|
||||
in listToAttrs (map scrubService cfgScrub.fileSystems);
|
||||
|
@ -29,10 +29,10 @@ import ./make-test-python.nix {
|
||||
)
|
||||
clone.succeed("cowsay hey")
|
||||
clone.succeed("hello")
|
||||
|
||||
children.wait_for_unit("default.target")
|
||||
children.succeed("cowsay hey")
|
||||
children.fail("hello")
|
||||
|
||||
children.wait_for_unit("default.target")
|
||||
children.succeed("cowsay hey")
|
||||
children.fail("hello")
|
||||
|
||||
with subtest("Nested children do not inherit from parent"):
|
||||
children.succeed(
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "spotify-tui";
|
||||
version = "0.15.0";
|
||||
version = "0.16.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Rigellute";
|
||||
repo = "spotify-tui";
|
||||
rev = "v${version}";
|
||||
sha256 = "19mnnpsidwr5y6igs478gfp7rq76378f66nzfhj4mraqd2jc4nzj";
|
||||
sha256 = "0fmj25zjg12v0kyanic343lrdhxkh290v88qiz6ac47g8bdy3c83";
|
||||
};
|
||||
|
||||
cargoSha256 = "1zhv3sla92z7pjdnf0r4x85n7z9spi70vgy4kw72rdc5v9bmj7q8";
|
||||
cargoSha256 = "1n8aacy0hapjm10hmgqm07rb5c0ngmzr1s116pspsl7cdszza6xi";
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ] ++ stdenv.lib.optionals stdenv.isLinux [ python3 ];
|
||||
buildInputs = [ openssl ]
|
||||
|
@ -250,12 +250,12 @@ in
|
||||
|
||||
clion = buildClion rec {
|
||||
name = "clion-${version}";
|
||||
version = "2019.3.3"; /* updated by script */
|
||||
version = "2019.3.4"; /* updated by script */
|
||||
description = "C/C++ IDE. New. Intelligent. Cross-platform";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
|
||||
sha256 = "1dvnb6mb8xgrgqzqxm2zirwm77w4pci6ibwsdh6wqpnzpqksh4iw"; /* updated by script */
|
||||
sha256 = "0whd379ck79vhz14yh5g6vpl4cvgw4z9ag4mwgizmd8kbcfnvdxd"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-clion";
|
||||
update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
|
||||
@ -263,12 +263,12 @@ in
|
||||
|
||||
datagrip = buildDataGrip rec {
|
||||
name = "datagrip-${version}";
|
||||
version = "2019.3.2"; /* updated by script */
|
||||
version = "2019.3.3"; /* updated by script */
|
||||
description = "Your Swiss Army Knife for Databases and SQL";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/datagrip/${name}.tar.gz";
|
||||
sha256 = "1aypzs5q9zgggxbpaxfd8r5ds0ck31lb00csn62npndqxa3bj7z5"; /* updated by script */
|
||||
sha256 = "0zbyiw60gqcqi5bbazmsbs4qzmmxx1q034hs36k1dryf2y02jyih"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-datagrip";
|
||||
update-channel = "DataGrip RELEASE";
|
||||
@ -276,12 +276,12 @@ in
|
||||
|
||||
goland = buildGoland rec {
|
||||
name = "goland-${version}";
|
||||
version = "2019.3.2"; /* updated by script */
|
||||
version = "2019.3.3"; /* updated by script */
|
||||
description = "Up and Coming Go IDE";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/go/${name}.tar.gz";
|
||||
sha256 = "0namvc8dfm562dgvs4mrv1c6lyi4j8yxw402fkw55l0xqv3ff0a9"; /* updated by script */
|
||||
sha256 = "091ym7vyb0hxzz6a1jfb88x0lj499vjd04bq8swmw14m1akmk3lf"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-goland";
|
||||
update-channel = "GoLand RELEASE";
|
||||
@ -315,12 +315,12 @@ in
|
||||
|
||||
phpstorm = buildPhpStorm rec {
|
||||
name = "phpstorm-${version}";
|
||||
version = "2019.3.2"; /* updated by script */
|
||||
version = "2019.3.3"; /* updated by script */
|
||||
description = "Professional IDE for Web and PHP developers";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
|
||||
sha256 = "02qnkcri49chbbpx2f338cfs5w2kg1l7zfn6fa7qrla82zpjsqlm"; /* updated by script */
|
||||
sha256 = "03ag1a40l1k8sqlywcs7kjn02c65xm3l9riyimg4hx23yi17w18h"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-phpstorm";
|
||||
update-channel = "PhpStorm RELEASE";
|
||||
@ -354,12 +354,12 @@ in
|
||||
|
||||
rider = buildRider rec {
|
||||
name = "rider-${version}";
|
||||
version = "2019.3.1"; /* updated by script */
|
||||
version = "2019.3.4"; /* updated by script */
|
||||
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
|
||||
sha256 = "0cs8fc3h6d2m84ppiqjy0f3xklpc5gf0i6c4bzv04y8ngh0cwgl2"; /* updated by script */
|
||||
sha256 = "17axv0v31dpmjcaij5qpqqm071mwhmf1ahy0y0h96limq8cw9872"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-rider";
|
||||
update-channel = "Rider RELEASE";
|
||||
@ -367,12 +367,12 @@ in
|
||||
|
||||
ruby-mine = buildRubyMine rec {
|
||||
name = "ruby-mine-${version}";
|
||||
version = "2019.3.2"; /* updated by script */
|
||||
version = "2019.3.3"; /* updated by script */
|
||||
description = "The Most Intelligent Ruby and Rails IDE";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
||||
sha256 = "0mwzhvrhvsyb8r7sjcigv9jazim1zyipb3ym4xsd2gyl3ans2vm9"; /* updated by script */
|
||||
sha256 = "0lkzb3rifr7r23vijcz7rqcxjpykx7dkghiq5prk1zz83hzi4b2j"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-rubymine";
|
||||
update-channel = "RubyMine RELEASE";
|
||||
@ -380,12 +380,12 @@ in
|
||||
|
||||
webstorm = buildWebStorm rec {
|
||||
name = "webstorm-${version}";
|
||||
version = "2019.3.2"; /* updated by script */
|
||||
version = "2019.3.3"; /* updated by script */
|
||||
description = "Professional IDE for Web and JavaScript development";
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
||||
sha256 = "0mbfkwjqg2d1mkka0vajx41nv4f07y1w7chk6ii7sylaj7ypzi13"; /* updated by script */
|
||||
sha256 = "1b7hwqpk96g4il5rbxb8cpqsizgc9k5kb8vkvkcc9xh7qqz02i85"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-webstorm";
|
||||
update-channel = "WebStorm RELEASE";
|
||||
|
@ -3,13 +3,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "texstudio";
|
||||
version = "2.12.20";
|
||||
version = "2.12.22";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "${pname}-org";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0hywx2knqdrslzmm4if476ryf4ma0aw5j8kdp6lyrz2jx7az2gqa";
|
||||
sha256 = "037jvsfln8wav17qj9anxz2a7p51v7ky85wmhdj2hgwp40al651g";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake wrapQtAppsHook pkgconfig ];
|
||||
@ -27,6 +27,6 @@ mkDerivation rec {
|
||||
homepage = http://texstudio.sourceforge.net;
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ cfouche ];
|
||||
maintainers = with maintainers; [ ajs124 cfouche ];
|
||||
};
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ in
|
||||
else [ gtk2 at-spi2-atk wrapGAppsHook ] ++ atomEnv.packages)
|
||||
++ [ libsecret libXScrnSaver ];
|
||||
|
||||
runtimeDependencies = [ systemd.lib fontconfig.lib ];
|
||||
runtimeDependencies = lib.optional (stdenv.isLinux) [ systemd.lib fontconfig.lib ];
|
||||
|
||||
nativeBuildInputs = lib.optional (!stdenv.isDarwin) autoPatchelfHook;
|
||||
|
||||
|
@ -122,7 +122,8 @@ stdenv.mkDerivation rec {
|
||||
# --python-expr is used to workaround https://developer.blender.org/T74304
|
||||
postInstall = ''
|
||||
wrapProgram $blenderExecutable \
|
||||
--add-flags '--python-expr "import sys; sys.path.append(\"${python3Packages.numpy}/${python.sitePackages}\")"'
|
||||
--prefix PYTHONPATH : ${python3Packages.numpy}/${python.sitePackages} \
|
||||
--add-flags '--python-use-system-env'
|
||||
'';
|
||||
|
||||
# Set RUNPATH so that libcuda and libnvrtc in /run/opengl-driver(-32)/lib can be
|
||||
|
@ -2,18 +2,18 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "cheat";
|
||||
version = "3.0.3";
|
||||
version = "3.0.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chrisallenlane";
|
||||
repo = "cheat";
|
||||
rev = version;
|
||||
sha256 = "19w1admdcgld9vlc4fsyc5d9bi6rmwhr2x2ji43za2vjlk34hnnx";
|
||||
sha256 = "0i5j85ciimk14kndb81qxny1ksr57sr9xdvjn7x1ibc7h6pikjn5";
|
||||
};
|
||||
|
||||
subPackages = [ "cmd/cheat" ];
|
||||
|
||||
modSha256 = "189cqnfl403f4lk7g9v68mwk93ciglqli639dk4x9091lvn5gq5q";
|
||||
modSha256 = "1v9hvxygwvqma2j5yz7r95g34xpwb0n29hm39i89vgmvl3hy67s0";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Create and view interactive cheatsheets on the command-line";
|
||||
|
@ -68,11 +68,6 @@ stdenv.mkDerivation rec {
|
||||
(if i3Support || i3GapsSupport then makeWrapper else null)
|
||||
];
|
||||
|
||||
postConfigure = ''
|
||||
substituteInPlace generated-sources/settings.hpp \
|
||||
--replace "${stdenv.cc}" "${stdenv.cc.name}"
|
||||
'';
|
||||
|
||||
postInstall = if (i3Support || i3GapsSupport) then ''
|
||||
wrapProgram $out/bin/polybar \
|
||||
--prefix PATH : "${if i3Support then i3 else i3-gaps}/bin"
|
||||
|
@ -16,10 +16,10 @@ let
|
||||
|
||||
pname = "simplenote";
|
||||
|
||||
version = "1.14.0";
|
||||
version = "1.15.0";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "1l61xf1i80fd8ymmnrb3plqn70jsxd8wyg0n6f69bz3k8s5g8cxi";
|
||||
x86_64-linux = "08h3g2rw75k63ssd62c6jrb2dy9sz85y5jpfj5np64dvw70a1811";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -11,8 +11,18 @@ pythonPackages.buildPythonApplication rec {
|
||||
sha256 = "0f14s4qx3q5pr5vn460c34b5mbz2xs62d8ljs3kic8gmdn8x2knm";
|
||||
};
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
||||
propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ];
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $man/share/man/man{1,5}
|
||||
cp wikicurses.1 $man/share/man/man1/
|
||||
cp wikicurses.conf.5 $man/share/man/man5/
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = {
|
||||
description = "A simple curses interface for MediaWiki sites such as Wikipedia";
|
||||
homepage = https://github.com/ids1024/wikicurses/;
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "zola";
|
||||
version = "0.10.0";
|
||||
version = "0.10.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "getzola";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "112aqv21gy1fbly5v2x3ph32pr82d1mwh0q57yfaaqygz2madypb";
|
||||
sha256 = "07zg4ia983rgvgvmw4xbi347lr4rxlf1xv8rw72cflc74kyia67n";
|
||||
};
|
||||
|
||||
cargoSha256 = "0hqa60bx8pxhgad7x6r4zbwddrkcspnnp53bl94zbf3j47p10ggz";
|
||||
cargoSha256 = "13lnl01h8k8xv2ls1kjskfnyjmmk8iyk2mvbk01p2wmhp5m876md";
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
buildInputs = [ openssl ]
|
||||
|
@ -45,11 +45,11 @@ let
|
||||
|
||||
flash = stdenv.mkDerivation rec {
|
||||
pname = "flashplayer-ppapi";
|
||||
version = "32.0.0.330";
|
||||
version = "32.0.0.344";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
|
||||
sha256 = "08gpx0fq0r1sz5smfdgv4fkfwq1hdijv4dw432d6jdz8lq09y1nk";
|
||||
sha256 = "05ijlgsby9zxx0qs6f3vav1z0p6xr1cg6idl4akxvfmsl6hn6hkq";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
@ -74,7 +74,7 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "flashplayer";
|
||||
version = "32.0.0.330";
|
||||
version = "32.0.0.344";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
@ -85,14 +85,14 @@ stdenv.mkDerivation rec {
|
||||
sha256 =
|
||||
if debug then
|
||||
if arch == "x86_64" then
|
||||
"1k7h1p6g1vf96v31j1n8638jdxacap0729n0dnmh6l0h5q518k1b"
|
||||
"1kkwijxlcs1rlqxr1vj51h95fwwrp5m0c9lngqpncgmmhh8v9dyr"
|
||||
else
|
||||
"0gabgllx79s6rhv0zivfj6z79rcsdrzrdm94xdr19c11dsbqxd6b"
|
||||
"0r47s19fw7gsph73rd5jb2zfsjwz7mjawm6c49rir9rsa0zxrsks"
|
||||
else
|
||||
if arch == "x86_64" then
|
||||
"1pf3k1x8c2kbkc9pf9y5n4jilp3g41v8v0q5ng77sbnl92s35zsj"
|
||||
"1ki3i7zw0q48xf01xjfm1mpizc5flk768p9hqxpg881r4h65dh6b"
|
||||
else
|
||||
"1xibm6ffm09c553g100cgb6grnk21dfq8m81yy0jskph157vg962";
|
||||
"1v527i60sljwyvv4l1kg9ml05skjgm3naynlswd35hsz258jnxl4";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
@ -50,7 +50,7 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "flashplayer-standalone";
|
||||
version = "32.0.0.330";
|
||||
version = "32.0.0.344";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
@ -60,9 +60,9 @@ stdenv.mkDerivation {
|
||||
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
|
||||
sha256 =
|
||||
if debug then
|
||||
"0wrkg2in4c0bnbifm06m4rdggzs8zbaxwrh6z3mpbf4p3bl6xg84"
|
||||
"1ymsk07xmnanyv86r58ar1l4wgjarlq0fc111ajc76pp8dsxnfx8"
|
||||
else
|
||||
"08qxa3zanlgmn8sn7crz242adx10jqymd4gzf1m0zlczw20ar09c";
|
||||
"0wiwpn4a0jxslw4ahalq74rksn82y0aqa3lrjr9qs7kdcak74vky";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
@ -2,21 +2,21 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "atlantis";
|
||||
version = "0.10.1";
|
||||
version = "0.11.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "runatlantis";
|
||||
repo = "atlantis";
|
||||
rev = "v${version}";
|
||||
sha256 = "08k2dgz6rph68647ah1rdp7hqa5h1ar4gdy7vdjy5kn7gz21gmri";
|
||||
sha256 = "1ylk6n13ln6yaq4nc4n7fm00wfiyqi2x33sca5avzsvd1b387kk6";
|
||||
};
|
||||
|
||||
modSha256 = "1i4s3xcq2qc3zy00wk2l77935ilm6n5k1msilmdnj0061ia4860y";
|
||||
modSha256 = "1bhplk3p780llpj9l0fwcyli74879968d6j582mvjwvf2winbqzq";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/runatlantis/atlantis;
|
||||
homepage = "https://github.com/runatlantis/atlantis";
|
||||
description = "Terraform Pull Request Automation";
|
||||
platforms = platforms.all;
|
||||
license = licenses.asl20;
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "helm";
|
||||
version = "3.1.1";
|
||||
version = "3.1.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "helm";
|
||||
repo = "helm";
|
||||
rev = "v${version}";
|
||||
sha256 = "16hbwmgq14g28r9s0ipnpiqlppyh57yrcqcspmj05vrf9jsg5vwj";
|
||||
sha256 = "0pg5cwgyfb4isy2fn233kj3bdn0i8qqp90yzix0khs5maalpnrk1";
|
||||
};
|
||||
modSha256 = "0618zzi4x37ahsrazsr82anghhfva8yaryzb3p5d737p3ixbiyv8";
|
||||
|
||||
|
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
|
||||
homepage = https://mesosphere.github.io/marathon;
|
||||
description = "Cluster-wide init and control system for services in cgroups or Docker containers";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ kamilchm kevincox pradeepchhetri ];
|
||||
maintainers = with maintainers; [ kamilchm pradeepchhetri ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -256,7 +256,7 @@ in stdenv.mkDerivation rec {
|
||||
homepage = "http://mesos.apache.org";
|
||||
license = licenses.asl20;
|
||||
description = "A cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks";
|
||||
maintainers = with maintainers; [ cstrahan kevincox offline ];
|
||||
maintainers = with maintainers; [ cstrahan offline ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -1,18 +1,23 @@
|
||||
{stdenv, fetchurl, cmake, flex, bison, openssl, libpcap, zlib, file, curl
|
||||
, libmaxminddb, gperftools, python, swig, rocksdb }:
|
||||
|
||||
let
|
||||
preConfigure = (import ./script.nix);
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "zeek";
|
||||
version = "3.0.1";
|
||||
version = "3.0.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.zeek.org/downloads/zeek-${version}.tar.gz";
|
||||
sha256 = "1lhik212wrbi092qizc08f3i0b9pj318sxwm0abc5jc3v3pz7x3r";
|
||||
url = "https://old.zeek.org/downloads/zeek-${version}.tar.gz";
|
||||
sha256 = "0xlw5v83qbgy23wdcddmvan2pid28mw745g4fc1z5r18kp67i8a2";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake flex bison file ];
|
||||
buildInputs = [ openssl libpcap zlib curl libmaxminddb gperftools python swig rocksdb ];
|
||||
|
||||
#see issue https://github.com/zeek/zeek/issues/804 to modify hardlinking duplicate files.
|
||||
inherit preConfigure;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
cmakeFlags = [
|
||||
|
62
pkgs/applications/networking/ids/zeek/script.nix
Normal file
62
pkgs/applications/networking/ids/zeek/script.nix
Normal file
@ -0,0 +1,62 @@
|
||||
''
|
||||
sed -i "1i##! test dpd" $PWD/scripts/base/frameworks/dpd/__load__.zeek
|
||||
sed -i "1i##! test x509" $PWD/scripts/base/files/x509/__load__.zeek
|
||||
sed -i "1i##! test files-extract" $PWD/scripts/base/files/extract/__load__.zeek
|
||||
sed -i "1i##! test files-hash" $PWD/scripts/base/files/hash/__load__.zeek
|
||||
sed -i "1i##! test files-pe" $PWD/scripts/base/files/pe/__load__.zeek
|
||||
sed -i "1i##! test analyzer" $PWD/scripts/base/frameworks/analyzer/__load__.zeek
|
||||
sed -i "1i##! test cluster" $PWD/scripts/base/frameworks/cluster/__load__.zeek
|
||||
sed -i "1i##! test config" $PWD/scripts/base/frameworks/config/__load__.zeek
|
||||
sed -i "1i##! test contro" $PWD/scripts/base/frameworks/control/__load__.zeek
|
||||
sed -i "1i##! test files" $PWD/scripts/base/frameworks/files/__load__.zeek
|
||||
sed -i "1i##! test files-magic" $PWD/scripts/base/frameworks/files/magic/__load__.zeek
|
||||
sed -i "1i##! test input" $PWD/scripts/base/frameworks/input/__load__.zeek
|
||||
sed -i "1i##! test intel" $PWD/scripts/base/frameworks/intel/__load__.zeek
|
||||
sed -i "1i##! test logging" $PWD/scripts/base/frameworks/logging/__load__.zeek
|
||||
sed -i "1i##! test logging-postprocessors" $PWD/scripts/base/frameworks/logging/postprocessors/__load__.zeek
|
||||
sed -i "1i##! test netcontrol" $PWD/scripts/base/frameworks/netcontrol/__load__.zeek
|
||||
sed -i "1i##! test netcontrol-plugins" $PWD/scripts/base/frameworks/netcontrol/plugins/__load__.zeek
|
||||
sed -i "1i##! test notice" $PWD/scripts/base/frameworks/notice/__load__.zeek
|
||||
sed -i "1i##! test openflow" $PWD/scripts/base/frameworks/openflow/__load__.zeek
|
||||
sed -i "1i##! test openflow-plugins" $PWD/scripts/base/frameworks/openflow/plugins/__load__.zeek
|
||||
sed -i "1i##! test packet-filter" $PWD/scripts/base/frameworks/packet-filter/__load__.zeek
|
||||
sed -i "1i##! test reporter" $PWD/scripts/base/frameworks/reporter/__load__.zeek
|
||||
sed -i "1i##! test signatures" $PWD/scripts/base/frameworks/signatures/__load__.zeek
|
||||
sed -i "1i##! test software" $PWD/scripts/base/frameworks/software/__load__.zeek
|
||||
sed -i "1i##! test sumstats" $PWD/scripts/base/frameworks/sumstats/__load__.zeek
|
||||
sed -i "1i##! test sumstats-plugins" $PWD/scripts/base/frameworks/sumstats/plugins/__load__.zeek
|
||||
sed -i "1i##! test conn" $PWD/scripts/base/protocols/conn/__load__.zeek
|
||||
sed -i "1i##! test dce-rpc" $PWD/scripts/base/protocols/dce-rpc/__load__.zeek
|
||||
sed -i "1i##! test dhcp" $PWD/scripts/base/protocols/dhcp/__load__.zeek
|
||||
sed -i "1i##! test dnp3" $PWD/scripts/base/protocols/dnp3/__load__.zeek
|
||||
sed -i "1i##! test dns" $PWD/scripts/base/protocols/dns/__load__.zeek
|
||||
sed -i "1i##! test ftp" $PWD/scripts/base/protocols/ftp/__load__.zeek
|
||||
sed -i "1i##! test http" $PWD/scripts/base/protocols/http/__load__.zeek
|
||||
sed -i "1i##! test imap" $PWD/scripts/base/protocols/imap/__load__.zeek
|
||||
sed -i "1i##! test irc" $PWD/scripts/base/protocols/irc/__load__.zeek
|
||||
sed -i "1i##! test krb" $PWD/scripts/base/protocols/krb/__load__.zeek
|
||||
sed -i "1i##! test modbus" $PWD/scripts/base/protocols/modbus/__load__.zeek
|
||||
sed -i "1i##! test mqtt" $PWD/scripts/base/protocols/mqtt/__load__.zeek
|
||||
sed -i "1i##! test mysql" $PWD/scripts/base/protocols/mysql/__load__.zeek
|
||||
sed -i "1i##! test ntlm" $PWD/scripts/base/protocols/ntlm/__load__.zeek
|
||||
sed -i "1i##! test ntp" $PWD/scripts/base/protocols/ntp/__load__.zeek
|
||||
sed -i "1i##! test pop3" $PWD/scripts/base/protocols/pop3/__load__.zeek
|
||||
sed -i "1i##! test radius" $PWD/scripts/base/protocols/radius/__load__.zeek
|
||||
sed -i "1i##! test rdp" $PWD/scripts/base/protocols/rdp/__load__.zeek
|
||||
sed -i "1i##! test rfb" $PWD/scripts/base/protocols/rfb/__load__.zeek
|
||||
sed -i "1i##! test sip" $PWD/scripts/base/protocols/sip/__load__.zeek
|
||||
sed -i "1i##! test smb" $PWD/scripts/base/protocols/smb/__load__.zeek
|
||||
sed -i "1i##! test smtp" $PWD/scripts/base/protocols/smtp/__load__.zeek
|
||||
sed -i "1i##! test snmp" $PWD/scripts/base/protocols/snmp/__load__.zeek
|
||||
sed -i "1i##! test socks" $PWD/scripts/base/protocols/socks/__load__.zeek
|
||||
sed -i "1i##! test ssh" $PWD/scripts/base/protocols/ssh/__load__.zeek
|
||||
sed -i "1i##! test ssl" $PWD/scripts/base/protocols/ssl/__load__.zeek
|
||||
sed -i "1i##! test syslog" $PWD/scripts/base/protocols/syslog/__load__.zeek
|
||||
sed -i "1i##! test xmpp" $PWD/scripts/base/protocols/xmpp/__load__.zeek
|
||||
sed -i "1i##! test unified2" $PWD/scripts/policy/files/unified2/__load__.zeek
|
||||
sed -i "1i##! test intel-seen" $PWD/scripts/policy/frameworks/intel/seen/__load__.zeek
|
||||
sed -i "1i##! test notice" $PWD/scripts/policy/frameworks/notice/__load__.zeek
|
||||
sed -i "1i##! test barnyard2" $PWD/scripts/policy/integration/barnyard2/__load__.zeek
|
||||
sed -i "1i##! test collective-intel" $PWD/scripts/policy/integration/collective-intel/__load__.zeek
|
||||
sed -i "1i##! test detect-traceroute" $PWD/scripts/policy/misc/detect-traceroute/__load__.zeek
|
||||
''
|
@ -1,4 +1,4 @@
|
||||
{ lib, stdenv, buildPythonApplication, fetchPypi, pythonOlder,
|
||||
{ lib, stdenv, buildPythonApplication, fetchFromGitHub, pythonOlder,
|
||||
attrs, aiohttp, appdirs, click, keyring, Logbook, peewee, janus,
|
||||
prompt_toolkit, matrix-nio, dbus-python, pydbus, notify2, pygobject3,
|
||||
|
||||
@ -9,13 +9,16 @@
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "pantalaimon";
|
||||
version = "0.4";
|
||||
version = "0.5.1";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "1canj9w72wh1rcw6fivrvaahpxy13gb6gh1k8nss6bgixalvnq9m";
|
||||
# pypi tarball miss tests
|
||||
src = fetchFromGitHub {
|
||||
owner = "matrix-org";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "18jihvqlfk8lx97hxcr36zdkp2sffg2l8mkg5lflylwcgwy1dx0y";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -2,17 +2,21 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "ipfs";
|
||||
version = "0.4.22";
|
||||
version = "0.4.23";
|
||||
rev = "v${version}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ipfs";
|
||||
repo = "go-ipfs";
|
||||
inherit rev;
|
||||
sha256 = "1drwkam2m1qdny51l7ja9vd33jffy8w0z0wbp28ajx4glp0kyra2";
|
||||
sha256 = "19m1bhqf1jghdv2ngdnjdk1kvjcxbkgm1ccdkmkabv4ii43h8jwm";
|
||||
};
|
||||
|
||||
modSha256 = "0jbzkifn88myk2vpd390clyl835978vpcfz912y8cnl26s6q677n";
|
||||
postPatch = ''
|
||||
rm -rf test/dependencies
|
||||
'';
|
||||
|
||||
modSha256 = "12m4ind1s8zaa6kssblc28z2cafy20w2jp80kzif39hg5ar9bijm";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A global, versioned, peer-to-peer filesystem";
|
||||
|
@ -107,6 +107,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://www.claws-mail.org/";
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ fpletz globin ];
|
||||
maintainers = with maintainers; [ fpletz globin orivej ];
|
||||
};
|
||||
}
|
||||
|
121
pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix
Normal file
121
pkgs/applications/networking/mailreaders/claws-mail/gtk3.nix
Normal file
@ -0,0 +1,121 @@
|
||||
{ config, fetchgit, stdenv, wrapGAppsHook, autoreconfHook, bison, flex
|
||||
, curl, dbus, dbus-glib, enchant, gtk3, gnutls, gnupg, gpgme
|
||||
, libarchive, libcanberra-gtk3, libetpan, libnotify, libsoup, libxml2, networkmanager
|
||||
, openldap, perl, pkgconfig, poppler, python, shared-mime-info, webkitgtk
|
||||
, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical
|
||||
# Build options
|
||||
# TODO: A flag to build the manual.
|
||||
# TODO: Plugins that complain about their missing dependencies, even when
|
||||
# provided:
|
||||
# gdata requires libgdata
|
||||
# geolocation requires libchamplain
|
||||
, enableLdap ? false
|
||||
, enableNetworkManager ? config.networking.networkmanager.enable or false
|
||||
, enablePgp ? true
|
||||
, enablePluginArchive ? false
|
||||
, enablePluginFancy ? true
|
||||
, enablePluginNotificationDialogs ? true
|
||||
, enablePluginNotificationSounds ? true
|
||||
, enablePluginPdf ? false
|
||||
, enablePluginPython ? false
|
||||
, enablePluginRavatar ? false
|
||||
, enablePluginRssyl ? false
|
||||
, enablePluginSmime ? false
|
||||
, enablePluginSpamassassin ? false
|
||||
, enablePluginSpamReport ? false
|
||||
, enablePluginVcalendar ? false
|
||||
, enableSpellcheck ? false
|
||||
}:
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "claws-mail-gtk3";
|
||||
version = "3.17.5";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://git.claws-mail.org/claws.git";
|
||||
rev = "c1e1902323c2b5dfe82144328b7933dc857ef343"; # this commit is "for release 3.17.5"
|
||||
sha256 = "0cqzlzcms6alvsdsbcc06bsdi1h349b16qngn2z1p8fz16x6s6cy";
|
||||
};
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
patches = [ ./mime.patch ];
|
||||
|
||||
preConfigure = ''
|
||||
# autotools check tries to dlopen libpython as a requirement for the python plugin
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${python}/lib
|
||||
# generate version without .git
|
||||
[ -e version ] || echo "echo ${version}" > version
|
||||
'';
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/procmime.c \
|
||||
--subst-var-by MIMEROOTDIR ${shared-mime-info}/share
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook bison flex pkgconfig wrapGAppsHook python.pkgs.wrapPython ];
|
||||
propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ];
|
||||
|
||||
buildInputs =
|
||||
[ curl dbus dbus-glib gtk3 gnutls gsettings-desktop-schemas
|
||||
libetpan perl glib-networking libSM libytnef
|
||||
]
|
||||
++ optional enableSpellcheck enchant
|
||||
++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ]
|
||||
++ optional enablePluginArchive libarchive
|
||||
++ optional enablePluginNotificationSounds libcanberra-gtk3
|
||||
++ optional enablePluginNotificationDialogs libnotify
|
||||
++ optional enablePluginFancy libsoup
|
||||
++ optional enablePluginRssyl libxml2
|
||||
++ optional enableNetworkManager networkmanager
|
||||
++ optional enableLdap openldap
|
||||
++ optional enablePluginPdf poppler
|
||||
++ optional enablePluginFancy webkitgtk
|
||||
++ optional enablePluginVcalendar libical;
|
||||
|
||||
configureFlags =
|
||||
optional (!enableLdap) "--disable-ldap"
|
||||
++ optional (!enableNetworkManager) "--disable-networkmanager"
|
||||
++ optionals (!enablePgp) [
|
||||
"--disable-pgpcore-plugin"
|
||||
"--disable-pgpinline-plugin"
|
||||
"--disable-pgpmime-plugin"
|
||||
]
|
||||
++ optional (!enablePluginArchive) "--disable-archive-plugin"
|
||||
++ optional (!enablePluginFancy) "--disable-fancy-plugin"
|
||||
++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin"
|
||||
++ optional (!enablePluginPython) "--disable-python-plugin"
|
||||
++ optional (!enablePluginRavatar) "--disable-libravatar-plugin"
|
||||
++ optional (!enablePluginRssyl) "--disable-rssyl-plugin"
|
||||
++ optional (!enablePluginSmime) "--disable-smime-plugin"
|
||||
++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin"
|
||||
++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin"
|
||||
++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin"
|
||||
++ optional (!enableSpellcheck) "--disable-enchant";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
pythonPath = with python.pkgs; [ pygobject2 pygtk ];
|
||||
|
||||
preFixup = ''
|
||||
buildPythonPath "$out $pythonPath"
|
||||
gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH")
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/applications
|
||||
cp claws-mail.desktop $out/share/applications
|
||||
'';
|
||||
|
||||
NIX_CFLAGS_COMPILE = [ "-Wno-deprecated-declarations" ];
|
||||
|
||||
meta = {
|
||||
description = "The user-friendly, lightweight, and fast email client";
|
||||
homepage = "https://www.claws-mail.org/";
|
||||
license = licenses.gpl3;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ fpletz globin orivej ];
|
||||
};
|
||||
}
|
@ -4,14 +4,14 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "20191207";
|
||||
version = "20200313";
|
||||
pname = "neomutt";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "neomutt";
|
||||
repo = "neomutt";
|
||||
rev = version;
|
||||
sha256 = "147yjpqnsbfy01fhsflxlixk0985r91a6bjmqq3cwmf7gka3sihm";
|
||||
sha256 = "1k4k07l6h5krc3fx928qvdq3ssw9fxn95aj7k885xlckd2i1lnb5";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
@ -80,7 +80,7 @@ stdenv.mkDerivation rec {
|
||||
description = "A small but very powerful text-based mail client";
|
||||
homepage = http://www.neomutt.org;
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ cstrahan erikryb jfrankenau vrthra ];
|
||||
maintainers = with maintainers; [ cstrahan erikryb jfrankenau vrthra ma27 ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ let
|
||||
version = source.version;
|
||||
|
||||
patches = (source.patches or [])
|
||||
++ optional jackSupport ./mumble-jack-support.patch
|
||||
++ [ ./fix-rnnoise-argument.patch ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig python qt5.qmake ]
|
||||
|
@ -1,457 +0,0 @@
|
||||
The patch was created by Filipe Coelho (falkTX) of the KXStudio
|
||||
project. http://kxstudio.sourceforge.net
|
||||
|
||||
diff -U 3 -H -d -r -N -- mumble-1.2.2.orig/src/mumble/JackAudio.cpp mumble-1.2.2/src/mumble/JackAudio.cpp
|
||||
--- mumble-1.2.2.orig/src/mumble/JackAudio.cpp 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ mumble-1.2.2/src/mumble/JackAudio.cpp 2011-01-26 06:02:00.000000000 +0000
|
||||
@@ -0,0 +1,314 @@
|
||||
+/* Copyright (C) 2011, Benjamin Jemlich <pcgod@users.sourceforge.net>
|
||||
+ Copyright (C) 2011, Filipe Coelho <falktx@gmail.com>
|
||||
+
|
||||
+ All rights reserved.
|
||||
+
|
||||
+ Redistribution and use in source and binary forms, with or without
|
||||
+ modification, are permitted provided that the following conditions
|
||||
+ are met:
|
||||
+
|
||||
+ - Redistributions of source code must retain the above copyright notice,
|
||||
+ this list of conditions and the following disclaimer.
|
||||
+ - Redistributions in binary form must reproduce the above copyright notice,
|
||||
+ this list of conditions and the following disclaimer in the documentation
|
||||
+ and/or other materials provided with the distribution.
|
||||
+ - Neither the name of the Mumble Developers nor the names of its
|
||||
+ contributors may be used to endorse or promote products derived from this
|
||||
+ software without specific prior written permission.
|
||||
+
|
||||
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+*/
|
||||
+
|
||||
+#include "JackAudio.h"
|
||||
+#include "User.h"
|
||||
+#include "Global.h"
|
||||
+#include "MainWindow.h"
|
||||
+#include "Timer.h"
|
||||
+
|
||||
+#include <cstring>
|
||||
+
|
||||
+static JackAudioSystem *jasys = NULL;
|
||||
+
|
||||
+class JackAudioInputRegistrar : public AudioInputRegistrar {
|
||||
+ public:
|
||||
+ JackAudioInputRegistrar();
|
||||
+ virtual AudioInput *create();
|
||||
+ virtual const QList<audioDevice> getDeviceChoices();
|
||||
+ virtual void setDeviceChoice(const QVariant &, Settings &);
|
||||
+ virtual bool canEcho(const QString &) const;
|
||||
+};
|
||||
+
|
||||
+class JackAudioOutputRegistrar : public AudioOutputRegistrar {
|
||||
+ public:
|
||||
+ JackAudioOutputRegistrar();
|
||||
+ virtual AudioOutput *create();
|
||||
+ virtual const QList<audioDevice> getDeviceChoices();
|
||||
+ virtual void setDeviceChoice(const QVariant &, Settings &);
|
||||
+};
|
||||
+
|
||||
+class JackAudioInit : public DeferInit {
|
||||
+ public:
|
||||
+ JackAudioInputRegistrar *airJackAudio;
|
||||
+ JackAudioOutputRegistrar *aorJackAudio;
|
||||
+ void initialize() {
|
||||
+ jasys = new JackAudioSystem();
|
||||
+ jasys->init_jack();
|
||||
+ jasys->qmWait.lock();
|
||||
+ jasys->qwcWait.wait(&jasys->qmWait, 1000);
|
||||
+ jasys->qmWait.unlock();
|
||||
+ if (jasys->bJackIsGood) {
|
||||
+ airJackAudio = new JackAudioInputRegistrar();
|
||||
+ aorJackAudio = new JackAudioOutputRegistrar();
|
||||
+ } else {
|
||||
+ airJackAudio = NULL;
|
||||
+ aorJackAudio = NULL;
|
||||
+ delete jasys;
|
||||
+ jasys = NULL;
|
||||
+ }
|
||||
+ };
|
||||
+ void destroy() {
|
||||
+ if (airJackAudio)
|
||||
+ delete airJackAudio;
|
||||
+ if (aorJackAudio)
|
||||
+ delete aorJackAudio;
|
||||
+ if (jasys) {
|
||||
+ jasys->close_jack();
|
||||
+ delete jasys;
|
||||
+ jasys = NULL;
|
||||
+ }
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+static JackAudioInit jackinit; //unused
|
||||
+
|
||||
+JackAudioSystem::JackAudioSystem() {
|
||||
+ bJackIsGood = false;
|
||||
+ iSampleRate = 0;
|
||||
+}
|
||||
+
|
||||
+JackAudioSystem::~JackAudioSystem() {
|
||||
+}
|
||||
+
|
||||
+void JackAudioSystem::init_jack()
|
||||
+{
|
||||
+ client = jack_client_open("mumble", JackNullOption, 0);
|
||||
+
|
||||
+ if (client) {
|
||||
+ in_port = jack_port_register(client, "input", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0);
|
||||
+ out_port = jack_port_register(client, "output", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
|
||||
+ jack_set_process_callback(client, process_callback, this);
|
||||
+ jack_set_sample_rate_callback(client, srate_callback, this);
|
||||
+ jack_on_shutdown(client, shutdown_callback, this);
|
||||
+
|
||||
+ iSampleRate = jack_get_sample_rate(client);
|
||||
+
|
||||
+ if (jack_activate(client) || in_port == NULL || out_port == NULL) {
|
||||
+ client = NULL;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ int port_flags;
|
||||
+ unsigned i = -1;
|
||||
+ const char** ports = jack_get_ports(client, 0, 0, JackPortIsPhysical);
|
||||
+
|
||||
+ if (ports) {
|
||||
+ while (ports[++i])
|
||||
+ {
|
||||
+ jack_port_t* port = jack_port_by_name(client, ports[i]);
|
||||
+ port_flags = jack_port_flags(port);
|
||||
+
|
||||
+ if (port_flags & (JackPortIsPhysical|JackPortIsOutput) && strstr(jack_port_type(port), "audio")) {
|
||||
+ jack_connect(client, ports[i], jack_port_name(in_port));
|
||||
+ }
|
||||
+ if (port_flags & (JackPortIsPhysical|JackPortIsInput) && strstr(jack_port_type(port), "audio")) {
|
||||
+ jack_connect(client, jack_port_name(out_port), ports[i]);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ jack_free(ports);
|
||||
+
|
||||
+ // If we made it this far, then everything is okay
|
||||
+ qhInput.insert(QString(), tr("Hardware Ports"));
|
||||
+ qhOutput.insert(QString(), tr("Hardware Ports"));
|
||||
+ bJackIsGood = true;
|
||||
+
|
||||
+ } else {
|
||||
+ bJackIsGood = false;
|
||||
+ client = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void JackAudioSystem::close_jack()
|
||||
+{
|
||||
+ if (client) {
|
||||
+ jack_deactivate(client);
|
||||
+ jack_client_close(client);
|
||||
+ client = NULL;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+int JackAudioSystem::process_callback(jack_nframes_t nframes, void *arg)
|
||||
+{
|
||||
+ JackAudioSystem *jas = (JackAudioSystem*)arg;
|
||||
+
|
||||
+ if (jas && jas->bJackIsGood) {
|
||||
+ AudioInputPtr ai = g.ai;
|
||||
+ AudioOutputPtr ao = g.ao;
|
||||
+ JackAudioInput *jai = (JackAudioInput*)(ai.get());
|
||||
+ JackAudioOutput *jao = (JackAudioOutput*)(ao.get());
|
||||
+
|
||||
+ if (jai && jai->bRunning && jai->iMicChannels > 0 && !jai->isFinished()) {
|
||||
+ void* input = jack_port_get_buffer(jas->in_port, nframes);
|
||||
+ if ((float*)input != 0)
|
||||
+ jai->addMic(input, nframes);
|
||||
+ }
|
||||
+
|
||||
+ if (jao && jao->bRunning && jao->iChannels > 0 && !jao->isFinished()) {
|
||||
+ jack_default_audio_sample_t* output = (jack_default_audio_sample_t*)jack_port_get_buffer(jas->out_port, nframes);
|
||||
+ memset(output, 0, sizeof(jack_default_audio_sample_t)*nframes); //TEST
|
||||
+ jao->mix(output, nframes);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int JackAudioSystem::srate_callback(jack_nframes_t frames, void *arg)
|
||||
+{
|
||||
+ JackAudioSystem *jas = (JackAudioSystem*)arg;
|
||||
+ jas->iSampleRate = frames;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+void JackAudioSystem::shutdown_callback(void *arg)
|
||||
+{
|
||||
+ JackAudioSystem *jas = (JackAudioSystem*)arg;
|
||||
+ jas->bJackIsGood = false;
|
||||
+}
|
||||
+
|
||||
+JackAudioInputRegistrar::JackAudioInputRegistrar() : AudioInputRegistrar(QLatin1String("JACK"), 10) {
|
||||
+}
|
||||
+
|
||||
+AudioInput *JackAudioInputRegistrar::create() {
|
||||
+ return new JackAudioInput();
|
||||
+}
|
||||
+
|
||||
+const QList<audioDevice> JackAudioInputRegistrar::getDeviceChoices() {
|
||||
+ QList<audioDevice> qlReturn;
|
||||
+
|
||||
+ QStringList qlInputDevs = jasys->qhInput.keys();
|
||||
+ qSort(qlInputDevs);
|
||||
+
|
||||
+ foreach(const QString &dev, qlInputDevs) {
|
||||
+ qlReturn << audioDevice(jasys->qhInput.value(dev), dev);
|
||||
+ }
|
||||
+
|
||||
+ return qlReturn;
|
||||
+}
|
||||
+
|
||||
+void JackAudioInputRegistrar::setDeviceChoice(const QVariant &choice, Settings &s) {
|
||||
+ Q_UNUSED(choice);
|
||||
+ Q_UNUSED(s);
|
||||
+}
|
||||
+
|
||||
+bool JackAudioInputRegistrar::canEcho(const QString &osys) const {
|
||||
+ Q_UNUSED(osys);
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+JackAudioOutputRegistrar::JackAudioOutputRegistrar() : AudioOutputRegistrar(QLatin1String("JACK"), 10) {
|
||||
+}
|
||||
+
|
||||
+AudioOutput *JackAudioOutputRegistrar::create() {
|
||||
+ return new JackAudioOutput();
|
||||
+}
|
||||
+
|
||||
+const QList<audioDevice> JackAudioOutputRegistrar::getDeviceChoices() {
|
||||
+ QList<audioDevice> qlReturn;
|
||||
+
|
||||
+ QStringList qlOutputDevs = jasys->qhOutput.keys();
|
||||
+ qSort(qlOutputDevs);
|
||||
+
|
||||
+ foreach(const QString &dev, qlOutputDevs) {
|
||||
+ qlReturn << audioDevice(jasys->qhOutput.value(dev), dev);
|
||||
+ }
|
||||
+
|
||||
+ return qlReturn;
|
||||
+}
|
||||
+
|
||||
+void JackAudioOutputRegistrar::setDeviceChoice(const QVariant &choice, Settings &s) {
|
||||
+ Q_UNUSED(choice);
|
||||
+ Q_UNUSED(s);
|
||||
+}
|
||||
+
|
||||
+JackAudioInput::JackAudioInput() {
|
||||
+ bRunning = true;
|
||||
+ iMicChannels = 0;
|
||||
+};
|
||||
+
|
||||
+JackAudioInput::~JackAudioInput() {
|
||||
+ bRunning = false;
|
||||
+ iMicChannels = 0;
|
||||
+ qmMutex.lock();
|
||||
+ qwcWait.wakeAll();
|
||||
+ qmMutex.unlock();
|
||||
+ wait();
|
||||
+}
|
||||
+
|
||||
+void JackAudioInput::run() {
|
||||
+ if (jasys && jasys->bJackIsGood) {
|
||||
+ iMicFreq = jasys->iSampleRate;
|
||||
+ iMicChannels = 1;
|
||||
+ eMicFormat = SampleFloat;
|
||||
+ initializeMixer();
|
||||
+ }
|
||||
+
|
||||
+ qmMutex.lock();
|
||||
+ while (bRunning)
|
||||
+ qwcWait.wait(&qmMutex);
|
||||
+ qmMutex.unlock();
|
||||
+}
|
||||
+
|
||||
+JackAudioOutput::JackAudioOutput() {
|
||||
+ bRunning = true;
|
||||
+ iChannels = 0;
|
||||
+}
|
||||
+
|
||||
+JackAudioOutput::~JackAudioOutput() {
|
||||
+ bRunning = false;
|
||||
+ iChannels = 0;
|
||||
+ qmMutex.lock();
|
||||
+ qwcWait.wakeAll();
|
||||
+ qmMutex.unlock();
|
||||
+ wait();
|
||||
+}
|
||||
+
|
||||
+void JackAudioOutput::run() {
|
||||
+ if (jasys && jasys->bJackIsGood) {
|
||||
+ unsigned int chanmasks[32];
|
||||
+
|
||||
+ chanmasks[0] = SPEAKER_FRONT_LEFT;
|
||||
+ chanmasks[1] = SPEAKER_FRONT_RIGHT;
|
||||
+
|
||||
+ eSampleFormat = SampleFloat;
|
||||
+ iMixerFreq = jasys->iSampleRate;
|
||||
+ iChannels = 1;
|
||||
+ initializeMixer(chanmasks);
|
||||
+ }
|
||||
+
|
||||
+ qmMutex.lock();
|
||||
+ while (bRunning)
|
||||
+ qwcWait.wait(&qmMutex);
|
||||
+ qmMutex.unlock();
|
||||
+}
|
||||
diff -U 3 -H -d -r -N -- mumble-1.2.2.orig/src/mumble/JackAudio.h mumble-1.2.2/src/mumble/JackAudio.h
|
||||
--- mumble-1.2.2.orig/src/mumble/JackAudio.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ mumble-1.2.2/src/mumble/JackAudio.h 2011-01-26 06:03:58.000000000 +0000
|
||||
@@ -0,0 +1,97 @@
|
||||
+/* Copyright (C) 2011, Benjamin Jemlich <pcgod@users.sourceforge.net>
|
||||
+ Copyright (C) 2011, Filipe Coelho <falktx@gmail.com>
|
||||
+
|
||||
+ All rights reserved.
|
||||
+
|
||||
+ Redistribution and use in source and binary forms, with or without
|
||||
+ modification, are permitted provided that the following conditions
|
||||
+ are met:
|
||||
+
|
||||
+ - Redistributions of source code must retain the above copyright notice,
|
||||
+ this list of conditions and the following disclaimer.
|
||||
+ - Redistributions in binary form must reproduce the above copyright notice,
|
||||
+ this list of conditions and the following disclaimer in the documentation
|
||||
+ and/or other materials provided with the distribution.
|
||||
+ - Neither the name of the Mumble Developers nor the names of its
|
||||
+ contributors may be used to endorse or promote products derived from this
|
||||
+ software without specific prior written permission.
|
||||
+
|
||||
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+*/
|
||||
+
|
||||
+#ifndef _JACKAUDIO_H
|
||||
+#define _JACKAUDIO_H
|
||||
+
|
||||
+#include "AudioInput.h"
|
||||
+#include "AudioOutput.h"
|
||||
+#include <jack/jack.h>
|
||||
+
|
||||
+class JackAudioOutput;
|
||||
+class JackAudioInput;
|
||||
+
|
||||
+class JackAudioSystem : public QObject {
|
||||
+ private:
|
||||
+ Q_OBJECT
|
||||
+ Q_DISABLE_COPY(JackAudioSystem)
|
||||
+ protected:
|
||||
+ jack_client_t* client;
|
||||
+ jack_port_t* in_port;
|
||||
+ jack_port_t* out_port;
|
||||
+
|
||||
+ static int process_callback(jack_nframes_t nframes, void *arg);
|
||||
+ static int srate_callback(jack_nframes_t frames, void *arg);
|
||||
+ static void shutdown_callback(void *arg);
|
||||
+ public:
|
||||
+ QHash<QString, QString> qhInput;
|
||||
+ QHash<QString, QString> qhOutput;
|
||||
+ bool bJackIsGood;
|
||||
+ int iSampleRate;
|
||||
+ QMutex qmWait;
|
||||
+ QWaitCondition qwcWait;
|
||||
+
|
||||
+ void init_jack();
|
||||
+ void close_jack();
|
||||
+
|
||||
+ JackAudioSystem();
|
||||
+ ~JackAudioSystem();
|
||||
+};
|
||||
+
|
||||
+class JackAudioInput : public AudioInput {
|
||||
+ friend class JackAudioSystem;
|
||||
+ private:
|
||||
+ Q_OBJECT
|
||||
+ Q_DISABLE_COPY(JackAudioInput)
|
||||
+ protected:
|
||||
+ QMutex qmMutex;
|
||||
+ QWaitCondition qwcWait;
|
||||
+ public:
|
||||
+ JackAudioInput();
|
||||
+ ~JackAudioInput();
|
||||
+ void run();
|
||||
+};
|
||||
+
|
||||
+class JackAudioOutput : public AudioOutput {
|
||||
+ friend class JackAudioSystem;
|
||||
+ private:
|
||||
+ Q_OBJECT
|
||||
+ Q_DISABLE_COPY(JackAudioOutput)
|
||||
+ protected:
|
||||
+ QMutex qmMutex;
|
||||
+ QWaitCondition qwcWait;
|
||||
+ public:
|
||||
+ JackAudioOutput();
|
||||
+ ~JackAudioOutput();
|
||||
+ void run();
|
||||
+};
|
||||
+
|
||||
+#endif
|
||||
diff -U 3 -H -d -r -N -- mumble-1.2.2.orig/src/mumble/mumble.pro mumble-1.2.2/src/mumble/mumble.pro
|
||||
--- mumble-1.2.2.orig/src/mumble/mumble.pro 2010-02-09 16:34:51.000000000 +0000
|
||||
+++ mumble-1.2.2/src/mumble/mumble.pro 2011-01-26 01:45:55.000000000 +0000
|
||||
@@ -93,11 +93,17 @@
|
||||
unix {
|
||||
HAVE_PULSEAUDIO=$$system(pkg-config --modversion --silence-errors libpulse)
|
||||
HAVE_PORTAUDIO=$$system(pkg-config --modversion --silence-errors portaudio-2.0)
|
||||
+ HAVE_JACKAUDIO=$$system(pkg-config --modversion --silence-errors jack)
|
||||
|
||||
!isEmpty(HAVE_PORTAUDIO):!CONFIG(no-portaudio) {
|
||||
CONFIG *= portaudio
|
||||
}
|
||||
|
||||
+ !isEmpty(HAVE_JACKAUDIO):!CONFIG(no-jackaudio) {
|
||||
+ CONFIG -= portaudio
|
||||
+ CONFIG *= jackaudio
|
||||
+ }
|
||||
+
|
||||
!isEmpty(HAVE_PULSEAUDIO):!CONFIG(no-pulseaudio) {
|
||||
CONFIG -= portaudio
|
||||
CONFIG *= pulseaudio
|
||||
@@ -110,6 +116,13 @@
|
||||
QMAKE_CXXFLAGS_DEBUG *= -I../../speex/include -I../../speexbuild
|
||||
}
|
||||
|
||||
+ jackaudio {
|
||||
+ DEFINES *= USE_JACKAUDIO
|
||||
+ PKGCONFIG *= jack
|
||||
+ HEADERS *= JackAudio.h
|
||||
+ SOURCES *= JackAudio.cpp
|
||||
+ }
|
||||
+
|
||||
CONFIG *= link_pkgconfig
|
||||
|
||||
PKGCONFIG *= openssl sndfile
|
@ -1,6 +1,8 @@
|
||||
{stdenv, fetchFromGitHub, ocaml, lablgtk, fontschumachermisc, xset, makeWrapper, ncurses
|
||||
{stdenv, fetchFromGitHub, ocamlPackages, fontschumachermisc, xset, makeWrapper, ncurses
|
||||
, enableX11 ? true}:
|
||||
|
||||
let inherit (ocamlPackages) ocaml lablgtk; in
|
||||
|
||||
stdenv.mkDerivation (rec {
|
||||
|
||||
pname = "unison";
|
||||
|
@ -3,14 +3,15 @@
|
||||
, isPy3k, isPyPy
|
||||
|
||||
, pyenchant, simplebayes, pillow, pycountry, whoosh, termcolor
|
||||
, python-Levenshtein, pyinsane2, pygobject3, pyocr, natsort
|
||||
, python-Levenshtein, pygobject3, pyocr, natsort, libinsane
|
||||
, distro
|
||||
|
||||
, pkgs
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "paperwork-backend";
|
||||
version = "1.2.4";
|
||||
version = "1.3.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
@ -18,7 +19,7 @@ buildPythonPackage rec {
|
||||
group = "World";
|
||||
owner = "OpenPaperwork";
|
||||
rev = version;
|
||||
sha256 = "0wjjiw99aswmppnhzq3jir0p5p78r3m8hjinhdirkgm6h7skq5p4";
|
||||
sha256 = "1219yz8z4r1yn6miq8zc2z1m1lnhf3dmkhwfw23n05bg842nvg65";
|
||||
};
|
||||
|
||||
sourceRoot = "source/paperwork-backend";
|
||||
@ -34,14 +35,14 @@ buildPythonPackage rec {
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pyenchant simplebayes pillow pycountry whoosh termcolor
|
||||
python-Levenshtein pyinsane2 pygobject3 pyocr natsort
|
||||
pkgs.poppler_gi pkgs.gtk3
|
||||
python-Levenshtein libinsane pygobject3 pyocr natsort
|
||||
pkgs.poppler_gi pkgs.gtk3 distro
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Backend part of Paperwork (Python API, no UI)";
|
||||
homepage = https://openpaper.work/;
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = [ lib.maintainers.aszlig ];
|
||||
maintainers = with lib.maintainers; [ aszlig symphorien ];
|
||||
};
|
||||
}
|
||||
|
@ -1,7 +1,15 @@
|
||||
{ lib, python3Packages, gtk3, cairo
|
||||
, aspellDicts, buildEnv
|
||||
, gnome3, librsvg
|
||||
, xvfb_run, dbus, libnotify
|
||||
{ lib
|
||||
, python3Packages
|
||||
, gtk3
|
||||
, cairo
|
||||
, aspellDicts
|
||||
, buildEnv
|
||||
, gnome3
|
||||
, librsvg
|
||||
, xvfb_run
|
||||
, dbus
|
||||
, libnotify
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
@ -46,9 +54,23 @@ python3Packages.buildPythonApplication rec {
|
||||
paths = lib.collect lib.isDerivation aspellDicts;
|
||||
}}/lib/aspell";
|
||||
|
||||
postInstall = ''
|
||||
# paperwork-shell needs to be re-wrapped with access to paperwork
|
||||
cp ${python3Packages.paperwork-backend}/bin/.paperwork-shell-wrapped $out/bin/paperwork-shell
|
||||
# install desktop files and icons
|
||||
XDG_DATA_HOME=$out/share $out/bin/paperwork-shell install
|
||||
'';
|
||||
|
||||
checkInputs = [ xvfb_run dbus.daemon ] ++ (with python3Packages; [ paperwork-backend ]);
|
||||
|
||||
nativeBuildInputs = [
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gnome3.adwaita-icon-theme libnotify librsvg
|
||||
gnome3.adwaita-icon-theme
|
||||
libnotify
|
||||
librsvg
|
||||
];
|
||||
|
||||
# A few parts of chkdeps need to have a display and a dbus session, so we not
|
||||
@ -61,21 +83,20 @@ python3Packages.buildPythonApplication rec {
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
paperwork-backend pypillowfight gtk3 cairo pyxdg dateutil setuptools pandas
|
||||
];
|
||||
|
||||
makeWrapperArgs = [
|
||||
"--set GI_TYPELIB_PATH \"$GI_TYPELIB_PATH\""
|
||||
"--set GDK_PIXBUF_MODULE_FILE \"$GDK_PIXBUF_MODULE_FILE\""
|
||||
"--prefix XDG_DATA_DIRS : \"$out/share\""
|
||||
"--suffix XDG_DATA_DIRS : \"$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\""
|
||||
paperwork-backend
|
||||
pypillowfight
|
||||
gtk3
|
||||
cairo
|
||||
pyxdg
|
||||
dateutil
|
||||
setuptools
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "A personal document manager for scanned documents";
|
||||
homepage = https://openpaper.work/;
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = [ lib.maintainers.aszlig ];
|
||||
maintainers = with lib.maintainers; [ aszlig symphorien ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ let
|
||||
maintainers = with maintainers; [ emmanuelrosa dtzWill kampka ];
|
||||
};
|
||||
|
||||
version = "0.39.4";
|
||||
version = "0.40.5";
|
||||
|
||||
in {
|
||||
|
||||
@ -30,14 +30,14 @@ in {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
|
||||
sha256 = "18wrnm13k0gg6aljpf6k7c5zia81zzkqc0sa1pgz0yzczydsfaa9";
|
||||
sha256 = "02hmfgv8viy1hn2ix4b0gdzbcj7piddsmjdnb0b5hpwahqrikiyi";
|
||||
};
|
||||
|
||||
# Fetch from source repo, no longer included in release.
|
||||
# (they did special-case icon.png but we want the scalable svg)
|
||||
# Use the version here to ensure we get any changes.
|
||||
trilium_svg = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/zadam/trilium/v${version}/src/public/images/trilium.svg";
|
||||
url = "https://raw.githubusercontent.com/zadam/trilium/v${version}/images/trilium.svg";
|
||||
sha256 = "1rgj7pza20yndfp8n12k93jyprym02hqah36fkk2b3if3kcmwnfg";
|
||||
};
|
||||
|
||||
@ -78,7 +78,7 @@ in {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
|
||||
sha256 = "06svdp25031p665pvlxdz10malvhxpczzrg90hpr1zymm6v8van3";
|
||||
sha256 = "00b7qx2h26qrdhw2a7y0irhbr442yynnzpm1pz55hi33zpckbrc7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -10,8 +10,8 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0lmvsnb4xw4hmz6zs0z5ilsah5hjz29g1s0050n59fllskqr3b8k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ cmake libusb1 ];
|
||||
nativeBuildInputs = [ pkgconfig cmake ];
|
||||
buildInputs = [ libusb1 ];
|
||||
|
||||
# TODO: get these fixes upstream:
|
||||
# * Building with -DINSTALL_UDEV_RULES=ON tries to install udev rules to
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "verilator";
|
||||
version = "4.028";
|
||||
version = "4.030";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.veripool.org/ftp/${pname}-${version}.tgz";
|
||||
sha256 = "1rl92jnayhc1j47gjxdz2zf1by9vzlawbyw9mf1d7d2y22dqak1l";
|
||||
sha256 = "07ldkf7xkr31n1dmx82bmzam8bvc1vsp32k76vd7yzn7r853qyky";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "geogebra";
|
||||
version = "5-0-573-0";
|
||||
version = "5-0-574-0";
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
||||
@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
|
||||
"https://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2"
|
||||
"http://web.archive.org/https://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2"
|
||||
];
|
||||
sha256 = "0lj0k49sjsjqs716n74xbq6a4gids5903f5s6fhqyahrwyldhzrj";
|
||||
sha256 = "0jbci4spqkf33yb079lsnsc684y4mdf1p8lm9r0037av8jlsrgrc";
|
||||
};
|
||||
|
||||
srcIcon = fetchurl {
|
||||
|
@ -1,24 +1,27 @@
|
||||
{ stdenv, fetchurl, cmake, gfortran, openblas, openmpi, python3 }:
|
||||
{ stdenv, fetchurl, cmake, gfortran, openblas, openmpi, petsc, python3 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "getdp";
|
||||
version = "3.0.4";
|
||||
name = "getdp-${version}";
|
||||
version = "3.3.0";
|
||||
src = fetchurl {
|
||||
url = "http://getdp.info/src/getdp-${version}-source.tgz";
|
||||
sha256 = "0v3hg03lzw4hz28hm45hpv0gyydqz0wav7xvb5n0v0jrm47mrspv";
|
||||
sha256 = "1pfviy2bw8z5y6c15czvlvyjjg9pvpgrj9fr54xfi2gmvs7zkgpf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ gfortran openblas openmpi python3 ];
|
||||
nativeBuildInputs = [ cmake gfortran ];
|
||||
buildInputs = [ openblas openmpi petsc python3 ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A General Environment for the Treatment of Discrete Problems";
|
||||
longDescription = ''
|
||||
GetDP is a free finite element solver using mixed elements to discretize de Rham-type complexes in one, two and three dimensions.
|
||||
The main feature of GetDP is the closeness between the input data defining discrete problems (written by the user in ASCII data files) and the symbolic mathematical expressions of these problems.
|
||||
GetDP is a free finite element solver using mixed elements to discretize
|
||||
de Rham-type complexes in one, two and three dimensions. The main
|
||||
feature of GetDP is the closeness between the input data defining
|
||||
discrete problems (written by the user in ASCII data files) and the
|
||||
symbolic mathematical expressions of these problems.
|
||||
'';
|
||||
homepage = http://getdp.info/;
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
homepage = "http://getdp.info/";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ wucke13 ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, gmp
|
||||
, readline
|
||||
, libX11
|
||||
@ -19,6 +20,15 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "1jd65h2psrmba2dx7rkf5qidf9ka0cwbsg20pd18k45ggr30l467";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://trac.sagemath.org/ticket/29313#comment:1
|
||||
(fetchpatch {
|
||||
name = "backport-bug-fix.patch";
|
||||
url = "https://git.archlinux.org/svntogit/community.git/plain/repos/community-x86_64/c7a1d35f.patch?h=packages/pari&id=27893d227290dc3821d68aa25877d9765c204dad";
|
||||
sha256 = "0vm0fwyzj66cr32imip6srksd47s2s2sjl1rb26ph8gpfi3nalii";
|
||||
})
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gmp
|
||||
readline
|
||||
|
@ -130,6 +130,13 @@ stdenv.mkDerivation rec {
|
||||
url = "https://git.sagemath.org/sage.git/patch/?h=c6d0308db15efd611211d26cfcbefbd180fc0831";
|
||||
sha256 = "0nwai2jr22h49km4hx3kwafs3mzsc5kwsv7mqwjf6ibwfx2bbgyq";
|
||||
})
|
||||
|
||||
# https://trac.sagemath.org/ticket/29313 (patch from ArchLinux)
|
||||
(fetchpatch {
|
||||
name = "pari-2.11.3.patch";
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/sagemath-pari-2.11.3.patch?h=sagemath-git&id=02e1d58bd1cd70935d69a4990469d18be6bd2c43";
|
||||
sha256 = "0z07444zvijyw96d11q7j81pvg7ysd6ycf1bbbjr6za9y74hv7d2";
|
||||
})
|
||||
];
|
||||
|
||||
patches = nixPatches ++ bugfixPatches ++ packageUpgradePatches;
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "git-standup";
|
||||
version = "2.3.1";
|
||||
version = "2.3.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kamranahmedse";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0wx9ypyxhpjbrasl6264jmj9fjrpg3gn93dg00cakabz3r7yxxq3";
|
||||
sha256 = "1xnn0jjha56v7l2vj45zzxncl6m5x2hq6nkffgc1bcikhp1pidn7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -2,13 +2,15 @@
|
||||
|
||||
libgit2.overrideAttrs (oldAttrs: {
|
||||
cmakeFlags = oldAttrs.cmakeFlags ++ [
|
||||
"-DUSE_BUNDLED_ZLIB=ON"
|
||||
"-DUSE_ICONV=OFF"
|
||||
"-DBUILD_CLAR=OFF"
|
||||
"-DUSE_SSH=OFF"
|
||||
"-DUSE_HTTPS=OFF"
|
||||
"-DBUILD_SHARED_LIBS=OFF"
|
||||
"-DUSE_EXT_HTTP_PARSER=OFF"
|
||||
"-DREGEX_BACKEND=builtin"
|
||||
"-DUSE_BUNDLED_ZLIB=ON"
|
||||
"-DUSE_HTTPS=OFF"
|
||||
"-DUSE_HTTP_PARSER=builtin" # overwritten from libgit2
|
||||
"-DUSE_ICONV=OFF"
|
||||
"-DUSE_SSH=OFF"
|
||||
"-DZERO_NSEC=ON"
|
||||
];
|
||||
src = fetchFromGitHub {
|
||||
owner = "romkatv";
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "hub";
|
||||
version = "2.14.1";
|
||||
version = "2.14.2";
|
||||
|
||||
goPackagePath = "github.com/github/hub";
|
||||
|
||||
@ -13,7 +13,7 @@ buildGoPackage rec {
|
||||
owner = "github";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0b179sp8z2blzh4a0c2pjbbiya68x2i4cnmcci58r8k0mwrx6mw1";
|
||||
sha256 = "1qjab3dpia1jdlszz3xxix76lqrm4zbmqzd9ymld7h06awzsg2vh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ groff utillinux ];
|
||||
|
@ -1,11 +1,11 @@
|
||||
{
|
||||
"version": "12.8.5",
|
||||
"repo_hash": "1y5606p793w1js39420jcd2bj42cripczgrdxgg2cq0r2kq8axk8",
|
||||
"version": "12.8.6",
|
||||
"repo_hash": "0plcigppmg6ckmq8myj3m9adshdvqj7czx8fms71bsa9zx060wib",
|
||||
"owner": "gitlab-org",
|
||||
"repo": "gitlab",
|
||||
"rev": "v12.8.5-ee",
|
||||
"rev": "v12.8.6-ee",
|
||||
"passthru": {
|
||||
"GITALY_SERVER_VERSION": "12.8.5",
|
||||
"GITALY_SERVER_VERSION": "12.8.6",
|
||||
"GITLAB_PAGES_VERSION": "1.16.0",
|
||||
"GITLAB_SHELL_VERSION": "11.0.0",
|
||||
"GITLAB_WORKHORSE_VERSION": "8.21.0"
|
||||
|
@ -28,14 +28,14 @@ let
|
||||
};
|
||||
});
|
||||
in buildGoPackage rec {
|
||||
version = "12.8.5";
|
||||
version = "12.8.6";
|
||||
pname = "gitaly";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "gitlab-org";
|
||||
repo = "gitaly";
|
||||
rev = "v${version}";
|
||||
sha256 = "19pwffncihhywfac7ybry38vyj3pmdz66g5nqrvwn4xxw7ypvd24";
|
||||
sha256 = "1rf9qmyjllkwkyi7la1dzyjh0z9sw21zdzihd7v9ngwqssfk5zfk";
|
||||
};
|
||||
|
||||
# Fix a check which assumes that hook files are writeable by their
|
||||
|
@ -175,6 +175,8 @@ def update_gitaly():
|
||||
f.write(repo.get_file(fn, f"v{gitaly_server_version}"))
|
||||
|
||||
subprocess.check_output(['bundix'], cwd=gitaly_dir)
|
||||
|
||||
os.environ['GOROOT'] = ""
|
||||
subprocess.check_output(['vgo2nix'], cwd=gitaly_dir)
|
||||
|
||||
for fn in ['go.mod', 'go.sum']:
|
||||
@ -197,6 +199,7 @@ def update_gitlab_shell():
|
||||
with open(gitlab_shell_dir / fn, 'w') as f:
|
||||
f.write(repo.get_file(fn, f"v{gitlab_shell_version}"))
|
||||
|
||||
os.environ['GOROOT'] = ""
|
||||
subprocess.check_output(['vgo2nix'], cwd=gitlab_shell_dir)
|
||||
|
||||
for fn in ['go.mod', 'go.sum']:
|
||||
@ -217,6 +220,7 @@ def update_gitlab_workhorse():
|
||||
with open(gitlab_workhorse_dir / fn, 'w') as f:
|
||||
f.write(repo.get_file(fn, f"v{gitlab_workhorse_version}"))
|
||||
|
||||
os.environ['GOROOT'] = ""
|
||||
subprocess.check_output(['vgo2nix'], cwd=gitlab_workhorse_dir)
|
||||
|
||||
for fn in ['go.mod', 'go.sum']:
|
||||
|
@ -206,9 +206,9 @@ rec {
|
||||
};
|
||||
|
||||
docker_19_03 = makeOverridable dockerGen {
|
||||
version = "19.03.7";
|
||||
rev = "7141c199a2edb2a90b778175f836f9dd2a22c95a";
|
||||
sha256 = "1h1hrp6cw3ah2gaq2vfdd1d9vh7gyf7rs6bdxwpxk9ixc19fxsm4";
|
||||
version = "19.03.8";
|
||||
rev = "afacb8b7f0d8d4f9d2a8e8736e9c993e672b41f3";
|
||||
sha256 = "15iq16rlnkw78lvapcfpbnsnxhdjbvfvgzg3xzxhpdg1dmq40b6j";
|
||||
runcRev = "dc9208a3303feef5b3839f4323d9beb36df0a9dd"; # v1.0.0-rc10
|
||||
runcSha256 = "0pi3rvj585997m4z9ljkxz2z9yxf9p2jr0pmqbqrc7bc95f5hagk";
|
||||
containerdRev = "7ad184331fa3e55e52b890ea95e65ba581ae3429"; # v1.2.13
|
||||
|
@ -4,14 +4,14 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.12.c";
|
||||
version = "2.12.c.1";
|
||||
pname = "i3lock-color";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "PandorasFox";
|
||||
repo = "i3lock-color";
|
||||
rev = version;
|
||||
sha256 = "08fhnchf187b73h52xgzb86g6byzxz085zs9galsvl687g5zxk34";
|
||||
sha256 = "1q09cfgkikqbrkk1kljg8dsgbs5nacixhdqaww18h94hmlnbbssc";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
|
||||
- clock: time/date with configurable format
|
||||
- keyboard-layout
|
||||
'';
|
||||
homepage = https://github.com/PandorasFox/i3lock-color;
|
||||
homepage = "https://github.com/PandorasFox/i3lock-color";
|
||||
maintainers = with maintainers; [ malyn ];
|
||||
license = licenses.bsd3;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
{stdenv, fetchzip}:
|
||||
|
||||
let
|
||||
version = "3.3";
|
||||
version = "3.5";
|
||||
in fetchzip {
|
||||
name = "jost-${version}";
|
||||
url = "https://github.com/indestructible-type/Jost/releases/download/${version}/Jost.zip";
|
||||
@ -11,7 +11,7 @@ in fetchzip {
|
||||
unzip -j $downloadedFile \*.otf -d $out/share/fonts/opentype
|
||||
'';
|
||||
|
||||
sha256="00nrhs3aif2hc4yhjhbn9ywmydl2w0g0hv5m5is8gv7wx8yi2j9z";
|
||||
sha256="0l78vhmbsyfmrva5wc76pskhxqryyg8q5xddpj9g5wqsddy525dq";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/indestructible-type/Jost;
|
||||
|
@ -245,6 +245,12 @@ stdenv.mkDerivation ({
|
||||
|
||||
inherit (stdenv) is64bit;
|
||||
|
||||
# In this particular combination it stopped creating lib output at all.
|
||||
# TODO: perhaps find a better fix? (ideally understand what's going on)
|
||||
postFixup = if crossStageStatic && targetPlatform.isMusl && targetPlatform.is32bit
|
||||
then ''mkdir "$lib"''
|
||||
else null;
|
||||
|
||||
meta = {
|
||||
homepage = https://gcc.gnu.org/;
|
||||
license = stdenv.lib.licenses.gpl3Plus; # runtime support libraries are typically LGPLv3+
|
||||
|
@ -10,11 +10,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sbcl";
|
||||
version = "2.0.1";
|
||||
version = "2.0.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${pname}-${version}-source.tar.bz2";
|
||||
sha256 = "1s2nrq26czl7f8jpa9qjpmdqbzvldvf4c7c1z1c438v4f85xcl44";
|
||||
sha256 = "07pyzdjnhcpqwvr3rrk4i18maqdywbq1qj93fnpx1h4b7dp08r28";
|
||||
};
|
||||
|
||||
buildInputs = [texinfo];
|
||||
|
@ -81,12 +81,12 @@ self: super: {
|
||||
|
||||
# The Hackage tarball is purposefully broken, because it's not intended to be, like, useful.
|
||||
# https://git-annex.branchable.com/bugs/bash_completion_file_is_missing_in_the_6.20160527_tarball_on_hackage/
|
||||
git-annex = (overrideSrc (appendPatch super.git-annex ./patches/git-annex-fix-build-with-ghc-8.8.x.patch) {
|
||||
git-annex = (overrideSrc super.git-annex {
|
||||
src = pkgs.fetchgit {
|
||||
name = "git-annex-${super.git-annex.version}-src";
|
||||
url = "git://git-annex.branchable.com/";
|
||||
rev = "refs/tags/" + super.git-annex.version;
|
||||
sha256 = "0pl0yip7zp4i78cj9jqkmm33wqaaaxjq3ggnfmv95y79yijd6yh4";
|
||||
sha256 = "0y2qcjahi705c6nnypqpa5w3bzyzk4kqvbwfnpiaxzk5vna589gg";
|
||||
};
|
||||
}).override {
|
||||
dbus = if pkgs.stdenv.isLinux then self.dbus else null;
|
||||
@ -376,6 +376,7 @@ self: super: {
|
||||
Rlang-QQ = dontCheck super.Rlang-QQ;
|
||||
safecopy = dontCheck super.safecopy;
|
||||
sai-shape-syb = dontCheck super.sai-shape-syb;
|
||||
saltine = dontCheck super.saltine; # https://github.com/tel/saltine/pull/56
|
||||
scp-streams = dontCheck super.scp-streams;
|
||||
sdl2 = dontCheck super.sdl2; # the test suite needs an x server
|
||||
sdl2-ttf = dontCheck super.sdl2-ttf; # as of version 0.2.1, the test suite requires user intervention
|
||||
@ -1219,7 +1220,13 @@ self: super: {
|
||||
temporary-resourcet = doJailbreak super.temporary-resourcet;
|
||||
|
||||
# Requires dhall >= 1.23.0
|
||||
ats-pkg = super.ats-pkg.override { dhall = self.dhall_1_29_0; };
|
||||
ats-pkg = dontCheck (super.ats-pkg.override { dhall = self.dhall_1_29_0; });
|
||||
|
||||
# fake a home dir and capture generated man page
|
||||
ats-format = overrideCabal super.ats-format (old : {
|
||||
preConfigure = "export HOME=$PWD";
|
||||
postBuild = "mv .local/share $out";
|
||||
});
|
||||
|
||||
# Test suite doesn't work with current QuickCheck
|
||||
# https://github.com/pruvisto/heap/issues/11
|
||||
@ -1467,4 +1474,26 @@ self: super: {
|
||||
# haskell-ci-0.8 needs cabal-install-parsers ==0.1, but we have 0.2.
|
||||
haskell-ci = doJailbreak super.haskell-ci;
|
||||
|
||||
persistent-mysql = dontCheck super.persistent-mysql;
|
||||
|
||||
# Fix EdisonAPI and EdisonCore for GHC 8.8:
|
||||
# https://github.com/robdockins/edison/pull/16
|
||||
EdisonAPI = appendPatch super.EdisonAPI (pkgs.fetchpatch {
|
||||
url = "https://github.com/robdockins/edison/pull/16/commits/8da6c0f7d8666766e2f0693425c347c0adb492dc.patch";
|
||||
postFetch = ''
|
||||
${pkgs.patchutils}/bin/filterdiff --include='a/edison-api/*' --strip=1 "$out" > "$tmpfile"
|
||||
mv "$tmpfile" "$out"
|
||||
'';
|
||||
sha256 = "0yi5pz039lcm4pl9xnl6krqxyqq5rgb5b6m09w0sfy06x0n4x213";
|
||||
});
|
||||
|
||||
EdisonCore = appendPatch super.EdisonCore (pkgs.fetchpatch {
|
||||
url = "https://github.com/robdockins/edison/pull/16/commits/8da6c0f7d8666766e2f0693425c347c0adb492dc.patch";
|
||||
postFetch = ''
|
||||
${pkgs.patchutils}/bin/filterdiff --include='a/edison-core/*' --strip=1 "$out" > "$tmpfile"
|
||||
mv "$tmpfile" "$out"
|
||||
'';
|
||||
sha256 = "097wqn8hxsr50b9mhndg5pjim5jma2ym4ylpibakmmb5m98n17zp";
|
||||
});
|
||||
|
||||
} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super
|
||||
|
@ -1,6 +1,6 @@
|
||||
# pkgs/development/haskell-modules/configuration-hackage2nix.yaml
|
||||
|
||||
compiler: ghc-8.8.2
|
||||
compiler: ghc-8.8.3
|
||||
|
||||
core-packages:
|
||||
- array-0.5.4.0
|
||||
@ -10,23 +10,23 @@ core-packages:
|
||||
- Cabal-3.0.1.0
|
||||
- containers-0.6.2.1
|
||||
- deepseq-1.4.4.0
|
||||
- directory-1.3.4.0
|
||||
- directory-1.3.6.0
|
||||
- filepath-1.4.2.1
|
||||
- ghc-8.8.2
|
||||
- ghc-boot-8.8.2
|
||||
- ghc-boot-th-8.8.2
|
||||
- ghc-8.8.3
|
||||
- ghc-boot-8.8.3
|
||||
- ghc-boot-th-8.8.3
|
||||
- ghc-compact-0.1.0.0
|
||||
- ghc-heap-8.8.2
|
||||
- ghc-heap-8.8.3
|
||||
- ghc-prim-0.5.3
|
||||
- ghci-8.8.2
|
||||
- ghci-8.8.3
|
||||
- haskeline-0.7.5.0
|
||||
- hpc-0.6.0.3
|
||||
- integer-gmp-1.0.2.0
|
||||
- libiserv-8.8.2
|
||||
- libiserv-8.8.3
|
||||
- mtl-2.2.2
|
||||
- parsec-3.1.14.0
|
||||
- pretty-1.1.3.6
|
||||
- process-1.6.7.0
|
||||
- process-1.6.8.0
|
||||
- rts-1.0
|
||||
- stm-2.5.0.0
|
||||
- template-haskell-2.15.0.0
|
||||
@ -76,7 +76,7 @@ default-package-overrides:
|
||||
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
|
||||
# not yet available in Nixpkgs
|
||||
- gi-gdkx11 < 4
|
||||
# LTS Haskell 15.2
|
||||
# LTS Haskell 15.3
|
||||
- abstract-deque ==0.3
|
||||
- abstract-par ==0.3.3
|
||||
- AC-Angle ==1.0
|
||||
@ -361,7 +361,7 @@ default-package-overrides:
|
||||
- bytes ==0.17
|
||||
- byteset ==0.1.1.0
|
||||
- byteslice ==0.2.2.0
|
||||
- bytesmith ==0.3.5.0
|
||||
- bytesmith ==0.3.6.0
|
||||
- bytestring-builder ==0.10.8.2.0
|
||||
- bytestring-conversion ==0.3.1
|
||||
- bytestring-lexing ==0.5.0.2
|
||||
@ -407,7 +407,7 @@ default-package-overrides:
|
||||
- Chart-diagrams ==1.9.3
|
||||
- chaselev-deque ==0.5.0.5
|
||||
- ChasingBottoms ==1.3.1.7
|
||||
- checkers ==0.5.2
|
||||
- checkers ==0.5.4
|
||||
- checksum ==0.0
|
||||
- chimera ==0.3.0.0
|
||||
- choice ==0.2.2
|
||||
@ -444,7 +444,7 @@ default-package-overrides:
|
||||
- co-log ==0.4.0.0
|
||||
- co-log-core ==0.2.1.0
|
||||
- co-log-polysemy ==0.0.1.1
|
||||
- Color ==0.1.3.1
|
||||
- Color ==0.1.4
|
||||
- colorful-monoids ==0.2.1.2
|
||||
- colorize-haskell ==1.0.1
|
||||
- colour ==2.3.5
|
||||
@ -577,7 +577,7 @@ default-package-overrides:
|
||||
- data-tree-print ==0.1.0.2
|
||||
- dataurl ==0.1.0.0
|
||||
- DAV ==1.3.4
|
||||
- dbus ==1.2.11
|
||||
- dbus ==1.2.12
|
||||
- debian-build ==0.10.2.0
|
||||
- debug-trace-var ==0.2.0
|
||||
- dec ==0.0.3
|
||||
@ -707,7 +707,7 @@ default-package-overrides:
|
||||
- extended-reals ==0.2.3.0
|
||||
- extensible-effects ==5.0.0.1
|
||||
- extensible-exceptions ==0.1.1.4
|
||||
- extra ==1.6.20
|
||||
- extra ==1.6.21
|
||||
- extractable-singleton ==0.0.1
|
||||
- extrapolate ==0.4.1
|
||||
- fail ==4.9.0.0
|
||||
@ -785,12 +785,12 @@ default-package-overrides:
|
||||
- funcmp ==1.9
|
||||
- function-builder ==0.3.0.1
|
||||
- functor-classes-compat ==1
|
||||
- fused-effects ==1.0.0.1
|
||||
- fused-effects ==1.0.2.0
|
||||
- fusion-plugin ==0.1.1
|
||||
- fusion-plugin-types ==0.1.0
|
||||
- fuzzcheck ==0.1.1
|
||||
- fuzzy ==0.1.0.0
|
||||
- fuzzy-dates ==0.1.1.1
|
||||
- fuzzy-dates ==0.1.1.2
|
||||
- fuzzyset ==0.2.0
|
||||
- fuzzy-time ==0.1.0.0
|
||||
- gauge ==0.2.5
|
||||
@ -868,9 +868,9 @@ default-package-overrides:
|
||||
- gi-pango ==1.0.22
|
||||
- giphy-api ==0.7.0.0
|
||||
- githash ==0.1.3.3
|
||||
- github-rest ==1.0.1
|
||||
- github-rest ==1.0.2
|
||||
- github-types ==0.2.1
|
||||
- gitlab-haskell ==0.1.5
|
||||
- gitlab-haskell ==0.1.7
|
||||
- gitrev ==1.3.1
|
||||
- gi-xlib ==2.0.8
|
||||
- gl ==0.9
|
||||
@ -1059,8 +1059,8 @@ default-package-overrides:
|
||||
- hunit-dejafu ==2.0.0.1
|
||||
- hvect ==0.4.0.0
|
||||
- hvega ==0.5.0.0
|
||||
- hw-balancedparens ==0.3.0.4
|
||||
- hw-bits ==0.7.1.0
|
||||
- hw-balancedparens ==0.3.0.5
|
||||
- hw-bits ==0.7.1.2
|
||||
- hw-conduit ==0.2.0.6
|
||||
- hw-conduit-merges ==0.2.0.0
|
||||
- hw-diagnostics ==0.0.0.7
|
||||
@ -1287,7 +1287,7 @@ default-package-overrides:
|
||||
- markdown-unlit ==0.5.0
|
||||
- markov-chain ==0.0.3.4
|
||||
- massiv ==0.4.5.0
|
||||
- massiv-io ==0.2.0.0
|
||||
- massiv-io ==0.2.1.0
|
||||
- massiv-test ==0.1.2
|
||||
- mathexpr ==0.3.0.0
|
||||
- math-functions ==0.3.3.0
|
||||
@ -1331,9 +1331,9 @@ default-package-overrides:
|
||||
- mime-types ==0.1.0.9
|
||||
- mini-egison ==0.1.6
|
||||
- minimal-configuration ==0.1.4
|
||||
- minimorph ==0.2.1.0
|
||||
- minimorph ==0.2.2.0
|
||||
- minio-hs ==1.5.2
|
||||
- miniutter ==0.5.0.0
|
||||
- miniutter ==0.5.1.0
|
||||
- mintty ==0.1.2
|
||||
- miso ==1.4.0.0
|
||||
- missing-foreign ==0.1.1
|
||||
@ -1356,7 +1356,7 @@ default-package-overrides:
|
||||
- monad-extras ==0.6.0
|
||||
- monadic-arrays ==0.2.2
|
||||
- monad-journal ==0.8.1
|
||||
- monad-logger ==0.3.31
|
||||
- monad-logger ==0.3.32
|
||||
- monad-logger-json ==0.1.0.0
|
||||
- monad-logger-prefix ==0.1.11
|
||||
- monad-loops ==0.4.3
|
||||
@ -1551,7 +1551,7 @@ default-package-overrides:
|
||||
- persistent-sqlite ==2.10.6.2
|
||||
- persistent-template ==2.8.2.3
|
||||
- persistent-test ==2.0.3.1
|
||||
- persistent-typed-db ==0.1.0.0
|
||||
- persistent-typed-db ==0.1.0.1
|
||||
- pg-harness-client ==0.6.0
|
||||
- pgp-wordlist ==0.1.0.3
|
||||
- pg-transact ==0.3.1.1
|
||||
@ -1739,7 +1739,7 @@ default-package-overrides:
|
||||
- rerebase ==1.4.1
|
||||
- resolv ==0.1.1.3
|
||||
- resource-pool ==0.2.3.2
|
||||
- resourcet ==1.2.2
|
||||
- resourcet ==1.2.3
|
||||
- result ==0.2.6.0
|
||||
- rethinkdb-client-driver ==0.0.25
|
||||
- retry ==0.8.1.0
|
||||
@ -1747,7 +1747,7 @@ default-package-overrides:
|
||||
- rfc1751 ==0.1.2
|
||||
- rfc5051 ==0.1.0.4
|
||||
- rigel-viz ==0.2.0.0
|
||||
- rio ==0.1.14.0
|
||||
- rio ==0.1.14.1
|
||||
- rio-orphans ==0.1.1.0
|
||||
- rio-prettyprint ==0.1.0.0
|
||||
- roc-id ==0.1.0.0
|
||||
@ -1792,7 +1792,7 @@ default-package-overrides:
|
||||
- sdl2-gfx ==0.2
|
||||
- sdl2-image ==2.0.0
|
||||
- sdl2-mixer ==1.1.0
|
||||
- sdl2-ttf ==2.1.0
|
||||
- sdl2-ttf ==2.1.1
|
||||
- search-algorithms ==0.3.1
|
||||
- secp256k1-haskell ==0.1.8
|
||||
- securemem ==0.1.10
|
||||
@ -2178,7 +2178,7 @@ default-package-overrides:
|
||||
- unix-bytestring ==0.3.7.3
|
||||
- unix-compat ==0.5.2
|
||||
- unix-time ==0.4.7
|
||||
- unliftio ==0.2.12
|
||||
- unliftio ==0.2.12.1
|
||||
- unliftio-core ==0.1.2.0
|
||||
- unliftio-pool ==0.2.1.0
|
||||
- unlit ==0.4.0.0
|
||||
@ -2239,7 +2239,7 @@ default-package-overrides:
|
||||
- wai-app-static ==3.1.7.1
|
||||
- wai-conduit ==3.0.0.4
|
||||
- wai-cors ==0.2.7
|
||||
- wai-enforce-https ==0.0.1
|
||||
- wai-enforce-https ==0.0.2
|
||||
- wai-eventsource ==3.0.0
|
||||
- wai-extra ==3.0.29.1
|
||||
- wai-handler-launch ==3.0.3.1
|
||||
@ -2324,7 +2324,7 @@ default-package-overrides:
|
||||
- yesod-auth ==1.6.9
|
||||
- yesod-auth-hashdb ==1.7.1.2
|
||||
- yesod-bin ==1.6.0.4
|
||||
- yesod-core ==1.6.17.2
|
||||
- yesod-core ==1.6.17.3
|
||||
- yesod-form ==1.6.7
|
||||
- yesod-gitrev ==0.2.1
|
||||
- yesod-newsfeed ==1.7.0.0
|
||||
@ -2344,7 +2344,7 @@ default-package-overrides:
|
||||
- zeromq4-haskell ==0.8.0
|
||||
- zeromq4-patterns ==0.3.1.0
|
||||
- zim-parser ==0.2.1.0
|
||||
- zip ==1.3.1
|
||||
- zip ==1.3.2
|
||||
- zip-archive ==0.4.1
|
||||
- zippers ==0.3
|
||||
- zip-stream ==0.2.0.1
|
||||
@ -2847,6 +2847,7 @@ broken-packages:
|
||||
- arbor-monad-metric
|
||||
- arbor-monad-metric-datadog
|
||||
- arbtt
|
||||
- archive-tar-bytestring
|
||||
- archiver
|
||||
- archlinux
|
||||
- archlinux-web
|
||||
@ -2920,8 +2921,6 @@ broken-packages:
|
||||
- atomic-primops-vector
|
||||
- atomo
|
||||
- atp-haskell
|
||||
- ats-format
|
||||
- ats-pkg
|
||||
- ats-setup
|
||||
- ats-storable
|
||||
- attempt
|
||||
@ -3179,6 +3178,8 @@ broken-packages:
|
||||
- bitcoin-rpc
|
||||
- bitcoin-script
|
||||
- bitcoin-tx
|
||||
- bitcoind-regtest
|
||||
- bitcoind-rpc
|
||||
- Bitly
|
||||
- bitly-cli
|
||||
- bitmaps
|
||||
@ -3427,6 +3428,7 @@ broken-packages:
|
||||
- carte
|
||||
- cartel
|
||||
- Cartesian
|
||||
- cas-store
|
||||
- casa-abbreviations-and-acronyms
|
||||
- casadi-bindings
|
||||
- casadi-bindings-control
|
||||
@ -4383,8 +4385,6 @@ broken-packages:
|
||||
- edentv
|
||||
- edge
|
||||
- edges
|
||||
- EdisonAPI
|
||||
- EdisonCore
|
||||
- edit
|
||||
- edit-lenses
|
||||
- editable
|
||||
@ -8156,7 +8156,6 @@ broken-packages:
|
||||
- persistent-map
|
||||
- persistent-migration
|
||||
- persistent-mongoDB
|
||||
- persistent-mysql
|
||||
- persistent-mysql-haskell
|
||||
- persistent-protobuf
|
||||
- persistent-ratelimit
|
||||
@ -8979,7 +8978,6 @@ broken-packages:
|
||||
- sajson
|
||||
- salak-toml
|
||||
- Salsa
|
||||
- saltine
|
||||
- saltine-quickcheck
|
||||
- salvia
|
||||
- salvia-demo
|
||||
@ -9377,7 +9375,6 @@ broken-packages:
|
||||
- smuggler
|
||||
- snake
|
||||
- snake-game
|
||||
- snap
|
||||
- snap-accept
|
||||
- snap-auth-cli
|
||||
- snap-blaze-clay
|
||||
@ -10962,5 +10959,3 @@ broken-packages:
|
||||
- ztar
|
||||
- zuramaru
|
||||
- Zwaluw
|
||||
- zxcvbn-dvorak
|
||||
- zxcvbn-hs
|
||||
|
1779
pkgs/development/haskell-modules/hackage-packages.nix
generated
1779
pkgs/development/haskell-modules/hackage-packages.nix
generated
File diff suppressed because it is too large
Load Diff
@ -124,7 +124,7 @@ let
|
||||
sha256Arg = if sha256 == null then "--sha256=" else ''--sha256="${sha256}"'';
|
||||
in buildPackages.stdenv.mkDerivation {
|
||||
name = "cabal2nix-${name}";
|
||||
nativeBuildInputs = [ buildPackages.cabal2nix ];
|
||||
nativeBuildInputs = [ buildPackages.cabal2nix-unwrapped ];
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
phases = ["installPhase"];
|
||||
|
@ -1,125 +0,0 @@
|
||||
From f8d8959e43abd88c5e977079f0948e45cf4c0b0c Mon Sep 17 00:00:00 2001
|
||||
From: Peter Simons <simons@cryp.to>
|
||||
Date: Fri, 28 Feb 2020 11:56:48 +0100
|
||||
Subject: [PATCH] Fix build with ghc-8.8.x.
|
||||
|
||||
The 'fail' method has been moved to the 'MonadFail' class. I made the changes
|
||||
so that the code still compiles with previous versions of 'base' that don't
|
||||
have the new MonadFail class exported by Prelude yet.
|
||||
---
|
||||
CmdLine/GitAnnex/Options.hs | 5 +++--
|
||||
Command/Expire.hs | 5 +++--
|
||||
Command/Init.hs | 7 ++++---
|
||||
Utility/HumanTime.hs | 5 +++--
|
||||
4 files changed, 13 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/CmdLine/GitAnnex/Options.hs b/CmdLine/GitAnnex/Options.hs
|
||||
index 030c83dd5..a9a36d76f 100644
|
||||
--- a/CmdLine/GitAnnex/Options.hs
|
||||
+++ b/CmdLine/GitAnnex/Options.hs
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
module CmdLine.GitAnnex.Options where
|
||||
|
||||
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||
import Options.Applicative
|
||||
import qualified Data.Map as M
|
||||
|
||||
@@ -215,8 +216,8 @@ parseAllOption = flag' WantAllKeys
|
||||
<> help "operate on all versions of all files"
|
||||
)
|
||||
|
||||
-parseKey :: Monad m => String -> m Key
|
||||
-parseKey = maybe (fail "invalid key") return . deserializeKey
|
||||
+parseKey :: MonadFail m => String -> m Key
|
||||
+parseKey = maybe (Fail.fail "invalid key") return . deserializeKey
|
||||
|
||||
-- Options to match properties of annexed files.
|
||||
annexedMatchingOptions :: [GlobalOption]
|
||||
diff --git a/Command/Expire.hs b/Command/Expire.hs
|
||||
index 83c38e569..37dc33883 100644
|
||||
--- a/Command/Expire.hs
|
||||
+++ b/Command/Expire.hs
|
||||
@@ -17,6 +17,7 @@ import Annex.VectorClock
|
||||
import qualified Remote
|
||||
import Utility.HumanTime
|
||||
|
||||
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||
import Data.Time.Clock.POSIX
|
||||
import qualified Data.Map as M
|
||||
|
||||
@@ -105,9 +106,9 @@ parseExpire ps = do
|
||||
Nothing -> giveup $ "bad expire time: " ++ s
|
||||
Just d -> Just (now - durationToPOSIXTime d)
|
||||
|
||||
-parseActivity :: Monad m => String -> m Activity
|
||||
+parseActivity :: MonadFail m => String -> m Activity
|
||||
parseActivity s = case readish s of
|
||||
- Nothing -> fail $ "Unknown activity. Choose from: " ++
|
||||
+ Nothing -> Fail.fail $ "Unknown activity. Choose from: " ++
|
||||
unwords (map show [minBound..maxBound :: Activity])
|
||||
Just v -> return v
|
||||
|
||||
diff --git a/Command/Init.hs b/Command/Init.hs
|
||||
index db6cb14fb..879a1110f 100644
|
||||
--- a/Command/Init.hs
|
||||
+++ b/Command/Init.hs
|
||||
@@ -13,6 +13,7 @@ import Annex.Version
|
||||
import Types.RepoVersion
|
||||
import qualified Annex.SpecialRemote
|
||||
|
||||
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||
import qualified Data.Map as M
|
||||
|
||||
cmd :: Command
|
||||
@@ -33,14 +34,14 @@ optParser desc = InitOptions
|
||||
<> help "Override default annex.version"
|
||||
))
|
||||
|
||||
-parseRepoVersion :: Monad m => String -> m RepoVersion
|
||||
+parseRepoVersion :: MonadFail m => String -> m RepoVersion
|
||||
parseRepoVersion s = case RepoVersion <$> readish s of
|
||||
- Nothing -> fail $ "version parse error"
|
||||
+ Nothing -> Fail.fail $ "version parse error"
|
||||
Just v
|
||||
| v `elem` supportedVersions -> return v
|
||||
| otherwise -> case M.lookup v autoUpgradeableVersions of
|
||||
Just v' -> return v'
|
||||
- Nothing -> fail $ s ++ " is not a currently supported repository version"
|
||||
+ Nothing -> Fail.fail $ s ++ " is not a currently supported repository version"
|
||||
|
||||
seek :: InitOptions -> CommandSeek
|
||||
seek = commandAction . start
|
||||
diff --git a/Utility/HumanTime.hs b/Utility/HumanTime.hs
|
||||
index 01fbeacfb..d2e70f332 100644
|
||||
--- a/Utility/HumanTime.hs
|
||||
+++ b/Utility/HumanTime.hs
|
||||
@@ -19,6 +19,7 @@ module Utility.HumanTime (
|
||||
import Utility.PartialPrelude
|
||||
import Utility.QuickCheck
|
||||
|
||||
+import Control.Monad.Fail as Fail ( MonadFail(..) )
|
||||
import qualified Data.Map as M
|
||||
import Data.Time.Clock
|
||||
import Data.Time.Clock.POSIX (POSIXTime)
|
||||
@@ -44,7 +45,7 @@ daysToDuration :: Integer -> Duration
|
||||
daysToDuration i = Duration $ i * dsecs
|
||||
|
||||
{- Parses a human-input time duration, of the form "5h", "1m", "5h1m", etc -}
|
||||
-parseDuration :: Monad m => String -> m Duration
|
||||
+parseDuration :: MonadFail m => String -> m Duration
|
||||
parseDuration = maybe parsefail (return . Duration) . go 0
|
||||
where
|
||||
go n [] = return n
|
||||
@@ -55,7 +56,7 @@ parseDuration = maybe parsefail (return . Duration) . go 0
|
||||
u <- M.lookup c unitmap
|
||||
go (n + num * u) rest
|
||||
_ -> return $ n + num
|
||||
- parsefail = fail "duration parse error; expected eg \"5m\" or \"1h5m\""
|
||||
+ parsefail = Fail.fail "duration parse error; expected eg \"5m\" or \"1h5m\""
|
||||
|
||||
fromDuration :: Duration -> String
|
||||
fromDuration Duration { durationSeconds = d }
|
||||
--
|
||||
2.25.1
|
||||
|
@ -8,17 +8,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "wasmer";
|
||||
version = "0.13.0";
|
||||
version = "0.16.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wasmerio";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1k9zd2vhrbvxlpkh21m39alk5lfhd3xa25k0awis27plfpv8fqcq";
|
||||
sha256 = "124zq772kz9a7n3qpxgmp4awqj41l8mhhwc0y3r77i1q02i1sy7z";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
cargoSha256 = "101y3zcnbl0w0zv2k0bhqk5d0xj8m2h6ww9r366j9b1y54cqj4b7";
|
||||
cargoSha256 = "1qqysvcviimpm2zhzsbn8vhy91rxzaknh9hv75y38xd5ggnnh9m6";
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
{ stdenv, callPackage, fetchurl, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // {
|
||||
version = "1.62.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/boost/boost_1_62_0.tar.bz2";
|
||||
# long-form SHA256 from www.boost.org
|
||||
sha256 = "36c96b0f6155c98404091d8ceb48319a28279ca0333fba1ad8611eb90afb2ca0";
|
||||
};
|
||||
|
||||
})
|
@ -1,12 +0,0 @@
|
||||
{ stdenv, callPackage, fetchurl, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // {
|
||||
version = "1.63.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/boost/boost_1_63_0.tar.bz2";
|
||||
# SHA256 from http://www.boost.org/users/history/version_1_63_0.html
|
||||
sha256 = "beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0";
|
||||
};
|
||||
|
||||
})
|
@ -1,12 +0,0 @@
|
||||
{ stdenv, callPackage, fetchurl, ... } @ args:
|
||||
|
||||
callPackage ./generic.nix (args // {
|
||||
version = "1.64.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/boost/boost_1_64_0.tar.bz2";
|
||||
# SHA256 from http://www.boost.org/users/history/version_1_64_0.html
|
||||
sha256 = "7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332";
|
||||
};
|
||||
|
||||
})
|
@ -5,13 +5,13 @@ with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dqlite";
|
||||
version = "1.0.0";
|
||||
version = "1.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0670c1c84lcf5vl3h6mlff00fz2fnm766bzlk526sjjzysx3zjya";
|
||||
sha256 = "19snm6cicxagcw9ys2jmjf6fchzs6pwm7h4jmyr0pn6zks2yjf1i";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook file pkgconfig ];
|
||||
@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = https://github.com/CanonicalLtd/dqlite/;
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ joko ];
|
||||
maintainers = with maintainers; [ joko wucke13 ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "howard-hinnant-date-unstable";
|
||||
version = "2020-01-24";
|
||||
version = "2020-03-09";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "HowardHinnant";
|
||||
repo = "date";
|
||||
rev = "9a0ee2542848ab8625984fc8cdbfb9b5414c0082";
|
||||
sha256 = "0yxsn0hj22n61bjywysxqgfv7hj5xvsl6isma95fl8xrimpny083";
|
||||
rev = "4c1968b8f038483037cadfdbad3215ce21d934bb";
|
||||
sha256 = "0dywrf18v1znfnz0gdxgi2ydax466zq34gc1vvg2k7vq17a30wq3";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
47
pkgs/development/libraries/libinsane/default.nix
Normal file
47
pkgs/development/libraries/libinsane/default.nix
Normal file
@ -0,0 +1,47 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, meson
|
||||
, ninja
|
||||
, fetchFromGitLab
|
||||
, pkg-config
|
||||
, glib
|
||||
, docbook_xsl
|
||||
, sane-backends
|
||||
, gobject-introspection
|
||||
, vala
|
||||
, gtk-doc
|
||||
, valgrind
|
||||
, doxygen
|
||||
, cunit
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libinsane";
|
||||
version = "1.0.3";
|
||||
|
||||
outputs = [ "out" "dev" "devdoc" ];
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
repo = "libinsane";
|
||||
group = "World";
|
||||
owner = "OpenPaperwork";
|
||||
rev = version;
|
||||
sha256 = "1x2pl4ahqjc6ql97v7fnyna0qrnw3bxmqg3lyi5biyajfhg9nvql";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ meson pkg-config ninja doxygen gtk-doc docbook_xsl gobject-introspection vala ];
|
||||
|
||||
buildInputs = [ sane-backends glib ];
|
||||
|
||||
checkInputs = [ cunit valgrind ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "Crossplatform access to image scanners (paper eaters only)";
|
||||
homepage = "https://openpaper.work/en/projects/";
|
||||
license = lib.licenses.lgpl3Plus;
|
||||
maintainers = [ lib.maintainers.symphorien ];
|
||||
};
|
||||
}
|
@ -2,21 +2,22 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ndi";
|
||||
version = "4";
|
||||
fullVersion = "4.1.6";
|
||||
version = builtins.head (builtins.splitVersion fullVersion);
|
||||
|
||||
src = requireFile rec {
|
||||
name = "InstallNDISDK_v${version}_Linux.tar.gz";
|
||||
sha256 = "1hac5npyg8nifs9ipj34pkn0zjyx8774x3i3h8znhmijx2j2982p";
|
||||
sha256 = "0hki805j3hlci6w5ca2cajm5q0y9yihgvpsykkn8dzx8chw4pmsk";
|
||||
message = ''
|
||||
In order to use the NDI SDK, you need to comply with NewTek's license and
|
||||
download the Linux version ${version} tarball from:
|
||||
In order to use NDI SDK version ${fullVersion}, you need to comply with
|
||||
NewTek's license and download the appropriate Linux tarball from:
|
||||
|
||||
${meta.homepage}
|
||||
${meta.homepage}
|
||||
|
||||
Once you have downloaded the file, please use the following command and
|
||||
re-run the installation:
|
||||
|
||||
nix-prefetch-url file://\$PWD/${name}
|
||||
\$ nix-prefetch-url file://\$PWD/${name}
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -23,5 +23,15 @@ callPackage ./generic.nix (args // rec {
|
||||
name = "CVE-2019-12973-2.patch";
|
||||
sha256 = "1jkkfw13l7nx4hxdhc7z17f4vfgqcaf09zpl235kypbxx1ygc7vq";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/uclouvain/openjpeg/commit/024b8407392cb0b82b04b58ed256094ed5799e04.patch";
|
||||
name = "CVE-2020-6851.patch";
|
||||
sha256 = "1lfwlzqxb69cwzjp8v9lijz4c2qhf3b8m6sq1khipqlgrb3l58xw";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/uclouvain/openjpeg/commit/05f9b91e60debda0e83977e5e63b2e66486f7074.patch";
|
||||
name = "CVE-2020-8112.patch";
|
||||
sha256 = "16kykc8wbq9kx9w9kkf3i7snak82m184qrl9bpxvkjl7h0n9aw49";
|
||||
})
|
||||
];
|
||||
})
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "raft-canonical";
|
||||
version = "0.9.6";
|
||||
version = "0.9.17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = "raft";
|
||||
rev = "v${version}";
|
||||
sha256 = "083il7b5kw3pc7m5p9xjpb9dlvfarc51sni92mkgm9ckc32x9vpp";
|
||||
sha256 = "0q444wd6wz85g4zjkdsrf8z7chkjq9rxzq8l6fh37mgf7c23hv09";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook file pkgconfig ];
|
||||
@ -18,12 +18,14 @@ stdenv.mkDerivation rec {
|
||||
substituteInPlace configure --replace /usr/bin/ " "
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
# Due to
|
||||
#io_uv_recv/success/first [ ERROR ]
|
||||
#Error: test/lib/dir.c:97: No such file or directory
|
||||
# test fails
|
||||
#
|
||||
#append/finalizeSegment [ ERROR ]
|
||||
#Error: test/integration/test_uv_append.c:264: assertion failed: test_dir_has_file(f->dir, "0000000000000001-0000000000000004") is not true
|
||||
#Error: child killed by signal 6 (Aborted)
|
||||
|
||||
doCheck = false;
|
||||
|
||||
outputs = [ "dev" "out" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
@ -39,6 +41,6 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = "https://github.com/canonical/raft";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.wucke13 ];
|
||||
maintainers = with maintainers; [ wucke13 ];
|
||||
};
|
||||
}
|
||||
|
@ -1,17 +1,12 @@
|
||||
{ stdenv
|
||||
, fetchurl
|
||||
, blas
|
||||
, gfortran
|
||||
, liblapack
|
||||
, python }:
|
||||
{ stdenv , fetchurl , blas , gfortran , liblapack , python }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "petsc";
|
||||
version = "3.8.4";
|
||||
version = "3.12.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-${version}.tar.gz";
|
||||
sha256 = "1iy49gagxncx09d88kxnwkj876p35683mpfk33x37165si6xqy4z";
|
||||
sha256 = "1hw4f12v2xwrs37gjh83dbixhg0yxandqx7s7k5vlfx91l9l3aan";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ blas gfortran.cc.lib liblapack python ];
|
||||
@ -26,7 +21,7 @@ stdenv.mkDerivation rec {
|
||||
configureFlagsArray=(
|
||||
$configureFlagsArray
|
||||
"--CC=$CC"
|
||||
"--with-cxx=0"
|
||||
"--with-cxx=g++"
|
||||
"--with-fc=0"
|
||||
"--with-mpi=0"
|
||||
"--with-blas-lib=[${blas}/lib/libblas.a,${gfortran.cc.lib}/lib/libgfortran.a]"
|
||||
@ -34,17 +29,14 @@ stdenv.mkDerivation rec {
|
||||
)
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
rm $out/bin/petscmpiexec
|
||||
rm $out/bin/popup
|
||||
rm $out/bin/uncrustify.cfg
|
||||
rm -rf $out/bin/win32fe
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Library of linear algebra algorithms for solving partial differential equations";
|
||||
homepage = https://www.mcs.anl.gov/petsc/index.html;
|
||||
platforms = stdenv.lib.platforms.all;
|
||||
license = stdenv.lib.licenses.bsd2;
|
||||
meta = with stdenv.lib; {
|
||||
description = ''
|
||||
Library of linear algebra algorithms for solving partial differential
|
||||
equations
|
||||
'';
|
||||
homepage = "https://www.mcs.anl.gov/petsc/index.html";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ wucke13 ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
@ -1,14 +1,14 @@
|
||||
{ fetchurl, stdenv, flex }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "7.1";
|
||||
version = "7.2";
|
||||
pname = "wcslib";
|
||||
|
||||
buildInputs = [ flex ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.atnf.csiro.au/pub/software/wcslib/${pname}-${version}.tar.bz2";
|
||||
sha256 ="05ji2v4la8h6azprb8x2zh6wrswxsq8cqw9zml0layc4nfg79fzh";
|
||||
sha256 ="0fbf6ypq7ag9dmjn65ja5vbfxswb6511bja8rbna25wmhns9x5b3";
|
||||
};
|
||||
|
||||
prePatch = ''
|
||||
@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = {
|
||||
description = "World Coordinate System Library for Astronomy";
|
||||
homepage = https://www.atnf.csiro.au/people/mcalabre/WCS/;
|
||||
homepage = "https://www.atnf.csiro.au/people/mcalabre/WCS/";
|
||||
|
||||
longDescription = ''Library for world coordinate systems for
|
||||
spherical geometries and their conversion to image coordinate
|
||||
|
@ -1,4 +1,8 @@
|
||||
{ lib, fetchurl, buildDunePackage }:
|
||||
{ lib, fetchurl, ocaml, buildDunePackage }:
|
||||
|
||||
if lib.versionAtLeast ocaml.version "4.08"
|
||||
then throw "earley is not available for OCaml ${ocaml.version}"
|
||||
else
|
||||
|
||||
buildDunePackage rec {
|
||||
version = "2.0.0";
|
||||
|
@ -1,7 +1,11 @@
|
||||
{ lib, fetchurl, buildDunePackage, angstrom, angstrom-lwt-unix,
|
||||
{ lib, fetchurl, ocaml, buildDunePackage, angstrom, angstrom-lwt-unix,
|
||||
batteries, cmdliner, lwt_ppx, ocaml_lwt, ppx_deriving_yojson,
|
||||
ppx_tools_versioned, yojson }:
|
||||
|
||||
if lib.versionAtLeast ocaml.version "4.08"
|
||||
then throw "earlybird is not available for OCaml ${ocaml.version}"
|
||||
else
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "earlybird";
|
||||
version = "0.1.5";
|
||||
|
@ -1,6 +1,7 @@
|
||||
{ stdenv, fetchFromGitHub, fetchpatch, ocaml, findlib, ppx_tools, yojson }:
|
||||
|
||||
if stdenv.lib.versionOlder ocaml.version "4.03"
|
||||
|| stdenv.lib.versionAtLeast ocaml.version "4.08"
|
||||
then throw "ocf not supported for ocaml ${ocaml.version}"
|
||||
else
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -2,19 +2,19 @@
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "ppx_tools_versioned";
|
||||
version = "5.2.3";
|
||||
version = "5.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ocaml-ppx";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1hcmpnw26zf70a71r3d2c2c0mn8q084gdn1r36ynng6fv9hq6j0y";
|
||||
sha256 = "0c735w9mq49dmvkdw9ahfwh0icsk2sbhnfwmdhpibj86phfm17yj";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ ocaml-migrate-parsetree ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = https://github.com/let-def/ppx_tools_versioned;
|
||||
homepage = "https://github.com/let-def/ppx_tools_versioned";
|
||||
description = "Tools for authors of syntactic tools (such as ppx rewriters)";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.volth ];
|
||||
|
@ -1,16 +1,15 @@
|
||||
{ stdenv
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, fetchurl
|
||||
, buildDunePackage
|
||||
, ocaml
|
||||
, dune
|
||||
, findlib
|
||||
, gen
|
||||
, ppx_tools_versioned
|
||||
, ocaml-migrate-parsetree
|
||||
, uchar
|
||||
}:
|
||||
|
||||
if stdenv.lib.versionOlder ocaml.version "4.02.3"
|
||||
if lib.versionOlder ocaml.version "4.02.3"
|
||||
then throw "sedlex is not available for OCaml ${ocaml.version}"
|
||||
else
|
||||
|
||||
@ -28,8 +27,8 @@ let
|
||||
sha256 = "0gsb1jpj3mnqbjgbavi4l95gl6g4agq58j82km22fdfg63j3w3fk";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "ocaml${ocaml.version}-sedlex-${version}";
|
||||
buildDunePackage rec {
|
||||
pname = "sedlex";
|
||||
version = "2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
@ -39,7 +38,7 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "05f6qa8x3vhpdz1fcnpqk37fpnyyq13icqsk2gww5idjnh6kng26";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml findlib dune ppx_tools_versioned ocaml-migrate-parsetree ];
|
||||
buildInputs = [ ppx_tools_versioned ocaml-migrate-parsetree ];
|
||||
|
||||
propagatedBuildInputs = [ gen uchar ];
|
||||
|
||||
@ -49,21 +48,14 @@ stdenv.mkDerivation rec {
|
||||
ln -s ${PropList} src/generator/data/PropList.txt
|
||||
'';
|
||||
|
||||
buildFlags = [ "build" ];
|
||||
|
||||
installPhase = ''
|
||||
make INSTALL_ARGS="--prefix=$out --libdir=$OCAMLFIND_DESTDIR" install
|
||||
'';
|
||||
|
||||
createFindlibDestdir = true;
|
||||
doCheck = true;
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
meta = {
|
||||
homepage = https://github.com/ocaml-community/sedlex;
|
||||
description = "An OCaml lexer generator for Unicode";
|
||||
license = stdenv.lib.licenses.mit;
|
||||
inherit (ocaml.meta) platforms;
|
||||
maintainers = [ stdenv.lib.maintainers.marsam ];
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.marsam ];
|
||||
};
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild }:
|
||||
|
||||
if !stdenv.lib.versionAtLeast ocaml.version "4.02"
|
||||
|| stdenv.lib.versionAtLeast ocaml.version "4.08"
|
||||
then throw "wasm is not available for OCaml ${ocaml.version}"
|
||||
else
|
||||
|
||||
|
52
pkgs/development/python-modules/bravado-core/default.nix
Normal file
52
pkgs/development/python-modules/bravado-core/default.nix
Normal file
@ -0,0 +1,52 @@
|
||||
{ lib, buildPythonPackage, fetchFromGitHub, python-dateutil, jsonref, jsonschema,
|
||||
pyyaml, simplejson, six, pytz, msgpack, swagger-spec-validator, rfc3987,
|
||||
strict-rfc3339, webcolors, mypy-extensions, jsonpointer, idna, pytest, mock,
|
||||
pytest-benchmark, isPy27, enum34 }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "bravado-core";
|
||||
version = "5.16.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Yelp";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0r9gk5vkjbc407fjydms3ik3hnzajq54znyz58d8rm6pvqcvjjpl";
|
||||
};
|
||||
|
||||
checkInputs = [
|
||||
mypy-extensions
|
||||
pytest
|
||||
mock
|
||||
pytest-benchmark
|
||||
];
|
||||
|
||||
checkPhase = ''pytest --benchmark-skip'';
|
||||
|
||||
propagatedBuildInputs = [
|
||||
python-dateutil
|
||||
jsonref
|
||||
jsonschema
|
||||
pyyaml
|
||||
simplejson
|
||||
six
|
||||
pytz
|
||||
msgpack
|
||||
swagger-spec-validator
|
||||
|
||||
# the following 3 packages are included when jsonschema (3.2) is installed
|
||||
# as jsonschema[format], which reflects what happens in setup.py
|
||||
rfc3987
|
||||
strict-rfc3339
|
||||
webcolors
|
||||
jsonpointer
|
||||
idna
|
||||
] ++ lib.optionals isPy27 [ enum34 ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Library for adding Swagger support to clients and servers";
|
||||
homepage = "https://github.com/Yelp/bravado-core";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ vanschelven ];
|
||||
};
|
||||
}
|
23
pkgs/development/python-modules/convertdate/default.nix
Normal file
23
pkgs/development/python-modules/convertdate/default.nix
Normal file
@ -0,0 +1,23 @@
|
||||
{ stdenv, buildPythonPackage, fetchFromGitHub, pymeeus, pytz }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "convertdate";
|
||||
version = "2.2.0";
|
||||
|
||||
# Tests are not available in the PyPI tarball so use GitHub instead.
|
||||
src = fetchFromGitHub {
|
||||
owner = "fitnr";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "04j8k7a9qndmawy3m345py74y18hw7lb6gc0qp0mr8d68x99xjq0";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ pymeeus pytz ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://github.com/fitnr/convertdate";
|
||||
description = "Utils for converting between date formats and calculating holidays";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ jluttine ];
|
||||
};
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, fetchurl
|
||||
, uvicorn
|
||||
, starlette
|
||||
, pydantic
|
||||
@ -10,11 +11,12 @@
|
||||
, pyjwt
|
||||
, passlib
|
||||
, aiosqlite
|
||||
, peewee
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "fastapi";
|
||||
version = "0.45.0";
|
||||
version = "0.49.0";
|
||||
format = "flit";
|
||||
disabled = !isPy3k;
|
||||
|
||||
@ -22,7 +24,7 @@ buildPythonPackage rec {
|
||||
owner = "tiangolo";
|
||||
repo = "fastapi";
|
||||
rev = version;
|
||||
sha256 = "1qwh382ny6qa3zi64micdq4j7dc64zv4rfd8g91j0digd4rhs6i1";
|
||||
sha256 = "1dw5f2xvn0fqqsy29ypba8v3444cy7dvc7gkpmnhshky0rmfni3n";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
@ -37,16 +39,9 @@ buildPythonPackage rec {
|
||||
pyjwt
|
||||
passlib
|
||||
aiosqlite
|
||||
peewee
|
||||
];
|
||||
|
||||
# starlette pinning kept in place due to 0.12.9 being a hard
|
||||
# dependency luckily fastapi is currently the only dependent on
|
||||
# starlette. Please remove pinning when possible
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace "pydantic >=0.32.2,<=0.32.2" "pydantic"
|
||||
'';
|
||||
|
||||
checkPhase = ''
|
||||
pytest --ignore=tests/test_default_response_class.py
|
||||
'';
|
||||
|
@ -6,20 +6,23 @@
|
||||
, astropy
|
||||
, scipy
|
||||
, pandas
|
||||
, codecov
|
||||
, pytest
|
||||
, pytestcov
|
||||
, pytestrunner
|
||||
, coveralls
|
||||
, twine
|
||||
, check-manifest
|
||||
, lib
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "hickle";
|
||||
version = "3.4.5";
|
||||
version = "3.4.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "1d1qj3yl7635lgkqacz9r8fyhv71396l748ww4wy05ibpignjm2x";
|
||||
sha256 = "026r6yg3amsi8k8plzsbw5rnifym6sc17y011daqyvcpb7mfs94b";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@ -28,7 +31,9 @@ buildPythonPackage rec {
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [ h5py numpy dill ];
|
||||
checkInputs = [ pytest pytestcov pytestrunner coveralls scipy pandas astropy ];
|
||||
checkInputs = [
|
||||
pytest pytestcov pytestrunner coveralls scipy pandas astropy twine check-manifest codecov
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Serialize Python data to HDF5";
|
||||
|
@ -1,18 +1,18 @@
|
||||
{ stdenv, buildPythonPackage, fetchPypi , six, dateutil }:
|
||||
{ stdenv, buildPythonPackage, fetchPypi, six, dateutil, convertdate }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "holidays";
|
||||
version = "0.9.12";
|
||||
version = "0.10.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "3182c4a6fef8d01a829468362ace9c3bba7645873610535fef53454dbb4ea092";
|
||||
sha256 = "1dx39krafb6cdnd7h5vgwmw4y075s6k3d31a6vhwvqhmdig3294h";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ six dateutil ];
|
||||
propagatedBuildInputs = [ six dateutil convertdate ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = https://github.com/dr-prodigy/python-holidays;
|
||||
homepage = "https://github.com/dr-prodigy/python-holidays";
|
||||
description = "Generate and work with holidays in Python";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ jluttine ];
|
||||
|
@ -1,24 +1,37 @@
|
||||
{ stdenv, buildPythonPackage, fetchFromGitHub
|
||||
, enum-compat
|
||||
, xorgserver, pytest, i3, python
|
||||
, xorgserver, pytest, pytest-xvfb, pytest-asyncio, i3, python, xlib, xdpyinfo
|
||||
, makeFontsConf, coreutils
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "i3ipc";
|
||||
version = "1.6.0";
|
||||
version = "2.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "acrisci";
|
||||
repo = "i3ipc-python";
|
||||
rev = "v${version}";
|
||||
sha256 = "0sb525wvwcnikjaqzha94xr97r1gjys30csmaj17swlxgyczxvq5";
|
||||
sha256 = "10zpbiw1gcndn439g1vxcdkxllwp02qcmaal4w7hi2rzgaw1xkdk";
|
||||
};
|
||||
propagatedBuildInputs = [ enum-compat xlib ];
|
||||
|
||||
propagatedBuildInputs = [ enum-compat ];
|
||||
fontsConf = makeFontsConf {
|
||||
fontDirectories = [ ];
|
||||
};
|
||||
FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
|
||||
checkInputs = [ pytest xdpyinfo pytest-asyncio pytest-xvfb xorgserver i3 ];
|
||||
|
||||
checkInputs = [ xorgserver pytest i3 ];
|
||||
postPatch = ''
|
||||
substituteInPlace test/i3.config \
|
||||
--replace /bin/true ${coreutils}/bin/true
|
||||
'';
|
||||
|
||||
checkPhase = ''
|
||||
py.test --ignore=test/aio/test_shutdown_event.py \
|
||||
--ignore=test/test_shutdown_event.py
|
||||
'';
|
||||
|
||||
checkPhase = ''${python.interpreter} run-tests.py'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "An improved Python library to control i3wm and sway";
|
||||
|
@ -8,12 +8,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "jupyterlab";
|
||||
version = "1.2.6";
|
||||
version = "2.0.0";
|
||||
disabled = pythonOlder "3.5";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0mc3nrj7fc5q2ajr09m261j386jsp8qjljg8anghlh8czc9ln4s2";
|
||||
sha256 = "17p8rpihid0103fyjndk2yvg18n3ypn3hxay92ckcv10vsbiys5b";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ jupyterlab_server notebook ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "klaus";
|
||||
version = "1.5.1";
|
||||
version = "1.5.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jonashaag";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1432m3ki2g4ma10pfv310q1w4da46b0y2jklb8ajbz8a09ms6mfx";
|
||||
sha256 = "12b96jgiv9y7zmkqqj3dh0fbbm3ps8gbqk925qrhh56zqjl66kx2";
|
||||
};
|
||||
|
||||
prePatch = ''
|
||||
|
@ -20,13 +20,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "nio";
|
||||
version = "0.7.1";
|
||||
version = "0.8.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "poljar";
|
||||
repo = "matrix-nio";
|
||||
rev = version;
|
||||
sha256 = "05cggfhsfa0irvzc7x3fndv6n0zszxxhmlv89r5rkrl5wvrhbb2h";
|
||||
sha256 = "151c59a913y6kx99g7g3mhpgbgavwic1mh21nfrr9x0rm98ilay9";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -15,11 +15,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyicloud";
|
||||
version = "0.9.2";
|
||||
version = "0.9.4";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "1jjkzf7vwms6pymnmdr893830vrymxnq455xnqp21wqhjjiy2amd";
|
||||
sha256 = "0r171wnq2g5bw7gd59vh6flm0104ix1a6s2vhdrf8s74hipw57si";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -1,45 +0,0 @@
|
||||
{ stdenv
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, nose
|
||||
, pillow
|
||||
, pkgs
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyinsane2";
|
||||
version = "2.0.13";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0d519531d552e4512776225eb400a6a4a9bfc83a08918ec7fea19cb2fa7ec4ee";
|
||||
};
|
||||
|
||||
# This is needed by setup.py regardless of whether tests are enabled.
|
||||
buildInputs = [ nose ];
|
||||
propagatedBuildInputs = [ pillow ];
|
||||
|
||||
postPatch = ''
|
||||
# pyinsane2 forks itself, so we need to re-inject the PYTHONPATH.
|
||||
sed -i -e '/os.putenv.*PYINSANE_DAEMON/ {
|
||||
a \ os.putenv("PYTHONPATH", ":".join(sys.path))
|
||||
}' pyinsane2/sane/abstract_proc.py
|
||||
|
||||
sed -i -e 's,"libsane.so.1","${pkgs.sane-backends}/lib/libsane.so",' \
|
||||
pyinsane2/sane/rawapi.py
|
||||
'';
|
||||
|
||||
# Tests require a scanner to be physically connected, so let's just do a
|
||||
# quick check whether initialization works.
|
||||
checkPhase = ''
|
||||
python -c 'import pyinsane2; pyinsane2.init()'
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://github.com/jflesch/pyinsane";
|
||||
description = "Access and use image scanners";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
||||
}
|
24
pkgs/development/python-modules/pymeeus/default.nix
Normal file
24
pkgs/development/python-modules/pymeeus/default.nix
Normal file
@ -0,0 +1,24 @@
|
||||
{ stdenv, buildPythonPackage, fetchPypi, pytest }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "PyMeeus";
|
||||
version = "0.3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0qjnk9sc65i4by2x4zm6w941a4i31fmhgwbkpbqkk87rwq4h4hsn";
|
||||
};
|
||||
|
||||
checkInputs = [ pytest ];
|
||||
|
||||
checkPhase = ''
|
||||
pytest .
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://github.com/architest/pymeeus";
|
||||
description = "Library of astronomical algorithms";
|
||||
license = licenses.lgpl3;
|
||||
maintainers = with maintainers; [ jluttine ];
|
||||
};
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
{ lib, fetchFromGitLab, buildPythonPackage, pillow, six
|
||||
, tesseract, cuneiform, isPy3k, substituteAll, pytest, tox
|
||||
}:
|
||||
{ lib, fetchFromGitLab, buildPythonPackage, pillow, setuptools_scm,
|
||||
setuptools-scm-git-archive , tesseract, cuneiform, isPy3k, substituteAll,
|
||||
pytest, tox }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pyocr";
|
||||
version = "0.5.3";
|
||||
version = "0.7.2";
|
||||
disabled = !isPy3k;
|
||||
|
||||
# Don't fetch from PYPI because it doesn't contain tests.
|
||||
@ -14,7 +14,7 @@ buildPythonPackage rec {
|
||||
owner = "OpenPaperwork";
|
||||
repo = "pyocr";
|
||||
rev = version;
|
||||
sha256 = "1nihf0qmbpg3yj3yp11jp6hp5z5dqf39nz6j9lqbvgi1nqbs7x15";
|
||||
sha256 = "09ab86bmizpv94w3mdvdqkjyyvk1vafw3jqhkiw5xx7p180xn3il";
|
||||
};
|
||||
|
||||
patches = [ (substituteAll {
|
||||
@ -23,38 +23,8 @@ buildPythonPackage rec {
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
echo 'version = "${version}"' > src/pyocr/_version.py
|
||||
|
||||
# Disable specific tests that are probably failing because of this issue:
|
||||
# https://github.com/jflesch/pyocr/issues/52
|
||||
for test in $disabledTests; do
|
||||
file="''${test%%:*}"
|
||||
fun="''${test#*:}"
|
||||
echo "import pytest" >> "tests/tests_$file.py"
|
||||
echo "$fun = pytest.mark.skip($fun)" >> "tests/tests_$file.py"
|
||||
done
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
"cuneiform:TestTxt.test_basic"
|
||||
"cuneiform:TestTxt.test_european"
|
||||
"cuneiform:TestTxt.test_french"
|
||||
"cuneiform:TestWordBox.test_basic"
|
||||
"cuneiform:TestWordBox.test_european"
|
||||
"cuneiform:TestWordBox.test_french"
|
||||
"libtesseract:TestBasicDoc.test_basic"
|
||||
"libtesseract:TestDigitLineBox.test_digits"
|
||||
"libtesseract:TestLineBox.test_japanese"
|
||||
"libtesseract:TestTxt.test_japanese"
|
||||
"libtesseract:TestWordBox.test_japanese"
|
||||
"libtesseract:TestTxt.test_multi"
|
||||
"tesseract:TestTxt.test_multi"
|
||||
"tesseract:TestDigitLineBox.test_digits"
|
||||
"tesseract:TestTxt.test_japanese"
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [ pillow six ];
|
||||
buildInputs = [ setuptools_scm setuptools-scm-git-archive ];
|
||||
propagatedBuildInputs = [ pillow ];
|
||||
checkInputs = [ pytest tox ];
|
||||
checkPhase = "pytest";
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
Index: current/src/pyocr/cuneiform.py
|
||||
===================================================================
|
||||
--- current.orig/src/pyocr/cuneiform.py
|
||||
+++ current/src/pyocr/cuneiform.py
|
||||
@@ -27,13 +27,9 @@ from . import error
|
||||
from . import util
|
||||
diff --git a/src/pyocr/cuneiform.py b/src/pyocr/cuneiform.py
|
||||
index 2e5b717..35647e2 100644
|
||||
--- a/src/pyocr/cuneiform.py
|
||||
+++ b/src/pyocr/cuneiform.py
|
||||
@@ -25,13 +25,9 @@ from . import builders
|
||||
from .error import CuneiformError
|
||||
|
||||
|
||||
-# CHANGE THIS IF CUNEIFORM IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
|
||||
@ -18,25 +18,34 @@ Index: current/src/pyocr/cuneiform.py
|
||||
|
||||
LANGUAGES_LINE_PREFIX = "Supported languages: "
|
||||
LANGUAGES_SPLIT_RE = re.compile("[^a-z]")
|
||||
Index: current/src/pyocr/libtesseract/tesseract_raw.py
|
||||
===================================================================
|
||||
--- current.orig/src/pyocr/libtesseract/tesseract_raw.py
|
||||
+++ current/src/pyocr/libtesseract/tesseract_raw.py
|
||||
@@ -1,52 +1,13 @@
|
||||
import ctypes
|
||||
diff --git a/src/pyocr/libtesseract/tesseract_raw.py b/src/pyocr/libtesseract/tesseract_raw.py
|
||||
index a068e73..9ebea5c 100644
|
||||
--- a/src/pyocr/libtesseract/tesseract_raw.py
|
||||
+++ b/src/pyocr/libtesseract/tesseract_raw.py
|
||||
@@ -2,7 +2,6 @@ import ctypes
|
||||
import locale
|
||||
import logging
|
||||
import os
|
||||
-import sys
|
||||
|
||||
from ..error import TesseractError
|
||||
|
||||
|
||||
@@ -10,48 +9,16 @@ from ..error import TesseractError
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
-TESSDATA_PREFIX = os.getenv('TESSDATA_PREFIX', None)
|
||||
TESSDATA_PREFIX = os.getenv('TESSDATA_PREFIX', None)
|
||||
-libnames = []
|
||||
+if TESSDATA_PREFIX is None:
|
||||
+ TESSDATA_PREFIX = '@tesseract@/share/tessdata'
|
||||
+ os.environ['TESSDATA_PREFIX'] = TESSDATA_PREFIX
|
||||
+
|
||||
+
|
||||
# 70 is the minimum credible dpi for tesseract and force it to compute an
|
||||
# estimate of the image dpi
|
||||
DPI_DEFAULT = 70
|
||||
|
||||
-
|
||||
-if getattr(sys, 'frozen', False):
|
||||
-if getattr(sys, 'frozen', False): # pragma: no cover
|
||||
- # Pyinstaller integration
|
||||
- libnames += [os.path.join(sys._MEIPASS, "libtesseract-4.dll")]
|
||||
- libnames += [os.path.join(sys._MEIPASS, "libtesseract-3.dll")]
|
||||
@ -51,7 +60,7 @@ Index: current/src/pyocr/libtesseract/tesseract_raw.py
|
||||
- TESSDATA_PREFIX = tessdata
|
||||
-
|
||||
-
|
||||
-if sys.platform[:3] == "win":
|
||||
-if sys.platform[:3] == "win": # pragma: no cover
|
||||
- libnames += [
|
||||
- # Jflesch> Don't they have the equivalent of LD_LIBRARY_PATH on
|
||||
- # Windows ?
|
||||
@ -76,15 +85,16 @@ Index: current/src/pyocr/libtesseract/tesseract_raw.py
|
||||
|
||||
g_libtesseract = None
|
||||
|
||||
@@ -346,12 +307,11 @@ def init(lang=None):
|
||||
@@ -364,12 +331,12 @@ def init(lang=None):
|
||||
try:
|
||||
if lang:
|
||||
lang = lang.encode("utf-8")
|
||||
- prefix = None
|
||||
- if TESSDATA_PREFIX:
|
||||
- if TESSDATA_PREFIX: # pragma: no cover
|
||||
- prefix = TESSDATA_PREFIX.encode("utf-8")
|
||||
+ prefix = os.getenv('TESSDATA_PREFIX', '@tesseract@/share/tessdata')
|
||||
+ os.environ['TESSDATA_PREFIX'] = prefix
|
||||
+
|
||||
+ prefix = TESSDATA_PREFIX
|
||||
+
|
||||
g_libtesseract.TessBaseAPIInit3(
|
||||
ctypes.c_void_p(handle),
|
||||
- ctypes.c_char_p(prefix),
|
||||
@ -92,11 +102,11 @@ Index: current/src/pyocr/libtesseract/tesseract_raw.py
|
||||
ctypes.c_char_p(lang)
|
||||
)
|
||||
g_libtesseract.TessBaseAPISetVariable(
|
||||
Index: current/src/pyocr/tesseract.py
|
||||
===================================================================
|
||||
--- current.orig/src/pyocr/tesseract.py
|
||||
+++ current/src/pyocr/tesseract.py
|
||||
@@ -31,8 +31,7 @@ from .builders import DigitBuilder # ba
|
||||
diff --git a/src/pyocr/tesseract.py b/src/pyocr/tesseract.py
|
||||
index 7c30852..44e8446 100644
|
||||
--- a/src/pyocr/tesseract.py
|
||||
+++ b/src/pyocr/tesseract.py
|
||||
@@ -28,8 +28,7 @@ from .builders import DigitBuilder # backward compatibility
|
||||
from .error import TesseractError # backward compatibility
|
||||
from .util import digits_only
|
||||
|
||||
@ -106,3 +116,233 @@ Index: current/src/pyocr/tesseract.py
|
||||
|
||||
TESSDATA_EXTENSION = ".traineddata"
|
||||
|
||||
diff --git a/tests/tests_cuneiform.py b/tests/tests_cuneiform.py
|
||||
index 45b7f6a..95f55c6 100644
|
||||
--- a/tests/tests_cuneiform.py
|
||||
+++ b/tests/tests_cuneiform.py
|
||||
@@ -21,7 +21,7 @@ class TestCuneiform(BaseTest):
|
||||
# XXX is it useful?
|
||||
which.return_value = True
|
||||
self.assertTrue(cuneiform.is_available())
|
||||
- which.assert_called_once_with("cuneiform")
|
||||
+ which.assert_called_once_with("@cuneiform@/bin/cuneiform")
|
||||
|
||||
@patch("subprocess.Popen")
|
||||
def test_version(self, popen):
|
||||
@@ -54,7 +54,7 @@ class TestCuneiform(BaseTest):
|
||||
self.assertIn("eng", langs)
|
||||
self.assertIn("fra", langs)
|
||||
popen.assert_called_once_with(
|
||||
- ["cuneiform", "-l"],
|
||||
+ ["@cuneiform@/bin/cuneiform", "-l"],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
||||
)
|
||||
|
||||
@@ -109,7 +109,7 @@ class TestCuneiformTxt(BaseTest):
|
||||
output = cuneiform.image_to_string(self.image)
|
||||
self.assertEqual(output, self._get_file_content("text").strip())
|
||||
popen.assert_called_once_with(
|
||||
- ["cuneiform", "-f", "text", "-o", self.tmp_filename, "-"],
|
||||
+ ["@cuneiform@/bin/cuneiform", "-f", "text", "-o", self.tmp_filename, "-"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
)
|
||||
@@ -125,7 +125,7 @@ class TestCuneiformTxt(BaseTest):
|
||||
builder=self.builder)
|
||||
self.assertEqual(output, self._get_file_content("text").strip())
|
||||
popen.assert_called_once_with(
|
||||
- ["cuneiform", "-l", "fra", "-f", "text", "-o", self.tmp_filename,
|
||||
+ ["@cuneiform@/bin/cuneiform", "-l", "fra", "-f", "text", "-o", self.tmp_filename,
|
||||
"-"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
@@ -142,7 +142,7 @@ class TestCuneiformTxt(BaseTest):
|
||||
builder=self.builder)
|
||||
self.assertEqual(output, self._get_file_content("text").strip())
|
||||
popen.assert_called_once_with(
|
||||
- ["cuneiform", "-f", "text", "-o", self.tmp_filename, "-"],
|
||||
+ ["@cuneiform@/bin/cuneiform", "-f", "text", "-o", self.tmp_filename, "-"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
)
|
||||
@@ -173,7 +173,7 @@ class TestCuneiformTxt(BaseTest):
|
||||
output = cuneiform.image_to_string(image, builder=self.builder)
|
||||
self.assertEqual(output, self._get_file_content("text").strip())
|
||||
popen.assert_called_once_with(
|
||||
- ["cuneiform", "-f", "text", "-o", self.tmp_filename, "-"],
|
||||
+ ["@cuneiform@/bin/cuneiform", "-f", "text", "-o", self.tmp_filename, "-"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
)
|
||||
@@ -227,7 +227,7 @@ class TestCuneiformWordBox(BaseTest):
|
||||
output = cuneiform.image_to_string(self.image,
|
||||
builder=self.builder)
|
||||
popen.assert_called_once_with(
|
||||
- ["cuneiform", "-f", "hocr", "-o", self.tmp_filename, "-"],
|
||||
+ ["@cuneiform@/bin/cuneiform", "-f", "hocr", "-o", self.tmp_filename, "-"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
)
|
||||
@@ -280,7 +280,7 @@ class TestCuneiformLineBox(BaseTest):
|
||||
output = cuneiform.image_to_string(self.image,
|
||||
builder=self.builder)
|
||||
popen.assert_called_once_with(
|
||||
- ["cuneiform", "-f", "hocr", "-o", self.tmp_filename, "-"],
|
||||
+ ["@cuneiform@/bin/cuneiform", "-f", "hocr", "-o", self.tmp_filename, "-"],
|
||||
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT
|
||||
)
|
||||
diff --git a/tests/tests_libtesseract.py b/tests/tests_libtesseract.py
|
||||
index ad7fdc9..57e7a60 100644
|
||||
--- a/tests/tests_libtesseract.py
|
||||
+++ b/tests/tests_libtesseract.py
|
||||
@@ -165,7 +165,8 @@ class TestLibTesseractRaw(BaseTest):
|
||||
args = libtess.TessBaseAPIInit3.call_args[0]
|
||||
self.assertEqual(len(args), 3)
|
||||
self.assertEqual(args[0].value, self.handle)
|
||||
- self.assertEqual(args[1].value, None)
|
||||
+ # we hardcode tesseract data, so we don't get None
|
||||
+ #self.assertEqual(args[1].value, None)
|
||||
self.assertEqual(args[2].value, lang.encode() if lang else None)
|
||||
|
||||
self.assertEqual(
|
||||
@@ -201,7 +202,8 @@ class TestLibTesseractRaw(BaseTest):
|
||||
args = libtess.TessBaseAPIInit3.call_args[0]
|
||||
self.assertEqual(len(args), 3)
|
||||
self.assertEqual(args[0].value, self.handle)
|
||||
- self.assertEqual(args[1].value, None)
|
||||
+ # we hardcode tesseract data, so we don't get None
|
||||
+ #self.assertEqual(args[1].value, None)
|
||||
self.assertEqual(args[2].value, lang.encode() if lang else None)
|
||||
|
||||
self.assertEqual(
|
||||
diff --git a/tests/tests_tesseract.py b/tests/tests_tesseract.py
|
||||
index 1a55567..a24d96f 100644
|
||||
--- a/tests/tests_tesseract.py
|
||||
+++ b/tests/tests_tesseract.py
|
||||
@@ -36,7 +36,7 @@ class TestTesseract(BaseTest):
|
||||
def test_available(self, which):
|
||||
which.return_value = True
|
||||
self.assertTrue(tesseract.is_available())
|
||||
- which.assert_called_once_with("tesseract")
|
||||
+ which.assert_called_once_with("@tesseract@/bin/tesseract")
|
||||
|
||||
@patch("subprocess.Popen")
|
||||
def test_version_error(self, popen):
|
||||
@@ -156,7 +156,7 @@ class TestTesseract(BaseTest):
|
||||
for lang in ("eng", "fra", "jpn", "osd"):
|
||||
self.assertIn(lang, langs)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "--list-langs"],
|
||||
+ ["@tesseract@/bin/tesseract", "--list-langs"],
|
||||
startupinfo=None, creationflags=0,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
||||
)
|
||||
@@ -171,7 +171,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(te.exception.status, 1)
|
||||
self.assertEqual("unable to get languages", te.exception.message)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "--list-langs"],
|
||||
+ ["@tesseract@/bin/tesseract", "--list-langs"],
|
||||
startupinfo=None, creationflags=0,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT
|
||||
)
|
||||
@@ -248,7 +248,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(status, 0)
|
||||
self.assertEqual(error, message)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "output"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "output"],
|
||||
cwd=tmpdir,
|
||||
startupinfo=None,
|
||||
creationflags=0,
|
||||
@@ -271,7 +271,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(status, 0)
|
||||
self.assertEqual(error, message)
|
||||
popen.assert_called_with(
|
||||
- ["tesseract", "input2.bmp", "output2", "-l", "fra", "--psm", "3"],
|
||||
+ ["@tesseract@/bin/tesseract", "input2.bmp", "output2", "-l", "fra", "--psm", "3"],
|
||||
cwd=tmpdir,
|
||||
startupinfo=None,
|
||||
creationflags=0,
|
||||
@@ -302,7 +302,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(result["angle"], 90)
|
||||
self.assertEqual(result["confidence"], 9.30)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
@@ -338,7 +338,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(result["angle"], 90)
|
||||
self.assertEqual(result["confidence"], 9.30)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
@@ -371,7 +371,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(result["angle"], 90)
|
||||
self.assertEqual(result["confidence"], 9.30)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout",
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout",
|
||||
"--psm", "0", "-l", "osd"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
@@ -399,7 +399,7 @@ class TestTesseract(BaseTest):
|
||||
with self.assertRaises(tesseract.TesseractError) as te:
|
||||
tesseract.detect_orientation(self.image)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
@@ -433,7 +433,7 @@ class TestTesseract(BaseTest):
|
||||
with self.assertRaises(tesseract.TesseractError) as te:
|
||||
tesseract.detect_orientation(self.image)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "--psm", "0"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
@@ -467,7 +467,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(result["angle"], 90)
|
||||
self.assertEqual(result["confidence"], 9.30)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "-psm", "0"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "-psm", "0"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
@@ -500,7 +500,7 @@ class TestTesseract(BaseTest):
|
||||
self.assertEqual(result["angle"], 90)
|
||||
self.assertEqual(result["confidence"], 9.30)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "-psm", "0", "-l", "fra"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "-psm", "0", "-l", "fra"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
@@ -527,7 +527,7 @@ class TestTesseract(BaseTest):
|
||||
with self.assertRaises(tesseract.TesseractError) as te:
|
||||
tesseract.detect_orientation(self.image)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "-psm", "0"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "-psm", "0"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
@@ -561,7 +561,7 @@ class TestTesseract(BaseTest):
|
||||
with self.assertRaises(tesseract.TesseractError) as te:
|
||||
tesseract.detect_orientation(self.image)
|
||||
popen.assert_called_once_with(
|
||||
- ["tesseract", "input.bmp", "stdout", "-psm", "0"],
|
||||
+ ["@tesseract@/bin/tesseract", "input.bmp", "stdout", "-psm", "0"],
|
||||
stdin=subprocess.PIPE,
|
||||
shell=False,
|
||||
startupinfo=None,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user