Merge master into haskell-updates
This commit is contained in:
commit
0455265d8c
199 changed files with 2889 additions and 528 deletions
|
@ -303,7 +303,26 @@ rec {
|
|||
# TODO: figure out a clever way to integrate location information from
|
||||
# something like __unsafeGetAttrPos.
|
||||
|
||||
warn = msg: builtins.trace "[1;31mwarning: ${msg}[0m";
|
||||
/*
|
||||
Print a warning before returning the second argument. This function behaves
|
||||
like `builtins.trace`, but requires a string message and formats it as a
|
||||
warning, including the `warning: ` prefix.
|
||||
|
||||
To get a call stack trace and abort evaluation, set the environment variable
|
||||
`NIX_ABORT_ON_WARN=true` and set the Nix options `--option pure-eval false --show-trace`
|
||||
|
||||
Type: string -> a -> a
|
||||
*/
|
||||
warn =
|
||||
if lib.elem (builtins.getEnv "NIX_ABORT_ON_WARN") ["1" "true" "yes"]
|
||||
then msg: builtins.trace "[1;31mwarning: ${msg}[0m" (abort "NIX_ABORT_ON_WARN=true; warnings are treated as unrecoverable errors.")
|
||||
else msg: builtins.trace "[1;31mwarning: ${msg}[0m";
|
||||
|
||||
/*
|
||||
Like warn, but only warn when the first argument is `true`.
|
||||
|
||||
Type: bool -> string -> a -> a
|
||||
*/
|
||||
warnIf = cond: msg: if cond then warn msg else id;
|
||||
|
||||
info = msg: builtins.trace "INFO: ${msg}";
|
||||
|
|
|
@ -440,6 +440,12 @@
|
|||
githubId = 173595;
|
||||
name = "Caleb Maclennan";
|
||||
};
|
||||
ALEX11BR = {
|
||||
email = "alexioanpopa11@gmail.com";
|
||||
github = "ALEX11BR";
|
||||
githubId = 49609151;
|
||||
name = "Popa Ioan Alexandru";
|
||||
};
|
||||
alexarice = {
|
||||
email = "alexrice999@hotmail.co.uk";
|
||||
github = "alexarice";
|
||||
|
@ -5461,6 +5467,12 @@
|
|||
githubId = 8735102;
|
||||
name = "John Ramsden";
|
||||
};
|
||||
johnrichardrinehart = {
|
||||
email = "johnrichardrinehart@gmail.com";
|
||||
github = "johnrichardrinehart";
|
||||
githubId = 6321578;
|
||||
name = "John Rinehart";
|
||||
};
|
||||
johntitor = {
|
||||
email = "huyuumi.dev@gmail.com";
|
||||
github = "JohnTitor";
|
||||
|
|
|
@ -344,6 +344,13 @@
|
|||
controller support.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://github.com/opensvc/multipath-tools">multipath</link>,
|
||||
the device mapper multipath (DM-MP) daemon. Available as
|
||||
<link linkend="opt-services.multipath.enable">services.multipath</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="sec-release-21.11-incompatibilities">
|
||||
|
|
|
@ -105,6 +105,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
|
||||
- [joycond](https://github.com/DanielOgorchock/joycond), a service that uses `hid-nintendo` to provide nintendo joycond pairing and better nintendo switch pro controller support.
|
||||
|
||||
- [multipath](https://github.com/opensvc/multipath-tools), the device mapper multipath (DM-MP) daemon. Available as [services.multipath](#opt-services.multipath.enable).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
|
||||
|
||||
- The `services.wakeonlan` option was removed, and replaced with `networking.interfaces.<name>.wakeOnLan`.
|
||||
|
|
|
@ -213,7 +213,7 @@ in
|
|||
}
|
||||
|
||||
{
|
||||
assertion = cfg.powerManagement.enable -> offloadCfg.enable;
|
||||
assertion = cfg.powerManagement.finegrained -> offloadCfg.enable;
|
||||
message = "Fine-grained power management requires offload to be enabled.";
|
||||
}
|
||||
|
||||
|
|
|
@ -779,6 +779,7 @@
|
|||
./services/networking/mstpd.nix
|
||||
./services/networking/mtprotoproxy.nix
|
||||
./services/networking/mullvad-vpn.nix
|
||||
./services/networking/multipath.nix
|
||||
./services/networking/murmur.nix
|
||||
./services/networking/mxisd.nix
|
||||
./services/networking/namecoind.nix
|
||||
|
|
|
@ -64,6 +64,12 @@ in
|
|||
default = false;
|
||||
};
|
||||
|
||||
extraIscsiCommands = mkOption {
|
||||
description = "Extra iscsi commands to run in the initrd.";
|
||||
default = "";
|
||||
type = lines;
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
description = "Extra lines to append to /etc/iscsid.conf";
|
||||
default = null;
|
||||
|
@ -162,6 +168,9 @@ in
|
|||
'' else ''
|
||||
iscsiadm --mode node --targetname ${escapeShellArg cfg.target} --login
|
||||
''}
|
||||
|
||||
${cfg.extraIscsiCommands}
|
||||
|
||||
pkill -9 iscsid
|
||||
'';
|
||||
};
|
||||
|
|
572
nixos/modules/services/networking/multipath.nix
Normal file
572
nixos/modules/services/networking/multipath.nix
Normal file
|
@ -0,0 +1,572 @@
|
|||
{ config, lib, pkgs, ... }: with lib;
|
||||
|
||||
# See http://christophe.varoqui.free.fr/usage.html and
|
||||
# https://github.com/opensvc/multipath-tools/blob/master/multipath/multipath.conf.5
|
||||
|
||||
let
|
||||
cfg = config.services.multipath;
|
||||
|
||||
indentLines = n: str: concatStringsSep "\n" (
|
||||
map (line: "${fixedWidthString n " " " "}${line}") (
|
||||
filter ( x: x != "" ) ( splitString "\n" str )
|
||||
)
|
||||
);
|
||||
|
||||
addCheckDesc = desc: elemType: check: types.addCheck elemType check
|
||||
// { description = "${elemType.description} (with check: ${desc})"; };
|
||||
hexChars = stringToCharacters "0123456789abcdef";
|
||||
isHexString = s: all (c: elem c hexChars) (stringToCharacters (toLower s));
|
||||
hexStr = addCheckDesc "hexadecimal string" types.str isHexString;
|
||||
|
||||
in {
|
||||
|
||||
options.services.multipath = with types; {
|
||||
|
||||
enable = mkEnableOption "the device mapper multipath (DM-MP) daemon";
|
||||
|
||||
package = mkOption {
|
||||
type = package;
|
||||
description = "multipath-tools package to use";
|
||||
default = pkgs.multipath-tools;
|
||||
defaultText = "pkgs.multipath-tools";
|
||||
};
|
||||
|
||||
devices = mkOption {
|
||||
default = [ ];
|
||||
example = literalExpression ''
|
||||
[
|
||||
{
|
||||
vendor = "\"COMPELNT\"";
|
||||
product = "\"Compellent Vol\"";
|
||||
path_checker = "tur";
|
||||
no_path_retry = "queue";
|
||||
max_sectors_kb = 256;
|
||||
}, ...
|
||||
]
|
||||
'';
|
||||
description = ''
|
||||
This option allows you to define arrays for use in multipath
|
||||
groups.
|
||||
'';
|
||||
type = listOf (submodule {
|
||||
options = {
|
||||
|
||||
vendor = mkOption {
|
||||
type = str;
|
||||
example = "COMPELNT";
|
||||
description = "Regular expression to match the vendor name";
|
||||
};
|
||||
|
||||
product = mkOption {
|
||||
type = str;
|
||||
example = "Compellent Vol";
|
||||
description = "Regular expression to match the product name";
|
||||
};
|
||||
|
||||
revision = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "Regular expression to match the product revision";
|
||||
};
|
||||
|
||||
product_blacklist = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "Products with the given vendor matching this string are blacklisted";
|
||||
};
|
||||
|
||||
alias_prefix = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "The user_friendly_names prefix to use for this device type, instead of the default mpath";
|
||||
};
|
||||
|
||||
vpd_vendor = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "The vendor specific vpd page information, using the vpd page abbreviation";
|
||||
};
|
||||
|
||||
hardware_handler = mkOption {
|
||||
type = nullOr (enum [ "emc" "rdac" "hp_sw" "alua" "ana" ]);
|
||||
default = null;
|
||||
description = "The hardware handler to use for this device type";
|
||||
};
|
||||
|
||||
# Optional arguments
|
||||
path_grouping_policy = mkOption {
|
||||
type = nullOr (enum [ "failover" "multibus" "group_by_serial" "group_by_prio" "group_by_node_name" ]);
|
||||
default = null; # real default: "failover"
|
||||
description = "The default path grouping policy to apply to unspecified multipaths";
|
||||
};
|
||||
|
||||
uid_attribute = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "The udev attribute providing a unique path identifier (WWID)";
|
||||
};
|
||||
|
||||
getuid_callout = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
(Superseded by uid_attribute) The default program and args to callout
|
||||
to obtain a unique path identifier. Should be specified with an absolute path.
|
||||
'';
|
||||
};
|
||||
|
||||
path_selector = mkOption {
|
||||
type = nullOr (enum [
|
||||
''"round-robin 0"''
|
||||
''"queue-length 0"''
|
||||
''"service-time 0"''
|
||||
''"historical-service-time 0"''
|
||||
]);
|
||||
default = null; # real default: "service-time 0"
|
||||
description = "The default path selector algorithm to use; they are offered by the kernel multipath target";
|
||||
};
|
||||
|
||||
path_checker = mkOption {
|
||||
type = enum [ "readsector0" "tur" "emc_clariion" "hp_sw" "rdac" "directio" "cciss_tur" "none" ];
|
||||
default = "tur";
|
||||
description = "The default method used to determine the paths state";
|
||||
};
|
||||
|
||||
prio = mkOption {
|
||||
type = nullOr (enum [
|
||||
"none" "const" "sysfs" "emc" "alua" "ontap" "rdac" "hp_sw" "hds"
|
||||
"random" "weightedpath" "path_latency" "ana" "datacore" "iet"
|
||||
]);
|
||||
default = null; # real default: "const"
|
||||
description = "The name of the path priority routine";
|
||||
};
|
||||
|
||||
prio_args = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "Arguments to pass to to the prio function";
|
||||
};
|
||||
|
||||
features = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "Specify any device-mapper features to be used";
|
||||
};
|
||||
|
||||
failback = mkOption {
|
||||
type = nullOr str;
|
||||
default = null; # real default: "manual"
|
||||
description = "Tell multipathd how to manage path group failback. Quote integers as strings";
|
||||
};
|
||||
|
||||
rr_weight = mkOption {
|
||||
type = nullOr (enum [ "priorities" "uniform" ]);
|
||||
default = null; # real default: "uniform"
|
||||
description = ''
|
||||
If set to priorities the multipath configurator will assign path weights
|
||||
as "path prio * rr_min_io".
|
||||
'';
|
||||
};
|
||||
|
||||
no_path_retry = mkOption {
|
||||
type = nullOr str;
|
||||
default = null; # real default: "fail"
|
||||
description = "Specify what to do when all paths are down. Quote integers as strings";
|
||||
};
|
||||
|
||||
rr_min_io = mkOption {
|
||||
type = nullOr int;
|
||||
default = null; # real default: 1000
|
||||
description = ''
|
||||
Number of I/O requests to route to a path before switching to the next in the
|
||||
same path group. This is only for Block I/O (BIO) based multipath and
|
||||
only apply to round-robin path_selector.
|
||||
'';
|
||||
};
|
||||
|
||||
rr_min_io_rq = mkOption {
|
||||
type = nullOr int;
|
||||
default = null; # real default: 1
|
||||
description = ''
|
||||
Number of I/O requests to route to a path before switching to the next in the
|
||||
same path group. This is only for Request based multipath and
|
||||
only apply to round-robin path_selector.
|
||||
'';
|
||||
};
|
||||
|
||||
fast_io_fail_tmo = mkOption {
|
||||
type = nullOr str;
|
||||
default = null; # real default: 5
|
||||
description = ''
|
||||
Specify the number of seconds the SCSI layer will wait after a problem has been
|
||||
detected on a FC remote port before failing I/O to devices on that remote port.
|
||||
This should be smaller than dev_loss_tmo. Setting this to "off" will disable
|
||||
the timeout. Quote integers as strings.
|
||||
'';
|
||||
};
|
||||
|
||||
dev_loss_tmo = mkOption {
|
||||
type = nullOr str;
|
||||
default = null; # real default: 600
|
||||
description = ''
|
||||
Specify the number of seconds the SCSI layer will wait after a problem has
|
||||
been detected on a FC remote port before removing it from the system. This
|
||||
can be set to "infinity" which sets it to the max value of 2147483647
|
||||
seconds, or 68 years. It will be automatically adjusted to the overall
|
||||
retry interval no_path_retry * polling_interval
|
||||
if a number of retries is given with no_path_retry and the
|
||||
overall retry interval is longer than the specified dev_loss_tmo value.
|
||||
The Linux kernel will cap this value to 600 if fast_io_fail_tmo
|
||||
is not set.
|
||||
'';
|
||||
};
|
||||
|
||||
flush_on_last_del = mkOption {
|
||||
type = nullOr (enum [ "yes" "no" ]);
|
||||
default = null; # real default: "no"
|
||||
description = ''
|
||||
If set to "yes" multipathd will disable queueing when the last path to a
|
||||
device has been deleted.
|
||||
'';
|
||||
};
|
||||
|
||||
user_friendly_names = mkOption {
|
||||
type = nullOr (enum [ "yes" "no" ]);
|
||||
default = null; # real default: "no"
|
||||
description = ''
|
||||
If set to "yes", using the bindings file /etc/multipath/bindings
|
||||
to assign a persistent and unique alias to the multipath, in the
|
||||
form of mpath. If set to "no" use the WWID as the alias. In either
|
||||
case this be will be overridden by any specific aliases in the
|
||||
multipaths section.
|
||||
'';
|
||||
};
|
||||
|
||||
retain_attached_hw_handler = mkOption {
|
||||
type = nullOr (enum [ "yes" "no" ]);
|
||||
default = null; # real default: "yes"
|
||||
description = ''
|
||||
(Obsolete for kernels >= 4.3) If set to "yes" and the SCSI layer has
|
||||
already attached a hardware_handler to the device, multipath will not
|
||||
force the device to use the hardware_handler specified by mutipath.conf.
|
||||
If the SCSI layer has not attached a hardware handler, multipath will
|
||||
continue to use its configured hardware handler.
|
||||
|
||||
Important Note: Linux kernel 4.3 or newer always behaves as if
|
||||
"retain_attached_hw_handler yes" was set.
|
||||
'';
|
||||
};
|
||||
|
||||
detect_prio = mkOption {
|
||||
type = nullOr (enum [ "yes" "no" ]);
|
||||
default = null; # real default: "yes"
|
||||
description = ''
|
||||
If set to "yes", multipath will try to detect if the device supports
|
||||
SCSI-3 ALUA. If so, the device will automatically use the sysfs
|
||||
prioritizer if the required sysf attributes access_state and
|
||||
preferred_path are supported, or the alua prioritizer if not. If set
|
||||
to "no", the prioritizer will be selected as usual.
|
||||
'';
|
||||
};
|
||||
|
||||
detect_checker = mkOption {
|
||||
type = nullOr (enum [ "yes" "no" ]);
|
||||
default = null; # real default: "yes"
|
||||
description = ''
|
||||
If set to "yes", multipath will try to detect if the device supports
|
||||
SCSI-3 ALUA. If so, the device will automatically use the tur checker.
|
||||
If set to "no", the checker will be selected as usual.
|
||||
'';
|
||||
};
|
||||
|
||||
deferred_remove = mkOption {
|
||||
type = nullOr (enum [ "yes" "no" ]);
|
||||
default = null; # real default: "no"
|
||||
description = ''
|
||||
If set to "yes", multipathd will do a deferred remove instead of a
|
||||
regular remove when the last path device has been deleted. This means
|
||||
that if the multipath device is still in use, it will be freed when
|
||||
the last user closes it. If path is added to the multipath device
|
||||
before the last user closes it, the deferred remove will be canceled.
|
||||
'';
|
||||
};
|
||||
|
||||
san_path_err_threshold = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
If set to a value greater than 0, multipathd will watch paths and check
|
||||
how many times a path has been failed due to errors.If the number of
|
||||
failures on a particular path is greater then the san_path_err_threshold,
|
||||
then the path will not reinstate till san_path_err_recovery_time. These
|
||||
path failures should occur within a san_path_err_forget_rate checks, if
|
||||
not we will consider the path is good enough to reinstantate.
|
||||
'';
|
||||
};
|
||||
|
||||
san_path_err_forget_rate = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
If set to a value greater than 0, multipathd will check whether the path
|
||||
failures has exceeded the san_path_err_threshold within this many checks
|
||||
i.e san_path_err_forget_rate. If so we will not reinstante the path till
|
||||
san_path_err_recovery_time.
|
||||
'';
|
||||
};
|
||||
|
||||
san_path_err_recovery_time = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
If set to a value greater than 0, multipathd will make sure that when
|
||||
path failures has exceeded the san_path_err_threshold within
|
||||
san_path_err_forget_rate then the path will be placed in failed state
|
||||
for san_path_err_recovery_time duration. Once san_path_err_recovery_time
|
||||
has timeout we will reinstante the failed path. san_path_err_recovery_time
|
||||
value should be in secs.
|
||||
'';
|
||||
};
|
||||
|
||||
marginal_path_err_sample_time = mkOption {
|
||||
type = nullOr int;
|
||||
default = null;
|
||||
description = "One of the four parameters of supporting path check based on accounting IO error such as intermittent error";
|
||||
};
|
||||
|
||||
marginal_path_err_rate_threshold = mkOption {
|
||||
type = nullOr int;
|
||||
default = null;
|
||||
description = "The error rate threshold as a permillage (1/1000)";
|
||||
};
|
||||
|
||||
marginal_path_err_recheck_gap_time = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "One of the four parameters of supporting path check based on accounting IO error such as intermittent error";
|
||||
};
|
||||
|
||||
marginal_path_double_failed_time = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "One of the four parameters of supporting path check based on accounting IO error such as intermittent error";
|
||||
};
|
||||
|
||||
delay_watch_checks = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "This option is deprecated, and mapped to san_path_err_forget_rate";
|
||||
};
|
||||
|
||||
delay_wait_checks = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "This option is deprecated, and mapped to san_path_err_recovery_time";
|
||||
};
|
||||
|
||||
skip_kpartx = mkOption {
|
||||
type = nullOr (enum [ "yes" "no" ]);
|
||||
default = null; # real default: "no"
|
||||
description = "If set to yes, kpartx will not automatically create partitions on the device";
|
||||
};
|
||||
|
||||
max_sectors_kb = mkOption {
|
||||
type = nullOr int;
|
||||
default = null;
|
||||
description = "Sets the max_sectors_kb device parameter on all path devices and the multipath device to the specified value";
|
||||
};
|
||||
|
||||
ghost_delay = mkOption {
|
||||
type = nullOr int;
|
||||
default = null;
|
||||
description = "Sets the number of seconds that multipath will wait after creating a device with only ghost paths before marking it ready for use in systemd";
|
||||
};
|
||||
|
||||
all_tg_pt = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "Set the 'all targets ports' flag when registering keys with mpathpersist";
|
||||
};
|
||||
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
defaults = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
This section defines default values for attributes which are used
|
||||
whenever no values are given in the appropriate device or multipath
|
||||
sections.
|
||||
'';
|
||||
};
|
||||
|
||||
blacklist = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
This section defines which devices should be excluded from the
|
||||
multipath topology discovery.
|
||||
'';
|
||||
};
|
||||
|
||||
blacklist_exceptions = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
This section defines which devices should be included in the
|
||||
multipath topology discovery, despite being listed in the
|
||||
blacklist section.
|
||||
'';
|
||||
};
|
||||
|
||||
overrides = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
This section defines values for attributes that should override the
|
||||
device-specific settings for all devices.
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "Lines to append to default multipath.conf";
|
||||
};
|
||||
|
||||
extraConfigFile = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
description = "Append an additional file's contents to /etc/multipath.conf";
|
||||
};
|
||||
|
||||
pathGroups = mkOption {
|
||||
example = literalExpression ''
|
||||
[
|
||||
{
|
||||
wwid = "360080e500043b35c0123456789abcdef";
|
||||
alias = 10001234;
|
||||
array = "bigarray.example.com";
|
||||
fsType = "zfs"; # optional
|
||||
options = "ro"; # optional
|
||||
}, ...
|
||||
]
|
||||
'';
|
||||
description = ''
|
||||
This option allows you to define multipath groups as described
|
||||
in http://christophe.varoqui.free.fr/usage.html.
|
||||
'';
|
||||
type = listOf (submodule {
|
||||
options = {
|
||||
|
||||
alias = mkOption {
|
||||
type = int;
|
||||
example = 1001234;
|
||||
description = "The name of the multipath device";
|
||||
};
|
||||
|
||||
wwid = mkOption {
|
||||
type = hexStr;
|
||||
example = "360080e500043b35c0123456789abcdef";
|
||||
description = "The identifier for the multipath device";
|
||||
};
|
||||
|
||||
array = mkOption {
|
||||
type = str;
|
||||
default = null;
|
||||
example = "bigarray.example.com";
|
||||
description = "The DNS name of the storage array";
|
||||
};
|
||||
|
||||
fsType = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
example = "zfs";
|
||||
description = "Type of the filesystem";
|
||||
};
|
||||
|
||||
options = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
example = "ro";
|
||||
description = "Options used to mount the file system";
|
||||
};
|
||||
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.etc."multipath.conf".text =
|
||||
let
|
||||
inherit (cfg) defaults blacklist blacklist_exceptions overrides;
|
||||
|
||||
mkDeviceBlock = cfg: let
|
||||
nonNullCfg = lib.filterAttrs (k: v: v != null) cfg;
|
||||
attrs = lib.mapAttrsToList (name: value: " ${name} ${toString value}") nonNullCfg;
|
||||
in ''
|
||||
device {
|
||||
${lib.concatStringsSep "\n" attrs}
|
||||
}
|
||||
'';
|
||||
devices = lib.concatMapStringsSep "\n" mkDeviceBlock cfg.devices;
|
||||
|
||||
mkMultipathBlock = m: ''
|
||||
multipath {
|
||||
wwid ${m.wwid}
|
||||
alias ${toString m.alias}
|
||||
}
|
||||
'';
|
||||
multipaths = lib.concatMapStringsSep "\n" mkMultipathBlock cfg.pathGroups;
|
||||
|
||||
in ''
|
||||
devices {
|
||||
${indentLines 2 devices}
|
||||
}
|
||||
|
||||
${optionalString (!isNull defaults) ''
|
||||
defaults {
|
||||
${indentLines 2 defaults}
|
||||
multipath_dir ${cfg.package}/lib/multipath
|
||||
}
|
||||
''}
|
||||
${optionalString (!isNull blacklist) ''
|
||||
blacklist {
|
||||
${indentLines 2 blacklist}
|
||||
}
|
||||
''}
|
||||
${optionalString (!isNull blacklist_exceptions) ''
|
||||
blacklist_exceptions {
|
||||
${indentLines 2 blacklist_exceptions}
|
||||
}
|
||||
''}
|
||||
${optionalString (!isNull overrides) ''
|
||||
overrides {
|
||||
${indentLines 2 overrides}
|
||||
}
|
||||
''}
|
||||
multipaths {
|
||||
${indentLines 2 multipaths}
|
||||
}
|
||||
'';
|
||||
|
||||
systemd.packages = [ cfg.package ];
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
boot.kernelModules = [ "dm-multipath" "dm-service-time" ];
|
||||
|
||||
# We do not have systemd in stage-1 boot so must invoke `multipathd`
|
||||
# with the `-1` argument which disables systemd calls. Invoke `multipath`
|
||||
# to display the multipath mappings in the output of `journalctl -b`.
|
||||
boot.initrd.kernelModules = [ "dm-multipath" "dm-service-time" ];
|
||||
boot.initrd.postDeviceCommands = ''
|
||||
modprobe -a dm-multipath dm-service-time
|
||||
multipathd -s
|
||||
(set -x && sleep 1 && multipath -ll)
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -6,6 +6,8 @@ let
|
|||
cfg = config.services.nextcloud;
|
||||
fpm = config.services.phpfpm.pools.nextcloud;
|
||||
|
||||
inherit (cfg) datadir;
|
||||
|
||||
phpPackage = cfg.phpPackage.buildEnv {
|
||||
extensions = { enabled, all }:
|
||||
(with all;
|
||||
|
@ -40,7 +42,7 @@ let
|
|||
if [[ "$USER" != nextcloud ]]; then
|
||||
sudo='exec /run/wrappers/bin/sudo -u nextcloud --preserve-env=NEXTCLOUD_CONFIG_DIR --preserve-env=OC_PASS'
|
||||
fi
|
||||
export NEXTCLOUD_CONFIG_DIR="${cfg.home}/config"
|
||||
export NEXTCLOUD_CONFIG_DIR="${datadir}/config"
|
||||
$sudo \
|
||||
${phpPackage}/bin/php \
|
||||
occ "$@"
|
||||
|
@ -85,6 +87,59 @@ in {
|
|||
default = "/var/lib/nextcloud";
|
||||
description = "Storage path of nextcloud.";
|
||||
};
|
||||
datadir = mkOption {
|
||||
type = types.str;
|
||||
defaultText = "config.services.nextcloud.home";
|
||||
description = ''
|
||||
Data storage path of nextcloud. Will be <xref linkend="opt-services.nextcloud.home" /> by default.
|
||||
This folder will be populated with a config.php and data folder which contains the state of the instance (excl the database).";
|
||||
'';
|
||||
example = "/mnt/nextcloud-file";
|
||||
};
|
||||
extraApps = mkOption {
|
||||
type = types.attrsOf types.package;
|
||||
default = { };
|
||||
description = ''
|
||||
Extra apps to install. Should be an attrSet of appid to packages generated by fetchNextcloudApp.
|
||||
The appid must be identical to the "id" value in the apps appinfo/info.xml.
|
||||
Using this will disable the appstore to prevent Nextcloud from updating these apps (see <xref linkend="opt-services.nextcloud.appstoreEnable" />).
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
maps = pkgs.fetchNextcloudApp {
|
||||
name = "maps";
|
||||
sha256 = "007y80idqg6b6zk6kjxg4vgw0z8fsxs9lajnv49vv1zjy6jx2i1i";
|
||||
url = "https://github.com/nextcloud/maps/releases/download/v0.1.9/maps-0.1.9.tar.gz";
|
||||
version = "0.1.9";
|
||||
};
|
||||
phonetrack = pkgs.fetchNextcloudApp {
|
||||
name = "phonetrack";
|
||||
sha256 = "0qf366vbahyl27p9mshfma1as4nvql6w75zy2zk5xwwbp343vsbc";
|
||||
url = "https://gitlab.com/eneiluj/phonetrack-oc/-/wikis/uploads/931aaaf8dca24bf31a7e169a83c17235/phonetrack-0.6.9.tar.gz";
|
||||
version = "0.6.9";
|
||||
};
|
||||
}
|
||||
'';
|
||||
};
|
||||
extraAppsEnable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Automatically enable the apps in <xref linkend="opt-services.nextcloud.extraApps" /> every time nextcloud starts.
|
||||
If set to false, apps need to be enabled in the Nextcloud user interface or with nextcloud-occ app:enable.
|
||||
'';
|
||||
};
|
||||
appstoreEnable = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Allow the installation of apps and app updates from the store.
|
||||
Enabled by default unless there are packages in <xref linkend="opt-services.nextcloud.extraApps" />.
|
||||
Set to true to force enable the store even if <xref linkend="opt-services.nextcloud.extraApps" /> is used.
|
||||
Set to false to disable the installation of apps from the global appstore. App management is always enabled regardless of this setting.
|
||||
'';
|
||||
};
|
||||
logLevel = mkOption {
|
||||
type = types.ints.between 0 4;
|
||||
default = 2;
|
||||
|
@ -524,6 +579,8 @@ in {
|
|||
else nextcloud22
|
||||
);
|
||||
|
||||
services.nextcloud.datadir = mkOptionDefault config.services.nextcloud.home;
|
||||
|
||||
services.nextcloud.phpPackage =
|
||||
if versionOlder cfg.package.version "21" then pkgs.php74
|
||||
else pkgs.php80;
|
||||
|
@ -563,6 +620,14 @@ in {
|
|||
]
|
||||
'';
|
||||
|
||||
showAppStoreSetting = cfg.appstoreEnable != null || cfg.extraApps != {};
|
||||
renderedAppStoreSetting =
|
||||
let
|
||||
x = cfg.appstoreEnable;
|
||||
in
|
||||
if x == null then "false"
|
||||
else boolToString x;
|
||||
|
||||
overrideConfig = pkgs.writeText "nextcloud-config.php" ''
|
||||
<?php
|
||||
${optionalString requiresReadSecretFunction ''
|
||||
|
@ -581,10 +646,12 @@ in {
|
|||
''}
|
||||
$CONFIG = [
|
||||
'apps_paths' => [
|
||||
${optionalString (cfg.extraApps != { }) "[ 'path' => '${cfg.home}/nix-apps', 'url' => '/nix-apps', 'writable' => false ],"}
|
||||
[ 'path' => '${cfg.home}/apps', 'url' => '/apps', 'writable' => false ],
|
||||
[ 'path' => '${cfg.home}/store-apps', 'url' => '/store-apps', 'writable' => true ],
|
||||
],
|
||||
'datadirectory' => '${cfg.home}/data',
|
||||
${optionalString (showAppStoreSetting) "'appstoreenabled' => ${renderedAppStoreSetting},"}
|
||||
'datadirectory' => '${datadir}/data',
|
||||
'skeletondirectory' => '${cfg.skeletonDirectory}',
|
||||
${optionalString cfg.caching.apcu "'memcache.local' => '\\OC\\Memcache\\APCu',"}
|
||||
'log_type' => 'syslog',
|
||||
|
@ -628,7 +695,7 @@ in {
|
|||
"--database-pass" = "\$${dbpass.arg}";
|
||||
"--admin-user" = ''"${c.adminuser}"'';
|
||||
"--admin-pass" = "\$${adminpass.arg}";
|
||||
"--data-dir" = ''"${cfg.home}/data"'';
|
||||
"--data-dir" = ''"${datadir}/data"'';
|
||||
});
|
||||
in ''
|
||||
${mkExport dbpass}
|
||||
|
@ -670,9 +737,15 @@ in {
|
|||
|
||||
ln -sf ${cfg.package}/apps ${cfg.home}/
|
||||
|
||||
# Install extra apps
|
||||
ln -sfT \
|
||||
${pkgs.linkFarm "nix-apps"
|
||||
(mapAttrsToList (name: path: { inherit name path; }) cfg.extraApps)} \
|
||||
${cfg.home}/nix-apps
|
||||
|
||||
# create nextcloud directories.
|
||||
# if the directories exist already with wrong permissions, we fix that
|
||||
for dir in ${cfg.home}/config ${cfg.home}/data ${cfg.home}/store-apps; do
|
||||
for dir in ${datadir}/config ${datadir}/data ${cfg.home}/store-apps ${cfg.home}/nix-apps; do
|
||||
if [ ! -e $dir ]; then
|
||||
install -o nextcloud -g nextcloud -d $dir
|
||||
elif [ $(stat -c "%G" $dir) != "nextcloud" ]; then
|
||||
|
@ -680,23 +753,29 @@ in {
|
|||
fi
|
||||
done
|
||||
|
||||
ln -sf ${overrideConfig} ${cfg.home}/config/override.config.php
|
||||
ln -sf ${overrideConfig} ${datadir}/config/override.config.php
|
||||
|
||||
# Do not install if already installed
|
||||
if [[ ! -e ${cfg.home}/config/config.php ]]; then
|
||||
if [[ ! -e ${datadir}/config/config.php ]]; then
|
||||
${occInstallCmd}
|
||||
fi
|
||||
|
||||
${occ}/bin/nextcloud-occ upgrade
|
||||
|
||||
${occ}/bin/nextcloud-occ config:system:delete trusted_domains
|
||||
|
||||
${optionalString (cfg.extraAppsEnable && cfg.extraApps != { }) ''
|
||||
# Try to enable apps (don't fail when one of them cannot be enabled , eg. due to incompatible version)
|
||||
${occ}/bin/nextcloud-occ app:enable ${concatStringsSep " " (attrNames cfg.extraApps)}
|
||||
''}
|
||||
|
||||
${occSetTrustedDomainsCmd}
|
||||
'';
|
||||
serviceConfig.Type = "oneshot";
|
||||
serviceConfig.User = "nextcloud";
|
||||
};
|
||||
nextcloud-cron = {
|
||||
environment.NEXTCLOUD_CONFIG_DIR = "${cfg.home}/config";
|
||||
environment.NEXTCLOUD_CONFIG_DIR = "${datadir}/config";
|
||||
serviceConfig.Type = "oneshot";
|
||||
serviceConfig.User = "nextcloud";
|
||||
serviceConfig.ExecStart = "${phpPackage}/bin/php -f ${cfg.package}/cron.php";
|
||||
|
@ -715,7 +794,7 @@ in {
|
|||
group = "nextcloud";
|
||||
phpPackage = phpPackage;
|
||||
phpEnv = {
|
||||
NEXTCLOUD_CONFIG_DIR = "${cfg.home}/config";
|
||||
NEXTCLOUD_CONFIG_DIR = "${datadir}/config";
|
||||
PATH = "/run/wrappers/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin";
|
||||
};
|
||||
settings = mapAttrs (name: mkDefault) {
|
||||
|
@ -765,6 +844,10 @@ in {
|
|||
priority = 201;
|
||||
extraConfig = "root ${cfg.home};";
|
||||
};
|
||||
"~ ^/nix-apps" = {
|
||||
priority = 201;
|
||||
extraConfig = "root ${cfg.home};";
|
||||
};
|
||||
"^~ /.well-known" = {
|
||||
priority = 210;
|
||||
extraConfig = ''
|
||||
|
|
|
@ -237,6 +237,12 @@
|
|||
Some apps may require extra PHP extensions to be installed.
|
||||
This can be configured with the <xref linkend="opt-services.nextcloud.phpExtraExtensions" /> setting.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Alternatively, extra apps can also be declared with the <xref linkend="opt-services.nextcloud.extraApps" /> setting.
|
||||
When using this setting, apps can no longer be managed statefully because this can lead to Nextcloud updating apps
|
||||
that are managed by Nix. If you want automatic updates it is recommended that you use web interface to install apps.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section xml:id="module-services-nextcloud-maintainer-info">
|
||||
|
|
|
@ -137,6 +137,14 @@ let
|
|||
copy_bin_and_libs ${pkgs.e2fsprogs}/sbin/resize2fs
|
||||
''}
|
||||
|
||||
# Copy multipath.
|
||||
${optionalString config.services.multipath.enable ''
|
||||
copy_bin_and_libs ${config.services.multipath.package}/bin/multipath
|
||||
copy_bin_and_libs ${config.services.multipath.package}/bin/multipathd
|
||||
# Copy lib/multipath manually.
|
||||
cp -rpv ${config.services.multipath.package}/lib/multipath $out/lib
|
||||
''}
|
||||
|
||||
# Copy secrets if needed.
|
||||
#
|
||||
# TODO: move out to a separate script; see #85000.
|
||||
|
@ -199,6 +207,10 @@ let
|
|||
$out/bin/dmsetup --version 2>&1 | tee -a log | grep -q "version:"
|
||||
LVM_SYSTEM_DIR=$out $out/bin/lvm version 2>&1 | tee -a log | grep -q "LVM"
|
||||
$out/bin/mdadm --version
|
||||
${optionalString config.services.multipath.enable ''
|
||||
($out/bin/multipath || true) 2>&1 | grep -q 'need to be root'
|
||||
($out/bin/multipathd || true) 2>&1 | grep -q 'need to be root'
|
||||
''}
|
||||
|
||||
${config.boot.initrd.extraUtilsCommandsTest}
|
||||
fi
|
||||
|
@ -338,7 +350,26 @@ let
|
|||
{ object = pkgs.kmod-debian-aliases;
|
||||
symlink = "/etc/modprobe.d/debian.conf";
|
||||
}
|
||||
];
|
||||
] ++ lib.optionals config.services.multipath.enable [
|
||||
{ object = pkgs.runCommand "multipath.conf" {
|
||||
src = config.environment.etc."multipath.conf".text;
|
||||
preferLocalBuild = true;
|
||||
} ''
|
||||
target=$out
|
||||
printf "$src" > $out
|
||||
substituteInPlace $out \
|
||||
--replace ${config.services.multipath.package}/lib ${extraUtils}/lib
|
||||
'';
|
||||
symlink = "/etc/multipath.conf";
|
||||
}
|
||||
] ++ (lib.mapAttrsToList
|
||||
(symlink: options:
|
||||
{
|
||||
inherit symlink;
|
||||
object = options.source;
|
||||
}
|
||||
)
|
||||
config.boot.initrd.extraFiles);
|
||||
};
|
||||
|
||||
# Script to add secret files to the initrd at bootloader update time
|
||||
|
@ -419,6 +450,22 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
boot.initrd.extraFiles = mkOption {
|
||||
default = { };
|
||||
type = types.attrsOf
|
||||
(types.submodule {
|
||||
options = {
|
||||
source = mkOption {
|
||||
type = types.package;
|
||||
description = "The object to make available inside the initrd.";
|
||||
};
|
||||
};
|
||||
});
|
||||
description = ''
|
||||
Extra files to link and copy in to the initrd.
|
||||
'';
|
||||
};
|
||||
|
||||
boot.initrd.prepend = mkOption {
|
||||
default = [ ];
|
||||
type = types.listOf types.str;
|
||||
|
|
267
nixos/tests/iscsi-multipath-root.nix
Normal file
267
nixos/tests/iscsi-multipath-root.nix
Normal file
|
@ -0,0 +1,267 @@
|
|||
import ./make-test-python.nix (
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
initiatorName = "iqn.2020-08.org.linux-iscsi.initiatorhost:example";
|
||||
targetName = "iqn.2003-01.org.linux-iscsi.target.x8664:sn.acf8fd9c23af";
|
||||
in
|
||||
{
|
||||
name = "iscsi";
|
||||
meta = {
|
||||
maintainers = pkgs.lib.teams.deshaw.members;
|
||||
};
|
||||
|
||||
nodes = {
|
||||
target = { config, pkgs, lib, ... }: {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
services.target = {
|
||||
enable = true;
|
||||
config = {
|
||||
fabric_modules = [ ];
|
||||
storage_objects = [
|
||||
{
|
||||
dev = "/dev/vdb";
|
||||
name = "test";
|
||||
plugin = "block";
|
||||
write_back = true;
|
||||
wwn = "92b17c3f-6b40-4168-b082-ceeb7b495522";
|
||||
}
|
||||
];
|
||||
targets = [
|
||||
{
|
||||
fabric = "iscsi";
|
||||
tpgs = [
|
||||
{
|
||||
enable = true;
|
||||
attributes = {
|
||||
authentication = 0;
|
||||
generate_node_acls = 1;
|
||||
};
|
||||
luns = [
|
||||
{
|
||||
alias = "94dfe06967";
|
||||
alua_tg_pt_gp_name = "default_tg_pt_gp";
|
||||
index = 0;
|
||||
storage_object = "/backstores/block/test";
|
||||
}
|
||||
];
|
||||
node_acls = [
|
||||
{
|
||||
mapped_luns = [
|
||||
{
|
||||
alias = "d42f5bdf8a";
|
||||
index = 0;
|
||||
tpg_lun = 0;
|
||||
write_protect = false;
|
||||
}
|
||||
];
|
||||
node_wwn = initiatorName;
|
||||
}
|
||||
];
|
||||
portals = [
|
||||
{
|
||||
ip_address = "0.0.0.0";
|
||||
iser = false;
|
||||
offload = false;
|
||||
port = 3260;
|
||||
}
|
||||
];
|
||||
tag = 1;
|
||||
}
|
||||
];
|
||||
wwn = targetName;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 3260 ];
|
||||
networking.firewall.allowedUDPPorts = [ 3260 ];
|
||||
|
||||
virtualisation.memorySize = 2048;
|
||||
virtualisation.emptyDiskImages = [ 2048 ];
|
||||
};
|
||||
|
||||
initiatorAuto = { nodes, config, pkgs, ... }: {
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
|
||||
services.multipath = {
|
||||
enable = true;
|
||||
defaults = ''
|
||||
find_multipaths yes
|
||||
user_friendly_names yes
|
||||
'';
|
||||
pathGroups = [
|
||||
{
|
||||
alias = 123456;
|
||||
wwid = "3600140592b17c3f6b404168b082ceeb7";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.openiscsi = {
|
||||
enable = true;
|
||||
enableAutoLoginOut = true;
|
||||
discoverPortal = "target";
|
||||
name = initiatorName;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
xfsprogs
|
||||
];
|
||||
|
||||
environment.etc."initiator-root-disk-closure".source = nodes.initiatorRootDisk.config.system.build.toplevel;
|
||||
|
||||
nix.binaryCaches = lib.mkForce [ ];
|
||||
nix.extraOptions = ''
|
||||
hashed-mirrors =
|
||||
connect-timeout = 1
|
||||
'';
|
||||
};
|
||||
|
||||
initiatorRootDisk = { config, pkgs, modulesPath, lib, ... }: {
|
||||
boot.initrd.network.enable = true;
|
||||
boot.loader.grub.enable = false;
|
||||
|
||||
boot.kernelParams = lib.mkOverride 5 (
|
||||
[
|
||||
"boot.shell_on_fail"
|
||||
"console=tty1"
|
||||
"ip=192.168.1.1:::255.255.255.0::ens9:none"
|
||||
"ip=192.168.2.1:::255.255.255.0::ens10:none"
|
||||
]
|
||||
);
|
||||
|
||||
# defaults to true, puts some code in the initrd that tries to mount an overlayfs on /nix/store
|
||||
virtualisation.writableStore = false;
|
||||
virtualisation.vlans = [ 1 2 ];
|
||||
|
||||
services.multipath = {
|
||||
enable = true;
|
||||
defaults = ''
|
||||
find_multipaths yes
|
||||
user_friendly_names yes
|
||||
'';
|
||||
pathGroups = [
|
||||
{
|
||||
alias = 123456;
|
||||
wwid = "3600140592b17c3f6b404168b082ceeb7";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems = lib.mkOverride 5 {
|
||||
"/" = {
|
||||
fsType = "xfs";
|
||||
device = "/dev/mapper/123456";
|
||||
options = [ "_netdev" ];
|
||||
};
|
||||
};
|
||||
|
||||
boot.initrd.extraFiles."etc/multipath/wwids".source = pkgs.writeText "wwids" "/3600140592b17c3f6b404168b082ceeb7/";
|
||||
|
||||
boot.iscsi-initiator = {
|
||||
discoverPortal = "target";
|
||||
name = initiatorName;
|
||||
target = targetName;
|
||||
extraIscsiCommands = ''
|
||||
iscsiadm -m discovery -o update -t sendtargets -p 192.168.2.3 --login
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }: ''
|
||||
target.start()
|
||||
target.wait_for_unit("iscsi-target.service")
|
||||
|
||||
initiatorAuto.start()
|
||||
|
||||
initiatorAuto.wait_for_unit("iscsid.service")
|
||||
initiatorAuto.wait_for_unit("iscsi.service")
|
||||
initiatorAuto.get_unit_info("iscsi")
|
||||
|
||||
# Expecting this to fail since we should already know about 192.168.1.3
|
||||
initiatorAuto.fail("iscsiadm -m discovery -o update -t sendtargets -p 192.168.1.3 --login")
|
||||
# Expecting this to succeed since we don't yet know about 192.168.2.3
|
||||
initiatorAuto.succeed("iscsiadm -m discovery -o update -t sendtargets -p 192.168.2.3 --login")
|
||||
|
||||
# /dev/sda is provided by iscsi on target
|
||||
initiatorAuto.succeed("set -x; while ! test -e /dev/sda; do sleep 1; done")
|
||||
|
||||
initiatorAuto.succeed("mkfs.xfs /dev/sda")
|
||||
initiatorAuto.succeed("mkdir /mnt")
|
||||
|
||||
# Start by verifying /dev/sda and /dev/sdb are both the same disk
|
||||
initiatorAuto.succeed("mount /dev/sda /mnt")
|
||||
initiatorAuto.succeed("touch /mnt/hi")
|
||||
initiatorAuto.succeed("umount /mnt")
|
||||
|
||||
initiatorAuto.succeed("mount /dev/sdb /mnt")
|
||||
initiatorAuto.succeed("test -e /mnt/hi")
|
||||
initiatorAuto.succeed("umount /mnt")
|
||||
|
||||
initiatorAuto.succeed("systemctl restart multipathd")
|
||||
initiatorAuto.succeed("multipath -ll | systemd-cat")
|
||||
|
||||
# Install our RootDisk machine to 123456, the alias to the device that multipath is now managing
|
||||
initiatorAuto.succeed("mount /dev/mapper/123456 /mnt")
|
||||
initiatorAuto.succeed("mkdir -p /mnt/etc/{multipath,iscsi}")
|
||||
initiatorAuto.succeed("cp -r /etc/multipath/wwids /mnt/etc/multipath/wwids")
|
||||
initiatorAuto.succeed("cp -r /etc/iscsi/{nodes,send_targets} /mnt/etc/iscsi")
|
||||
initiatorAuto.succeed(
|
||||
"nixos-install --no-bootloader --no-root-passwd --system /etc/initiator-root-disk-closure"
|
||||
)
|
||||
initiatorAuto.succeed("umount /mnt")
|
||||
initiatorAuto.shutdown()
|
||||
|
||||
initiatorRootDisk.start()
|
||||
initiatorRootDisk.wait_for_unit("multi-user.target")
|
||||
initiatorRootDisk.wait_for_unit("iscsid")
|
||||
|
||||
# Log in over both nodes
|
||||
initiatorRootDisk.fail("iscsiadm -m discovery -o update -t sendtargets -p 192.168.1.3 --login")
|
||||
initiatorRootDisk.fail("iscsiadm -m discovery -o update -t sendtargets -p 192.168.2.3 --login")
|
||||
initiatorRootDisk.succeed("systemctl restart multipathd")
|
||||
initiatorRootDisk.succeed("multipath -ll | systemd-cat")
|
||||
|
||||
# Verify we can write and sync the root disk
|
||||
initiatorRootDisk.succeed("mkdir /scratch")
|
||||
initiatorRootDisk.succeed("touch /scratch/both-up")
|
||||
initiatorRootDisk.succeed("sync /scratch")
|
||||
|
||||
# Verify we can write to the root with ens9 (sda, 192.168.1.3) down
|
||||
initiatorRootDisk.succeed("ip link set ens9 down")
|
||||
initiatorRootDisk.succeed("touch /scratch/ens9-down")
|
||||
initiatorRootDisk.succeed("sync /scratch")
|
||||
initiatorRootDisk.succeed("ip link set ens9 up")
|
||||
|
||||
# todo: better way to wait until multipath notices the link is back
|
||||
initiatorRootDisk.succeed("sleep 5")
|
||||
initiatorRootDisk.succeed("touch /scratch/both-down")
|
||||
initiatorRootDisk.succeed("sync /scratch")
|
||||
|
||||
# Verify we can write to the root with ens10 (sdb, 192.168.2.3) down
|
||||
initiatorRootDisk.succeed("ip link set ens10 down")
|
||||
initiatorRootDisk.succeed("touch /scratch/ens10-down")
|
||||
initiatorRootDisk.succeed("sync /scratch")
|
||||
initiatorRootDisk.succeed("ip link set ens10 up")
|
||||
initiatorRootDisk.succeed("touch /scratch/ens10-down")
|
||||
initiatorRootDisk.succeed("sync /scratch")
|
||||
|
||||
initiatorRootDisk.succeed("ip link set ens9 up")
|
||||
initiatorRootDisk.succeed("ip link set ens10 up")
|
||||
initiatorRootDisk.shutdown()
|
||||
|
||||
# Verify we can boot with the target's eth1 down, forcing
|
||||
# it to multipath via the second link
|
||||
target.succeed("ip link set eth1 down")
|
||||
initiatorRootDisk.start()
|
||||
initiatorRootDisk.wait_for_unit("multi-user.target")
|
||||
initiatorRootDisk.wait_for_unit("iscsid")
|
||||
initiatorRootDisk.succeed("test -e /scratch/both-up")
|
||||
'';
|
||||
}
|
||||
)
|
||||
|
||||
|
|
@ -33,8 +33,13 @@ in {
|
|||
in {
|
||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d /var/lib/nextcloud-data 0750 nextcloud nginx - -"
|
||||
];
|
||||
|
||||
services.nextcloud = {
|
||||
enable = true;
|
||||
datadir = "/var/lib/nextcloud-data";
|
||||
hostName = "nextcloud";
|
||||
config = {
|
||||
# Don't inherit adminuser since "root" is supposed to be the default
|
||||
|
@ -98,6 +103,7 @@ in {
|
|||
"${withRcloneEnv} ${copySharedFile}"
|
||||
)
|
||||
client.wait_for_unit("multi-user.target")
|
||||
nextcloud.succeed("test -f /var/lib/nextcloud-data/data/root/files/test-shared-file")
|
||||
client.succeed(
|
||||
"${withRcloneEnv} ${diffSharedFile}"
|
||||
)
|
||||
|
|
|
@ -198,6 +198,8 @@
|
|||
|
||||
railgun = callPackage ./railgun { };
|
||||
|
||||
rec-mode = callPackage ./rec-mode { };
|
||||
|
||||
structured-haskell-mode = self.shm;
|
||||
|
||||
sv-kalender = callPackage ./sv-kalender { };
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
{ lib
|
||||
, trivialBuild
|
||||
, recutils
|
||||
}:
|
||||
|
||||
trivialBuild {
|
||||
pname = "rec-mode";
|
||||
|
||||
inherit (recutils) version src;
|
||||
|
||||
postUnpack = ''
|
||||
sourceRoot="$sourceRoot/etc"
|
||||
'';
|
||||
|
||||
meta = recutils.meta // {
|
||||
description = "A major mode for editing rec files";
|
||||
};
|
||||
}
|
|
@ -4,9 +4,9 @@
|
|||
, curl, writeShellScript, common-updater-scripts }:
|
||||
|
||||
let
|
||||
url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.6.1-20f4dbb0/Hubstaff-1.6.1-20f4dbb0.sh";
|
||||
version = "1.6.1-20f4dbb0";
|
||||
sha256 = "097hpr4sjh14pidflvs8n1mkjpmij9l2vaan4m82vjrr0qdqi8qy";
|
||||
url = "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.6.2-b5029032/Hubstaff-1.6.2-b5029032.sh";
|
||||
version = "1.6.2-b5029032";
|
||||
sha256 = "1q3gimg6bcpdnm1fkn1vq3b6shwgi6y84bixisyfcva5px7dmi4s";
|
||||
|
||||
rpath = lib.makeLibraryPath
|
||||
[ libX11 zlib libSM libICE libXext freetype libXrender fontconfig libXft
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "markets";
|
||||
version = "0.5.2";
|
||||
version = "0.5.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitstower";
|
||||
repo = "markets";
|
||||
rev = version;
|
||||
sha256 = "0nk1bs7i6b7r90g5qwd3s2m462vk3kvza0drq7rzb5sdaiz9ccnz";
|
||||
sha256 = "0sfdmz7cp8i2bymippp8jyxsidxjn69v9cqm40q77j81kfm84bfv";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -14,11 +14,11 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mkgmap";
|
||||
version = "4807";
|
||||
version = "4808";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.mkgmap.org.uk/download/mkgmap-r${version}-src.tar.gz";
|
||||
sha256 = "3DEcXopoCIcBANYrGclZH6K0JLgeYADXtPjQtobyfps=";
|
||||
sha256 = "ooiXotpxdy99ViUQ0kFp0NoTowGEZjEoD31x+3XrW28=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
, hunspellWithDicts
|
||||
, intltool
|
||||
, isocodes
|
||||
, libappindicator-gtk3
|
||||
, libcanberra-gtk3
|
||||
, mousetweaks
|
||||
, udev
|
||||
|
@ -70,6 +71,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||
gtk3
|
||||
hunspell
|
||||
isocodes
|
||||
libappindicator-gtk3
|
||||
libcanberra-gtk3
|
||||
libxkbcommon
|
||||
mousetweaks
|
||||
|
@ -78,7 +80,7 @@ python3.pkgs.buildPythonApplication rec {
|
|||
xorg.libxkbfile
|
||||
] ++ lib.optional atspiSupport at-spi2-core;
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
pythonPath = with python3.pkgs; [
|
||||
dbus-python
|
||||
distutils_extra
|
||||
pyatspi
|
||||
|
|
|
@ -65,7 +65,7 @@ buildPythonApplication rec {
|
|||
gobject-introspection
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pythonPath = [
|
||||
pygobject3
|
||||
pyatspi
|
||||
dbus-python
|
||||
|
|
|
@ -5,19 +5,19 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "taskwarrior-tui";
|
||||
version = "0.13.33";
|
||||
version = "0.13.34";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kdheepak";
|
||||
repo = "taskwarrior-tui";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-vKmVScXQLDjhNJEzlhqiyhRZjR26xjrT1LijxzZK8Cg=";
|
||||
sha256 = "0p0nkqvkir6lriq75ingpfywn2yvyn3l35yxzk4aiq6vr2n7h3mw";
|
||||
};
|
||||
|
||||
# Because there's a test that requires terminal access
|
||||
doCheck = false;
|
||||
|
||||
cargoSha256 = "sha256-0E4nk8WLprumHKQjpdn+U36z7mdgFb7g/i7egLk4Jcs=";
|
||||
cargoSha256 = "1mzc6rnqcv97dlkl4j4p180f46wlyq45lc6nq7gqw396wc6m04km";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A terminal user interface for taskwarrior ";
|
||||
|
|
65
pkgs/applications/misc/themechanger/default.nix
Normal file
65
pkgs/applications/misc/themechanger/default.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{ lib
|
||||
, gobject-introspection
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, wrapGAppsHook
|
||||
, desktop-file-utils
|
||||
, glib
|
||||
, gtk3
|
||||
, python3
|
||||
, gsettings-desktop-schemas
|
||||
, python3Packages
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "themechanger";
|
||||
version = "0.10.1";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ALEX11BR";
|
||||
repo = "ThemeChanger";
|
||||
rev = "v${version}";
|
||||
sha256 = "1bxxn5bmdwaxfvyh6z2rxklwnxgvv6kh5y9m8r1k7d0n4msx1x2h";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gobject-introspection
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
desktop-file-utils
|
||||
gtk3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
gtk3
|
||||
python3
|
||||
gsettings-desktop-schemas
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
pygobject3
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs postinstall.py
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/ALEX11BR/ThemeChanger";
|
||||
description = "A theme changing utility for Linux";
|
||||
longDescription = ''
|
||||
This app is a theme changing utility for Linux, BSDs, and whatnots.
|
||||
It lets the user change GTK 2/3/4, Kvantum, icon and cursor themes, edit GTK CSS with live preview, and set some related options.
|
||||
It also lets the user install icon and widget theme archives.
|
||||
'';
|
||||
maintainers = with maintainers; [ ALEX11BR ];
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -92,11 +92,11 @@ in
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "brave";
|
||||
version = "1.30.87";
|
||||
version = "1.30.89";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
|
||||
sha256 = "0mx1vnrip1y87g6zj9sdcf5siihwn0b6v1q106d9kz89znpzd64s";
|
||||
sha256 = "2fu6Nk/eMLQ9nYy1aZDpjnRg16YosQPqdKtJ2VAYBrw=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
|
|
@ -53,9 +53,6 @@ buildFun:
|
|||
with lib;
|
||||
|
||||
let
|
||||
python2WithPackages = python2.withPackages(ps: with ps; [
|
||||
ply jinja2 setuptools
|
||||
]);
|
||||
python3WithPackages = python3.withPackages(ps: with ps; [
|
||||
ply jinja2 setuptools
|
||||
]);
|
||||
|
@ -125,7 +122,7 @@ let
|
|||
|
||||
nativeBuildInputs = [
|
||||
ninja pkg-config
|
||||
python2WithPackages python3WithPackages perl
|
||||
python2 python3WithPackages perl
|
||||
gnutar which
|
||||
llvmPackages.bintools
|
||||
];
|
||||
|
@ -308,7 +305,7 @@ let
|
|||
|
||||
# This is to ensure expansion of $out.
|
||||
libExecPath="${libExecPath}"
|
||||
${python2}/bin/python2 build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries}
|
||||
${python3}/bin/python3 build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries}
|
||||
${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
|
||||
|
||||
# Fail if `gn gen` contains a WARNING.
|
||||
|
|
|
@ -18,11 +18,11 @@ let
|
|||
vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "vivaldi";
|
||||
version = "4.1.2369.21-1";
|
||||
version = "4.3.2439.44-1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb";
|
||||
sha256 = "03062mik6paqp219jz420jsg762jjrfxmj1daq129z2zgzq0qr8l";
|
||||
sha256 = "1bsx8axs438f4p019mdq66pmpimf575r31rv6cibpgv85366xhh9";
|
||||
};
|
||||
|
||||
unpackPhase = ''
|
||||
|
@ -49,7 +49,7 @@ in stdenv.mkDerivation rec {
|
|||
buildPhase = ''
|
||||
runHook preBuild
|
||||
echo "Patching Vivaldi binaries"
|
||||
for f in crashpad_handler vivaldi-bin vivaldi-sandbox ; do
|
||||
for f in chrome_crashpad_handler vivaldi-bin vivaldi-sandbox ; do
|
||||
patchelf \
|
||||
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "${libPath}" \
|
||||
|
|
|
@ -563,10 +563,10 @@
|
|||
"owner": "hashicorp",
|
||||
"provider-source-address": "registry.terraform.io/hashicorp/kubernetes",
|
||||
"repo": "terraform-provider-kubernetes",
|
||||
"rev": "v2.4.1",
|
||||
"sha256": "0mk0f12yy58gjkki7xpf9bjfw9h9zdgby2b4bddqp5csq11payhd",
|
||||
"rev": "v2.5.0",
|
||||
"sha256": "1hp3bwhlfiwf1a4l6xfldwdxmyjs4nq3n8g343grjya7ibbhh4sg",
|
||||
"vendorSha256": null,
|
||||
"version": "2.4.1"
|
||||
"version": "2.5.0"
|
||||
},
|
||||
"launchdarkly": {
|
||||
"owner": "terraform-providers",
|
||||
|
|
|
@ -1,43 +1,74 @@
|
|||
{ lib, stdenv, mkDerivation, fetchFromGitHub
|
||||
, qmake, pkg-config, olm, wrapQtAppsHook
|
||||
, qtbase, qtquickcontrols2, qtkeychain, qtmultimedia, qtgraphicaleffects
|
||||
, python3Packages, pyotherside, libXScrnSaver
|
||||
{ lib
|
||||
, stdenv
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, libXScrnSaver
|
||||
, olm
|
||||
, pkg-config
|
||||
, pyotherside
|
||||
, python3Packages
|
||||
, qmake
|
||||
, qtbase
|
||||
, qtgraphicaleffects
|
||||
, qtkeychain
|
||||
, qtmultimedia
|
||||
, qtquickcontrols2
|
||||
, wrapQtAppsHook
|
||||
}:
|
||||
|
||||
let
|
||||
pypkgs = with python3Packages; [
|
||||
aiofiles filetype matrix-nio appdirs cairosvg
|
||||
pymediainfo setuptools html-sanitizer mistune blist
|
||||
pyotherside
|
||||
];
|
||||
in
|
||||
mkDerivation rec {
|
||||
pname = "mirage";
|
||||
version = "0.6.4";
|
||||
version = "0.7.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mirukana";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "15x0x2rf4fzsd0zr84fq3j3ddzkgc5il8s54jpxk8wl4ah03g4nv";
|
||||
sha256 = "sha256-dJS4lAXHHNUEAG75gQaS9+aQTTTj8KHqHjISioynFdY=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config qmake wrapQtAppsHook python3Packages.wrapPython ];
|
||||
|
||||
buildInputs = [
|
||||
qtbase qtmultimedia
|
||||
qtquickcontrols2
|
||||
qtkeychain qtgraphicaleffects
|
||||
olm pyotherside
|
||||
libXScrnSaver
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
python3Packages.wrapPython
|
||||
qmake
|
||||
wrapQtAppsHook
|
||||
];
|
||||
|
||||
propagatedBuildInputs = pypkgs;
|
||||
buildInputs = [
|
||||
libXScrnSaver
|
||||
olm
|
||||
pyotherside
|
||||
qtbase
|
||||
qtgraphicaleffects
|
||||
qtkeychain
|
||||
qtmultimedia
|
||||
qtquickcontrols2
|
||||
] ++ pythonPath;
|
||||
|
||||
pythonPath = pypkgs;
|
||||
pythonPath = with python3Packages; [
|
||||
aiofiles
|
||||
appdirs
|
||||
blist
|
||||
cairosvg
|
||||
filetype
|
||||
html-sanitizer
|
||||
hsluv
|
||||
matrix-nio
|
||||
mistune
|
||||
plyer
|
||||
pymediainfo
|
||||
pyotherside
|
||||
redbaron
|
||||
simpleaudio
|
||||
setuptools
|
||||
watchgod
|
||||
];
|
||||
|
||||
qmakeFlags = [ "PREFIX=${placeholder "out"}" "CONFIG+=qtquickcompiler" ];
|
||||
qmakeFlags = [
|
||||
"PREFIX=${placeholder "out"}"
|
||||
"CONFIG+=qtquickcompiler"
|
||||
];
|
||||
|
||||
dontWrapQtApps = true;
|
||||
postInstall = ''
|
||||
|
@ -45,14 +76,14 @@ mkDerivation rec {
|
|||
wrapProgram $out/bin/mirage \
|
||||
--prefix PYTHONPATH : "$PYTHONPATH" \
|
||||
"''${qtWrapperArgs[@]}"
|
||||
'';
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A fancy, customizable, keyboard-operable Qt/QML+Python Matrix chat client for encrypted and decentralized communication";
|
||||
homepage = "https://github.com/mirukana/mirage";
|
||||
license = licenses.lgpl3;
|
||||
maintainers = with maintainers; [ colemickens ];
|
||||
broken = stdenv.isDarwin;
|
||||
description = "A fancy, customizable, keyboard-operable Qt/QML+Python Matrix chat client for encrypted and decentralized communication";
|
||||
license = licenses.lgpl3Plus;
|
||||
maintainers = with maintainers; [ colemickens AndersonTorres ];
|
||||
inherit (qtbase.meta) platforms;
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ let
|
|||
|
||||
# Please keep the version x.y.0.z and do not update to x.y.76.z because the
|
||||
# source of the latter disappears much faster.
|
||||
version = "8.75.0.140";
|
||||
version = "8.77.0.97";
|
||||
|
||||
rpath = lib.makeLibraryPath [
|
||||
alsa-lib
|
||||
|
@ -69,7 +69,7 @@ let
|
|||
"https://mirror.cs.uchicago.edu/skype/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb"
|
||||
"https://web.archive.org/web/https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb"
|
||||
];
|
||||
sha256 = "sha256-z3xsl53CSJthSd/BMbMD7RdYQ4z9oI/Rb9jUvd82H4E=";
|
||||
sha256 = "sha256-0u1fpKJrsEgbvTwdkqJZ/SwCRDmJwEi9IXHbMmY8MJI=";
|
||||
}
|
||||
else
|
||||
throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, gtk2, lua, perl, python3
|
||||
{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, gtk2, lua, perl, python3Packages
|
||||
, pciutils, dbus-glib, libcanberra-gtk2, libproxy
|
||||
, enchant2, libnotify, openssl, isocodes
|
||||
, desktop-file-utils
|
||||
, meson, ninja
|
||||
, meson, ninja, makeWrapper
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "hexchat";
|
||||
version = "2.14.3";
|
||||
version = "2.16.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hexchat";
|
||||
repo = "hexchat";
|
||||
rev = "v${version}";
|
||||
sha256 = "08kvp0dcn3bvmlqcfp9312075bwkqkpa8m7zybr88pfp210gfl85";
|
||||
sha256 = "08zhlf9d3xdis62byxzgizhfg8kbppxl7cgxkzhwdc1srpj7vpx6";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ meson ninja pkg-config ];
|
||||
nativeBuildInputs = [ meson ninja pkg-config makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
gtk2 lua perl python3 pciutils dbus-glib libcanberra-gtk2 libproxy
|
||||
gtk2 lua perl python3Packages.python python3Packages.cffi pciutils dbus-glib libcanberra-gtk2 libproxy
|
||||
libnotify openssl desktop-file-utils
|
||||
isocodes
|
||||
];
|
||||
|
@ -30,9 +30,10 @@ stdenv.mkDerivation rec {
|
|||
sed -i "/flag.startswith('-I')/i if flag.contains('no-such-path')\ncontinue\nendif" plugins/perl/meson.build
|
||||
chmod +x meson_post_install.py
|
||||
for f in meson_post_install.py \
|
||||
src/common/make-te.py \
|
||||
plugins/perl/generate_header.py \
|
||||
po/validate-textevent-translations
|
||||
plugins/python/generate_plugin.py \
|
||||
po/validate-textevent-translations \
|
||||
src/common/make-te.py
|
||||
do
|
||||
patchShebangs $f
|
||||
done
|
||||
|
@ -40,6 +41,10 @@ stdenv.mkDerivation rec {
|
|||
|
||||
mesonFlags = [ "-Dwith-lua=lua" "-Dwith-text=true" ];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/hexchat --prefix PYTHONPATH : "$PYTHONPATH"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A popular and easy to use graphical IRC (chat) client";
|
||||
homepage = "https://hexchat.github.io/";
|
||||
|
|
|
@ -44,6 +44,7 @@ let
|
|||
"8.13.0".sha256 = "0sjbqmz6qcvnz0hv87xha80qbhvmmyd675wyc5z4rgr34j2l1ymd";
|
||||
"8.13.1".sha256 = "0xx2ns84mlip9bg2mkahy3pmc5zfcgrjxsviq9yijbzy1r95wf0n";
|
||||
"8.13.2".sha256 = "1884vbmwmqwn9ngibax6dhnqh4cc02l0s2ajc6jb1xgr0i60whjk";
|
||||
"8.14+rc1".sha256 = "0jrkgj7c2959dsinw4x7q4ril1x24qq08snl25hgx33ls4sym5zb";
|
||||
};
|
||||
releaseRev = v: "V${v}";
|
||||
fetched = import ../../../../build-support/coq/meta-fetch/default.nix
|
||||
|
@ -163,7 +164,7 @@ self = stdenv.mkDerivation {
|
|||
|
||||
prefixKey = "-prefix ";
|
||||
|
||||
buildFlags = [ "revision" "coq" "coqide" "bin/votour" ];
|
||||
buildFlags = [ "revision" "coq" "coqide" ] ++ optional (!versionAtLeast "8.14") "bin/votour";
|
||||
enableParallelBuilding = true;
|
||||
|
||||
createFindlibDestdir = true;
|
||||
|
@ -177,9 +178,11 @@ self = stdenv.mkDerivation {
|
|||
categories = "Development;Science;Math;IDE;GTK";
|
||||
});
|
||||
|
||||
postInstall = ''
|
||||
postInstall = let suffix = if versionAtLeast "8.14" then "-core" else ""; in ''
|
||||
cp bin/votour $out/bin/
|
||||
ln -s $out/lib/coq $OCAMLFIND_DESTDIR/coq
|
||||
ln -s $out/lib/coq${suffix} $OCAMLFIND_DESTDIR/coq${suffix}
|
||||
'' + optionalString (versionAtLeast "8.14") ''
|
||||
ln -s $out/lib/coqide-server $OCAMLFIND_DESTDIR/coqide-server
|
||||
'' + optionalString buildIde ''
|
||||
mkdir -p "$out/share/pixmaps"
|
||||
ln -s "$out/share/coq/coq.png" "$out/share/pixmaps/"
|
||||
|
|
|
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
|
|||
# z3's install phase is stupid because it tries to calculate the
|
||||
# python package store location itself, meaning it'll attempt to
|
||||
# write files into the nix store, and fail.
|
||||
soext = if stdenv.system == "x86_64-darwin" then ".dylib" else ".so";
|
||||
soext = stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/lib/${python.libPrefix}/site-packages $out/include
|
||||
cp ../src/api/z3*.h $out/include
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
buildPythonApplication rec {
|
||||
pname = "MAVProxy";
|
||||
version = "1.8.44";
|
||||
version = "1.8.45";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "104000a0e57ef4591bdf28addf8057339b22cbff9501ba92b9b1720d0b2b7325";
|
||||
sha256 = "f1010cefb5b97a5d392d32aa1425bdb7df995161125f8686f2c7383c2a86e9e5";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -13,11 +13,11 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gitkraken";
|
||||
version = "7.7.2";
|
||||
version = "8.0.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://release.axocdn.com/linux/GitKraken-v${version}.tar.gz";
|
||||
sha256 = "sha256-jL0XLw0V0ED+lDBn3sGaJmm96zQwXue333UuYGHjB64=";
|
||||
sha256 = "1n88m41424qwsfp2hy58piqpv2dk6i74hcj184aq6njllvnsznnq";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
|
37
pkgs/build-support/fetchnextcloudapp/default.nix
Normal file
37
pkgs/build-support/fetchnextcloudapp/default.nix
Normal file
|
@ -0,0 +1,37 @@
|
|||
{ stdenv, gnutar, findutils, fetchurl, ... }:
|
||||
{ name
|
||||
, url
|
||||
, version
|
||||
, sha256
|
||||
, patches ? [ ]
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
name = "nc-app-${name}";
|
||||
inherit version patches;
|
||||
|
||||
src = fetchurl {
|
||||
inherit url sha256;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnutar
|
||||
findutils
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
tar -xzpf $src
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
approot="$(dirname $(dirname $(find -path '*/appinfo/info.xml' | head -n 1)))"
|
||||
|
||||
if [ -d "$approot" ];
|
||||
then
|
||||
mv "$approot/" $out
|
||||
chmod -R a-w $out
|
||||
else
|
||||
echo "Could not find appinfo/info.xml"
|
||||
exit 1;
|
||||
fi
|
||||
'';
|
||||
}
|
|
@ -14,6 +14,8 @@ mkDerivation rec {
|
|||
pname = "adwaita-qt";
|
||||
version = "1.4.0";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FedoraQt";
|
||||
repo = pname;
|
||||
|
|
|
@ -79,13 +79,12 @@ python3.pkgs.buildPythonApplication rec {
|
|||
gst-plugins-ugly
|
||||
]);
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
pythonPath = with python3.pkgs; [
|
||||
pycairo
|
||||
dbus-python
|
||||
pygobject3
|
||||
];
|
||||
|
||||
|
||||
postPatch = ''
|
||||
for f in meson_post_conf.py meson_post_install.py; do
|
||||
chmod +x $f
|
||||
|
@ -93,6 +92,13 @@ python3.pkgs.buildPythonApplication rec {
|
|||
done
|
||||
'';
|
||||
|
||||
# Prevent double wrapping, let the Python wrapper use the args in preFixup.
|
||||
dontWrapGApps = true;
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
|
||||
# handle setup hooks better
|
||||
|
|
|
@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
mesonFlags = [
|
||||
"-Dhttpd=${apacheHttpd.out}/bin/httpd"
|
||||
"-Dmodules_path=${apacheHttpd.dev}/modules"
|
||||
"-Dmodules_path=${apacheHttpd}/modules"
|
||||
"-Dsystemduserunitdir=${placeholder "out"}/etc/systemd/user"
|
||||
# In 3.34.0 it defaults to false but it is silently ignored and always installed.
|
||||
# Let’s add it anyway in case they decide to make build respect the option in the future.
|
||||
|
|
|
@ -36,6 +36,8 @@ stdenv.mkDerivation rec {
|
|||
pname = "nautilus";
|
||||
version = "41.0";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "+blBrcEEcAxn6kB2YiMV8fa3fc7BVMN/PUwLKDlQoeU=";
|
||||
|
|
|
@ -56,7 +56,7 @@ python3Packages.buildPythonApplication rec {
|
|||
libsoup
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
pythonPath = with python3Packages; [
|
||||
pygobject3
|
||||
];
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
configureFlags = [
|
||||
"--with-httpd=${apacheHttpd.out}/bin/httpd"
|
||||
"--with-modules-path=${apacheHttpd.dev}/modules"
|
||||
"--with-modules-path=${apacheHttpd}/modules"
|
||||
"--with-cajadir=$(out)/lib/caja/extensions-2.0"
|
||||
];
|
||||
|
||||
|
|
|
@ -1,20 +1,27 @@
|
|||
{ lib, rustPlatform, fetchFromGitHub, makeWrapper, z3 }:
|
||||
{ lib, rustPlatform, fetchFromGitHub, makeWrapper, z3, pkgsHostTarget }:
|
||||
|
||||
let
|
||||
runtimeDeps = [
|
||||
z3
|
||||
pkgsHostTarget.targetPackages.stdenv.cc
|
||||
];
|
||||
in
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "zz";
|
||||
version = "unstable-2021-03-07";
|
||||
version = "unstable-2021-05-04";
|
||||
|
||||
# when updating, choose commit of the latest build on http://bin.zetz.it/
|
||||
src = fetchFromGitHub {
|
||||
owner = "zetzit";
|
||||
repo = "zz";
|
||||
rev = "d3fc968ba2ae6668f930e39077f9a90aecb9fdc4";
|
||||
sha256 = "18p17lgwq6rq1n76sj0dwb32bpxflfd7knky1v0sgmaxfpaq04y3";
|
||||
rev = "18020b10b933cfe2fc7f2256b71e646889f9b1d2";
|
||||
sha256 = "01nlyyk1qxk76dq2hw3wpbjwkh27zzp6mpczjnxdpv6rxs7mc825";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
cargoSha256 = "03xdmm4993hqdb3cihjjv4n4mdk8lnlccva08fh6m1d56p807rni";
|
||||
cargoSha256 = "080rd8x4jsssnx4il80xcb81iw8pjcm70zckpa1hcijkw9104dgs";
|
||||
|
||||
postPatch = ''
|
||||
# remove search path entry which would reference /build
|
||||
|
@ -26,7 +33,7 @@ rustPlatform.buildRustPackage rec {
|
|||
cp -r modules "$out/share/zz/"
|
||||
|
||||
wrapProgram $out/bin/zz \
|
||||
--prefix PATH ":" "${lib.getBin z3}/bin" \
|
||||
--prefix PATH ":" "${lib.makeBinPath runtimeDeps}" \
|
||||
--suffix ZZ_MODULE_PATHS ":" "$out/share/zz/modules"
|
||||
'';
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ mkCoqDerivation {
|
|||
|
||||
releaseRev = v: "v${v}";
|
||||
|
||||
release."8.14.0".sha256 = "04x47ngb95m1h4jw2gl0v79s5im7qimcw7pafc34gkkf51pyhakp";
|
||||
release."8.13.0".sha256 = "sha256-MAnMc4KzC551JInrRcfKED4nz04FO0GyyyuDVRmnYTY=";
|
||||
release."8.12.0".sha256 = "sha256-dPNA19kZo/2t3rbyX/R5yfGcaEfMhbm9bo71Uo4ZwoM=";
|
||||
release."8.11.0".sha256 = "sha256-CKKMiJLltIb38u+ZKwfQh/NlxYawkafp+okY34cGCYU=";
|
||||
|
@ -17,6 +18,7 @@ mkCoqDerivation {
|
|||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = "8.14"; out = "8.14.0"; }
|
||||
{ case = "8.13"; out = "8.13.0"; }
|
||||
{ case = "8.12"; out = "8.12.0"; }
|
||||
{ case = "8.11"; out = "8.11.0"; }
|
||||
|
|
|
@ -8,6 +8,7 @@ with lib; mkCoqDerivation {
|
|||
defaultVersion = if versions.isGe "8.5" coq.coq-version
|
||||
then "${coq.coq-version}.0" else null;
|
||||
|
||||
release."8.14.0".sha256 = "0jsgdvj0ddhkls32krprp34r64y1rb5mwxl34fgaxk2k4664yq06";
|
||||
release."8.13.0".sha256 = "1n66i7hd9222b2ks606mak7m4f0dgy02xgygjskmmav6h7g2sx7y";
|
||||
release."8.12.0".sha256 = "14ijb3qy2hin3g4djx437jmnswxxq7lkfh3dwh9qvrds9a015yg8";
|
||||
release."8.11.0".sha256 = "1xcd7c7qlvs0narfba6px34zq0mz8rffnhxw0kzhhg6i4iw115dp";
|
||||
|
|
|
@ -6,6 +6,7 @@ with lib; mkCoqDerivation {
|
|||
repo = "Coq-Equations";
|
||||
inherit version;
|
||||
defaultVersion = switch coq.coq-version [
|
||||
{ case = "8.14"; out = "1.3-8.14"; }
|
||||
{ case = "8.13"; out = "1.2.4+coq8.13"; }
|
||||
{ case = "8.12"; out = "1.2.4+coq8.12"; }
|
||||
{ case = "8.11"; out = "1.2.4+coq8.11"; }
|
||||
|
@ -43,6 +44,8 @@ with lib; mkCoqDerivation {
|
|||
release."1.2.4+coq8.12".sha256 = "1n0w8is464qcq8mk2mv7amaf0khbjz5mpc9phf0rhpjm0lb22cb3";
|
||||
release."1.2.4+coq8.13".rev = "v1.2.4-8.13";
|
||||
release."1.2.4+coq8.13".sha256 = "0i014lshsdflzw6h0qxra9d2f0q82vffxv2f29awbb9ad0p4rq4q";
|
||||
release."1.3-8.14".rev = "v1.3-8.14";
|
||||
release."1.3-8.14".sha256 = "19bj9nncd1r9g4273h5qx35gs3i4bw5z9bhjni24b413hyj55hkv";
|
||||
|
||||
mlPlugin = true;
|
||||
preBuild = "coq_makefile -f _CoqProject -o Makefile";
|
||||
|
|
|
@ -9,8 +9,8 @@ mkCoqDerivation {
|
|||
release."1.2.3".sha256 = "sha256-gwKfUa74fIP7j+2eQgnLD7AswjCtOFGHGaIWb4qI0n4=";
|
||||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch mathcomp.version [
|
||||
{ case = pred.inter (isGe "1.11.0") (isLt "1.13"); out = "1.2.3"; }
|
||||
defaultVersion = with versions; switch [ coq.version mathcomp.version ] [
|
||||
{ cases = [ (isLe "8.13") (pred.inter (isGe "1.11.0") (isLt "1.13")) ]; out = "1.2.3"; }
|
||||
] null;
|
||||
|
||||
propagatedBuildInputs = [ mathcomp.algebra ];
|
||||
|
|
|
@ -10,7 +10,7 @@ mkCoqDerivation {
|
|||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.11"; out = "8.12.0"; }
|
||||
{ case = range "8.11" "8.13"; out = "8.12.0"; }
|
||||
] null;
|
||||
|
||||
propagatedBuildInputs = [ hydra-battles pocklington ];
|
||||
|
|
|
@ -12,7 +12,7 @@ mkCoqDerivation {
|
|||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.13"; out = "0.9"; }
|
||||
{ case = isEq "8.13"; out = "0.9"; }
|
||||
] null;
|
||||
|
||||
propagatedBuildInputs = [ mathcomp-algebra mathcomp-finmap hierarchy-builder ];
|
||||
|
|
|
@ -5,8 +5,8 @@ with lib; mkCoqDerivation {
|
|||
owner = "math-comp";
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.12"; out = "1.1.0"; }
|
||||
{ case = range "8.11" "8.12"; out = "0.10.0"; }
|
||||
{ case = range "8.12" "8.13"; out = "1.1.0"; }
|
||||
{ case = isEq "8.11"; out = "0.10.0"; }
|
||||
] null;
|
||||
release."1.1.0".sha256 = "sha256-spno5ty4kU4WWiOfzoqbXF8lWlNSlySWcRReR3zE/4Q=";
|
||||
release."1.0.0".sha256 = "0yykygs0z6fby6vkiaiv3azy1i9yx4rqg8xdlgkwnf2284hffzpp";
|
||||
|
|
|
@ -6,8 +6,8 @@ with lib; mkCoqDerivation rec {
|
|||
owner = "iris";
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.11"; out = "3.4.0"; }
|
||||
{ case = range "8.9" "8.11"; out = "3.3.0"; }
|
||||
{ case = range "8.11" "8.13"; out = "3.4.0"; }
|
||||
{ case = range "8.9" "8.10"; out = "3.3.0"; }
|
||||
] null;
|
||||
release."3.4.0".sha256 = "0vdc2mdqn5jjd6yz028c0c6blzrvpl0c7apx6xas7ll60136slrb";
|
||||
release."3.3.0".sha256 = "0az4gkp5m8sq0p73dlh0r7ckkzhk7zkg5bndw01bdsy5ywj0vilp";
|
||||
|
|
|
@ -9,7 +9,7 @@ mkCoqDerivation rec {
|
|||
release."8.13+no".sha256 = "sha256-gXoxtLcHPoyjJkt7WqvzfCMCQlh6kL2KtCGe3N6RC/A=";
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.13"; out = "8.13+no"; }
|
||||
{ case = isEq "8.13"; out = "8.13+no"; }
|
||||
] null;
|
||||
|
||||
mlPlugin = true;
|
||||
|
|
|
@ -9,7 +9,7 @@ with lib; mkCoqDerivation {
|
|||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch [ coq.version mathcomp.version ] [
|
||||
{ cases = [ (range "8.10" "8.13") "1.12.0" ]; out = "1.5.4"; }
|
||||
{ cases = [ (range "8.10" "8.14") "1.12.0" ]; out = "1.5.4"; }
|
||||
{ cases = [ (range "8.10" "8.12") "1.12.0" ]; out = "1.5.3"; }
|
||||
{ cases = [ (range "8.7" "8.12") "1.11.0" ]; out = "1.5.2"; }
|
||||
{ cases = [ (range "8.7" "8.11") (range "1.8" "1.10") ]; out = "1.5.0"; }
|
||||
|
|
|
@ -5,8 +5,8 @@ with lib; mkCoqDerivation {
|
|||
owner = "snu-sf";
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.6"; out = "4.0.2"; }
|
||||
{ case = range "8.5" "8.8"; out = "1.2.8"; }
|
||||
{ case = range "8.6" "8.13"; out = "4.0.2"; }
|
||||
{ case = isEq "8.5"; out = "1.2.8"; }
|
||||
] null;
|
||||
release."4.0.2".sha256 = "1q96bsxclqx84xn5vkid501jkwlc1p6fhb8szrlrp82zglj58b0b";
|
||||
release."1.2.8".sha256 = "05fskx5x1qgaf9qv626m38y5izichzzqc7g2rglzrkygbskrrwsb";
|
||||
|
|
|
@ -11,7 +11,7 @@ mkCoqDerivation {
|
|||
releaseRev = (v: "v${v}");
|
||||
|
||||
inherit version;
|
||||
defaultVersion = if versions.isGe "8.12" coq.version then "0.1.0" else null;
|
||||
defaultVersion = if versions.range "8.12" "8.13" coq.version then "0.1.0" else null;
|
||||
release."0.1.0".sha256 = "sha256:01avfcqirz2b9wjzi9iywbhz9szybpnnj3672dgkfsimyg9jgnsr";
|
||||
|
||||
meta = {
|
||||
|
|
|
@ -10,7 +10,7 @@ mkCoqDerivation {
|
|||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = range "8.10" "8.13"; out = "1.1.2"; }
|
||||
{ case = range "8.10" "8.14"; out = "1.1.2"; }
|
||||
] null;
|
||||
|
||||
|
||||
|
|
|
@ -15,11 +15,11 @@ mkCoqDerivation {
|
|||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.13"; out = "1.7.5"; }
|
||||
{ case = isGe "8.12"; out = "1.7.4"; }
|
||||
{ case = isGe "8.11"; out = "1.7.3"; }
|
||||
{ case = isGe "8.10"; out = "1.7.2"; }
|
||||
{ case = isGe "8.9"; out = "1.7.1"; }
|
||||
{ case = isEq "8.13"; out = "1.7.5"; }
|
||||
{ case = isEq "8.12"; out = "1.7.4"; }
|
||||
{ case = isEq "8.11"; out = "1.7.3"; }
|
||||
{ case = isEq "8.10"; out = "1.7.2"; }
|
||||
{ case = isEq "8.9"; out = "1.7.1"; }
|
||||
] null;
|
||||
|
||||
mlPlugin = true;
|
||||
|
|
|
@ -15,8 +15,7 @@ mkCoqDerivation rec {
|
|||
|
||||
inherit version;
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.13"; out = "8.13.0"; }
|
||||
{ case = "8.11"; out = "8.11.1"; }
|
||||
{ case = range "8.10" "8.13"; out = "8.13.0"; }
|
||||
{ case = "8.9"; out = "8.9.0"; }
|
||||
{ case = "8.8"; out = "8.8.0"; }
|
||||
{ case = "8.7"; out = "8.7.0"; }
|
||||
|
|
|
@ -15,10 +15,11 @@ let
|
|||
});
|
||||
|
||||
release = {
|
||||
"8.13.0+0.13.0".sha256 = "sha256:0k69907xn4k61w4mkhwf8kh8drw9pijk9ynijsppihw98j8w38fy";
|
||||
"8.12.0+0.12.1".sha256 = "sha256:048x3sgcq4h845hi6hm4j4dsfca8zfj70dm42w68n63qcm6xf9hn";
|
||||
"8.11.0+0.11.1".sha256 = "sha256:1phmh99yqv71vlwklqgfxiq2vj99zrzxmryj2j4qvg5vav3y3y6c";
|
||||
"8.10.0+0.7.2".sha256 = "sha256:1ljzm63hpd0ksvkyxcbh8rdf7p90vg91gb4h0zz0941v1zh40k8c";
|
||||
"8.14+rc1+0.14.0".sha256 = "1w7d7anvcfx8vz51mnrf1jkw6rlpzjkjlr06avf58wlhymww7pja";
|
||||
"8.13.0+0.13.0".sha256 = "0k69907xn4k61w4mkhwf8kh8drw9pijk9ynijsppihw98j8w38fy";
|
||||
"8.12.0+0.12.1".sha256 = "048x3sgcq4h845hi6hm4j4dsfca8zfj70dm42w68n63qcm6xf9hn";
|
||||
"8.11.0+0.11.1".sha256 = "1phmh99yqv71vlwklqgfxiq2vj99zrzxmryj2j4qvg5vav3y3y6c";
|
||||
"8.10.0+0.7.2".sha256 = "1ljzm63hpd0ksvkyxcbh8rdf7p90vg91gb4h0zz0941v1zh40k8c";
|
||||
};
|
||||
in
|
||||
|
||||
|
@ -27,6 +28,7 @@ in
|
|||
inherit version release;
|
||||
|
||||
defaultVersion = with versions; switch coq.version [
|
||||
{ case = isEq "8.14"; out = "8.14+rc1+0.14.0"; }
|
||||
{ case = isEq "8.13"; out = "8.13.0+0.13.0"; }
|
||||
{ case = isEq "8.12"; out = "8.12.0+0.12.1"; }
|
||||
{ case = isEq "8.11"; out = "8.11.0+0.11.1"; }
|
||||
|
@ -63,10 +65,14 @@ in
|
|||
}).overrideAttrs(o:
|
||||
let inherit (o) version; in {
|
||||
src = fetchzip {
|
||||
url = "https://github.com/ejgallego/coq-serapi/releases/download/${version}/coq-serapi-${
|
||||
if version == "8.11.0+0.11.1" then version
|
||||
else builtins.replaceStrings [ "+" ] [ "." ] version
|
||||
}.tbz";
|
||||
url =
|
||||
if version == "8.14+rc1+0.14.0"
|
||||
then "https://github.com/ejgallego/coq-serapi/archive/refs/tags/8.14+rc1+0.14.0.tar.gz"
|
||||
else
|
||||
"https://github.com/ejgallego/coq-serapi/releases/download/${version}/coq-serapi-${
|
||||
if version == "8.11.0+0.11.1" then version
|
||||
else builtins.replaceStrings [ "+" ] [ "." ] version
|
||||
}.tbz";
|
||||
sha256 = release."${version}".sha256;
|
||||
};
|
||||
})
|
||||
|
|
|
@ -6,8 +6,8 @@ with lib; mkCoqDerivation rec {
|
|||
domain = "gitlab.mpi-sws.org";
|
||||
owner = "iris";
|
||||
defaultVersion = with versions; switch coq.coq-version [
|
||||
{ case = isGe "8.11"; out = "1.5.0"; }
|
||||
{ case = range "8.8" "8.11"; out = "1.4.0"; }
|
||||
{ case = range "8.11" "8.13"; out = "1.5.0"; }
|
||||
{ case = range "8.8" "8.10"; out = "1.4.0"; }
|
||||
] null;
|
||||
release."1.5.0".sha256 = "1ym0fy620imah89p8b6rii8clx2vmnwcrbwxl3630h24k42092nf";
|
||||
release."1.4.0".sha256 = "1m6c7ibwc99jd4cv14v3r327spnfvdf3x2mnq51f9rz99rffk68r";
|
||||
|
|
|
@ -10,6 +10,8 @@ stdenv.mkDerivation rec {
|
|||
pname = "dleyna-core";
|
||||
version = "0.6.0";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
|
|
|
@ -233,6 +233,7 @@ stdenv.mkDerivation rec {
|
|||
mesonFlags = [
|
||||
"-Dexamples=disabled" # requires many dependencies and probably not useful for our users
|
||||
"-Ddoc=disabled" # `hotdoc` not packaged in nixpkgs as of writing
|
||||
"-Dglib-asserts=disabled" # asserts should be disabled on stable releases
|
||||
|
||||
"-Davtp=disabled"
|
||||
"-Ddts=disabled" # required `libdca` library not packaged in nixpkgs as of writing, and marked as "BIG FAT WARNING: libdca is still in early development"
|
||||
|
|
|
@ -120,6 +120,7 @@ stdenv.mkDerivation rec {
|
|||
mesonFlags = [
|
||||
"-Dexamples=disabled" # requires many dependencies and probably not useful for our users
|
||||
"-Ddoc=disabled" # `hotdoc` not packaged in nixpkgs as of writing
|
||||
"-Dglib-asserts=disabled" # asserts should be disabled on stable releases
|
||||
] ++ lib.optionals (!qt5Support) [
|
||||
"-Dqt5=disabled"
|
||||
] ++ lib.optionals (!gtkSupport) [
|
||||
|
|
|
@ -6,6 +6,8 @@ stdenv.mkDerivation rec {
|
|||
pname = "libgxps";
|
||||
version = "0.3.2";
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "bSeGclajXM+baSU+sqiKMrrKO5fV9O9/guNmf6Q1JRw=";
|
||||
|
|
|
@ -151,13 +151,11 @@ stdenv.mkDerivation rec {
|
|||
in
|
||||
(lib.optionalString enableFIPS (''
|
||||
for libname in freebl3 nssdbm3 softokn3
|
||||
do '' +
|
||||
do libfile="$out/lib/lib$libname${stdenv.hostPlatform.extensions.sharedLibrary}"'' +
|
||||
(if stdenv.isDarwin
|
||||
then ''
|
||||
libfile="$out/lib/lib$libname.dylib"
|
||||
DYLD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
|
||||
'' else ''
|
||||
libfile="$out/lib/lib$libname.so"
|
||||
LD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
|
||||
'') + ''
|
||||
${nss}/bin/shlibsign -v -i "$libfile"
|
||||
|
|
|
@ -166,13 +166,11 @@ stdenv.mkDerivation rec {
|
|||
in
|
||||
(lib.optionalString enableFIPS (''
|
||||
for libname in freebl3 nssdbm3 softokn3
|
||||
do '' +
|
||||
do libfile="$out/lib/lib$libname${stdenv.hostPlatform.extensions.sharedLibrary}"'' +
|
||||
(if stdenv.isDarwin
|
||||
then ''
|
||||
libfile="$out/lib/lib$libname.dylib"
|
||||
DYLD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
|
||||
'' else ''
|
||||
libfile="$out/lib/lib$libname.so"
|
||||
LD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
|
||||
'') + ''
|
||||
${nss}/bin/shlibsign -v -i "$libfile"
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
|
||||
passthru = {
|
||||
fancyName = "MariaDB";
|
||||
driver = if stdenv.isDarwin then "lib/libmaodbc.dylib" else "lib/libmaodbc.so";
|
||||
driver = "lib/libmaodbc${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -1,34 +1,22 @@
|
|||
{ lib, fetchFromGitLab, buildDunePackage, ff, zarith, ctypes, tezos-rust-libs, alcotest }:
|
||||
{ lib, buildDunePackage, bls12-381-gen, ff-sig, zarith, ctypes, alcotest }:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "bls12-381";
|
||||
version = "0.3.15";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "dannywillems";
|
||||
repo = "ocaml-bls12-381";
|
||||
rev = version;
|
||||
sha256 = "1s8n657fsl2gs01p7v2ffpcfzymavifhhpriyx1gq5qh4zvvw4vr";
|
||||
};
|
||||
useDune2 = true;
|
||||
inherit (bls12-381-gen) version src useDune2 doCheck;
|
||||
|
||||
minimalOCamlVersion = "4.08";
|
||||
propagatedBuildInputs = [
|
||||
ff
|
||||
ff-sig
|
||||
zarith
|
||||
ctypes
|
||||
tezos-rust-libs
|
||||
bls12-381-gen
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest
|
||||
];
|
||||
|
||||
# This is a hack to work around the hack used in the dune files
|
||||
OPAM_SWITCH_PREFIX = "${tezos-rust-libs}";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.com/dannywillems/ocaml-bls12-381";
|
||||
description = "OCaml binding for bls12-381 from librustzcash";
|
||||
|
|
30
pkgs/development/ocaml-modules/bls12-381/gen.nix
Normal file
30
pkgs/development/ocaml-modules/bls12-381/gen.nix
Normal file
|
@ -0,0 +1,30 @@
|
|||
{ lib, fetchFromGitLab, buildDunePackage, ff-sig, zarith }:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "bls12-381-gen";
|
||||
version = "0.4.2";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "dannywillems";
|
||||
repo = "ocaml-bls12-381";
|
||||
rev = version;
|
||||
sha256 = "0jxc8qrdn74brmzjns1xycv3cb257kx5pa3ripgl9ci4njkv87n2";
|
||||
};
|
||||
useDune2 = true;
|
||||
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
ff-sig
|
||||
zarith
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.com/dannywillems/ocaml-bls12-381";
|
||||
description = "Functors to generate BLS12-381 primitives based on stubs";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ulrikstrid ];
|
||||
};
|
||||
}
|
48
pkgs/development/ocaml-modules/bls12-381/unix.nix
Normal file
48
pkgs/development/ocaml-modules/bls12-381/unix.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, rustc
|
||||
, cargo
|
||||
, dune-configurator
|
||||
, bls12-381
|
||||
, bls12-381-gen
|
||||
, ff-pbt
|
||||
, ff-sig
|
||||
, zarith
|
||||
, ctypes
|
||||
, tezos-rust-libs
|
||||
, alcotest
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "bls12-381-unix";
|
||||
|
||||
inherit (bls12-381-gen) version src useDune2 doCheck;
|
||||
|
||||
checkInputs = [
|
||||
alcotest
|
||||
ff-pbt
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rustc
|
||||
cargo
|
||||
dune-configurator
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
ff-sig
|
||||
zarith
|
||||
ctypes
|
||||
bls12-381-gen
|
||||
bls12-381
|
||||
tezos-rust-libs
|
||||
];
|
||||
|
||||
# This is a hack to work around the hack used in the dune files
|
||||
OPAM_SWITCH_PREFIX = "${tezos-rust-libs}";
|
||||
|
||||
meta = {
|
||||
description = "UNIX version of BLS12-381 primitives implementing the virtual package bls12-381";
|
||||
license = lib.licenses.mit;
|
||||
};
|
||||
}
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
buildDunePackage {
|
||||
pname = "data-encoding";
|
||||
version = "0.2.0";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "nomadic-labs";
|
||||
repo = "data-encoding";
|
||||
rev = "0.2";
|
||||
sha256 = "0d9c2ix2imqk4r0jfhnwak9laarlbsq9kmswvbnjzdm2g0hwin1d";
|
||||
rev = "v0.4";
|
||||
sha256 = "1f88l9azpfk730hps5v6zlg4yyyyhj1gl27qy3cbbkzjc82d2rhx";
|
||||
};
|
||||
useDune2 = true;
|
||||
|
||||
|
|
21
pkgs/development/ocaml-modules/ff/pbt.nix
Normal file
21
pkgs/development/ocaml-modules/ff/pbt.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{ lib, fetchFromGitLab, buildDunePackage, zarith, ff-sig, alcotest }:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "ff-pbt";
|
||||
inherit (ff-sig) version src doCheck useDune2;
|
||||
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
checkInputs = [
|
||||
alcotest
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
zarith
|
||||
ff-sig
|
||||
];
|
||||
|
||||
meta = ff-sig.meta // {
|
||||
description = "Property based testing library for finite fields over the package ff-sig";
|
||||
};
|
||||
}
|
27
pkgs/development/ocaml-modules/ff/sig.nix
Normal file
27
pkgs/development/ocaml-modules/ff/sig.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ lib, fetchFromGitLab, buildDunePackage, zarith }:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "ff-sig";
|
||||
version = "0.6.1";
|
||||
src = fetchFromGitLab {
|
||||
owner = "dannywillems";
|
||||
repo = "ocaml-ff";
|
||||
rev = version;
|
||||
sha256 = "0p42ivyfbn1pwm18773y4ga9cm64ysha0rplzvrnhszg01anarc0";
|
||||
};
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
propagatedBuildInputs = [
|
||||
zarith
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
homepage = "https://gitlab.com/dannywillems/ocaml-ff";
|
||||
description = "Minimal finite field signatures";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ulrikstrid ];
|
||||
};
|
||||
}
|
28
pkgs/development/ocaml-modules/getopt/default.nix
Normal file
28
pkgs/development/ocaml-modules/getopt/default.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ lib, fetchzip, stdenv, ocaml, findlib, ocamlbuild }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ocaml${ocaml.version}-getopt";
|
||||
version = "20120615";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://download.ocamlcore.org/ocaml-getopt/ocaml-getopt/${version}/ocaml-getopt-${version}.tar.gz";
|
||||
sha256 = "0bng2mmdixpmj23xn8krlnaq66k22iclwz46r8zjrsrq3wcn1xgn";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
ocaml
|
||||
findlib
|
||||
ocamlbuild
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
createFindlibDestdir = true;
|
||||
|
||||
meta = {
|
||||
inherit (ocaml.meta) platforms;
|
||||
homepage = "https://github.com/gildor478/ocaml-getopt";
|
||||
description = "Parsing of command line arguments (similar to GNU GetOpt) for OCaml";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ulrikstrid ];
|
||||
};
|
||||
}
|
23
pkgs/development/ocaml-modules/hashcons/default.nix
Normal file
23
pkgs/development/ocaml-modules/hashcons/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ lib, fetchFromGitHub, buildDunePackage }:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "hashcons";
|
||||
version = "1.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "backtracking";
|
||||
repo = "ocaml-${pname}";
|
||||
rev = "d733325eeb55878bed285120c2c088daf78f0e2b";
|
||||
sha256 = "0h4pvwj34pndaw3pajkhl710ywwinhc9pqimgllfmkl37wz2d8zq";
|
||||
};
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "OCaml hash-consing library";
|
||||
license = lib.licenses.lgpl21;
|
||||
maintainers = [ lib.maintainers.ulrikstrid ];
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, buildDunePackage, json-data-encoding, ocplib-endian, crowbar }:
|
||||
{ lib, buildDunePackage, json-data-encoding, ocplib-endian, crowbar, alcotest }:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "json-data-encoding-bson";
|
||||
|
@ -12,6 +12,7 @@ buildDunePackage {
|
|||
|
||||
checkInputs = [
|
||||
crowbar
|
||||
alcotest
|
||||
];
|
||||
|
||||
meta = json-data-encoding.meta // {
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{ lib, fetchFromGitLab, buildDunePackage, uri, crowbar }:
|
||||
{ lib, fetchFromGitLab, buildDunePackage, uri, crowbar, alcotest }:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "json-data-encoding";
|
||||
version = "0.8";
|
||||
|
||||
version = "0.10";
|
||||
minimalOCamlVersion = "4.10";
|
||||
src = fetchFromGitLab {
|
||||
owner = "nomadic-labs";
|
||||
repo = "json-data-encoding";
|
||||
rev = "v${version}";
|
||||
sha256 = "1c6m2qvi9bm6qjxc38p6cia1f66r0rb9xf6b8svlj3jjymvqw889";
|
||||
rev = "${version}";
|
||||
sha256 = "0m0xx382wr44wz7gxf7mpfjx2w287pvqhg2lfvzmclfq3y5iy6mx";
|
||||
};
|
||||
useDune2 = true;
|
||||
|
||||
|
@ -18,6 +18,7 @@ buildDunePackage rec {
|
|||
|
||||
checkInputs = [
|
||||
crowbar
|
||||
alcotest
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildDunePackage rec {
|
||||
pname = "lwt-canceler";
|
||||
version = "0.2";
|
||||
version = "0.3";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "nomadic-labs";
|
||||
repo = "lwt-canceler";
|
||||
rev = "v${version}";
|
||||
sha256 = "07931486vg83sl1c268i0vyw61l8n8xs2krjsj43070zljqi8rf1";
|
||||
sha256 = "1xbb7012hp901b755kxmfgg293rz34rkhwzg2z9i6sakwd7i0h9p";
|
||||
};
|
||||
useDune2 = true;
|
||||
|
||||
|
|
34
pkgs/development/ocaml-modules/lwt-exit/default.nix
Normal file
34
pkgs/development/ocaml-modules/lwt-exit/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{ lib
|
||||
, fetchFromGitLab
|
||||
, buildDunePackage
|
||||
, lwt
|
||||
, ptime
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "lwt-exit";
|
||||
version = "1.0";
|
||||
src = fetchFromGitLab {
|
||||
owner = "nomadic-labs";
|
||||
repo = pname;
|
||||
rev = "${version}";
|
||||
sha256 = "1k763bmj1asj9ijar39rh3h1d59rckmsf21h2y8966lgglsf42bd";
|
||||
};
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
lwt
|
||||
ptime
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "An opinionated clean-exit and signal-handling library for Lwt programs";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ulrikstrid ];
|
||||
};
|
||||
}
|
44
pkgs/development/ocaml-modules/pyml/default.nix
Normal file
44
pkgs/development/ocaml-modules/pyml/default.nix
Normal file
|
@ -0,0 +1,44 @@
|
|||
{ stdenv, lib, fetchFromGitHub, ocaml, findlib, utop, python3, stdcompat, ncurses }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pyml";
|
||||
version = "20210226";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "thierry-martinez";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "15xk6bgdzsf04d6wdjpr3s1ci2g7d7qnbq3102avkz179d5n62h7";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
ocaml
|
||||
findlib
|
||||
utop
|
||||
ncurses
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
python3
|
||||
stdcompat
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
make all pymltop pymlutop PREFIX=$out
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $OCAMLFIND_DESTDIR/stublibs
|
||||
make install PREFIX=$out
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "OCaml bindings for Python";
|
||||
license = lib.licenses.bsd2;
|
||||
};
|
||||
}
|
39
pkgs/development/ocaml-modules/tar/default.nix
Normal file
39
pkgs/development/ocaml-modules/tar/default.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
{ lib
|
||||
, fetchFromGitHub
|
||||
, buildDunePackage
|
||||
, ppx_cstruct
|
||||
, cstruct
|
||||
, re
|
||||
, ppx_tools
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "tar";
|
||||
version = "1.1.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mirage";
|
||||
repo = "ocaml-tar";
|
||||
rev = "v${version}";
|
||||
sha256 = "14k24vn3q5jl0iyrynb5vwg80670qsv12fsmc6cdgh4zwdpjh7zs";
|
||||
};
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
propagatedBuildInputs = [
|
||||
ppx_cstruct
|
||||
cstruct
|
||||
re
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ppx_tools
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "Decode and encode tar format files from Unix";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ulrikstrid ];
|
||||
};
|
||||
}
|
27
pkgs/development/ocaml-modules/tar/unix.nix
Normal file
27
pkgs/development/ocaml-modules/tar/unix.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tar
|
||||
, cstruct
|
||||
, cstruct-lwt
|
||||
, re
|
||||
, lwt
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "tar-unix";
|
||||
inherit (tar) version src useDune2 doCheck;
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tar
|
||||
cstruct
|
||||
cstruct-lwt
|
||||
re
|
||||
lwt
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Decode and encode tar format files from Unix";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ulrikstrid ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-stdlib-unix
|
||||
, tezos-base
|
||||
, tezos-shell-services
|
||||
, tezos-protocol-environment
|
||||
, tezos-protocol-010-PtGRANAD
|
||||
, tezos-protocol-010-PtGRANAD-parameters
|
||||
, tezos-client-010-PtGRANAD
|
||||
, alcotest-lwt
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-010-PtGRANAD-test-helpers";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/proto_010_PtGRANAD/lib_protocol/test/helpers";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-base
|
||||
tezos-stdlib-unix
|
||||
tezos-shell-services
|
||||
tezos-protocol-environment
|
||||
tezos-protocol-010-PtGRANAD
|
||||
tezos-protocol-010-PtGRANAD-parameters
|
||||
tezos-client-010-PtGRANAD
|
||||
alcotest-lwt
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest-lwt
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos/Protocol: protocol testing framework";
|
||||
};
|
||||
}
|
|
@ -2,31 +2,35 @@
|
|||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-crypto
|
||||
, tezos-hacl-glue-unix
|
||||
, tezos-micheline
|
||||
, tezos-test-helpers
|
||||
, ptime
|
||||
, ezjsonm
|
||||
, ipaddr
|
||||
, qcheck-alcotest
|
||||
, crowbar
|
||||
, bls12-381-unix
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-base";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_base";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-crypto
|
||||
tezos-micheline
|
||||
tezos-hacl-glue-unix
|
||||
bls12-381-unix
|
||||
ptime
|
||||
ezjsonm
|
||||
ipaddr
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
qcheck-alcotest
|
||||
crowbar
|
||||
# tezos-test-helpers
|
||||
];
|
||||
|
||||
# circular dependency if we add this
|
||||
doCheck = false;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: meta-package and pervasive type definitions for Tezos";
|
||||
};
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
|
||||
buildDunePackage {
|
||||
pname = "tezos-clic";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_clic";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-stdlib-unix
|
||||
|
@ -19,6 +20,8 @@ buildDunePackage {
|
|||
alcotest-lwt
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: library of auto-documented command-line-parsing combinators";
|
||||
};
|
||||
|
|
38
pkgs/development/ocaml-modules/tezos/client-010-PtGRANAD.nix
Normal file
38
pkgs/development/ocaml-modules/tezos/client-010-PtGRANAD.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-mockup-registration
|
||||
, tezos-proxy
|
||||
, tezos-signer-backends
|
||||
, tezos-protocol-010-PtGRANAD-parameters
|
||||
, tezos-protocol-plugin-010-PtGRANAD
|
||||
, alcotest-lwt
|
||||
, ppx_inline_test
|
||||
, cacert
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-client-010-PtGRANAD";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/proto_010_PtGRANAD/lib_client";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-mockup-registration
|
||||
tezos-proxy
|
||||
tezos-signer-backends
|
||||
tezos-protocol-010-PtGRANAD-parameters
|
||||
tezos-protocol-plugin-010-PtGRANAD
|
||||
ppx_inline_test
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest-lwt
|
||||
cacert
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos/Protocol: protocol specific library for `tezos-client`";
|
||||
};
|
||||
}
|
28
pkgs/development/ocaml-modules/tezos/client-base.nix
Normal file
28
pkgs/development/ocaml-modules/tezos/client-base.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-shell-services
|
||||
, tezos-sapling
|
||||
, alcotest
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-client-base";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_client_base";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-shell-services
|
||||
tezos-sapling
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: protocol registration for the mockup mode";
|
||||
};
|
||||
}
|
34
pkgs/development/ocaml-modules/tezos/context.nix
Normal file
34
pkgs/development/ocaml-modules/tezos/context.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-base
|
||||
, tezos-shell-services
|
||||
, irmin
|
||||
, irmin-pack
|
||||
, digestif
|
||||
, alcotest-lwt
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-context";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_context";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-base
|
||||
tezos-shell-services
|
||||
irmin
|
||||
irmin-pack
|
||||
digestif
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest-lwt
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: library of auto-documented RPCs (service and hierarchy descriptions)";
|
||||
};
|
||||
}
|
|
@ -1,37 +1,41 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-clic
|
||||
, tezos-rpc
|
||||
, bls12-381
|
||||
, hacl-star
|
||||
, tezos-clic
|
||||
, tezos-hacl-glue
|
||||
, tezos-hacl-glue-unix
|
||||
, secp256k1-internal
|
||||
, uecc
|
||||
, ringo
|
||||
, ff
|
||||
, alcotest
|
||||
, bls12-381
|
||||
, bls12-381-unix
|
||||
, tezos-test-helpers
|
||||
, alcotest-lwt
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-crypto";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_crypto";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-clic
|
||||
tezos-rpc
|
||||
bls12-381
|
||||
hacl-star
|
||||
tezos-clic
|
||||
tezos-hacl-glue
|
||||
tezos-hacl-glue-unix
|
||||
secp256k1-internal
|
||||
uecc
|
||||
ringo
|
||||
bls12-381
|
||||
bls12-381-unix
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest
|
||||
tezos-test-helpers
|
||||
alcotest-lwt
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: library with all the cryptographic primitives used by Tezos";
|
||||
};
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-protocol-010-PtGRANAD
|
||||
, tezos-protocol-updater
|
||||
, tezos-protocol-compiler
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-embedded-protocol-010-PtGRANAD";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/proto_010_PtGRANAD/lib_protocol";
|
||||
|
||||
preBuild = tezos-protocol-010-PtGRANAD.preBuild;
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-protocol-010-PtGRANAD
|
||||
tezos-protocol-updater
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
tezos-protocol-compiler
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos/Protocol: economic-protocol definition, embedded in `tezos-node`";
|
||||
};
|
||||
}
|
|
@ -4,19 +4,22 @@
|
|||
, data-encoding
|
||||
, lwt
|
||||
, lwt-canceler
|
||||
, tezos-lwt-result-stdlib
|
||||
, alcotest
|
||||
, alcotest-lwt
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-error-monad";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_error_monad";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-stdlib
|
||||
data-encoding
|
||||
lwt
|
||||
lwt-canceler
|
||||
tezos-lwt-result-stdlib
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
|
@ -24,6 +27,8 @@ buildDunePackage {
|
|||
alcotest-lwt
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: error monad";
|
||||
};
|
||||
|
|
|
@ -1,21 +1,27 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-lwt-result-stdlib
|
||||
, tezos-error-monad
|
||||
, data-encoding
|
||||
, lwt_log
|
||||
, alcotest
|
||||
, alcotest-lwt
|
||||
, lwt
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-event-logging";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_event_logging";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-lwt-result-stdlib
|
||||
tezos-stdlib
|
||||
tezos-error-monad
|
||||
data-encoding
|
||||
lwt_log
|
||||
lwt
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: event logging library";
|
||||
};
|
||||
|
|
26
pkgs/development/ocaml-modules/tezos/hacl-glue-unix.nix
Normal file
26
pkgs/development/ocaml-modules/tezos/hacl-glue-unix.nix
Normal file
|
@ -0,0 +1,26 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-hacl-glue
|
||||
, ctypes
|
||||
, hacl-star
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-hacl-glue-unix";
|
||||
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_hacl_glue/unix";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
ctypes
|
||||
hacl-star
|
||||
tezos-hacl-glue
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: thin layer of glue around hacl-star (unix implementation)";
|
||||
};
|
||||
}
|
17
pkgs/development/ocaml-modules/tezos/hacl-glue.nix
Normal file
17
pkgs/development/ocaml-modules/tezos/hacl-glue.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-hacl-glue";
|
||||
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_hacl_glue/virtual";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: thin layer of glue around hacl-star (virtual package)";
|
||||
};
|
||||
}
|
40
pkgs/development/ocaml-modules/tezos/legacy-store.nix
Normal file
40
pkgs/development/ocaml-modules/tezos/legacy-store.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-context
|
||||
, tezos-lmdb
|
||||
, tezos-validation
|
||||
, tezos-shell-services
|
||||
, tezos-protocol-compiler
|
||||
, lwt-watcher
|
||||
, alcotest-lwt
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-legacy-store";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_store/legacy_store";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-context
|
||||
tezos-lmdb
|
||||
tezos-validation
|
||||
tezos-shell-services
|
||||
lwt-watcher
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
tezos-protocol-compiler
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest-lwt
|
||||
];
|
||||
|
||||
# A lot of extra deps with wide dependency cones needed
|
||||
doCheck = false;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: custom economic-protocols environment implementation for `tezos-client` and testing";
|
||||
};
|
||||
}
|
|
@ -8,25 +8,23 @@
|
|||
, alcotest
|
||||
}:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "tezos-lmdb";
|
||||
let
|
||||
version = "7.4";
|
||||
src = fetchFromGitLab {
|
||||
owner = "tezos";
|
||||
repo = "tezos";
|
||||
rev = "v${version}";
|
||||
sha256 = "18q02j74aa8mxv233kvyb62xbhjngzpgppp6kgr4m53d7a78wgsm";
|
||||
sha256 = "0sghc60xzr02pmmkr626pnhzrnczf7mki7qyxzzfn7rbbdbrf4wp";
|
||||
};
|
||||
in
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-lmdb";
|
||||
version = version;
|
||||
src = "${src}/vendors/ocaml-lmdb";
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
preBuild = ''
|
||||
rm dune
|
||||
rm -rf src
|
||||
rm -rf docs
|
||||
ls vendors | grep -v ocaml-lmdb |xargs rm -rf
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
, buildDunePackage
|
||||
, ocaml
|
||||
, tezos-stdlib
|
||||
, tezos-error-monad
|
||||
, lwt
|
||||
, alcotest
|
||||
, alcotest-lwt
|
||||
, crowbar
|
||||
, tezos-test-helpers
|
||||
}:
|
||||
|
||||
if lib.versionAtLeast ocaml.version "4.12" then
|
||||
|
@ -14,18 +14,21 @@ else
|
|||
|
||||
buildDunePackage {
|
||||
pname = "tezos-lwt-result-stdlib";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_lwt_result_stdlib";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-error-monad
|
||||
lwt
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
alcotest
|
||||
alcotest-lwt
|
||||
crowbar
|
||||
tezos-test-helpers
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: error-aware stdlib replacement";
|
||||
};
|
||||
|
|
|
@ -10,11 +10,13 @@
|
|||
|
||||
buildDunePackage {
|
||||
pname = "tezos-micheline";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_micheline";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-error-monad
|
||||
uutf
|
||||
ppx_inline_test
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
|
@ -22,6 +24,8 @@ buildDunePackage {
|
|||
alcotest-lwt
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: internal AST and parser for the Michelson language";
|
||||
};
|
||||
|
|
27
pkgs/development/ocaml-modules/tezos/mockup-proxy.nix
Normal file
27
pkgs/development/ocaml-modules/tezos/mockup-proxy.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-client-base
|
||||
, tezos-protocol-environment
|
||||
, tezos-rpc-http-client
|
||||
, resto-cohttp-self-serving-client
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-mockup-proxy";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_mockup_proxy";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-client-base
|
||||
tezos-protocol-environment
|
||||
tezos-rpc-http-client
|
||||
resto-cohttp-self-serving-client
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: local RPCs";
|
||||
};
|
||||
}
|
23
pkgs/development/ocaml-modules/tezos/mockup-registration.nix
Normal file
23
pkgs/development/ocaml-modules/tezos/mockup-registration.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ lib
|
||||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-client-base
|
||||
, tezos-protocol-environment
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-mockup-registration";
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_mockup";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-client-base
|
||||
tezos-protocol-environment
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: protocol registration for the mockup mode";
|
||||
};
|
||||
}
|
|
@ -6,7 +6,8 @@
|
|||
|
||||
buildDunePackage {
|
||||
pname = "tezos-p2p-services";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_p2p_services";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-base
|
||||
|
|
|
@ -2,13 +2,16 @@
|
|||
, buildDunePackage
|
||||
, tezos-stdlib
|
||||
, tezos-p2p-services
|
||||
, tezos-test-services
|
||||
, alcotest-lwt
|
||||
, astring
|
||||
, lwt-watcher
|
||||
}:
|
||||
|
||||
buildDunePackage {
|
||||
pname = "tezos-p2p";
|
||||
inherit (tezos-stdlib) version src useDune2 preBuild doCheck;
|
||||
inherit (tezos-stdlib) version useDune2;
|
||||
src = "${tezos-stdlib.base_src}/src/lib_p2p";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tezos-p2p-services
|
||||
|
@ -16,9 +19,13 @@ buildDunePackage {
|
|||
];
|
||||
|
||||
checkInputs = [
|
||||
astring
|
||||
alcotest-lwt
|
||||
tezos-test-services
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = tezos-stdlib.meta // {
|
||||
description = "Tezos: library for a pool of P2P connections";
|
||||
};
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue