Merge master into haskell-updates
This commit is contained in:
commit
45ac516cdf
|
@ -48,6 +48,10 @@
|
|||
system.nixos.versionSuffix =
|
||||
".${final.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")}.${self.shortRev or "dirty"}";
|
||||
system.nixos.revision = final.mkIf (self ? rev) self.rev;
|
||||
|
||||
# NOTE: This assumes that `nixpkgs.config` is _not_ used when
|
||||
# nixpkgs.pkgs is set OR _module.args.pkgs is set.
|
||||
nixpkgs.config.path = self.outPath;
|
||||
}
|
||||
];
|
||||
});
|
||||
|
@ -62,7 +66,7 @@
|
|||
}).nixos.manual.x86_64-linux;
|
||||
};
|
||||
|
||||
legacyPackages = forAllSystems (system: import ./. { inherit system; });
|
||||
legacyPackages = forAllSystems (system: import ./. { inherit system; config.path = self.outPath; });
|
||||
|
||||
nixosModules = {
|
||||
notDetected = import ./nixos/modules/installer/scan/not-detected.nix;
|
||||
|
|
|
@ -6800,6 +6800,17 @@
|
|||
fingerprint = "CC50 F82C 985D 2679 0703 AF15 19B0 82B3 DEFE 5451";
|
||||
}];
|
||||
};
|
||||
leixb = {
|
||||
email = "abone9999+nixpkgs@gmail.com";
|
||||
matrix = "@leix_b:matrix.org";
|
||||
github = "LeixB";
|
||||
githubId = 17183803;
|
||||
name = "Aleix Boné";
|
||||
keys = [{
|
||||
longkeyid = "rsa4096/0xFC035BB2BB28E15D";
|
||||
fingerprint = "63D3 F436 EDE8 7E1F 1292 24AF FC03 5BB2 BB28 E15D";
|
||||
}];
|
||||
};
|
||||
lejonet = {
|
||||
email = "daniel@kuehn.se";
|
||||
github = "lejonet";
|
||||
|
|
|
@ -534,6 +534,19 @@
|
|||
will now correctly remove those domains during rebuild/renew.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
MariaDB is now offered in several versions, not just the
|
||||
newest one. So if you have a need for running MariaDB 10.4 for
|
||||
example, you can now just set
|
||||
<literal>services.mysql.package = pkgs.mariadb_104;</literal>.
|
||||
In general, it is recommended to run the newest version, to
|
||||
get the newest features, while sticking with an LTS version
|
||||
will most likely provide a more stable experience. Sometimes
|
||||
software is also incompatible with the newest version of
|
||||
MariaDB.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The option
|
||||
|
|
|
@ -184,6 +184,11 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
- Removing domains from `security.acme.certs._name_.extraDomainNames`
|
||||
will now correctly remove those domains during rebuild/renew.
|
||||
|
||||
- MariaDB is now offered in several versions, not just the newest one.
|
||||
So if you have a need for running MariaDB 10.4 for example, you can now just set `services.mysql.package = pkgs.mariadb_104;`.
|
||||
In general, it is recommended to run the newest version, to get the newest features, while sticking with an LTS version will most likely provide a more stable experience.
|
||||
Sometimes software is also incompatible with the newest version of MariaDB.
|
||||
|
||||
- The option
|
||||
[programs.ssh.enableAskPassword](#opt-programs.ssh.enableAskPassword) was
|
||||
added, decoupling the setting of `SSH_ASKPASS` from
|
||||
|
|
|
@ -61,17 +61,85 @@ let
|
|||
in scrubbedEval.options;
|
||||
baseOptionsJSON =
|
||||
let
|
||||
filter =
|
||||
filterIntoStore =
|
||||
builtins.filterSource
|
||||
(n: t:
|
||||
(t == "directory" -> baseNameOf n != "tests")
|
||||
&& (t == "file" -> hasSuffix ".nix" n)
|
||||
);
|
||||
|
||||
# Figure out if Nix runs in pure evaluation mode. May return true in
|
||||
# impure mode, but this is highly unlikely.
|
||||
# We need to know because of https://github.com/NixOS/nix/issues/1888
|
||||
# and https://github.com/NixOS/nix/issues/5868
|
||||
isPureEval = builtins.getEnv "PATH" == "" && builtins.getEnv "_" == "";
|
||||
|
||||
# Return a nixpkgs subpath with minimal copying.
|
||||
#
|
||||
# The sources for the base options json derivation can come in one of
|
||||
# two forms:
|
||||
# - single source: a store path with all of nixpkgs, postfix with
|
||||
# subpaths to access various directories. This has the benefit of
|
||||
# not creating copies of these subtrees in the Nix store, but
|
||||
# can cause unnecessary rebuilds if you update the Nixpkgs `pkgs`
|
||||
# tree often.
|
||||
# - split sources: multiple store paths with subdirectories of
|
||||
# nixpkgs that exclude the bulk of the pkgs directory.
|
||||
# This requires more copying and hashing during evaluation but
|
||||
# requires fewer files to be copied. This method produces fewer
|
||||
# unnecessary rebuilds of the base options json.
|
||||
#
|
||||
# Flake
|
||||
#
|
||||
# Flakes always put a copy of the full nixpkgs sources in the store,
|
||||
# so we can use the "single source" method. This method is ideal
|
||||
# for using nixpkgs as a dependency, as the base options json will be
|
||||
# substitutable from cache.nixos.org.
|
||||
#
|
||||
# This requires that the `self.outPath` is wired into `pkgs` correctly,
|
||||
# which is done for you if `pkgs` comes from the `lib.nixosSystem` or
|
||||
# `legacyPackages` flake attributes.
|
||||
#
|
||||
# Other Nixpkgs invocation
|
||||
#
|
||||
# If you do not use the known-correct flake attributes, but rather
|
||||
# invoke Nixpkgs yourself, set `config.path` to the correct path value,
|
||||
# e.g. `import nixpkgs { config.path = nixpkgs; }`.
|
||||
#
|
||||
# Choosing between single or split source paths
|
||||
#
|
||||
# We make assumptions based on the type and contents of `pkgs.path`.
|
||||
# By passing a different `config.path` to Nixpkgs, you can influence
|
||||
# how your documentation cache is evaluated and rebuilt.
|
||||
#
|
||||
# Single source
|
||||
# - If pkgs.path is a string containing a store path, the code has no
|
||||
# choice but to create this store path, if it hasn't already been.
|
||||
# We assume that the "single source" method is most efficient.
|
||||
# - If pkgs.path is a path value containing that is a store path,
|
||||
# we try to convert it to a string with context without copying.
|
||||
# This occurs for example when nixpkgs was fetched and using its
|
||||
# default `config.path`, which is `./.`.
|
||||
# Nix currently does not allow this conversion when evaluating in
|
||||
# pure mode. If the conversion is not possible, we use the
|
||||
# "split source" method.
|
||||
#
|
||||
# Split source
|
||||
# - If pkgs.path is a path value that is not a store path, we assume
|
||||
# that it's unlikely for all of nixpkgs to end up in the store for
|
||||
# other reasons and try to keep both the copying and rebuilds low.
|
||||
pull =
|
||||
if builtins.typeOf pkgs.path == "string" && isStorePath pkgs.path then
|
||||
dir: "${pkgs.path}/${dir}"
|
||||
else if !isPureEval && isStorePath pkgs.path then
|
||||
dir: "${builtins.storePath pkgs.path}/${dir}"
|
||||
else
|
||||
dir: filterIntoStore "${toString pkgs.path}/${dir}";
|
||||
in
|
||||
pkgs.runCommand "lazy-options.json" {
|
||||
libPath = filter "${toString pkgs.path}/lib";
|
||||
pkgsLibPath = filter "${toString pkgs.path}/pkgs/pkgs-lib";
|
||||
nixosPath = filter "${toString pkgs.path}/nixos";
|
||||
libPath = pull "lib";
|
||||
pkgsLibPath = pull "pkgs/pkgs-lib";
|
||||
nixosPath = pull "nixos";
|
||||
modules = map (p: ''"${removePrefix "${modulesPath}/" (toString p)}"'') docModules.lazy;
|
||||
} ''
|
||||
export NIX_STORE_DIR=$TMPDIR/store
|
||||
|
|
|
@ -59,6 +59,8 @@ let
|
|||
inherit (cfg) config overlays localSystem crossSystem;
|
||||
};
|
||||
|
||||
# NOTE: flake.nix assumes that nixpkgs.config is only used with ../../..
|
||||
# as nixpkgs.config.path should be equivalent to ../../..
|
||||
finalPkgs = if opt.pkgs.isDefined then cfg.pkgs.appendOverlays cfg.overlays else defaultPkgs;
|
||||
|
||||
in
|
||||
|
|
|
@ -87,8 +87,12 @@ in {
|
|||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 6379;
|
||||
description = "The port for Redis to listen to.";
|
||||
default = if name == "" then 6379 else 0;
|
||||
defaultText = literalExpression ''if name == "" then 6379 else 0'';
|
||||
description = ''
|
||||
The TCP port to accept connections.
|
||||
If port 0 is specified Redis will not listen on a TCP socket.
|
||||
'';
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
|
@ -102,7 +106,7 @@ in {
|
|||
bind = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = if name == "" then "127.0.0.1" else null;
|
||||
defaultText = "127.0.0.1 or null if name != \"\"";
|
||||
defaultText = literalExpression ''if name == "" then "127.0.0.1" else null'';
|
||||
description = ''
|
||||
The IP interface to bind to.
|
||||
<literal>null</literal> means "all interfaces".
|
||||
|
@ -253,7 +257,7 @@ in {
|
|||
};
|
||||
config.settings = mkMerge [
|
||||
{
|
||||
port = if config.bind == null then 0 else config.port;
|
||||
port = config.port;
|
||||
daemonize = false;
|
||||
supervised = "systemd";
|
||||
loglevel = config.logLevel;
|
||||
|
|
|
@ -38,7 +38,7 @@ let
|
|||
ssl_cert = <${cfg.sslServerCert}
|
||||
ssl_key = <${cfg.sslServerKey}
|
||||
${optionalString (cfg.sslCACert != null) ("ssl_ca = <" + cfg.sslCACert)}
|
||||
ssl_dh = <${config.security.dhparams.params.dovecot2.path}
|
||||
${optionalString cfg.enableDHE ''ssl_dh = <${config.security.dhparams.params.dovecot2.path}''}
|
||||
disable_plaintext_auth = yes
|
||||
''
|
||||
)
|
||||
|
@ -169,25 +169,13 @@ in
|
|||
];
|
||||
|
||||
options.services.dovecot2 = {
|
||||
enable = mkEnableOption "Dovecot 2.x POP3/IMAP server";
|
||||
enable = mkEnableOption "the dovecot 2.x POP3/IMAP server";
|
||||
|
||||
enablePop3 = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Start the POP3 listener (when Dovecot is enabled).";
|
||||
};
|
||||
enablePop3 = mkEnableOption "starting the POP3 listener (when Dovecot is enabled).";
|
||||
|
||||
enableImap = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Start the IMAP listener (when Dovecot is enabled).";
|
||||
};
|
||||
enableImap = mkEnableOption "starting the IMAP listener (when Dovecot is enabled)." // { default = true; };
|
||||
|
||||
enableLmtp = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Start the LMTP listener (when Dovecot is enabled).";
|
||||
};
|
||||
enableLmtp = mkEnableOption "starting the LMTP listener (when Dovecot is enabled).";
|
||||
|
||||
protocols = mkOption {
|
||||
type = types.listOf types.str;
|
||||
|
@ -279,13 +267,9 @@ in
|
|||
description = "Default group to store mail for virtual users.";
|
||||
};
|
||||
|
||||
createMailUser = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''Whether to automatically create the user
|
||||
given in <option>services.dovecot.user</option> and the group
|
||||
given in <option>services.dovecot.group</option>.'';
|
||||
};
|
||||
createMailUser = mkEnableOption ''automatically creating the user
|
||||
given in <option>services.dovecot.user</option> and the group
|
||||
given in <option>services.dovecot.group</option>.'' // { default = true; };
|
||||
|
||||
modules = mkOption {
|
||||
type = types.listOf types.package;
|
||||
|
@ -316,11 +300,9 @@ in
|
|||
description = "Path to the server's private key.";
|
||||
};
|
||||
|
||||
enablePAM = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Whether to create a own Dovecot PAM service and configure PAM user logins.";
|
||||
};
|
||||
enablePAM = mkEnableOption "creating a own Dovecot PAM service and configure PAM user logins." // { default = true; };
|
||||
|
||||
enableDHE = mkEnableOption "enable ssl_dh and generation of primes for the key exchange." // { default = true; };
|
||||
|
||||
sieveScripts = mkOption {
|
||||
type = types.attrsOf types.path;
|
||||
|
@ -328,11 +310,7 @@ in
|
|||
description = "Sieve scripts to be executed. Key is a sequence, e.g. 'before2', 'after' etc.";
|
||||
};
|
||||
|
||||
showPAMFailure = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Show the PAM failure message on authentication error (useful for OTPW).";
|
||||
};
|
||||
showPAMFailure = mkEnableOption "showing the PAM failure message on authentication error (useful for OTPW).";
|
||||
|
||||
mailboxes = mkOption {
|
||||
type = with types; coercedTo
|
||||
|
@ -348,12 +326,7 @@ in
|
|||
description = "Configure mailboxes and auto create or subscribe them.";
|
||||
};
|
||||
|
||||
enableQuota = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Whether to enable the dovecot quota service.";
|
||||
};
|
||||
enableQuota = mkEnableOption "the dovecot quota service.";
|
||||
|
||||
quotaPort = mkOption {
|
||||
type = types.str;
|
||||
|
@ -376,7 +349,7 @@ in
|
|||
config = mkIf cfg.enable {
|
||||
security.pam.services.dovecot2 = mkIf cfg.enablePAM {};
|
||||
|
||||
security.dhparams = mkIf (cfg.sslServerCert != null) {
|
||||
security.dhparams = mkIf (cfg.sslServerCert != null && cfg.enableDHE) {
|
||||
enable = true;
|
||||
params.dovecot2 = {};
|
||||
};
|
||||
|
|
|
@ -92,7 +92,7 @@ in
|
|||
};
|
||||
};
|
||||
});
|
||||
networks."40-${i.name}" = mkMerge [ (genericNetwork mkDefault) {
|
||||
networks."40-${i.name}" = mkMerge [ (genericNetwork id) {
|
||||
name = mkDefault i.name;
|
||||
DHCP = mkForce (dhcpStr
|
||||
(if i.useDHCP != null then i.useDHCP else false));
|
||||
|
|
|
@ -268,8 +268,7 @@ in
|
|||
mailcatcher = handleTest ./mailcatcher.nix {};
|
||||
mailhog = handleTest ./mailhog.nix {};
|
||||
man = handleTest ./man.nix {};
|
||||
mariadb-galera-mariabackup = handleTest ./mysql/mariadb-galera-mariabackup.nix {};
|
||||
mariadb-galera-rsync = handleTest ./mysql/mariadb-galera-rsync.nix {};
|
||||
mariadb-galera = handleTest ./mysql/mariadb-galera.nix {};
|
||||
matomo = handleTest ./matomo.nix {};
|
||||
matrix-appservice-irc = handleTest ./matrix-appservice-irc.nix {};
|
||||
matrix-conduit = handleTest ./matrix-conduit.nix {};
|
||||
|
|
10
nixos/tests/mysql/common.nix
Normal file
10
nixos/tests/mysql/common.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ lib, pkgs }: {
|
||||
mariadbPackages = lib.filterAttrs (n: _: lib.hasPrefix "mariadb" n) (pkgs.callPackage ../../../pkgs/servers/sql/mariadb {
|
||||
inherit (pkgs.darwin) cctools;
|
||||
inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices;
|
||||
});
|
||||
mysqlPackage = {
|
||||
inherit (pkgs) mysql57 mysql80;
|
||||
};
|
||||
mkTestName = pkg: "mariadb_${builtins.replaceStrings ["."] [""] (lib.versions.majorMinor pkg.version)}";
|
||||
}
|
|
@ -1,233 +0,0 @@
|
|||
import ./../make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
let
|
||||
mysqlenv-common = pkgs.buildEnv { name = "mysql-path-env-common"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ bash gawk gnutar inetutils which ]; };
|
||||
mysqlenv-mariabackup = pkgs.buildEnv { name = "mysql-path-env-mariabackup"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ gzip iproute2 netcat procps pv socat ]; };
|
||||
|
||||
# Common user configuration
|
||||
users = { ... }:
|
||||
{
|
||||
users.users.testuser = {
|
||||
isSystemUser = true;
|
||||
group = "testusers";
|
||||
};
|
||||
users.groups.testusers = { };
|
||||
};
|
||||
|
||||
in {
|
||||
name = "mariadb-galera-mariabackup";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ izorkin ];
|
||||
};
|
||||
|
||||
# The test creates a Galera cluster with 3 nodes and is checking if mariabackup-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
||||
# and checking the table's presence on the other node.
|
||||
|
||||
nodes = {
|
||||
galera_01 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ users ];
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.1.1"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.1.1 galera_01
|
||||
192.168.1.2 galera_02
|
||||
192.168.1.3 galera_03
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
ensureDatabases = [ "testdb" ];
|
||||
ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
initialScript = pkgs.writeText "mariadb-init.sql" ''
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'check_repl'@'localhost' IDENTIFIED BY 'check_pass' WITH GRANT OPTION;
|
||||
FLUSH PRIVILEGES;
|
||||
'';
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "NONE";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://";
|
||||
wsrep_cluster_name = "galera";
|
||||
wsrep_node_address = "192.168.1.1";
|
||||
wsrep_node_name = "galera_01";
|
||||
wsrep_sst_method = "mariabackup";
|
||||
wsrep_sst_auth = "check_repl:check_pass";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_02 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ users ];
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.1.2"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.1.1 galera_01
|
||||
192.168.1.2 galera_02
|
||||
192.168.1.3 galera_03
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "NONE";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_01,galera_02,galera_03";
|
||||
wsrep_cluster_name = "galera";
|
||||
wsrep_node_address = "192.168.1.2";
|
||||
wsrep_node_name = "galera_02";
|
||||
wsrep_sst_method = "mariabackup";
|
||||
wsrep_sst_auth = "check_repl:check_pass";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_03 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ users ];
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.1.3"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.1.1 galera_01
|
||||
192.168.1.2 galera_02
|
||||
192.168.1.3 galera_03
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-mariabackup ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "NONE";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_01,galera_02,galera_03";
|
||||
wsrep_cluster_name = "galera";
|
||||
wsrep_node_address = "192.168.1.3";
|
||||
wsrep_node_name = "galera_03";
|
||||
wsrep_sst_method = "mariabackup";
|
||||
wsrep_sst_auth = "check_repl:check_pass";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
galera_01.start()
|
||||
galera_01.wait_for_unit("mysql")
|
||||
galera_01.wait_for_open_port(3306)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (37);'"
|
||||
)
|
||||
galera_02.start()
|
||||
galera_02.wait_for_unit("mysql")
|
||||
galera_02.wait_for_open_port(3306)
|
||||
galera_03.start()
|
||||
galera_03.wait_for_unit("mysql")
|
||||
galera_03.wait_for_open_port(3306)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||
)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_02.succeed("systemctl stop mysql")
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (38);'"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (39);'"
|
||||
)
|
||||
galera_02.succeed("systemctl start mysql")
|
||||
galera_02.wait_for_open_port(3306)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 39"
|
||||
)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 38"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||
)
|
||||
galera_01.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||
galera_02.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
||||
galera_03.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
||||
'';
|
||||
})
|
|
@ -1,226 +0,0 @@
|
|||
import ./../make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
let
|
||||
mysqlenv-common = pkgs.buildEnv { name = "mysql-path-env-common"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ bash gawk gnutar inetutils which ]; };
|
||||
mysqlenv-rsync = pkgs.buildEnv { name = "mysql-path-env-rsync"; pathsToLink = [ "/bin" ]; paths = with pkgs; [ lsof procps rsync stunnel ]; };
|
||||
|
||||
# Common user configuration
|
||||
users = { ... }:
|
||||
{
|
||||
users.users.testuser = {
|
||||
isSystemUser = true;
|
||||
group = "testusers";
|
||||
};
|
||||
users.groups.testusers = { };
|
||||
};
|
||||
|
||||
in {
|
||||
name = "mariadb-galera-rsync";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ izorkin ];
|
||||
};
|
||||
|
||||
# The test creates a Galera cluster with 3 nodes and is checking if rsync-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
||||
# and checking the table's presence on the other node.
|
||||
|
||||
nodes = {
|
||||
galera_04 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ users ];
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.2.1"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.2.1 galera_04
|
||||
192.168.2.2 galera_05
|
||||
192.168.2.3 galera_06
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
ensureDatabases = [ "testdb" ];
|
||||
ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "NONE";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://";
|
||||
wsrep_cluster_name = "galera-rsync";
|
||||
wsrep_node_address = "192.168.2.1";
|
||||
wsrep_node_name = "galera_04";
|
||||
wsrep_sst_method = "rsync";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_05 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ users ];
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.2.2"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.2.1 galera_04
|
||||
192.168.2.2 galera_05
|
||||
192.168.2.3 galera_06
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "NONE";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_04,galera_05,galera_06";
|
||||
wsrep_cluster_name = "galera-rsync";
|
||||
wsrep_node_address = "192.168.2.2";
|
||||
wsrep_node_name = "galera_05";
|
||||
wsrep_sst_method = "rsync";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
galera_06 =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [ users ];
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ address = "192.168.2.3"; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = ''
|
||||
192.168.2.1 galera_04
|
||||
192.168.2.2 galera_05
|
||||
192.168.2.3 galera_06
|
||||
'';
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = [ mysqlenv-common mysqlenv-rsync ];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "NONE";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${pkgs.mariadb-galera}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://galera_04,galera_05,galera_06";
|
||||
wsrep_cluster_name = "galera-rsync";
|
||||
wsrep_node_address = "192.168.2.3";
|
||||
wsrep_node_name = "galera_06";
|
||||
wsrep_sst_method = "rsync";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
galera_04.start()
|
||||
galera_04.wait_for_unit("mysql")
|
||||
galera_04.wait_for_open_port(3306)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (41);'"
|
||||
)
|
||||
galera_05.start()
|
||||
galera_05.wait_for_unit("mysql")
|
||||
galera_05.wait_for_open_port(3306)
|
||||
galera_06.start()
|
||||
galera_06.wait_for_unit("mysql")
|
||||
galera_06.wait_for_open_port(3306)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||
)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_05.succeed("systemctl stop mysql")
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (42);'"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (43);'"
|
||||
)
|
||||
galera_05.succeed("systemctl start mysql")
|
||||
galera_05.wait_for_open_port(3306)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 43"
|
||||
)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 42"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||
)
|
||||
galera_04.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||
galera_05.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
||||
galera_06.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
||||
'';
|
||||
})
|
250
nixos/tests/mysql/mariadb-galera.nix
Normal file
250
nixos/tests/mysql/mariadb-galera.nix
Normal file
|
@ -0,0 +1,250 @@
|
|||
{
|
||||
system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
pkgs ? import ../../.. { inherit system config; },
|
||||
lib ? pkgs.lib
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||
|
||||
makeTest = import ./../make-test-python.nix;
|
||||
|
||||
# Common user configuration
|
||||
makeGaleraTest = {
|
||||
mariadbPackage,
|
||||
name ? mkTestName mariadbPackage,
|
||||
galeraPackage ? pkgs.mariadb-galera
|
||||
}: makeTest {
|
||||
name = "${name}-galera-mariabackup";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ izorkin ajs124 das_j ];
|
||||
};
|
||||
|
||||
# The test creates a Galera cluster with 3 nodes and is checking if mariabackup-based SST works. The cluster is tested by creating a DB and an empty table on one node,
|
||||
# and checking the table's presence on the other node.
|
||||
nodes = let
|
||||
mkGaleraNode = {
|
||||
id,
|
||||
method
|
||||
}: let
|
||||
address = "192.168.1.${toString id}";
|
||||
isFirstClusterNode = id == 1 || id == 4;
|
||||
in {
|
||||
users = {
|
||||
users.testuser = {
|
||||
isSystemUser = true;
|
||||
group = "testusers";
|
||||
};
|
||||
groups.testusers = { };
|
||||
};
|
||||
|
||||
networking = {
|
||||
interfaces.eth1 = {
|
||||
ipv4.addresses = [
|
||||
{ inherit address; prefixLength = 24; }
|
||||
];
|
||||
};
|
||||
extraHosts = lib.concatMapStringsSep "\n" (i: "192.168.1.${toString i} galera_0${toString i}") (lib.range 1 6);
|
||||
firewall.allowedTCPPorts = [ 3306 4444 4567 4568 ];
|
||||
firewall.allowedUDPPorts = [ 4567 ];
|
||||
};
|
||||
systemd.services.mysql = with pkgs; {
|
||||
path = with pkgs; [
|
||||
bash
|
||||
gawk
|
||||
gnutar
|
||||
gzip
|
||||
inetutils
|
||||
iproute2
|
||||
netcat
|
||||
procps
|
||||
pv
|
||||
rsync
|
||||
socat
|
||||
stunnel
|
||||
which
|
||||
];
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = mariadbPackage;
|
||||
ensureDatabases = lib.mkIf isFirstClusterNode [ "testdb" ];
|
||||
ensureUsers = lib.mkIf isFirstClusterNode [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
initialScript = lib.mkIf isFirstClusterNode (pkgs.writeText "mariadb-init.sql" ''
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'check_repl'@'localhost' IDENTIFIED BY 'check_pass' WITH GRANT OPTION;
|
||||
FLUSH PRIVILEGES;
|
||||
'');
|
||||
settings = {
|
||||
mysqld = {
|
||||
bind_address = "0.0.0.0";
|
||||
};
|
||||
galera = {
|
||||
wsrep_on = "ON";
|
||||
wsrep_debug = "NONE";
|
||||
wsrep_retry_autocommit = "3";
|
||||
wsrep_provider = "${galeraPackage}/lib/galera/libgalera_smm.so";
|
||||
wsrep_cluster_address = "gcomm://"
|
||||
+ lib.optionalString (id == 2 || id == 3) "galera_01,galera_02,galera_03"
|
||||
+ lib.optionalString (id == 5 || id == 6) "galera_04,galera_05,galera_06";
|
||||
wsrep_cluster_name = "galera";
|
||||
wsrep_node_address = address;
|
||||
wsrep_node_name = "galera_0${toString id}";
|
||||
wsrep_sst_method = method;
|
||||
wsrep_sst_auth = "check_repl:check_pass";
|
||||
binlog_format = "ROW";
|
||||
enforce_storage_engine = "InnoDB";
|
||||
innodb_autoinc_lock_mode = "2";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
in {
|
||||
galera_01 = mkGaleraNode {
|
||||
id = 1;
|
||||
method = "mariabackup";
|
||||
};
|
||||
|
||||
galera_02 = mkGaleraNode {
|
||||
id = 2;
|
||||
method = "mariabackup";
|
||||
};
|
||||
|
||||
galera_03 = mkGaleraNode {
|
||||
id = 3;
|
||||
method = "mariabackup";
|
||||
};
|
||||
|
||||
galera_04 = mkGaleraNode {
|
||||
id = 4;
|
||||
method = "rsync";
|
||||
};
|
||||
|
||||
galera_05 = mkGaleraNode {
|
||||
id = 5;
|
||||
method = "rsync";
|
||||
};
|
||||
|
||||
galera_06 = mkGaleraNode {
|
||||
id = 6;
|
||||
method = "rsync";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
galera_01.start()
|
||||
galera_01.wait_for_unit("mysql")
|
||||
galera_01.wait_for_open_port(3306)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (37);'"
|
||||
)
|
||||
galera_02.start()
|
||||
galera_02.wait_for_unit("mysql")
|
||||
galera_02.wait_for_open_port(3306)
|
||||
galera_03.start()
|
||||
galera_03.wait_for_unit("mysql")
|
||||
galera_03.wait_for_open_port(3306)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||
)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_02.succeed("systemctl stop mysql")
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (38);'"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (39);'"
|
||||
)
|
||||
galera_02.succeed("systemctl start mysql")
|
||||
galera_02.wait_for_open_port(3306)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||
)
|
||||
galera_01.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 39"
|
||||
)
|
||||
galera_02.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 38"
|
||||
)
|
||||
galera_03.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 37"
|
||||
)
|
||||
galera_01.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||
galera_02.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
||||
galera_03.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
||||
galera_01.crash()
|
||||
galera_02.crash()
|
||||
galera_03.crash()
|
||||
|
||||
galera_04.start()
|
||||
galera_04.wait_for_unit("mysql")
|
||||
galera_04.wait_for_open_port(3306)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db1 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db1 values (41);'"
|
||||
)
|
||||
galera_05.start()
|
||||
galera_05.wait_for_unit("mysql")
|
||||
galera_05.wait_for_open_port(3306)
|
||||
galera_06.start()
|
||||
galera_06.wait_for_unit("mysql")
|
||||
galera_06.wait_for_open_port(3306)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||
)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db2 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_05.succeed("systemctl stop mysql")
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db2 values (42);'"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; create table db3 (test_id INT, PRIMARY KEY (test_id)) ENGINE = InnoDB;'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; insert into db3 values (43);'"
|
||||
)
|
||||
galera_05.succeed("systemctl start mysql")
|
||||
galera_05.wait_for_open_port(3306)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_cluster_size.*3'"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'show status' -N | grep 'wsrep_local_state_comment.*Synced'"
|
||||
)
|
||||
galera_04.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db3;' -N | grep 43"
|
||||
)
|
||||
galera_05.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db2;' -N | grep 42"
|
||||
)
|
||||
galera_06.succeed(
|
||||
"sudo -u testuser mysql -u testuser -e 'use testdb; select test_id from db1;' -N | grep 41"
|
||||
)
|
||||
galera_04.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db3;'")
|
||||
galera_05.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db2;'")
|
||||
galera_06.succeed("sudo -u testuser mysql -u testuser -e 'use testdb; drop table db1;'")
|
||||
'';
|
||||
};
|
||||
in
|
||||
lib.mapAttrs (_: mariadbPackage: makeGaleraTest { inherit mariadbPackage; }) mariadbPackages
|
|
@ -1,38 +1,53 @@
|
|||
import ./../make-test-python.nix ({ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
name = "automysqlbackup";
|
||||
meta.maintainers = [ lib.maintainers.aanderse ];
|
||||
system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
pkgs ? import ../../.. { inherit system config; },
|
||||
lib ? pkgs.lib
|
||||
}:
|
||||
|
||||
machine =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.mysql.enable = true;
|
||||
services.mysql.package = pkgs.mariadb;
|
||||
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||
let
|
||||
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||
|
||||
makeTest = import ./../make-test-python.nix;
|
||||
|
||||
makeAutobackupTest = {
|
||||
package,
|
||||
name ? mkTestName package,
|
||||
}: makeTest {
|
||||
name = "${name}-automysqlbackup";
|
||||
meta.maintainers = [ lib.maintainers.aanderse ];
|
||||
|
||||
machine = {
|
||||
services.mysql = {
|
||||
inherit package;
|
||||
enable = true;
|
||||
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||
};
|
||||
|
||||
services.automysqlbackup.enable = true;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
# Need to have mysql started so that it can be populated with data.
|
||||
machine.wait_for_unit("mysql.service")
|
||||
# Need to have mysql started so that it can be populated with data.
|
||||
machine.wait_for_unit("mysql.service")
|
||||
|
||||
with subtest("Wait for testdb to be fully populated (5 rows)."):
|
||||
machine.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
with subtest("Wait for testdb to be fully populated (5 rows)."):
|
||||
machine.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
with subtest("Do a backup and wait for it to start"):
|
||||
machine.start_job("automysqlbackup.service")
|
||||
machine.wait_for_job("automysqlbackup.service")
|
||||
with subtest("Do a backup and wait for it to start"):
|
||||
machine.start_job("automysqlbackup.service")
|
||||
machine.wait_for_job("automysqlbackup.service")
|
||||
|
||||
with subtest("wait for backup file and check that data appears in backup"):
|
||||
machine.wait_for_file("/var/backup/mysql/daily/testdb")
|
||||
machine.succeed(
|
||||
"${pkgs.gzip}/bin/zcat /var/backup/mysql/daily/testdb/daily_testdb_*.sql.gz | grep hello"
|
||||
)
|
||||
'';
|
||||
})
|
||||
with subtest("wait for backup file and check that data appears in backup"):
|
||||
machine.wait_for_file("/var/backup/mysql/daily/testdb")
|
||||
machine.succeed(
|
||||
"${pkgs.gzip}/bin/zcat /var/backup/mysql/daily/testdb/daily_testdb_*.sql.gz | grep hello"
|
||||
)
|
||||
'';
|
||||
};
|
||||
in
|
||||
lib.mapAttrs (_: package: makeAutobackupTest { inherit package; }) mariadbPackages
|
||||
|
|
|
@ -1,56 +1,72 @@
|
|||
# Test whether mysqlBackup option works
|
||||
import ./../make-test-python.nix ({ pkgs, ... } : {
|
||||
name = "mysql-backup";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ rvl ];
|
||||
};
|
||||
{
|
||||
system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
pkgs ? import ../../.. { inherit system config; },
|
||||
lib ? pkgs.lib
|
||||
}:
|
||||
|
||||
nodes = {
|
||||
master = { pkgs, ... }: {
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||
package = pkgs.mariadb;
|
||||
};
|
||||
let
|
||||
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||
|
||||
services.mysqlBackup = {
|
||||
enable = true;
|
||||
databases = [ "doesnotexist" "testdb" ];
|
||||
makeTest = import ./../make-test-python.nix;
|
||||
|
||||
makeBackupTest = {
|
||||
package,
|
||||
name ? mkTestName package
|
||||
}: makeTest {
|
||||
name = "${name}-backup";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ rvl ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
master = { pkgs, ... }: {
|
||||
services.mysql = {
|
||||
inherit package;
|
||||
enable = true;
|
||||
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||
};
|
||||
|
||||
services.mysqlBackup = {
|
||||
enable = true;
|
||||
databases = [ "doesnotexist" "testdb" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
# Delete backup file that may be left over from a previous test run.
|
||||
# This is not needed on Hydra but useful for repeated local test runs.
|
||||
master.execute("rm -f /var/backup/mysql/testdb.gz")
|
||||
|
||||
# Need to have mysql started so that it can be populated with data.
|
||||
master.wait_for_unit("mysql.service")
|
||||
|
||||
# Wait for testdb to be fully populated (5 rows).
|
||||
master.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
# Do a backup and wait for it to start
|
||||
master.start_job("mysql-backup.service")
|
||||
master.wait_for_unit("mysql-backup.service")
|
||||
|
||||
# wait for backup to fail, because of database 'doesnotexist'
|
||||
master.wait_until_fails("systemctl is-active -q mysql-backup.service")
|
||||
|
||||
# wait for backup file and check that data appears in backup
|
||||
master.wait_for_file("/var/backup/mysql/testdb.gz")
|
||||
master.succeed(
|
||||
"${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
|
||||
)
|
||||
|
||||
# Check that a failed backup is logged
|
||||
master.succeed(
|
||||
"journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null"
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
# Delete backup file that may be left over from a previous test run.
|
||||
# This is not needed on Hydra but useful for repeated local test runs.
|
||||
master.execute("rm -f /var/backup/mysql/testdb.gz")
|
||||
|
||||
# Need to have mysql started so that it can be populated with data.
|
||||
master.wait_for_unit("mysql.service")
|
||||
|
||||
# Wait for testdb to be fully populated (5 rows).
|
||||
master.wait_until_succeeds(
|
||||
"mysql -u root -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
# Do a backup and wait for it to start
|
||||
master.start_job("mysql-backup.service")
|
||||
master.wait_for_unit("mysql-backup.service")
|
||||
|
||||
# wait for backup to fail, because of database 'doesnotexist'
|
||||
master.wait_until_fails("systemctl is-active -q mysql-backup.service")
|
||||
|
||||
# wait for backup file and check that data appears in backup
|
||||
master.wait_for_file("/var/backup/mysql/testdb.gz")
|
||||
master.succeed(
|
||||
"${pkgs.gzip}/bin/zcat /var/backup/mysql/testdb.gz | grep hello"
|
||||
)
|
||||
|
||||
# Check that a failed backup is logged
|
||||
master.succeed(
|
||||
"journalctl -u mysql-backup.service | grep 'fail.*doesnotexist' > /dev/null"
|
||||
)
|
||||
'';
|
||||
})
|
||||
in
|
||||
lib.mapAttrs (_: package: makeBackupTest { inherit package; }) mariadbPackages
|
||||
|
|
|
@ -1,91 +1,101 @@
|
|||
import ./../make-test-python.nix ({ pkgs, ...} :
|
||||
{
|
||||
system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
pkgs ? import ../../.. { inherit system config; },
|
||||
lib ? pkgs.lib
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages;
|
||||
|
||||
replicateUser = "replicate";
|
||||
replicatePassword = "secret";
|
||||
in
|
||||
|
||||
{
|
||||
name = "mysql-replication";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ eelco shlevy ];
|
||||
};
|
||||
makeTest = import ./../make-test-python.nix;
|
||||
|
||||
nodes = {
|
||||
master =
|
||||
{ pkgs, ... }:
|
||||
makeReplicationTest = {
|
||||
package,
|
||||
name ? mkTestName package,
|
||||
}: makeTest {
|
||||
name = "${name}-replication";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ ajs124 das_j ];
|
||||
};
|
||||
|
||||
{
|
||||
services.mysql.enable = true;
|
||||
services.mysql.package = pkgs.mariadb;
|
||||
services.mysql.replication.role = "master";
|
||||
services.mysql.replication.slaveHost = "%";
|
||||
services.mysql.replication.masterUser = replicateUser;
|
||||
services.mysql.replication.masterPassword = replicatePassword;
|
||||
services.mysql.initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||
nodes = {
|
||||
primary = {
|
||||
services.mysql = {
|
||||
inherit package;
|
||||
enable = true;
|
||||
replication.role = "master";
|
||||
replication.slaveHost = "%";
|
||||
replication.masterUser = replicateUser;
|
||||
replication.masterPassword = replicatePassword;
|
||||
initialDatabases = [ { name = "testdb"; schema = ./testdb.sql; } ];
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 3306 ];
|
||||
};
|
||||
|
||||
slave1 =
|
||||
{ pkgs, nodes, ... }:
|
||||
|
||||
{
|
||||
services.mysql.enable = true;
|
||||
services.mysql.package = pkgs.mariadb;
|
||||
services.mysql.replication.role = "slave";
|
||||
services.mysql.replication.serverId = 2;
|
||||
services.mysql.replication.masterHost = nodes.master.config.networking.hostName;
|
||||
services.mysql.replication.masterUser = replicateUser;
|
||||
services.mysql.replication.masterPassword = replicatePassword;
|
||||
secondary1 = { nodes, ... }: {
|
||||
services.mysql = {
|
||||
inherit package;
|
||||
enable = true;
|
||||
replication.role = "slave";
|
||||
replication.serverId = 2;
|
||||
replication.masterHost = nodes.primary.config.networking.hostName;
|
||||
replication.masterUser = replicateUser;
|
||||
replication.masterPassword = replicatePassword;
|
||||
};
|
||||
};
|
||||
|
||||
slave2 =
|
||||
{ pkgs, nodes, ... }:
|
||||
|
||||
{
|
||||
services.mysql.enable = true;
|
||||
services.mysql.package = pkgs.mariadb;
|
||||
services.mysql.replication.role = "slave";
|
||||
services.mysql.replication.serverId = 3;
|
||||
services.mysql.replication.masterHost = nodes.master.config.networking.hostName;
|
||||
services.mysql.replication.masterUser = replicateUser;
|
||||
services.mysql.replication.masterPassword = replicatePassword;
|
||||
secondary2 = { nodes, ... }: {
|
||||
services.mysql = {
|
||||
inherit package;
|
||||
enable = true;
|
||||
replication.role = "slave";
|
||||
replication.serverId = 3;
|
||||
replication.masterHost = nodes.primary.config.networking.hostName;
|
||||
replication.masterUser = replicateUser;
|
||||
replication.masterPassword = replicatePassword;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
primary.start()
|
||||
primary.wait_for_unit("mysql")
|
||||
primary.wait_for_open_port(3306)
|
||||
# Wait for testdb to be fully populated (5 rows).
|
||||
primary.wait_until_succeeds(
|
||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
secondary1.start()
|
||||
secondary2.start()
|
||||
secondary1.wait_for_unit("mysql")
|
||||
secondary1.wait_for_open_port(3306)
|
||||
secondary2.wait_for_unit("mysql")
|
||||
secondary2.wait_for_open_port(3306)
|
||||
|
||||
# wait for replications to finish
|
||||
secondary1.wait_until_succeeds(
|
||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
secondary2.wait_until_succeeds(
|
||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
secondary2.succeed("systemctl stop mysql")
|
||||
primary.succeed(
|
||||
"echo 'insert into testdb.tests values (123, 456);' | sudo -u mysql mysql -u mysql -N"
|
||||
)
|
||||
secondary2.succeed("systemctl start mysql")
|
||||
secondary2.wait_for_unit("mysql")
|
||||
secondary2.wait_for_open_port(3306)
|
||||
secondary2.wait_until_succeeds(
|
||||
"echo 'select * from testdb.tests where Id = 123;' | sudo -u mysql mysql -u mysql -N | grep 456"
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
master.start()
|
||||
master.wait_for_unit("mysql")
|
||||
master.wait_for_open_port(3306)
|
||||
# Wait for testdb to be fully populated (5 rows).
|
||||
master.wait_until_succeeds(
|
||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
slave1.start()
|
||||
slave2.start()
|
||||
slave1.wait_for_unit("mysql")
|
||||
slave1.wait_for_open_port(3306)
|
||||
slave2.wait_for_unit("mysql")
|
||||
slave2.wait_for_open_port(3306)
|
||||
|
||||
# wait for replications to finish
|
||||
slave1.wait_until_succeeds(
|
||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
slave2.wait_until_succeeds(
|
||||
"sudo -u mysql mysql -u mysql -D testdb -N -B -e 'select count(id) from tests' | grep -q 5"
|
||||
)
|
||||
|
||||
slave2.succeed("systemctl stop mysql")
|
||||
master.succeed(
|
||||
"echo 'insert into testdb.tests values (123, 456);' | sudo -u mysql mysql -u mysql -N"
|
||||
)
|
||||
slave2.succeed("systemctl start mysql")
|
||||
slave2.wait_for_unit("mysql")
|
||||
slave2.wait_for_open_port(3306)
|
||||
slave2.wait_until_succeeds(
|
||||
"echo 'select * from testdb.tests where Id = 123;' | sudo -u mysql mysql -u mysql -N | grep 456"
|
||||
)
|
||||
'';
|
||||
})
|
||||
in
|
||||
lib.mapAttrs (_: package: makeReplicationTest { inherit package; }) mariadbPackages
|
||||
|
|
|
@ -1,221 +1,149 @@
|
|||
import ./../make-test-python.nix ({ pkgs, ...}:
|
||||
|
||||
{
|
||||
system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
pkgs ? import ../../.. { inherit system config; },
|
||||
lib ? pkgs.lib
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (import ./common.nix { inherit pkgs lib; }) mkTestName mariadbPackages mysqlPackages;
|
||||
|
||||
makeTest = import ./../make-test-python.nix;
|
||||
# Setup common users
|
||||
users = { ... }:
|
||||
{
|
||||
users.groups.testusers = { };
|
||||
|
||||
users.users.testuser = {
|
||||
isSystemUser = true;
|
||||
group = "testusers";
|
||||
makeMySQLTest = {
|
||||
package,
|
||||
name ? mkTestName package,
|
||||
useSocketAuth ? true,
|
||||
hasMroonga ? true,
|
||||
hasRocksDB ? true
|
||||
}: makeTest {
|
||||
inherit name;
|
||||
meta = with lib.maintainers; {
|
||||
maintainers = [ ajs124 das_j ];
|
||||
};
|
||||
|
||||
users.users.testuser2 = {
|
||||
isSystemUser = true;
|
||||
group = "testusers";
|
||||
};
|
||||
};
|
||||
nodes = {
|
||||
${name} =
|
||||
{ pkgs, ... }: {
|
||||
|
||||
in
|
||||
users = {
|
||||
groups.testusers = { };
|
||||
|
||||
{
|
||||
name = "mysql";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ eelco shlevy ];
|
||||
};
|
||||
users.testuser = {
|
||||
isSystemUser = true;
|
||||
group = "testusers";
|
||||
};
|
||||
|
||||
nodes = {
|
||||
mysql57 =
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ users ];
|
||||
|
||||
services.mysql.enable = true;
|
||||
services.mysql.initialDatabases = [
|
||||
{ name = "testdb3"; schema = ./testdb.sql; }
|
||||
];
|
||||
# note that using pkgs.writeText here is generally not a good idea,
|
||||
# as it will store the password in world-readable /nix/store ;)
|
||||
services.mysql.initialScript = pkgs.writeText "mysql-init.sql" ''
|
||||
CREATE USER 'testuser3'@'localhost' IDENTIFIED BY 'secure';
|
||||
GRANT ALL PRIVILEGES ON testdb3.* TO 'testuser3'@'localhost';
|
||||
'';
|
||||
services.mysql.ensureDatabases = [ "testdb" "testdb2" ];
|
||||
services.mysql.ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
users.testuser2 = {
|
||||
isSystemUser = true;
|
||||
group = "testusers";
|
||||
};
|
||||
};
|
||||
} {
|
||||
name = "testuser2";
|
||||
ensurePermissions = {
|
||||
"testdb2.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
services.mysql.package = pkgs.mysql57;
|
||||
};
|
||||
|
||||
mysql80 =
|
||||
{ pkgs, ... }:
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
initialDatabases = [
|
||||
{ name = "testdb3"; schema = ./testdb.sql; }
|
||||
];
|
||||
# note that using pkgs.writeText here is generally not a good idea,
|
||||
# as it will store the password in world-readable /nix/store ;)
|
||||
initialScript = pkgs.writeText "mysql-init.sql" (if (!useSocketAuth) then ''
|
||||
CREATE USER 'testuser3'@'localhost' IDENTIFIED BY 'secure';
|
||||
GRANT ALL PRIVILEGES ON testdb3.* TO 'testuser3'@'localhost';
|
||||
'' else ''
|
||||
ALTER USER root@localhost IDENTIFIED WITH unix_socket;
|
||||
DELETE FROM mysql.user WHERE password = ''' AND plugin = ''';
|
||||
DELETE FROM mysql.user WHERE user = ''';
|
||||
FLUSH PRIVILEGES;
|
||||
'');
|
||||
|
||||
{
|
||||
imports = [ users ];
|
||||
|
||||
services.mysql.enable = true;
|
||||
services.mysql.initialDatabases = [
|
||||
{ name = "testdb3"; schema = ./testdb.sql; }
|
||||
];
|
||||
# note that using pkgs.writeText here is generally not a good idea,
|
||||
# as it will store the password in world-readable /nix/store ;)
|
||||
services.mysql.initialScript = pkgs.writeText "mysql-init.sql" ''
|
||||
CREATE USER 'testuser3'@'localhost' IDENTIFIED BY 'secure';
|
||||
GRANT ALL PRIVILEGES ON testdb3.* TO 'testuser3'@'localhost';
|
||||
'';
|
||||
services.mysql.ensureDatabases = [ "testdb" "testdb2" ];
|
||||
services.mysql.ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
} {
|
||||
name = "testuser2";
|
||||
ensurePermissions = {
|
||||
"testdb2.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
services.mysql.package = pkgs.mysql80;
|
||||
};
|
||||
|
||||
mariadb =
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ users ];
|
||||
|
||||
services.mysql.enable = true;
|
||||
services.mysql.initialScript = pkgs.writeText "mariadb-init.sql" ''
|
||||
ALTER USER root@localhost IDENTIFIED WITH unix_socket;
|
||||
DELETE FROM mysql.user WHERE password = ''' AND plugin = ''';
|
||||
DELETE FROM mysql.user WHERE user = ''';
|
||||
FLUSH PRIVILEGES;
|
||||
'';
|
||||
services.mysql.ensureDatabases = [ "testdb" "testdb2" ];
|
||||
services.mysql.ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
} {
|
||||
name = "testuser2";
|
||||
ensurePermissions = {
|
||||
"testdb2.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
services.mysql.settings = {
|
||||
mysqld = {
|
||||
plugin-load-add = [ "ha_mroonga.so" "ha_rocksdb.so" ];
|
||||
ensureDatabases = [ "testdb" "testdb2" ];
|
||||
ensureUsers = [{
|
||||
name = "testuser";
|
||||
ensurePermissions = {
|
||||
"testdb.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
} {
|
||||
name = "testuser2";
|
||||
ensurePermissions = {
|
||||
"testdb2.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}];
|
||||
package = package;
|
||||
settings = {
|
||||
mysqld = {
|
||||
plugin-load-add = lib.optional hasMroonga "ha_mroonga.so"
|
||||
++ lib.optional hasRocksDB "ha_rocksdb.so";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
services.mysql.package = pkgs.mariadb;
|
||||
};
|
||||
|
||||
mariadb = {
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
machine = ${name}
|
||||
machine.wait_for_unit("mysql")
|
||||
machine.succeed(
|
||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
||||
machine.fail(
|
||||
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser2"
|
||||
)
|
||||
# Ensure testuser2 is not able to authenticate as mysql testuser
|
||||
machine.fail(
|
||||
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42"
|
||||
)
|
||||
|
||||
${lib.optionalString hasMroonga ''
|
||||
# Check if Mroonga plugin works
|
||||
machine.succeed(
|
||||
"echo 'use testdb; create table mroongadb (test_id INT, PRIMARY KEY (test_id)) ENGINE = Mroonga;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; insert into mroongadb values (25);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; select test_id from mroongadb;' | sudo -u testuser mysql -u testuser -N | grep 25"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; drop table mroongadb;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
''}
|
||||
|
||||
${lib.optionalString hasRocksDB ''
|
||||
# Check if RocksDB plugin works
|
||||
machine.succeed(
|
||||
"echo 'use testdb; create table rocksdb (test_id INT, PRIMARY KEY (test_id)) ENGINE = RocksDB;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; insert into rocksdb values (28);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; select test_id from rocksdb;' | sudo -u testuser mysql -u testuser -N | grep 28"
|
||||
)
|
||||
machine.succeed(
|
||||
"echo 'use testdb; drop table rocksdb;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
''}
|
||||
'';
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
mysql57.wait_for_unit("mysql")
|
||||
mysql57.succeed(
|
||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mysql57.succeed(
|
||||
"echo 'use testdb; insert into tests values (41);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
||||
mysql57.fail(
|
||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser2"
|
||||
)
|
||||
# Ensure testuser2 is not able to authenticate as mysql testuser
|
||||
mysql57.fail(
|
||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser"
|
||||
)
|
||||
mysql57.succeed(
|
||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 41"
|
||||
)
|
||||
mysql57.succeed(
|
||||
"echo 'use testdb3; select * from tests;' | mysql -u testuser3 --password=secure -N | grep 4"
|
||||
)
|
||||
|
||||
mysql80.wait_for_unit("mysql")
|
||||
mysql80.succeed(
|
||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mysql80.succeed(
|
||||
"echo 'use testdb; insert into tests values (41);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
||||
mysql80.fail(
|
||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser2"
|
||||
)
|
||||
# Ensure testuser2 is not able to authenticate as mysql testuser
|
||||
mysql80.fail(
|
||||
"echo 'use testdb; insert into tests values (22);' | sudo -u testuser2 mysql -u testuser"
|
||||
)
|
||||
mysql80.succeed(
|
||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 41"
|
||||
)
|
||||
mysql80.succeed(
|
||||
"echo 'use testdb3; select * from tests;' | mysql -u testuser3 --password=secure -N | grep 4"
|
||||
)
|
||||
|
||||
mariadb.wait_for_unit("mysql")
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; create table tests (test_id INT, PRIMARY KEY (test_id));' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; insert into tests values (42);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
# Ensure testuser2 is not able to insert into testdb as mysql testuser2
|
||||
mariadb.fail(
|
||||
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser2"
|
||||
)
|
||||
# Ensure testuser2 is not able to authenticate as mysql testuser
|
||||
mariadb.fail(
|
||||
"echo 'use testdb; insert into tests values (23);' | sudo -u testuser2 mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; select test_id from tests;' | sudo -u testuser mysql -u testuser -N | grep 42"
|
||||
)
|
||||
|
||||
# Check if Mroonga plugin works
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; create table mroongadb (test_id INT, PRIMARY KEY (test_id)) ENGINE = Mroonga;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; insert into mroongadb values (25);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; select test_id from mroongadb;' | sudo -u testuser mysql -u testuser -N | grep 25"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; drop table mroongadb;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
|
||||
# Check if RocksDB plugin works
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; create table rocksdb (test_id INT, PRIMARY KEY (test_id)) ENGINE = RocksDB;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; insert into rocksdb values (28);' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; select test_id from rocksdb;' | sudo -u testuser mysql -u testuser -N | grep 28"
|
||||
)
|
||||
mariadb.succeed(
|
||||
"echo 'use testdb; drop table rocksdb;' | sudo -u testuser mysql -u testuser"
|
||||
)
|
||||
'';
|
||||
})
|
||||
in
|
||||
lib.mapAttrs (_: package: makeMySQLTest {
|
||||
inherit package;
|
||||
hasRocksDB = false; hasMroonga = false;
|
||||
}) mysqlPackages
|
||||
// (lib.mapAttrs (_: package: makeMySQLTest {
|
||||
inherit package;
|
||||
}) mariadbPackages)
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "praat";
|
||||
version = "6.2.03";
|
||||
version = "6.2.04";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "praat";
|
||||
repo = "praat";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-0WTbLEPEqPm7BI02mjlwcsewkrmIsHtNlhccqK1d6SI=";
|
||||
sha256 = "sha256-xzEgj4pjW+y46CXtVq4myHKX6DImCibsUz8m0G6F+YQ=";
|
||||
};
|
||||
|
||||
configurePhase = ''
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
version = "0.9.5";
|
||||
version = "0.9.6";
|
||||
pname = "qjackctl";
|
||||
|
||||
# some dependencies such as killall have to be installed additionally
|
||||
|
@ -14,7 +14,7 @@ mkDerivation rec {
|
|||
owner = "rncbc";
|
||||
repo = "qjackctl";
|
||||
rev = "${pname}_${lib.replaceChars ["."] ["_"] version}";
|
||||
sha256 = "sha256-20oy3R0gbVXO3Da80cTYXu+BG8OfVNRLtAwHk8nRFJk=";
|
||||
sha256 = "sha256-8oVnUe+/y4p1WeHMEhKMIl0/ax3PT0pN4f1UJaBmZBw=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
|
|
@ -30,11 +30,11 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "qtractor";
|
||||
version = "0.9.24";
|
||||
version = "0.9.25";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-YTT7ko5HjKrZ8DKU3L06EI7bZeBtvPl21pqUf6EaeS4=";
|
||||
sha256 = "sha256-cKXHH7rugTJ5D7MDJmr/fX6p209wyGMQvSLbv5T0KXU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -1,106 +0,0 @@
|
|||
{ lib, stdenv, fetchurl, glibc, libGLU, libGL, freetype, glib, libSM, libICE, libXi, libXv
|
||||
, libXrender, libXrandr, libXfixes, libXcursor, libXinerama, libXext, libX11
|
||||
, zlib, fontconfig, dpkg, libproxy, libxml2, gst_all_1, dbus }:
|
||||
|
||||
let
|
||||
arch =
|
||||
if stdenv.hostPlatform.system == "x86_64-linux" then "amd64"
|
||||
else if stdenv.hostPlatform.system == "i686-linux" then "i386"
|
||||
else throw "Unsupported system ${stdenv.hostPlatform.system}";
|
||||
sha256 =
|
||||
if arch == "amd64"
|
||||
then "0dwnppn5snl5bwkdrgj4cyylnhngi0g66fn2k41j3dvis83x24k6"
|
||||
else "0gndbxrj3kgc2dhjqwjifr3cl85hgpm695z0wi01wvwzhrjqs0l2";
|
||||
version = "7.1.8.3036";
|
||||
fullPath = lib.makeLibraryPath [
|
||||
glibc
|
||||
glib
|
||||
stdenv.cc.cc
|
||||
libSM
|
||||
libICE
|
||||
libXi
|
||||
libXv
|
||||
libGLU libGL
|
||||
libXrender
|
||||
libXrandr
|
||||
libXfixes
|
||||
libXcursor
|
||||
libXinerama
|
||||
freetype
|
||||
libXext
|
||||
libX11
|
||||
zlib
|
||||
fontconfig
|
||||
libproxy
|
||||
libxml2
|
||||
dbus
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-base
|
||||
];
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "googleearth";
|
||||
inherit version;
|
||||
src = fetchurl {
|
||||
url = "https://dl.google.com/linux/earth/deb/pool/main/g/google-earth-stable/google-earth-stable_${version}-r0_${arch}.deb";
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" "checkPhase" ];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
buildInputs = [ dpkg ];
|
||||
|
||||
unpackPhase = ''
|
||||
dpkg-deb -x ${src} ./
|
||||
'';
|
||||
|
||||
installPhase =''
|
||||
mkdir $out
|
||||
mv usr/* $out/
|
||||
rmdir usr
|
||||
mv * $out/
|
||||
rm $out/bin/google-earth $out/opt/google/earth/free/googleearth
|
||||
|
||||
# patch and link googleearth binary
|
||||
ln -s $out/opt/google/earth/free/googleearth-bin $out/bin/googleearth
|
||||
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${fullPath}:\$ORIGIN" \
|
||||
$out/opt/google/earth/free/googleearth-bin
|
||||
|
||||
# patch and link gpsbabel binary
|
||||
ln -s $out/opt/google/earth/free/gpsbabel $out/bin/gpsbabel
|
||||
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${fullPath}:\$ORIGIN" \
|
||||
$out/opt/google/earth/free/gpsbabel
|
||||
|
||||
# patch libraries
|
||||
for a in $out/opt/google/earth/free/*.so* ; do
|
||||
patchelf --set-rpath "${fullPath}:\$ORIGIN" $a
|
||||
done
|
||||
|
||||
# Add desktop config file and icons
|
||||
mkdir -p $out/share/{applications,icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,128x128,256x256}/apps,pixmaps}
|
||||
ln -s $out/opt/google/earth/free/google-earth.desktop $out/share/applications/google-earth.desktop
|
||||
sed -i -e "s|Exec=.*|Exec=$out/bin/googleearth|g" $out/opt/google/earth/free/google-earth.desktop
|
||||
for size in 16 22 24 32 48 64 128 256; do
|
||||
ln -s $out/opt/google/earth/free/product_logo_"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/google-earth.png
|
||||
done
|
||||
ln -s $out/opt/google/earth/free/product_logo_256.png $out/share/pixmaps/google-earth.png
|
||||
'';
|
||||
|
||||
checkPhase = ''
|
||||
$out/bin/gpsbabel -V > /dev/null
|
||||
'';
|
||||
|
||||
dontPatchELF = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A world sphere viewer";
|
||||
homepage = "http://earth.google.com";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ markus1189 ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,82 +1,77 @@
|
|||
{ stdenv,
|
||||
lib,
|
||||
makeWrapper,
|
||||
fetchurl,
|
||||
dpkg,
|
||||
makeDesktopItem,
|
||||
copyDesktopItems,
|
||||
autoPatchelfHook,
|
||||
gst_all_1,
|
||||
sane-backends,
|
||||
xorg,
|
||||
gnome2,
|
||||
alsa-lib,
|
||||
libgccjit,
|
||||
jdk11
|
||||
}:
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, libgccjit
|
||||
, dpkg
|
||||
, makeDesktopItem
|
||||
, copyDesktopItems
|
||||
, autoPatchelfHook
|
||||
, sane-backends
|
||||
, jdk11
|
||||
}:
|
||||
|
||||
let
|
||||
year = "2021";
|
||||
major = "1";
|
||||
minor = "2";
|
||||
in stdenv.mkDerivation rec {
|
||||
# See also package 'pdfstudioviewer'
|
||||
# Differences are ${pname}, Download directory name (PDFStudio / PDFStudioViewer),
|
||||
# sha256, and libgccjit (not needed for PDFStudioViewer)
|
||||
let year = "2021";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pdfstudio";
|
||||
version = "${year}.${major}.${minor}";
|
||||
autoPatchelfIgnoreMissingDeps = true;
|
||||
version = "${year}.1.2";
|
||||
strictDeps = true;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.qoppa.com/${pname}/v${year}/PDFStudio_v${year}_${major}_${minor}_linux64.deb";
|
||||
url = "https://download.qoppa.com/${pname}/v${year}/PDFStudio_v${
|
||||
builtins.replaceStrings [ "." ] [ "_" ] version
|
||||
}_linux64.deb";
|
||||
sha256 = "1188ll2qz58rr2slavqxisbz4q3fdzidpasb1p33926z0ym3rk45";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gst_all_1.gst-libav
|
||||
sane-backends
|
||||
xorg.libXxf86vm
|
||||
xorg.libXtst
|
||||
gnome2.libgtkhtml
|
||||
alsa-lib
|
||||
libgccjit
|
||||
autoPatchelfHook
|
||||
makeWrapper
|
||||
dpkg
|
||||
copyDesktopItems
|
||||
jdk11 # only for unpacking .jar.pack files
|
||||
buildInputs = [
|
||||
libgccjit #for libstdc++.so.6 and libgomp.so.1
|
||||
sane-backends #for libsane.so.1
|
||||
jdk11
|
||||
];
|
||||
|
||||
desktopItems = [(makeDesktopItem {
|
||||
name = "${pname}${year}";
|
||||
desktopName = "PDF Studio";
|
||||
genericName = "View and edit PDF files";
|
||||
exec = "${pname} %f";
|
||||
icon = "${pname}${year}";
|
||||
comment = "Views and edits PDF files";
|
||||
mimeType = "application/pdf";
|
||||
categories = "Office";
|
||||
type = "Application";
|
||||
terminal = false;
|
||||
})];
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
dpkg
|
||||
copyDesktopItems
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "${pname}${year}";
|
||||
desktopName = "PDF Studio";
|
||||
genericName = "View and edit PDF files";
|
||||
exec = "${pname} %f";
|
||||
icon = "${pname}${year}";
|
||||
comment = "Views and edits PDF files";
|
||||
mimeType = "application/pdf";
|
||||
categories = "Office";
|
||||
type = "Application";
|
||||
terminal = false;
|
||||
})
|
||||
];
|
||||
|
||||
unpackPhase = "dpkg-deb -x $src .";
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace opt/${pname}${year}/${pname}${year} --replace "# INSTALL4J_JAVA_HOME_OVERRIDE=" "INSTALL4J_JAVA_HOME_OVERRIDE=${jdk11.out}"
|
||||
substituteInPlace opt/${pname}${year}/updater --replace "# INSTALL4J_JAVA_HOME_OVERRIDE=" "INSTALL4J_JAVA_HOME_OVERRIDE=${jdk11.out}"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $out/share
|
||||
mkdir -p $out/share/applications
|
||||
mkdir -p $out/share/pixmaps
|
||||
cp -r opt/${pname}${year} $out/share/
|
||||
rm -rf $out/share/${pname}${year}/jre
|
||||
ln -s $out/share/${pname}${year}/.install4j/${pname}${year}.png $out/share/pixmaps/
|
||||
makeWrapper $out/share/${pname}${year}/${pname}${year} $out/bin/${pname}
|
||||
|
||||
#Unpack jar files. Otherwise pdfstudio does this and fails due to read-only FS.
|
||||
for pfile in $out/share/${pname}${year}/jre/lib/{,ext/}*.jar.pack; do
|
||||
jar_file=`echo "$pfile" | awk '{ print substr($0,1,length($0)-5) }'`
|
||||
unpack200 -r "$pfile" "$jar_file"
|
||||
done
|
||||
ln -s $out/share/${pname}${year}/${pname}${year} $out/bin/${pname}
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
@ -86,6 +81,7 @@ in stdenv.mkDerivation rec {
|
|||
description = "An easy to use, full-featured PDF editing software";
|
||||
license = licenses.unfree;
|
||||
platforms = platforms.linux;
|
||||
mainProgram = pname;
|
||||
maintainers = [ maintainers.pwoelfel ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "scli";
|
||||
version = "0.6.5";
|
||||
version = "0.6.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "isamert";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1lykxkqscvpzb7bvl8kfaf23mjhr2kaaqdg0756xx4z1m0smpkgy";
|
||||
sha256 = "16hfp8dn270amrilvv3sjqhq2x295kw0cxszf63jh405z3ql834g";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
}
|
||||
},
|
||||
"beta": {
|
||||
"version": "98.0.4758.54",
|
||||
"sha256": "0w3pvp23y0vyj9p7j6nfxgnnzc5jyjn65k1khx0i333hs97vidbc",
|
||||
"sha256bin64": "1qxkqw45jzcrg2ziqh4npg19a52b5j1hvag4n5qlrq4bfblsbwwh",
|
||||
"version": "98.0.4758.66",
|
||||
"sha256": "06hdd2cy6mdiiwbrn2jawmcidxbf46z9wyklkm3mmzbrj1xrh0gd",
|
||||
"sha256bin64": "0r1lmgvvxb1h6p20gzp8qwdfs4czvqyg6bgp4wb2aax1n0448rbr",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2021-12-07",
|
||||
|
@ -32,15 +32,15 @@
|
|||
}
|
||||
},
|
||||
"dev": {
|
||||
"version": "99.0.4818.0",
|
||||
"sha256": "1k8xzmybrmwgcyg4n7x3gj486rpwic17m6i5ij9nmfzcxx7fbwlm",
|
||||
"sha256bin64": "1jfqmv94ami3n6hzp9ycczqv3lh3wijsf555mg62rv4rdvw5adm6",
|
||||
"version": "99.0.4840.0",
|
||||
"sha256": "0l1azyd7an8nw2gjnn313gn6sljvw6lbd9g59s7d59lpn2bmbc7j",
|
||||
"sha256bin64": "145qjhdmi39aaw0a3sarlgi67rjhik1xbm62rw7ba0wgnrbvvrjb",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2022-01-07",
|
||||
"version": "2022-01-10",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "f1b1412521b41e47118b29863224171e434a27a2",
|
||||
"sha256": "1cxq991by7sa5k1hvb5xx98bfqgq7rdbw3cawhyyqq91a521wsb7"
|
||||
"rev": "80a40b07305373617eba2d5878d353532af77da3",
|
||||
"sha256": "1103lf38h7412949j6nrk48m2vv2rrxacn42sjg33lg88nyv7skv"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -44,7 +44,7 @@
|
|||
, libvaSupport ? true, libva
|
||||
|
||||
# For Vulkan support (--enable-features=Vulkan)
|
||||
, vulkanSupport ? true, vulkan-loader
|
||||
, addOpenGLRunpath
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
@ -70,7 +70,6 @@ let
|
|||
libxkbcommon pipewire wayland
|
||||
] ++ optional pulseSupport libpulseaudio
|
||||
++ optional libvaSupport libva
|
||||
++ optional vulkanSupport vulkan-loader
|
||||
++ [ gtk3 ];
|
||||
|
||||
suffix = if channel != "stable" then "-" + channel else "";
|
||||
|
@ -143,7 +142,7 @@ in stdenv.mkDerivation {
|
|||
makeWrapper "$out/share/google/$appname/google-$appname" "$exe" \
|
||||
--prefix LD_LIBRARY_PATH : "$rpath" \
|
||||
--prefix PATH : "$binpath" \
|
||||
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
|
||||
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:${addOpenGLRunpath.driverLink}/share" \
|
||||
--add-flags ${escapeShellArg commandLineArgs}
|
||||
|
||||
for elf in $out/share/google/$appname/{chrome,chrome-sandbox,${crashpadHandlerBinary},nacl_helper}; do
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "flexget";
|
||||
version = "3.2.8";
|
||||
version = "3.2.11";
|
||||
|
||||
# Fetch from GitHub in order to use `requirements.in`
|
||||
src = fetchFromGitHub {
|
||||
owner = "flexget";
|
||||
repo = "flexget";
|
||||
rev = "v${version}";
|
||||
sha256 = "0hr19f678pyd7mnzclfv7imh9s2m01k92dza1csyfacclvri8m07";
|
||||
sha256 = "1l9xy8k0imfdg4r03k659f85z945bksx672gqhkchf2svi2vnvql";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -24,7 +24,7 @@ let
|
|||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "signal-desktop";
|
||||
version = "5.27.0"; # Please backport all updates to the stable channel.
|
||||
version = "5.27.1"; # Please backport all updates to the stable channel.
|
||||
# All releases have a limited lifetime and "expire" 90 days after the release.
|
||||
# When releases "expire" the application becomes unusable until an update is
|
||||
# applied. The expiration date for the current release can be extracted with:
|
||||
|
@ -34,7 +34,7 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
sha256 = "1agxn4fcgln5lsccvw5b7g2psv6nv2y7qm5df201c9pbwjak74nm";
|
||||
sha256 = "0z0v7q0rpxdx7ic78jv7wp1hq8nrfp51jjdr6d85x0hsfdj0z1mc";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -1,16 +1,30 @@
|
|||
{ lib, stdenv, fetchurl, python2, rcs, git, makeWrapper }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, python
|
||||
, rcs
|
||||
, git
|
||||
, makeWrapper
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "src";
|
||||
version = "1.28";
|
||||
version = "1.29";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.catb.org/~esr/src/${pname}-${version}.tar.gz";
|
||||
sha256 = "1fkr5z3mlj13djz9w1sb644wc7r1fywz52qq97byw1yyw0bqyi7f";
|
||||
sha256 = "sha256-Tc+qBhLtC9u23BrqVniAprAV8YhXELvbMn+XxN5BQkE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ python2 rcs git ];
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
python
|
||||
rcs
|
||||
git
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
patchShebangs .
|
||||
|
@ -24,6 +38,7 @@ stdenv.mkDerivation rec {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://www.catb.org/esr/src/";
|
||||
description = "Simple single-file revision control";
|
||||
longDescription = ''
|
||||
SRC, acronym of Simple Revision Control, is RCS/SCCS reloaded with a
|
||||
|
@ -33,10 +48,9 @@ stdenv.mkDerivation rec {
|
|||
will seem familiar to Subversion/Git/hg users, and no binary blobs
|
||||
anywhere.
|
||||
'';
|
||||
homepage = "http://www.catb.org/esr/src/";
|
||||
changelog = "https://gitlab.com/esr/src/raw/${version}/NEWS";
|
||||
license = licenses.bsd2;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ calvertvl AndersonTorres ];
|
||||
inherit (python.meta) platforms;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript, requests, xbmcswift2 }:
|
||||
{ lib, buildKodiAddon, fetchzip, addonUpdateScript, dateutil, requests, xbmcswift2 }:
|
||||
|
||||
buildKodiAddon rec {
|
||||
pname = "arteplussept";
|
||||
|
@ -11,6 +11,7 @@ buildKodiAddon rec {
|
|||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
dateutil
|
||||
requests
|
||||
xbmcswift2
|
||||
];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ fetchurl, lib, stdenv }:
|
||||
|
||||
let
|
||||
version = "0.24.5";
|
||||
version = "0.25.2";
|
||||
|
||||
suffix = {
|
||||
x86_64-linux = "x86_64";
|
||||
|
@ -22,15 +22,15 @@ stdenv.mkDerivation {
|
|||
|
||||
sourceRoot = ".";
|
||||
src = dlbin {
|
||||
x86_64-linux = "sha256-drcm2kz2csuJqr8Oqs0r1BrxgPHOyuwC2S+99MhbMjA=";
|
||||
aarch64-linux = "sha256-x8RoBmgY3HRUOLw8YzEwQfQuT83zGfBHHWu88b4i05o=";
|
||||
x86_64-linux = "sha256-ZzlPq+Q9XfWQJr+7nKS0e6bfKwYNfpMHSiBIKeOr/s4=";
|
||||
aarch64-linux = "sha256-75UC+HeVUfUk1HRvTJsOHbHHkgr6me1OtxDF7lahf68=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
buildPhase = ''
|
||||
mv release-v${version}/firecracker-v${version}-${suffix} firecracker
|
||||
mv release-v${version}/jailer-v${version}-${suffix} jailer
|
||||
mv release-v${version}-${suffix}/firecracker-v${version}-${suffix} firecracker
|
||||
mv release-v${version}-${suffix}/jailer-v${version}-${suffix} jailer
|
||||
chmod +x firecracker jailer
|
||||
'';
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ let
|
|||
};
|
||||
|
||||
installPhase = ''
|
||||
install -m444 -Dt $out/share/fonts/opentype/noto-cjk ${typeface}/Variable/OTC/*.otf.ttc
|
||||
install -m444 -Dt $out/share/fonts/opentype/noto-cjk ${typeface}/OTC/*.ttc
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -28,15 +28,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "elementary-calendar";
|
||||
version = "6.0.3";
|
||||
|
||||
repoName = "calendar";
|
||||
version = "6.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "elementary";
|
||||
repo = repoName;
|
||||
repo = "calendar";
|
||||
rev = version;
|
||||
sha256 = "sha256-+RQUiJLuCIbmcbtsOCfF9HYFrxtldZMbg2vg/a/IOaY=";
|
||||
sha256 = "sha256-LaVJ7QLc0UdSLgLIuHP4Anc7kPUelZW9PnIWuqKGtEQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -1,28 +1,23 @@
|
|||
{ lib, stdenv, fetchurl, autoconf, automake }:
|
||||
{ lib, stdenv, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "avra";
|
||||
version = "1.3.0";
|
||||
version = "1.4.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/avra/avra-${version}.tar.bz2";
|
||||
sha256 = "04lp0k0h540l5pmnaai07637f0p4zi766v6sfm7cryfaca3byb56";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Ro5bert";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-joOj89WZ9Si5fcu1w1VHj5fOcnB9N2313Yb29A+nCCY=";
|
||||
};
|
||||
|
||||
buildInputs = [ autoconf automake ];
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
preConfigure = ''
|
||||
cd src/
|
||||
|
||||
aclocal
|
||||
autoconf
|
||||
|
||||
touch NEWS README AUTHORS ChangeLog
|
||||
automake -a
|
||||
'';
|
||||
doCheck = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Assembler for the Atmel AVR microcontroller family";
|
||||
homepage = "http://avra.sourceforge.net/";
|
||||
homepage = "https://github.com/Ro5bert/avra";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.all;
|
||||
};
|
||||
|
|
|
@ -1,36 +1,45 @@
|
|||
{ lib, stdenv, fetchzip, fpc , lang ? "en" } :
|
||||
|
||||
assert lib.assertOneOf "lang" lang ["cn" "de" "en" "fr" "tr"];
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gavrasm";
|
||||
version = "4.5";
|
||||
version = "5.1";
|
||||
flatVersion = lib.strings.replaceStrings ["."] [""] version;
|
||||
|
||||
src = fetchzip {
|
||||
url ="http://www.avr-asm-tutorial.net/gavrasm/v45/gavrasm_sources_lin_45.zip";
|
||||
sha256 = "1f5g5ran74pznwj4g7vfqh2qhymaj3p26f2lvzbmlwq447iid52c";
|
||||
url = "http://www.avr-asm-tutorial.net/gavrasm/v${flatVersion}/gavrasm_sources_lin_${flatVersion}.zip";
|
||||
sha256 = "0k94f8k4980wvhx3dpl1savpx4wqv9r5090l0skg2k8vlhsv58gf";
|
||||
stripRoot=false;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ fpc ];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
cp gavrlang_${lang}.pas gavrlang.pas
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
fpc gavrasm.pas
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/bin
|
||||
cp gavrasm $out/bin
|
||||
mkdir -p $out/doc
|
||||
cp instr.asm $out/doc
|
||||
cp ReadMe.Txt $out/doc
|
||||
cp LiesMich.Txt $out/doc
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://www.avr-asm-tutorial.net/gavrasm";
|
||||
homepage = "http://www.avr-asm-tutorial.net/gavrasm/";
|
||||
description = "AVR Assembler for ATMEL AVR-Processors";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ mafo ];
|
||||
|
|
|
@ -7,8 +7,8 @@ stdenv.mkDerivation {
|
|||
src = fetchFromGitHub {
|
||||
owner = "revol-xut";
|
||||
repo = "lingua-franca-nix-releases";
|
||||
rev = "11c6d5297cd63bf0b365a68c5ca31ec80083bd05";
|
||||
sha256 = "DgxunzC8Ep0WdwChDHWgG5QJbJZ8UgQRXtP1HZqL9Jg=";
|
||||
rev = "d37bbfa530f0189c3e86ce0191134cdf42c6aec7";
|
||||
sha256 = "/qMBOjffvShCPcbh9rJ7aVgdgZQ1hilHakjLyEhSmgs=";
|
||||
};
|
||||
|
||||
buildInputs = [ jdk11_headless ];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, stdenv, fetchFromGitHub, cmake, boost, zlib }:
|
||||
{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, boost, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "assimp";
|
||||
|
@ -12,6 +12,15 @@ stdenv.mkDerivation rec {
|
|||
hash = "sha256-GNSfaP8O5IsjGwtC3DFaV4OiMMUXIcmHmz+5TCT/HP8=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix include directory with split outputs
|
||||
# https://github.com/assimp/assimp/pull/4337
|
||||
(fetchpatch {
|
||||
url = "https://github.com/assimp/assimp/commit/5dcaf445c3da079cf43890a0688428a7e1de0b30.patch";
|
||||
sha256 = "sha256-KwqTAoDPkhFq469+VaUuGoqfymu2bWLG9W3BvFvyU5I=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ boost zlib ];
|
||||
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, ffmpeg_3, SDL2, chromaprint, libebur128 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "4.3.0";
|
||||
pname = "libgroove";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "andrewrk";
|
||||
repo = "libgroove";
|
||||
rev = version;
|
||||
sha256 = "1la9d9kig50mc74bxvhx6hzqv0nrci9aqdm4k2j4q0s1nlfgxipd";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./no-warnings-as-errors.patch
|
||||
(fetchpatch {
|
||||
name = "update-for-ffmpeg-3.0.patch";
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/0001-update-for-ffmpeg-3.0.patch?h=libgroove&id=a9f3bd2a5afd3227733414a5d54c7a2aa0a1249e";
|
||||
sha256 = "0800drk9df1kwbv80f2ffv77xk888249fk0d961rp2a305hvyrk0";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ ffmpeg_3 SDL2 chromaprint libebur128 ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Streaming audio processing library";
|
||||
homepage = "https://github.com/andrewrk/libgroove";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ andrewrk ];
|
||||
};
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index a1e8541..6bc9c30 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -135,8 +135,8 @@ configure_file (
|
||||
"${PROJECT_BINARY_DIR}/config.h"
|
||||
)
|
||||
|
||||
-set(LIB_CFLAGS "${C99_C_FLAGS} -pedantic -Werror -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes -D_REENTRANT -D_POSIX_C_SOURCE=200809L")
|
||||
-set(EXAMPLE_CFLAGS "${C99_C_FLAGS} -pedantic -Werror -Wall -g")
|
||||
+set(LIB_CFLAGS "${C99_C_FLAGS} -pedantic -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes -D_REENTRANT -D_POSIX_C_SOURCE=200809L")
|
||||
+set(EXAMPLE_CFLAGS "${C99_C_FLAGS} -pedantic -Wall -g")
|
||||
set(EXAMPLE_INCLUDES "${PROJECT_SOURCE_DIR}")
|
||||
|
||||
add_library(groove SHARED ${LIBGROOVE_SOURCES} ${LIBGROOVE_HEADERS})
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libgsf";
|
||||
version = "1.14.47";
|
||||
version = "1.14.48";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "0kbpp9ksl7977xiga37sk1gdw1r039v6zviqznl7alvvg39yp26i";
|
||||
sha256 = "/4bX8dRt0Ovvt72DCnSkHbZDYrmHv4hT//arTBEyuDc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config intltool libintl ];
|
||||
|
|
|
@ -19,13 +19,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "umockdev";
|
||||
version = "0.17.5";
|
||||
version = "0.17.6";
|
||||
|
||||
outputs = [ "bin" "out" "dev" "devdoc" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/martinpitt/umockdev/releases/download/${version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-9mNKYFiQtzkBTQEuVWIfR9+e2jAqDszlHGMEQpcRe8U=";
|
||||
sha256 = "sha256-X60zN3orHU8lOfRVCfbHTdrleKxB7ILCIGvXSZLdoSk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -64,7 +64,7 @@ assert enableGeoLocation -> geoclue2 != null;
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "webkitgtk";
|
||||
version = "2.34.3";
|
||||
version = "2.34.4";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
|
@ -72,7 +72,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://webkitgtk.org/releases/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-DS83qjLiGjbk3Vpc565c4nQ1wp1oA7liuMkMsMxJxS0=";
|
||||
sha256 = "sha256-l19QGRmbp2mRkYNc914BoYuU47zQEH2nOJ1N3LGrpAY=";
|
||||
};
|
||||
|
||||
patches = lib.optionals stdenv.isLinux [
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, openssl
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -15,6 +16,12 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "sha256-/noS5cn8lllWoGyZ9QyjRmdiR6LXzfT4lYGEt+0+Bdw=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./scripts
|
||||
# ocsp tests require network access
|
||||
sed -i -e '/ocsp\.test/d' -e '/ocsp-stapling\.test/d' scripts/include.am
|
||||
'';
|
||||
|
||||
# Almost same as Debian but for now using --enable-all --enable-reproducible-build instead of --enable-distro to ensure options.h gets installed
|
||||
configureFlags = [
|
||||
"--enable-all"
|
||||
|
@ -36,6 +43,9 @@ stdenv.mkDerivation rec {
|
|||
autoreconfHook
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
checkInputs = [ openssl ];
|
||||
|
||||
postInstall = ''
|
||||
# fix recursive cycle:
|
||||
# wolfssl-config points to dev, dev propagates bin
|
||||
|
|
22
pkgs/development/nim-packages/jsony/default.nix
Normal file
22
pkgs/development/nim-packages/jsony/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
|||
{ lib, buildNimPackage, fetchFromGitHub }:
|
||||
|
||||
buildNimPackage rec {
|
||||
pname = "jsony";
|
||||
version = "1.1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "treeform";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-jtUCoqwCmE536Kpv/vZxGgqiHyReZf1WOiBdUzmMhM4=";
|
||||
};
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = with lib;
|
||||
src.meta // {
|
||||
description = "A loose, direct to object json parser with hooks";
|
||||
license = [ licenses.mit ];
|
||||
maintainers = [ maintainers.erdnaxe ];
|
||||
};
|
||||
}
|
|
@ -11,12 +11,12 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "azure-mgmt-subscription";
|
||||
version = "2.0.0";
|
||||
version = "3.0.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
extension = "zip";
|
||||
sha256 = "70ec6e3395549c434bfd981f8f76cb8b6863339bad9b31924c1510af661dbf45";
|
||||
sha256 = "157bd9123a5814473a9cd131832ea614c478548722ec01f47b35d778dc307d55";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "django-anymail";
|
||||
version = "8.4";
|
||||
version = "8.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "anymail";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "08ac24hrafkk1jg3milfjky3qni1cz5qggp1rgzq9r7ina4akjma";
|
||||
sha256 = "1p2c7hf9baxr8khk8h7y8d38imw4zm920dgd9nbda18vlh7gpbcf";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -11,13 +11,13 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "dogpile-cache";
|
||||
version = "1.1.4";
|
||||
version = "1.1.5";
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "dogpile.cache";
|
||||
inherit version;
|
||||
sha256 = "ea09bebf24bb7c028caf98963785fe9ad0bd397305849a3303bc5380d468d813";
|
||||
sha256 = "0f01bdc329329a8289af9705ff40fadb1f82a28c336f3174e12142b70d31c756";
|
||||
};
|
||||
|
||||
preCheck = ''
|
||||
|
|
|
@ -10,14 +10,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "dufte";
|
||||
version = "0.2.27";
|
||||
version = "0.2.29";
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nschloe";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1i68h224hx9clxj3l0rd2yigsi6fqsr3x10vj5hf3j6s69iah7r3";
|
||||
sha256 = "0ccsmpj160xj6w503a948aw8icj55mw9414xnmijmmjvlwhm0p48";
|
||||
};
|
||||
format = "pyproject";
|
||||
|
||||
|
@ -28,6 +28,13 @@ buildPythonPackage rec {
|
|||
importlib-metadata
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
mkdir -p $HOME/.config/matplotlib
|
||||
echo "backend: ps" > $HOME/.config/matplotlib/matplotlibrc
|
||||
ln -s $HOME/.config/matplotlib $HOME/.matplotlib
|
||||
'';
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
|
|
@ -11,14 +11,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "green";
|
||||
version = "3.4.0";
|
||||
version = "3.4.1";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = !isPy3k;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "6325681c94afd0f225c7ea2dcfedfde88c859d60da384d54c9ee70b91e434b14";
|
||||
sha256 = "5dda2d2a277012227011f8f21523d70a550ebe5d47cc890fa16b9fcd9a91da53";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -1,10 +1,23 @@
|
|||
{ lib, buildPythonPackage, fetchPypi, fetchpatch, isPy27, pythonAtLeast
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, pythonOlder
|
||||
, pytestCheckHook
|
||||
, atpublic
|
||||
, cached-property
|
||||
, clickhouse-driver
|
||||
, click
|
||||
, dask
|
||||
, graphviz
|
||||
, importlib-metadata
|
||||
, multipledispatch
|
||||
, numpy
|
||||
, pandas
|
||||
, parsy
|
||||
, pyarrow
|
||||
, pytest
|
||||
, pytest-mock
|
||||
, pytest-xdist
|
||||
, pytz
|
||||
, regex
|
||||
, requests
|
||||
|
@ -12,54 +25,117 @@
|
|||
, tables
|
||||
, toolz
|
||||
}:
|
||||
let
|
||||
# ignore tests for which dependencies are not available
|
||||
backends = [
|
||||
"csv"
|
||||
"dask"
|
||||
"hdf5"
|
||||
"pandas"
|
||||
"parquet"
|
||||
"sqlite"
|
||||
];
|
||||
|
||||
backendsString = lib.concatStringsSep " " backends;
|
||||
|
||||
ibisTestingData = fetchFromGitHub {
|
||||
owner = "ibis-project";
|
||||
repo = "testing-data";
|
||||
rev = "743201a35c6b968cf55b054f9d28949ea15d1f0a";
|
||||
sha256 = "sha256-xuSE6wHP3aF8lnEE2SuFbTRBu49ecRmc1F3HPcszptI=";
|
||||
};
|
||||
in
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "ibis-framework";
|
||||
version = "1.3.0";
|
||||
disabled = isPy27 || pythonAtLeast "3.8";
|
||||
version = "2.1.1";
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "1my94a11jzg1hv6ln8wxklbqrg6z5l2l77vr89aq0829yyxacmv7";
|
||||
src = fetchFromGitHub {
|
||||
repo = "ibis";
|
||||
owner = "ibis-project";
|
||||
rev = version;
|
||||
sha256 = "sha256-n3fR6wvcSfIo7760seB+5SxtoYSqQmqkzZ9VlNQF200=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# fix tests for pandas 1.1
|
||||
(fetchpatch {
|
||||
url = "https://github.com/ibis-project/ibis/commit/53ef3cefc4ae90d61f3612310cb36da2bcd11305.diff";
|
||||
sha256 = "1i5yjmqridjqpggiinsjaz5spcxca5bd48vy7a0mj4mm1b5flw2m";
|
||||
})
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
atpublic
|
||||
cached-property
|
||||
clickhouse-driver
|
||||
dask
|
||||
graphviz
|
||||
multipledispatch
|
||||
numpy
|
||||
pandas
|
||||
parsy
|
||||
pyarrow
|
||||
pytz
|
||||
regex
|
||||
toolz
|
||||
sqlalchemy
|
||||
requests
|
||||
graphviz
|
||||
sqlalchemy
|
||||
tables
|
||||
pyarrow
|
||||
];
|
||||
toolz
|
||||
] ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ];
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
click
|
||||
pytest
|
||||
pytest-mock
|
||||
pytest-xdist
|
||||
];
|
||||
|
||||
# ignore tests which require test dataset, or frameworks not available
|
||||
checkPhase = ''
|
||||
pytest ibis \
|
||||
--ignore=ibis/tests/all \
|
||||
--ignore=ibis/{sql,spark}
|
||||
# these tests are broken upstream: https://github.com/ibis-project/ibis/issues/3291
|
||||
disabledTests = [
|
||||
"test_summary_numeric"
|
||||
"test_summary_non_numeric"
|
||||
"test_batting_most_hits"
|
||||
"test_join_with_window_function"
|
||||
"test_where_long"
|
||||
"test_quantile_groupby"
|
||||
"test_summary_numeric"
|
||||
"test_summary_numeric_group_by"
|
||||
"test_summary_non_numeric"
|
||||
"test_searched_case_column"
|
||||
"test_simple_case_column"
|
||||
"test_summary_non_numeric_group_by"
|
||||
];
|
||||
|
||||
pytestFlagsArray = [
|
||||
"--numprocesses $NIX_BUILD_CORES"
|
||||
"ibis/tests"
|
||||
"ibis/backends/tests"
|
||||
"ibis/backends/{${lib.concatStringsSep "," backends}}/tests"
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
set -euo pipefail
|
||||
|
||||
export IBIS_TEST_DATA_DIRECTORY
|
||||
IBIS_TEST_DATA_DIRECTORY="$(mktemp -d)"
|
||||
|
||||
# copy the test data to a writable directory
|
||||
cp -r ${ibisTestingData}/* "$IBIS_TEST_DATA_DIRECTORY"
|
||||
|
||||
find "$IBIS_TEST_DATA_DIRECTORY" -type d -exec chmod u+rwx {} +
|
||||
find "$IBIS_TEST_DATA_DIRECTORY" -type f -exec chmod u+rw {} +
|
||||
|
||||
# load data
|
||||
for backend in ${backendsString}; do
|
||||
python ci/datamgr.py "$backend" &
|
||||
done
|
||||
|
||||
wait
|
||||
|
||||
export PYTEST_BACKENDS="${backendsString}"
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "ibis" ] ++ (map (backend: "ibis.backends.${backend}") backends);
|
||||
|
||||
meta = with lib; {
|
||||
description = "Productivity-centric Python Big Data Framework";
|
||||
homepage = "https://github.com/ibis-project/ibis";
|
||||
license = licenses.asl20;
|
||||
maintainers = [ maintainers.costrouc ];
|
||||
maintainers = with maintainers; [ costrouc cpcloud ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,12 +9,12 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "imbalanced-learn";
|
||||
version = "0.8.1";
|
||||
version = "0.9.0";
|
||||
disabled = isPy27; # scikit-learn>=0.21 doesn't work on python2
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "eaf576b1ba3523a0facf3aaa483ca17e326301e53e7678c54d73b7e0250edd43";
|
||||
sha256 = "836a4c137cc3c10310d4f6cd5ec34600ff488d7f8c243a997c3f9b551c91d0b2";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ scikit-learn ];
|
||||
|
|
|
@ -20,11 +20,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "internetarchive";
|
||||
version = "2.2.0";
|
||||
version = "2.3.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "ebd11ecd038c71e75a3aef8d87750b46480169ecaefb23074c4ae48440bf2836";
|
||||
sha256 = "fa89dc4be3e0a0aee24810a4a754e24adfd07edf710c645b4f642422c6078b8d";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
28
pkgs/development/python-modules/ipwhl/default.nix
Normal file
28
pkgs/development/python-modules/ipwhl/default.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ lib, buildPythonPackage, pythonOlder, fetchFromSourcehut
|
||||
, ipfs, packaging, tomli }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "ipwhl";
|
||||
version = "1.0.0";
|
||||
format = "flit";
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~cnx";
|
||||
repo = "ipwhl-utils";
|
||||
rev = version;
|
||||
sha256 = "sha256-KstwdmHpn4ypBNpX56NeStqdzy5RElMTW1oR2hCtJ7c=";
|
||||
};
|
||||
|
||||
buildInputs = [ ipfs ];
|
||||
propagatedBuildInputs = [ packaging tomli ];
|
||||
doCheck = false; # there's no test
|
||||
pythonImportsCheck = [ "ipwhl" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utilities for the InterPlanetary Wheels";
|
||||
homepage = "https://git.sr.ht/~cnx/ipwhl-utils";
|
||||
license = licenses.agpl3Plus;
|
||||
maintainers = [ maintainers.McSinyx ];
|
||||
};
|
||||
}
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "jsmin";
|
||||
version = "2.2.2";
|
||||
version = "3.0.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0fsmqbjvpxvff0984x7c0y8xmf49ax9mncz48b9xjx8wrnr9kpxn";
|
||||
sha256 = "c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -15,20 +15,20 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "orjson";
|
||||
version = "3.6.5";
|
||||
version = "3.6.6";
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ijl";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1f8gc62w4hncrz8xkfw730cfqnk5433qswz3rba3pvvd7ldj5658";
|
||||
sha256 = "00s8pwvq830h2y77pwx1i2vfvnzisvp41qhzqcp1piyc3pwxfc13";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
sha256 = "0jlhzdnfyk7hnn74rz9zbx51sdjs6rwlzfl1g62h58x28xh6m6gb";
|
||||
sha256 = "0l1zvkr06kwclgxy1qz9fxa1gjrpf5nnx6hb12j4ymyyxpcmn8rz";
|
||||
};
|
||||
|
||||
format = "pyproject";
|
||||
|
|
|
@ -8,12 +8,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "pymazda";
|
||||
version = "0.3.0";
|
||||
version = "0.3.1";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-D0odz4GkKvjuafhEGlHtRnO8lk4rV9y3imaHl7jXqJw=";
|
||||
sha256 = "eb4b275bcdfbf947e00b27c20dfc8ebcedfc1fb1252449141eccb5c39d782440";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -23,7 +25,10 @@ buildPythonPackage rec {
|
|||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
pythonImportsCheck = [ "pymazda" ];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"pymazda"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python client for interacting with the MyMazda API";
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "pywayland";
|
||||
version = "0.4.8";
|
||||
version = "0.4.9";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "abby4o9LmiRZwNkPhYfFOWgRtxU8e5CURQnutz6cWjQ=";
|
||||
sha256 = "EJ/Ul1ZpIQa5Mw6UmkRi7GC+b+mCMqhto6EsfNjpCdg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
|
|
@ -24,12 +24,12 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "snowflake-connector-python";
|
||||
version = "2.7.2";
|
||||
version = "2.7.3";
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "b2f8f360750eefa98be09ff53c130381646f8dfc8c6e4a705387676210ff8578";
|
||||
sha256 = "026562392d8733bdfaddcd5ec1537a139940df46a3a225849a36c71c1bf3e61c";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -6,14 +6,14 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "sphinx-inline-tabs";
|
||||
version = "2021.08.17.beta10";
|
||||
version = "2022.01.02.beta11";
|
||||
format = "flit";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pradyunsg";
|
||||
repo = "sphinx-inline-tabs";
|
||||
rev = version;
|
||||
sha256 = "sha256-T3OqK0eXNiBs2zQURCSPLc8aIyf2an32UyDh4qSmxQ4=";
|
||||
sha256 = "sha256-k2nOidUk87EZbFsqQ7zr/4eHk+T7wUOYimjbllfneUM=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "stripe";
|
||||
version = "2.64.0";
|
||||
version = "2.65.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "2f4b2175046104e4fcd8a2689a68bb9828a857814126d2ed13772cf2554fb93e";
|
||||
sha256 = "2e55d4d7262085de9cef2228f14581925c35350ba58a332352b1ec9e19a7b7a6";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ requests ];
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "svglib";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "520ee5290ee2ebeebd20ca0d7d995c08c903b364fcf515826bab43a1288d422e";
|
||||
sha256 = "33f075dc853807e56e92d6dc404104c6ccc7fb5388d96ab943d7b349b1c924c7";
|
||||
};
|
||||
|
||||
disabled = !isPy3k;
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "tern";
|
||||
version = "2.9.0";
|
||||
version = "2.9.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "9cb509dba91718feecefd302388a89d4782454f6613e8f931ec8de87a6594de0";
|
||||
sha256 = "c7ce55a500061e1160b040e75dc38d0eccc790a2b70fa3b7ad1b4fb715c18fc9";
|
||||
};
|
||||
|
||||
preBuild = ''
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "teslajsonpy";
|
||||
version = "1.5.0";
|
||||
version = "1.6.0";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
@ -24,7 +24,7 @@ buildPythonPackage rec {
|
|||
owner = "zabuldon";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-5ZGj3ZS+KGtnlphyUF1xb9e2XuHa4qbOWWtyzZwP1RM=";
|
||||
sha256 = "1jxdfk2ka131spnfkl35lnzvkgwgsbs5xl3hsjj03q1nfjcqvx9l";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "tinydb";
|
||||
version = "4.5.2";
|
||||
version = "4.6.1";
|
||||
disabled = pythonOlder "3.5";
|
||||
format = "pyproject";
|
||||
|
||||
|
@ -18,7 +18,7 @@ buildPythonPackage rec {
|
|||
owner = "msiemens";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0gyc9rk1adw4gynwnv4kfas0hxv1cql0sm5b3fsms39088ha894l";
|
||||
sha256 = "17m8g6xzwa0k8qb4k4p9hjcyv58gmxz1lkvr2ckc5csa0ydvv91a";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "types-futures";
|
||||
version = "3.3.2";
|
||||
version = "3.3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "f47bf00704ef8ff05726a7e86fcf0986de998992fbdd880986121baa8b7184bf";
|
||||
sha256 = "d286db818fb67e3ce5c28acd9058c067329b91865acc443ac3cf91497fa36f05";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -6,12 +6,12 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "types-protobuf";
|
||||
version = "3.18.4";
|
||||
version = "3.19.5";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "2aed45e5257e9adebce306637179bfa111d42ecdd523e2a13d30cf8b2ee3cc84";
|
||||
sha256 = "9e3d954de5f5693817514b8da3476daa22f035d2b8060217c78c3831a1a49c23";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "types-urllib3";
|
||||
version = "1.26.4";
|
||||
version = "1.26.7";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-NcF74J4bzvOx4hAcUXK5fNt4MwkVlzx0H0wZedhAXvk=";
|
||||
hash = "sha256-z9H7vkuppgXtFIKUAIqsinuLdHJlHRzDV9UHrlli49I=";
|
||||
};
|
||||
|
||||
# Module doesn't have tests
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "vertica-python";
|
||||
version = "1.0.2";
|
||||
version = "1.0.3";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "ce0abfc5909d06031dc612ec321d7f75df50bcb47a31e14e882a299cea2ea7a3";
|
||||
sha256 = "cfe1794c5ba9fdfbd470a55d82f60c2e08e129828367753bf64199a58a539bc2";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ future python-dateutil six ];
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "wrf-python";
|
||||
version = "1.3.2";
|
||||
version = "1.3.2.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NCAR";
|
||||
repo = "wrf-python";
|
||||
rev = version;
|
||||
sha256 = "1rklkki54z5392cpwwy78bnmsy2ghc187l3j7nv0rzn6jk5bvyi7";
|
||||
sha256 = "046kflai71r7xrmdw6jn0ifn5656wj9gpnwlgxkx430dgk7zbc2y";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "youtube-search-python";
|
||||
version = "1.5.3";
|
||||
version = "1.6.0";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "4bc39224d1f0915692101a7739289c41173de2eb88b445aabc7be284802b7489";
|
||||
sha256 = "57efe3ac32bdedc8378d907b230191a7de3ed22d0359d7b55d8355039231f974";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ httpx ];
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "zigpy-znp";
|
||||
version = "0.6.4";
|
||||
version = "0.7.0";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
@ -27,7 +27,7 @@ buildPythonPackage rec {
|
|||
owner = "zigpy";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0hz483wqzpdaap96gbjasisxd4wy8f4lslnspcvzqcf4dy1mxln6";
|
||||
sha256 = "0h6dclz4q4lvmapzpslh8kb0aihdjddbkxc4zc981glbip89li5w";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
|
@ -7,11 +7,11 @@
|
|||
|
||||
buildPythonPackage rec {
|
||||
pname = "zstandard";
|
||||
version = "0.16.0";
|
||||
version = "0.17.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "eaae2d3e8fdf8bfe269628385087e4b648beef85bb0c187644e7df4fb0fe9046";
|
||||
sha256 = "fa9194cb91441df7242aa3ddc4cb184be38876cb10dd973674887f334bafbfb6";
|
||||
};
|
||||
|
||||
propagatedNativeBuildInputs = [ cffi ];
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "ddosify";
|
||||
version = "0.7.1";
|
||||
version = "0.7.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-QzNMUeA9oOZaNZDGf9TXloZ5r2prDHTRX1wso3fSetc=";
|
||||
sha256 = "sha256-QLJB2WcnguknEMdgwJzltp++mJCL4cFOWU568aTk0sc=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-TY8shTb77uFm8/yCvlIncAfq7brWgnH/63W+hj1rvqg=";
|
||||
|
|
|
@ -19,15 +19,15 @@
|
|||
}:
|
||||
|
||||
let
|
||||
buildNum = "2021-06-30-819";
|
||||
buildNum = "2022-01-18-884";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rgp";
|
||||
version = "1.11";
|
||||
version = "1.12";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gpuopen.com/download/radeon-developer-tool-suite/RadeonDeveloperToolSuite-${buildNum}.tgz";
|
||||
sha256 = "ru+e/oY844x4nvSVRBrTGDdnzUOBhwkaIrnftBITyE8=";
|
||||
sha256 = "88ot16N8XtRlDCP+zIaOqG5BuR0OyG/0u1NEXsun/nY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper autoPatchelfHook ];
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "sentry-cli";
|
||||
version = "1.71.0";
|
||||
version = "1.72.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "getsentry";
|
||||
repo = "sentry-cli";
|
||||
rev = version;
|
||||
sha256 = "0iw6skcxnqqa0vj5q1ra855gxgjj9a26hj85nm9p49ai5l85bkgv";
|
||||
sha256 = "sha256-2Aj2Y0c8JR8s6Ek7sZfU+5RENkoCVSAxtOvkHilfb48=";
|
||||
};
|
||||
doCheck = false;
|
||||
|
||||
|
@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec {
|
|||
buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
cargoSha256 = "0n9354mm97z3n001airipq8k58i7lg20p2m9yfx9y0zhsagyhmj8";
|
||||
cargoSha256 = "sha256-sSIQ7Wa0otbq82WELxP3oFYa1FoaoZz2jCB59Ob6zNM=";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://docs.sentry.io/cli/";
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "skaffold";
|
||||
version = "1.35.1";
|
||||
version = "1.35.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GoogleContainerTools";
|
||||
repo = "skaffold";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-8Ye2eR9eB7oyYOo46OraOxfLOG/XphWJkk+xPzDthPU=";
|
||||
sha256 = "sha256-s1gkfgpQhmXgbU0iGu71a+cMQsInGTf7GUb8h2SK9qs=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-jr4HEs2mTRPNAiV/OWUnjYyQ1uSUJfVOTNCRi/18tEo=";
|
||||
|
@ -24,6 +24,11 @@ buildGoModule rec {
|
|||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
doInstallCheck = true;
|
||||
installCheckPhase = ''
|
||||
$out/bin/skaffold version | grep ${version} > /dev/null
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd skaffold \
|
||||
--bash <($out/bin/skaffold completion bash) \
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "vultr-cli";
|
||||
version = "2.11.3";
|
||||
version = "2.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vultr";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-UI7D5bvfyGsNa6Gd1XuFu1VgiIQJ/b0g6DQlsJbaocI=";
|
||||
sha256 = "sha256-mT99flZAAhLSynD/8+fa74Mc3KK8pVs+OOFDYNSBzEE=";
|
||||
};
|
||||
|
||||
vendorSha256 = null;
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "yq-go";
|
||||
version = "4.16.2";
|
||||
version = "4.17.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mikefarah";
|
||||
repo = "yq";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-qJZDFyBSiaS0cUcfEz1P+b5Z6Tb//KKWeYqNJpdOh9Q=";
|
||||
sha256 = "sha256-jfb/r4Z8i23A0e4cJqZoG2TPXGVFOf64FfnZy/keAeQ=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-6J+pHWiswDRxCFdRj/d+6+QLxEF207vTyfnPq5tP30o=";
|
||||
vendorSha256 = "sha256-0eaD4oT6DyCWkJ0He4A7ysOEJD8CtFH6diQYBuEOoIk=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "r2mod_cli";
|
||||
version = "1.2.0";
|
||||
version = "1.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Foldex";
|
||||
repo = "r2mod_cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-VNqdVDBR6+eNOeUthPXLfz+0VoaNfSj4f04HLvjg6/0=";
|
||||
sha256 = "sha256-FS9P/uTZU4d6zpM3TlEW6i6PLGHxqqO2fc8D7VsPCig=";
|
||||
};
|
||||
|
||||
buildInputs = [ bashInteractive ];
|
||||
|
|
|
@ -274,6 +274,13 @@ in {
|
|||
filesToInstall = ["u-boot-dtb.bin"];
|
||||
};
|
||||
|
||||
ubootOlimexA64Olinuxino = buildUBoot {
|
||||
defconfig = "a64-olinuxino-emmc_defconfig";
|
||||
extraMeta.platforms = ["aarch64-linux"];
|
||||
BL31 = "${armTrustedFirmwareAllwinner}/bl31.bin";
|
||||
filesToInstall = ["u-boot-sunxi-with-spl.bin"];
|
||||
};
|
||||
|
||||
ubootOrangePiPc = buildUBoot {
|
||||
defconfig = "orangepi_pc_defconfig";
|
||||
extraMeta.platforms = ["armv7l-linux"];
|
||||
|
|
|
@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
nativeBuildInputs = [
|
||||
autoconf automake pkg-config libtool gettext which gobject-introspection
|
||||
gtk-doc libxslt docbook_xml_dtd_412 docbook_xml_dtd_43 docbook_xsl util-linux
|
||||
gtk-doc libxslt docbook_xml_dtd_412 docbook_xml_dtd_43 docbook_xsl
|
||||
];
|
||||
|
||||
postPatch = lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||
|
@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
|
|||
'';
|
||||
|
||||
buildInputs = [
|
||||
expat libgudev libblockdev acl systemd glib libatasmart polkit
|
||||
expat libgudev libblockdev acl systemd glib libatasmart polkit util-linux
|
||||
];
|
||||
|
||||
preConfigure = "NOCONFIGURE=1 ./autogen.sh";
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "riemann";
|
||||
version = "0.3.7";
|
||||
version = "0.3.8";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/riemann/riemann/releases/download/${version}/${pname}-${version}.tar.bz2";
|
||||
sha256 = "sha256-WpJsmb74RhMMKGdNHcYcG4TA+QgpliQ2Ae89JkIjaAo=";
|
||||
sha256 = "sha256-MjTUrqdi9K71PhpLzR3lqdOiNM7Ilmh8HWf3BUOr+b0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
|
|
@ -71,7 +71,6 @@ let
|
|||
# Commercial services
|
||||
qobuz = [ curl libgcrypt yajl ];
|
||||
soundcloud = [ curl yajl ];
|
||||
tidal = [ curl yajl ];
|
||||
# Client support
|
||||
libmpdclient = [ libmpdclient ];
|
||||
# Tag support
|
||||
|
@ -196,7 +195,7 @@ in
|
|||
"lame" "libsamplerate" "shout"
|
||||
"libmpdclient" "id3tag" "expat" "pcre"
|
||||
"yajl" "sqlite"
|
||||
"soundcloud" "qobuz" "tidal"
|
||||
"soundcloud" "qobuz"
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
"alsa" "systemd" "syslog" "io_uring"
|
||||
] ++ lib.optionals (!stdenv.isDarwin) [
|
||||
|
|
|
@ -2,32 +2,29 @@
|
|||
|
||||
nimPackages.buildNimPackage rec {
|
||||
pname = "nitter";
|
||||
version = "unstable-2021-12-31";
|
||||
version = "unstable-2022-01-32";
|
||||
nimBinOnly = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "zedeus";
|
||||
repo = "nitter";
|
||||
rev = "9d117aa15b3c3238cee79acd45d655eeb0e46293";
|
||||
sha256 = "06hd3r1kgxx83sl5ss90r39v815xp2ki72fc8p64kid34mcn57cz";
|
||||
rev = "cdb4efadfeb5102b501c7ff79261fefc7327edb9";
|
||||
sha256 = "sha256-kNK0UQd1whkaZwj98b2JYtYwjUSE1qBcAYytqnSaK1o=";
|
||||
};
|
||||
|
||||
buildInputs = with nimPackages; [
|
||||
jester
|
||||
karax
|
||||
sass
|
||||
regex
|
||||
unicodedb
|
||||
unicodeplus
|
||||
segmentation
|
||||
nimcrypto
|
||||
markdown
|
||||
packedjson
|
||||
supersnappy
|
||||
redpool
|
||||
flatty
|
||||
zippy
|
||||
redis
|
||||
zippy
|
||||
flatty
|
||||
jsony
|
||||
];
|
||||
|
||||
postBuild = ''
|
||||
|
|
|
@ -16,14 +16,14 @@ let
|
|||
}."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
|
||||
hash = {
|
||||
x64-linux_hash = "sha256-L34dvileSSJxdhNwXC5iBChUM4r6hwncTHIBjWH20XE=";
|
||||
arm64-linux_hash = "sha256-cT0UcN9otaGbMXoxlxJosYFtWzA8lRvekdleUSaxN0E=";
|
||||
x64-osx_hash = "sha256-7a34R7PsgEzY4u7NKNR0LaVxonhhDNqjwQxEXaJbAww=";
|
||||
x64-linux_hash = "sha256-pkuq7waABHEo6gx6d3qJs4IXFu0EcrdpsQdKoMkjN3s=";
|
||||
arm64-linux_hash = "sha256-+BLyb6mygCFQfe7u/MbGbJROF7XT0wdRPi08izI6u8c=";
|
||||
x64-osx_hash = "sha256-f5EHxxXdXzj8x6BmTZCHQ9p8Sl8T0Rxe/K9FwTzbR4Q=";
|
||||
}."${arch}-${os}_hash";
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "prowlarr";
|
||||
version = "0.1.9.1313";
|
||||
version = "0.1.10.1375";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/Prowlarr/Prowlarr/releases/download/v${version}/Prowlarr.develop.${version}.${os}-core-${arch}.tar.gz";
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
# Native buildInputs components
|
||||
, bison, boost, cmake, fixDarwinDylibNames, flex, makeWrapper, pkg-config
|
||||
# Common components
|
||||
, curl, libiconv, ncurses, openssl, pcre2
|
||||
, libkrb5, liburing, systemd
|
||||
, curl, libiconv, ncurses, openssl, pcre, pcre2
|
||||
, libkrb5, libaio, liburing, systemd
|
||||
, CoreServices, cctools, perl
|
||||
, jemalloc, less
|
||||
# Server components
|
||||
|
@ -14,36 +14,37 @@
|
|||
, withStorageRocks ? true
|
||||
}:
|
||||
|
||||
with lib;
|
||||
|
||||
let # in mariadb # spans the whole file
|
||||
|
||||
libExt = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
|
||||
mytopEnv = perl.withPackages (p: with p; [ DBDmysql DBI TermReadKey ]);
|
||||
|
||||
mariadb = server // {
|
||||
inherit client; # MariaDB Client
|
||||
server = server; # MariaDB Server
|
||||
mariadbPackage = packageSettings: (server packageSettings) // {
|
||||
client = client packageSettings; # MariaDB Client
|
||||
server = server packageSettings; # MariaDB Server
|
||||
};
|
||||
|
||||
common = rec { # attributes common to both builds
|
||||
version = "10.6.5";
|
||||
commonOptions = packageSettings: rec { # attributes common to both builds
|
||||
inherit (packageSettings) version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.mariadb.com/MariaDB/mariadb-${version}/source/mariadb-${version}.tar.gz";
|
||||
sha256 = "sha256-4L4EBCjZpCqLtL0iG1Z/8lIs1vqJBjhic9pPA8XCCo8=";
|
||||
inherit (packageSettings) sha256;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ]
|
||||
++ optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames
|
||||
++ optional (!stdenv.hostPlatform.isDarwin) makeWrapper;
|
||||
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames
|
||||
++ lib.optional (!stdenv.hostPlatform.isDarwin) makeWrapper;
|
||||
|
||||
buildInputs = [
|
||||
curl libiconv ncurses openssl pcre2 zlib
|
||||
] ++ optionals stdenv.hostPlatform.isLinux [ libkrb5 liburing systemd ]
|
||||
++ optionals stdenv.hostPlatform.isDarwin [ CoreServices cctools perl ]
|
||||
++ optional (!stdenv.hostPlatform.isDarwin) [ jemalloc ];
|
||||
curl libiconv ncurses openssl zlib
|
||||
] ++ (packageSettings.extraBuildInputs or [])
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux ([ libkrb5 systemd ]
|
||||
++ (if (lib.versionOlder version "10.6") then [ libaio ] else [ liburing ]))
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [ CoreServices cctools perl ]
|
||||
++ lib.optional (!stdenv.hostPlatform.isDarwin) [ jemalloc ]
|
||||
++ (if (lib.versionOlder version "10.5") then [ pcre ] else [ pcre2 ]);
|
||||
|
||||
prePatch = ''
|
||||
sed -i 's,[^"]*/var/log,/var/log,g' storage/mroonga/vendor/groonga/CMakeLists.txt
|
||||
|
@ -54,7 +55,7 @@ common = rec { # attributes common to both builds
|
|||
]
|
||||
# Fixes a build issue as documented on
|
||||
# https://jira.mariadb.org/browse/MDEV-26769?focusedCommentId=206073&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-206073
|
||||
++ lib.optional (!stdenv.isLinux) ./patch/macos-MDEV-26769-regression-fix.patch;
|
||||
++ lib.optional (!stdenv.hostPlatform.isLinux && lib.versionAtLeast version "10.6") ./patch/macos-MDEV-26769-regression-fix.patch;
|
||||
|
||||
cmakeFlags = [
|
||||
"-DBUILD_CONFIG=mysql_release"
|
||||
|
@ -86,7 +87,7 @@ common = rec { # attributes common to both builds
|
|||
"-DWITH_SAFEMALLOC=OFF"
|
||||
"-DWITH_UNIT_TESTS=OFF"
|
||||
"-DEMBEDDED_LIBRARY=OFF"
|
||||
] ++ optionals stdenv.hostPlatform.isDarwin [
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
# On Darwin without sandbox, CMake will find the system java and attempt to build with java support, but
|
||||
# then it will fail during the actual build. Let's just disable the flag explicitly until someone decides
|
||||
# to pass in java explicitly.
|
||||
|
@ -98,37 +99,39 @@ common = rec { # attributes common to both builds
|
|||
# Remove Development components. Need to use libmysqlclient.
|
||||
rm "$out"/lib/mysql/plugin/daemon_example.ini
|
||||
rm "$out"/lib/{libmariadbclient.a,libmysqlclient.a,libmysqlclient_r.a,libmysqlservices.a}
|
||||
rm "$out"/bin/{mariadb-config,mariadb_config,mysql_config}
|
||||
rm -f "$out"/bin/{mariadb-config,mariadb_config,mysql_config}
|
||||
rm -r $out/include
|
||||
rm -r $out/lib/pkgconfig
|
||||
'';
|
||||
|
||||
# perlPackages.DBDmysql is broken on darwin
|
||||
postFixup = optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||
wrapProgram $out/bin/mytop --set PATH ${makeBinPath [ less ncurses ]}
|
||||
postFixup = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||
wrapProgram $out/bin/mytop --set PATH ${lib.makeBinPath [ less ncurses ]}
|
||||
'';
|
||||
|
||||
passthru.mysqlVersion = "5.7";
|
||||
|
||||
passthru.tests = {
|
||||
mariadb-galera-mariabackup = nixosTests.mariadb-galera-mariabackup;
|
||||
mariadb-galera-rsync = nixosTests.mariadb-galera-rsync;
|
||||
mysql = nixosTests.mysql;
|
||||
mysql-autobackup = nixosTests.mysql-autobackup;
|
||||
mysql-backup = nixosTests.mysql-backup;
|
||||
mysql-replication = nixosTests.mysql-replication;
|
||||
passthru.tests = let
|
||||
testVersion = "mariadb_${builtins.replaceStrings ["."] [""] (lib.versions.majorMinor (packageSettings.version))}";
|
||||
in {
|
||||
mariadb-galera-rsync = nixosTests.mariadb-galera.${testVersion};
|
||||
mysql = nixosTests.mysql.${testVersion};
|
||||
mysql-autobackup = nixosTests.mysql-autobackup.${testVersion};
|
||||
mysql-backup = nixosTests.mysql-backup.${testVersion};
|
||||
mysql-replication = nixosTests.mysql-replication.${testVersion};
|
||||
};
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
description = "An enhanced, drop-in replacement for MySQL";
|
||||
homepage = "https://mariadb.org/";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ thoughtpolice ];
|
||||
maintainers = with maintainers; [ thoughtpolice ajs124 das_j ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
};
|
||||
|
||||
client = stdenv.mkDerivation (common // {
|
||||
client = packageSettings: let
|
||||
common = commonOptions packageSettings;
|
||||
|
||||
in stdenv.mkDerivation (common // {
|
||||
pname = "mariadb-client";
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
@ -153,7 +156,10 @@ client = stdenv.mkDerivation (common // {
|
|||
'';
|
||||
});
|
||||
|
||||
server = stdenv.mkDerivation (common // {
|
||||
server = packageSettings: let
|
||||
common = commonOptions packageSettings;
|
||||
|
||||
in stdenv.mkDerivation (common // {
|
||||
pname = "mariadb-server";
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
@ -163,11 +169,11 @@ server = stdenv.mkDerivation (common // {
|
|||
buildInputs = common.buildInputs ++ [
|
||||
bzip2 lz4 lzo snappy xz zstd
|
||||
cracklib judy libevent libxml2
|
||||
] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) numactl
|
||||
++ optionals stdenv.hostPlatform.isLinux [ linux-pam ]
|
||||
++ optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) pmdk.dev
|
||||
++ optional (!stdenv.hostPlatform.isDarwin) mytopEnv
|
||||
++ optionals withStorageMroonga [ kytea libsodium msgpack zeromq ];
|
||||
] ++ lib.optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) numactl
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [ linux-pam ]
|
||||
++ lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) pmdk.dev
|
||||
++ lib.optional (!stdenv.hostPlatform.isDarwin) mytopEnv
|
||||
++ lib.optionals withStorageMroonga [ kytea libsodium msgpack zeromq ];
|
||||
|
||||
patches = common.patches;
|
||||
|
||||
|
@ -188,38 +194,54 @@ server = stdenv.mkDerivation (common // {
|
|||
"-DWITHOUT_EXAMPLE=1"
|
||||
"-DWITHOUT_FEDERATED=1"
|
||||
"-DWITHOUT_TOKUDB=1"
|
||||
] ++ optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) [
|
||||
] ++ lib.optional (stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isAarch32) [
|
||||
"-DWITH_NUMA=ON"
|
||||
] ++ optional (!withStorageMroonga) [
|
||||
] ++ lib.optional (!withStorageMroonga) [
|
||||
"-DWITHOUT_MROONGA=1"
|
||||
] ++ optional (!withStorageRocks) [
|
||||
] ++ lib.optional (!withStorageRocks) [
|
||||
"-DWITHOUT_ROCKSDB=1"
|
||||
] ++ optional (!stdenv.hostPlatform.isDarwin && withStorageRocks) [
|
||||
] ++ lib.optional (!stdenv.hostPlatform.isDarwin && withStorageRocks) [
|
||||
"-DWITH_ROCKSDB_JEMALLOC=ON"
|
||||
] ++ optional (!stdenv.hostPlatform.isDarwin) [
|
||||
] ++ lib.optional (!stdenv.hostPlatform.isDarwin) [
|
||||
"-DWITH_JEMALLOC=yes"
|
||||
] ++ optionals stdenv.hostPlatform.isDarwin [
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
"-DPLUGIN_AUTH_PAM=OFF"
|
||||
"-DWITHOUT_OQGRAPH=1"
|
||||
"-DWITHOUT_PLUGIN_S3=1"
|
||||
];
|
||||
|
||||
preConfigure = optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||
preConfigure = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||
patchShebangs scripts/mytop.sh
|
||||
'';
|
||||
|
||||
postInstall = common.postInstall + ''
|
||||
rm -r "$out"/share/aclocal
|
||||
chmod +x "$out"/bin/wsrep_sst_common
|
||||
rm "$out"/bin/{mariadb-client-test,mariadb-test,mysql_client_test,mysqltest}
|
||||
'' + optionalString withStorageMroonga ''
|
||||
rm -f "$out"/bin/{mariadb-client-test,mariadb-test,mysql_client_test,mysqltest}
|
||||
'' + lib.optionalString withStorageMroonga ''
|
||||
mv "$out"/share/{groonga,groonga-normalizer-mysql} "$out"/share/doc/mysql
|
||||
'' + optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||
'' + lib.optionalString (!stdenv.hostPlatform.isDarwin && lib.versionAtLeast common.version "10.4") ''
|
||||
mv "$out"/OFF/suite/plugins/pam/pam_mariadb_mtr.so "$out"/share/pam/lib/security
|
||||
mv "$out"/OFF/suite/plugins/pam/mariadb_mtr "$out"/share/pam/etc/security
|
||||
rm -r "$out"/OFF
|
||||
'';
|
||||
|
||||
CXXFLAGS = optionalString stdenv.hostPlatform.isi686 "-fpermissive";
|
||||
CXXFLAGS = lib.optionalString stdenv.hostPlatform.isi686 "-fpermissive";
|
||||
});
|
||||
in mariadb
|
||||
in {
|
||||
mariadb_104 = mariadbPackage {
|
||||
# Supported until 2024-06-18
|
||||
version = "10.4.22";
|
||||
sha256 = "000ca1hdnj2jg051cjgdd2ralgwgh2p8nwb1x6b85202xdpc7ga4";
|
||||
};
|
||||
mariadb_105 = mariadbPackage {
|
||||
# Supported until 2025-06-24
|
||||
version = "10.5.13";
|
||||
sha256 = "0n0w1pyypv6wsknaqyykj3lc9zv6smji4q5jcf90w4rid330iw0n";
|
||||
};
|
||||
mariadb_106 = mariadbPackage {
|
||||
# Supported until 2026-07
|
||||
version = "10.6.5";
|
||||
sha256 = "13qaqb2h6kysfdi3h1l9zbb2qlpjgxb1n8mxnj5jm96r50209gp0";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "tailscale";
|
||||
version = "1.20.1";
|
||||
version = "1.20.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tailscale";
|
||||
repo = "tailscale";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-n+94ipR1w63NS2tzMsJWY4oxeTBEWrp8e2gF+CTpvrI=";
|
||||
sha256 = "sha256-uW/C4Bks7qGJEQhPoqd2LSk8MAD9gcDRsJbbowgsSuY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.isLinux [ makeWrapper ];
|
||||
|
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "traefik";
|
||||
version = "2.5.6";
|
||||
version = "2.5.7";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/traefik/traefik/releases/download/v${version}/traefik-v${version}.src.tar.gz";
|
||||
sha256 = "sha256-HHJTfAigUH7C0VuKUeGypqFlQwVdy05Ki/aTxDsl+tg=";
|
||||
sha256 = "sha256-CQXrAKdfNqGKXw3Ds47uq6ALsDh6JRf+94axOvLzWbE=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-DqjqJPyoFlCjIIaHYS5jrROQWDxZk+RGfccC2jYZ8LE=";
|
||||
vendorSha256 = "sha256-aZemr1waV2hIujbI+1PrivXxa1RrT0Ams4xT4QxTQPY=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
@ -18,16 +18,16 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "nushell";
|
||||
version = "0.42.0";
|
||||
version = "0.43.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-2EBy61K/HCdCFZkVT5XrflQGuQrRWfdrevV3OPjpUcQ=";
|
||||
sha256 = "sha256-LSKddSDmXKRnD6PuCPCg/AUMj5y1lzFD24aqVrP7NjU=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-iU19rHb1td4NIF+P3wctIcZKL09H+51XwD3NaSBKK18=";
|
||||
cargoSha256 = "sha256-gVjOsRDL7u3bXqmHVaqfQnPfGw9Qny4ETRYyhwyEoI0=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ]
|
||||
++ lib.optionals (withExtraFeatures && stdenv.isLinux) [ python3 ];
|
||||
|
|
|
@ -7,11 +7,11 @@ with python3.pkgs;
|
|||
|
||||
buildPythonApplication rec {
|
||||
pname = "mycli";
|
||||
version = "1.24.2";
|
||||
version = "1.24.3";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-XrPho+bPjyzj2d6W4KR4P09T1/FXkrQvhGPotgooIB4=";
|
||||
sha256 = "sha256-Qk2qOXfAM7xJv1fDt/mnb2NZFf5S/ExonQtLE4m22a4=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
|
44
pkgs/tools/audio/headsetcontrol/default.nix
Normal file
44
pkgs/tools/audio/headsetcontrol/default.nix
Normal file
|
@ -0,0 +1,44 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, hidapi
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "headsetcontrol";
|
||||
version = "2.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Sapd";
|
||||
repo = "HeadsetControl";
|
||||
rev = version;
|
||||
sha256 = "0a7zimzi71416pmn6z0l1dn1c2x8p702hkd0k6da9rsznff85a88";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
hidapi
|
||||
];
|
||||
|
||||
/*
|
||||
Test depends on having the apropiate headsets connected.
|
||||
*/
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Sidetone and Battery status for Logitech G930, G533, G633, G933 SteelSeries Arctis 7/PRO 2019 and Corsair VOID (Pro)";
|
||||
longDescription = ''
|
||||
A tool to control certain aspects of USB-connected headsets on Linux. Currently,
|
||||
support is provided for adjusting sidetone, getting battery state, controlling
|
||||
LEDs, and setting the inactive time.
|
||||
'';
|
||||
homepage = "https://github.com/Sapd/HeadsetControl";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ leixb ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
|
@ -11,11 +11,11 @@
|
|||
# Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "diffoscope";
|
||||
version = "200";
|
||||
version = "201";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
|
||||
sha256 = "sha256-x6qAVEtvGmW0L4L/K+YKAp9jc9zz0Orrsl3qBkPYnW0=";
|
||||
sha256 = "sha256-urvSZSpy5ksHhWqJM8ek0dyyKPeme/sJ16L6JfHg7Lg=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
|
|
@ -34,7 +34,7 @@ xorg,
|
|||
}:
|
||||
|
||||
let
|
||||
version = "1.29.6";
|
||||
version = "1.30.1";
|
||||
|
||||
rpath = lib.makeLibraryPath [
|
||||
alsa-lib
|
||||
|
@ -84,7 +84,7 @@ let
|
|||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||
fetchurl {
|
||||
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
||||
sha256 = "sha256-yLbuHvZrI8C4X/burIo5cI+H8KEv++4FyRgtISpmPxE=";
|
||||
sha256 = "sha256-MwkYgkDZmzZsthJxSK6c+0us0D4cPuDfuV1XBbeTNXE=";
|
||||
}
|
||||
else
|
||||
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nncp";
|
||||
version = "8.1.0";
|
||||
version = "8.2.0";
|
||||
outputs = [ "out" "doc" "info" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.nncpgo.org/download/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-d3U233dedtZrBWRdb0QElNOd/L1+Ut4CWvkZo5TPU+w=";
|
||||
sha256 = "sha256-WbDW4kjTAokpOVtjXU4M8RS8TeD0+fEFLgSShJgO6t0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ go redo-apenwarr ];
|
||||
|
|
|
@ -32,6 +32,9 @@ rustPlatform.buildRustPackage rec {
|
|||
chmod +x $out/bin/sk-share
|
||||
'';
|
||||
|
||||
# https://github.com/lotabout/skim/issues/440
|
||||
doCheck = !stdenv.isAarch64;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Command-line fuzzy finder written in Rust";
|
||||
homepage = "https://github.com/lotabout/skim";
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{ lib, stdenv, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.1";
|
||||
version = "0.2";
|
||||
pname = "snore";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "clamiax";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1ic1qy6ybnjlkz5rb1hpvq6dcdmxw5xcx34qcadrsfdjizxcv8pp";
|
||||
sha256 = "sha256-EOwbRqtQEuGZ+aeCBNVfLUq4m/bFWJTvMDM6a+y74qc=";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "steampipe";
|
||||
version = "0.11.2";
|
||||
version = "0.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "turbot";
|
||||
repo = "steampipe";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-omg/MgCTKkj0p1vDvJs22/0Jhzim0CeISV0Kn9p5lh4=";
|
||||
sha256 = "sha256-ApY3h6CqOJMWmIindp5TqWczSU50TBiS89lYzSzj8EM=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-PYaq74NNEOJ1jZ6PoS6zcTiUN4JA9JDjO7GB9tqgT6c=";
|
||||
vendorSha256 = "sha256-ikmcayOy87u6XMYjxxzFv35Rlp9oTteEKFOPr/+xc2Y=";
|
||||
|
||||
# tests are failing for no obvious reasons
|
||||
doCheck = false;
|
||||
|
|
|
@ -20,12 +20,12 @@ buildPythonPackage rec {
|
|||
# The websites yt-dlp deals with are a very moving target. That means that
|
||||
# downloads break constantly. Because of that, updates should always be backported
|
||||
# to the latest stable release.
|
||||
version = "2021.12.27";
|
||||
version = "2022.1.21";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname;
|
||||
version = builtins.replaceStrings [ ".0" ] [ "." ] version;
|
||||
sha256 = "sha256-IkTfN1l1FIfnlrI7ZyFr7pjnCDKjpDwlJrCw4Lv7y1s=";
|
||||
sha256 = "sha256-Ig7EBzibXqcuJd/BHDDlQ0ibkAdcVTEdUlXiBF24qeI=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ websockets mutagen ]
|
||||
|
|
|
@ -1,27 +1,24 @@
|
|||
{ lib, stdenv, fetchFromGitHub, libpcap, cmake }:
|
||||
{ lib, stdenv, fetchFromGitLab, libpcap }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pcapc";
|
||||
version = "1.0.0";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
sha256 = "137crs0bb7kh9a8p9g168yj2jrp0h3j3073nwh31jy4nk0g5hlfp";
|
||||
src = fetchFromGitLab {
|
||||
owner = "post-factum";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
repo = "pcapc";
|
||||
owner = "pfactum";
|
||||
hash = "sha256-oDg9OSvi9aQsZ2SQm02NKAcppE0w5SGZaI13gdp7gv4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ libpcap ];
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
doCheck = false;
|
||||
makeFlags = [ "PREFIX=${placeholder "out"}" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/pfactum/pcapc";
|
||||
homepage = "https://gitlab.com/post-factum/pcapc";
|
||||
description = "Compile libpcap filter expressions into BPF opcodes";
|
||||
license = licenses.gpl3;
|
||||
license = licenses.gpl3Only;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue