Merge staging-next into staging
This commit is contained in:
commit
2a1af96a55
@ -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";
|
||||
@ -2090,6 +2096,16 @@
|
||||
githubId = 25088352;
|
||||
name = "Christian Kögler";
|
||||
};
|
||||
ckie = {
|
||||
email = "nixpkgs-0efe364@ckie.dev";
|
||||
github = "ckiee";
|
||||
githubId = 2526321;
|
||||
keys = [{
|
||||
longkeyid = "rsa4096/0x13E79449C0525215";
|
||||
fingerprint = "539F 0655 4D35 38A5 429A E253 13E7 9449 C052 5215";
|
||||
}];
|
||||
name = "ckie";
|
||||
};
|
||||
clkamp = {
|
||||
email = "c@lkamp.de";
|
||||
github = "clkamp";
|
||||
@ -5461,6 +5477,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";
|
||||
@ -8314,6 +8336,17 @@
|
||||
githubId = 127548;
|
||||
name = "Judson Lester";
|
||||
};
|
||||
nzbr = {
|
||||
email = "nixos@nzbr.de";
|
||||
github = "nzbr";
|
||||
githubId = 7851175;
|
||||
name = "nzbr";
|
||||
matrix = "@nzbr:nzbr.de";
|
||||
keys = [{
|
||||
longkeyid = "rsa2048/0x6C78B50B97A42F8A";
|
||||
fingerprint = "BF3A 3EE6 3144 2C5F C9FB 39A7 6C78 B50B 97A4 2F8A";
|
||||
}];
|
||||
};
|
||||
nzhang-zh = {
|
||||
email = "n.zhang.hp.au@gmail.com";
|
||||
github = "nzhang-zh";
|
||||
@ -9672,16 +9705,6 @@
|
||||
githubId = 1312525;
|
||||
name = "Rongcui Dong";
|
||||
};
|
||||
ronthecookie = {
|
||||
name = "Ron B";
|
||||
email = "me@ronthecookie.me";
|
||||
github = "ronthecookie";
|
||||
githubId = 2526321;
|
||||
keys = [{
|
||||
longkeyid = "rsa2048/0x6F5B32DE5E5FA80C";
|
||||
fingerprint = "4B2C DDA5 FA35 642D 956D 7294 6F5B 32DE 5E5F A80C";
|
||||
}];
|
||||
};
|
||||
roosemberth = {
|
||||
email = "roosembert.palacios+nixpkgs@posteo.ch";
|
||||
github = "roosemberth";
|
||||
|
@ -350,6 +350,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">
|
||||
|
@ -107,6 +107,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`.
|
||||
|
@ -1126,9 +1126,9 @@ class Driver:
|
||||
try:
|
||||
yield
|
||||
return True
|
||||
except:
|
||||
rootlog.error(f'Test "{name}" failed with error:')
|
||||
raise
|
||||
except Exception as e:
|
||||
rootlog.error(f'Test "{name}" failed with error: "{e}"')
|
||||
raise e
|
||||
|
||||
def test_symbols(self) -> Dict[str, Any]:
|
||||
@contextmanager
|
||||
|
@ -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
|
||||
|
@ -192,7 +192,7 @@ let
|
||||
serviceConfig.MemoryDenyWriteExecute = true;
|
||||
serviceConfig.NoNewPrivileges = true;
|
||||
serviceConfig.PrivateDevices = true;
|
||||
serviceConfig.ProtectClock = true;
|
||||
serviceConfig.ProtectClock = mkDefault true;
|
||||
serviceConfig.ProtectControlGroups = true;
|
||||
serviceConfig.ProtectHome = true;
|
||||
serviceConfig.ProtectHostname = true;
|
||||
|
@ -35,6 +35,10 @@ in
|
||||
${concatMapStringsSep " " (x: "--no-collector." + x) cfg.disabledCollectors} \
|
||||
--web.listen-address ${cfg.listenAddress}:${toString cfg.port} ${concatStringsSep " " cfg.extraFlags}
|
||||
'';
|
||||
# The systemd collector needs AF_UNIX
|
||||
RestrictAddressFamilies = lib.optional (lib.any (x: x == "systemd") cfg.enabledCollectors) "AF_UNIX";
|
||||
# The timex collector needs to access clock APIs
|
||||
ProtectClock = lib.any (x: x == "timex") cfg.disabledCollectors;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -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)
|
||||
'';
|
||||
};
|
||||
}
|
@ -172,9 +172,15 @@ in
|
||||
ExecStart = "${(removeSuffix "\n" cmd)} start";
|
||||
ExecStop = "${(removeSuffix "\n" cmd)} stop";
|
||||
Restart = "on-failure";
|
||||
TimeoutSec = "5min";
|
||||
User = "unifi";
|
||||
UMask = "0077";
|
||||
WorkingDirectory = "${stateDir}";
|
||||
# the stop command exits while the main process is still running, and unifi
|
||||
# wants to manage its own child processes. this means we have to set KillSignal
|
||||
# to something the main process ignores, otherwise every stop will have unifi.service
|
||||
# fail with SIGTERM status.
|
||||
KillSignal = "SIGCONT";
|
||||
|
||||
# Hardening
|
||||
AmbientCapabilities = "";
|
||||
|
@ -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}"
|
||||
)
|
||||
|
@ -14,9 +14,6 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "csound";
|
||||
# When updating, please check if https://github.com/csound/csound/issues/1078
|
||||
# has been fixed in the new version so we can use the normal fluidsynth
|
||||
# version and remove fluidsynth 1.x from nixpkgs again.
|
||||
version = "6.16.2";
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
@ -16,6 +16,7 @@
|
||||
, lilv
|
||||
, lsp-plugins
|
||||
, lv2
|
||||
, mda_lv2
|
||||
, meson
|
||||
, ninja
|
||||
, nlohmann_json
|
||||
@ -25,20 +26,20 @@
|
||||
, rnnoise
|
||||
, rubberband
|
||||
, speexdsp
|
||||
, wrapGAppsHook
|
||||
, wrapGAppsHook4
|
||||
, zam-plugins
|
||||
, zita-convolver
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "easyeffects";
|
||||
version = "6.0.3";
|
||||
version = "6.1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wwmm";
|
||||
repo = "easyeffects";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-GzqPC/m/HMthLMamhJ4EXX6fxZYscdX1QmXgqHOPEcg=";
|
||||
sha256 = "sha256-1UfeqPJxY4YT98UdqTZtG+QUBOZlKfK+7WbszhO22A0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -48,7 +49,7 @@ stdenv.mkDerivation rec {
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
wrapGAppsHook
|
||||
wrapGAppsHook4
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@ -74,17 +75,20 @@ stdenv.mkDerivation rec {
|
||||
postPatch = ''
|
||||
chmod +x meson_post_install.py
|
||||
patchShebangs meson_post_install.py
|
||||
# https://github.com/wwmm/easyeffects/pull/1205
|
||||
substituteInPlace meson_post_install.py --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
|
||||
'';
|
||||
|
||||
preFixup =
|
||||
let
|
||||
lv2Plugins = [
|
||||
calf # limiter, compressor exciter, bass enhancer and others
|
||||
lsp-plugins # delay
|
||||
calf # compressor exciter, bass enhancer and others
|
||||
lsp-plugins # delay, limiter, multiband compressor
|
||||
mda_lv2 # loudness
|
||||
zam-plugins # maximizer
|
||||
];
|
||||
ladspaPlugins = [
|
||||
rubberband # pitch shifting
|
||||
zam-plugins # maximizer
|
||||
];
|
||||
in
|
||||
''
|
||||
|
45
pkgs/applications/audio/in-formant/default.nix
Normal file
45
pkgs/applications/audio/in-formant/default.nix
Normal file
@ -0,0 +1,45 @@
|
||||
{ stdenv, cmake, lib, fetchFromGitHub, qt5, fftw, libtorch-bin, portaudio, eigen
|
||||
, xorg, pkg-config, autoPatchelfHook, soxr
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "in-formant";
|
||||
version = "2021-06-30";
|
||||
|
||||
# no Qt6 yet, so we're stuck in the last Qt5-supporting commit: https://github.com/NixOS/nixpkgs/issues/108008
|
||||
src = fetchFromGitHub {
|
||||
owner = "in-formant";
|
||||
repo = "in-formant";
|
||||
rev = "e28e628cf5ff0949a7b046d220cc884f6035f31a";
|
||||
sha256 = "sha256-YvtV0wGUNmI/+GGxrIfTk/l8tqUsWgc/LAI17X+AWGI=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config qt5.wrapQtAppsHook autoPatchelfHook ];
|
||||
|
||||
buildInputs = [
|
||||
qt5.qtbase
|
||||
qt5.qtquickcontrols
|
||||
qt5.qtquickcontrols2
|
||||
qt5.qtcharts
|
||||
fftw
|
||||
libtorch-bin
|
||||
portaudio
|
||||
eigen
|
||||
xorg.libxcb
|
||||
soxr
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp in-formant $out/bin
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A real-time pitch and formant tracking software";
|
||||
homepage = "https://github.com/in-formant/in-formant";
|
||||
license = licenses.asl20;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ ckie ];
|
||||
};
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -4,17 +4,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "librespot";
|
||||
version = "0.1.6";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "librespot-org";
|
||||
repo = "librespot";
|
||||
rev = "v${version}";
|
||||
sha256 = "153i9n3qwmmwc29f62cz8nbqrlry16iygvibm1sdnvpf0s6wk5f3";
|
||||
sha256 = "0n7h690gplpp47gdj038g6ncgwr7wvwfkg00cbrbvxhv7kzqqa1f";
|
||||
};
|
||||
|
||||
cargoPatches = [ ./cargo-lock.patch ];
|
||||
cargoSha256 = "11d64rpq4b5rdxk5wx0hhzgc6mvs6h2br0w3kfncfklp67vn3v4v";
|
||||
cargoSha256 = "0qakvpxvn84ppgs3qlsfan4flqkmjcgs698w25jasx9ymiv8wc3s";
|
||||
|
||||
cargoBuildFlags = with lib; [
|
||||
"--no-default-features"
|
||||
|
@ -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";
|
||||
};
|
||||
}
|
@ -198,7 +198,7 @@ let emacs = stdenv.mkDerivation (lib.optionalAttrs nativeComp {
|
||||
description = "The extensible, customizable GNU text editor";
|
||||
homepage = "https://www.gnu.org/software/emacs/";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ lovek323 peti jwiegley adisbladis ];
|
||||
maintainers = with maintainers; [ lovek323 jwiegley adisbladis ];
|
||||
platforms = platforms.all;
|
||||
|
||||
longDescription = ''
|
||||
|
@ -14,17 +14,17 @@ let
|
||||
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "1mpvikps5l2vynw7afrpkp4ah0q6q2q4q8d074b4vfwhaj1v6v75";
|
||||
x86_64-darwin = "0r65wfyzc90lhd0i61xkb8kq9339b3ddyqp5dx7wf0aydgi203br";
|
||||
aarch64-linux = "0d4kqjhyq8s7ini25m2igf37bzb2dw01jv62nps3yx3cr52vzyn2";
|
||||
aarch64-darwin = "0h5g3h8z1wl7pz6ddlchnwqns956pyi1c3fjivsff0f0yhmdlva7";
|
||||
armv7l-linux = "0fyxmq3i4kc1x013xs9flcbkmzzy9sqhjhcj5n38w6mswsb97qrv";
|
||||
x86_64-linux = "069jdwqs9z2z95mjs9nx58rp1516dyyqn5bc0vgr7xvlbis97lq0";
|
||||
x86_64-darwin = "1bd32dkpyfgknxqn76jcwpa47rac9q14glbf5sb1rh9rfav0m1m8";
|
||||
aarch64-linux = "1axxnys3pd2qrvj6mqpa5cih44b4dbpgi8mvn616d8d45jgdnc1r";
|
||||
aarch64-darwin = "0bdp0k20lfwpsl1a3dz6c97s0b5bp3rhb66jwgbyyc16zrz79r1z";
|
||||
armv7l-linux = "077w5hvc4brb56zs0w37nr4a8vlcij5z3yrv3rz16p58nnkj56hs";
|
||||
}.${system};
|
||||
in
|
||||
callPackage ./generic.nix rec {
|
||||
# Please backport all compatible updates to the stable release.
|
||||
# This is important for the extension ecosystem.
|
||||
version = "1.61.0";
|
||||
version = "1.61.1";
|
||||
pname = "vscode";
|
||||
|
||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||
|
@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
||||
description = "A boxy 3D model editor powered by Electron";
|
||||
homepage = "https://blockbench.net/";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = [ maintainers.ronthecookie ];
|
||||
maintainers = [ maintainers.ckie ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "drawing";
|
||||
version = "0.8.0";
|
||||
version = "0.8.3";
|
||||
|
||||
format = "other";
|
||||
|
||||
@ -25,7 +25,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
owner = "maoschanz";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "03cx6acb0ph7b3difshjfddi8ld79wp8d12bdp7dp1q1820j5mz0";
|
||||
sha256 = "sha256-qDLJ+Mw4z66ro9/zoEIzDJpA+jJLYw0WgsP7mA+56XM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -10,14 +10,14 @@
|
||||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "hydrus";
|
||||
version = "457";
|
||||
version = "458";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hydrusnetwork";
|
||||
repo = "hydrus";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ZXBVJc+9dFzi75JYl3U3ic0MKolWMsdR3UkLe5EOzsw=";
|
||||
sha256 = "sha256-oVNgXelFMVT5V41SRlnN+pnYzOWbdDKQQcvRWFZqEro=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -113,7 +113,6 @@ stdenv.mkDerivation {
|
||||
'';
|
||||
homepage = "http://www.sane-project.org/";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ peti ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ stdenv.mkDerivation rec {
|
||||
description = "Scanner Access Now Easy";
|
||||
homepage = "http://www.sane-project.org/";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ peti ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "http://www.sane-project.org/";
|
||||
description = "Graphical scanning frontend for sane";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [peti];
|
||||
platforms = with lib.platforms; linux;
|
||||
};
|
||||
}
|
||||
|
@ -33,11 +33,11 @@
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "1password";
|
||||
version = "8.2.0";
|
||||
version = "8.3.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.1password.com/linux/tar/stable/x86_64/1password-${version}.x64.tar.gz";
|
||||
sha256 = "1hnpvvval8a9ny5x5zffn5lf5qrwc4hcs3jvhqmd7m4adh2i6y2i";
|
||||
sha256 = "1cakv316ipwyw6s3x4a6qhl0nmg17bxhh08c969gma3svamh1grw";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
let
|
||||
pname = "anytype";
|
||||
version = "0.20.2";
|
||||
version = "0.20.9";
|
||||
name = "Anytype-${version}";
|
||||
nameExecutable = pname;
|
||||
src = fetchurl {
|
||||
url = "https://at9412003.fra1.digitaloceanspaces.com/Anytype-${version}.AppImage";
|
||||
name = "Anytype-${version}.AppImage";
|
||||
sha256 = "sha256-jqRxNd6lx1hnOa4F3m3YOr8ZBnSKQBz0XVC5absf9mM=";
|
||||
sha256 = "sha256-dm3bdKbUHI0FFcyYeYd2XSuZuoPsUhk4KcEwzPHiHM8=";
|
||||
};
|
||||
appimageContents = appimageTools.extractType2 { inherit name src; };
|
||||
in
|
||||
|
@ -3,13 +3,13 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "electron-cash";
|
||||
version = "4.2.4";
|
||||
version = "4.2.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Electron-Cash";
|
||||
repo = "Electron-Cash";
|
||||
rev = version;
|
||||
sha256 = "sha256-hiOS0cTaPqllb31p+6nU4GYvw/E1Hdn8yd3sppzGkqg=";
|
||||
sha256 = "sha256-ALIrNnhpX46xdQdfJdx/9e/QtdyBEgi5xLrbuOBJR7o=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
|
@ -25,7 +25,6 @@ stdenv.mkDerivation rec {
|
||||
IPSEC.
|
||||
'';
|
||||
platforms = platforms.unix;
|
||||
maintainers = [ maintainers.peti ];
|
||||
license = licenses.gpl2Plus;
|
||||
};
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
|
||||
homepage = "http://nostatic.org/grip";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
|
||||
maintainers = with lib.maintainers; [ marcweber peti ];
|
||||
maintainers = with lib.maintainers; [ marcweber ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -74,6 +74,5 @@ stdenv.mkDerivation rec {
|
||||
homepage = "http://ikiwiki.info/";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.peti ];
|
||||
};
|
||||
}
|
||||
|
@ -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
|
||||
|
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;
|
||||
};
|
||||
}
|
@ -10,11 +10,11 @@
|
||||
let isFullPackage = mediaSupport;
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = if isFullPackage then "vifm-full" else "vifm";
|
||||
version = "0.11";
|
||||
version = "0.12";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/vifm/vifm/releases/download/v${version}/vifm-${version}.tar.bz2";
|
||||
sha256 = "0rqyd424y0g5b5basw2ybb60r9gar4f40d1xgzr3c2dsy4jpwvyh";
|
||||
sha256 = "1h5j4y704nciyzg3aaav8sl3r5h9mpwq8f28cj65nnxk6a7n3a9k";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config makeWrapper ];
|
||||
|
@ -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}" \
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnugrep gnused jq
|
||||
|
||||
set -eu -o pipefail
|
||||
set -x -eu -o pipefail
|
||||
|
||||
cd $(dirname "${BASH_SOURCE[0]}")
|
||||
|
||||
@ -14,7 +14,7 @@ SHA256=$(nix-prefetch-url --quiet --unpack https://github.com/fluxcd/flux2/archi
|
||||
SPEC_SHA256=$(nix-prefetch-url --quiet --unpack https://github.com/fluxcd/flux2/releases/download/${TAG}/manifests.tar.gz)
|
||||
|
||||
setKV () {
|
||||
sed -i "s|$1 = \".*\"|$1 = \"$2\"|" ./default.nix
|
||||
sed -i "s|$1 = \".*\"|$1 = \"${2:-}\"|" ./default.nix
|
||||
}
|
||||
|
||||
setKV version ${VERSION}
|
||||
@ -24,8 +24,15 @@ setKV vendorSha256 ""
|
||||
|
||||
cd ../../../../../
|
||||
set +e
|
||||
VENDOR_SHA256=$(nix-build --no-out-link -A fluxcd 2>&1 | grep "got:" | cut -d':' -f2 | sed 's/ //g')
|
||||
VENDOR_SHA256=$(nix-build --no-out-link -A fluxcd 2>&1 | grep "got:" | cut -d':' -f2 | sed 's| ||g')
|
||||
set -e
|
||||
|
||||
cd - > /dev/null
|
||||
setKV vendorSha256 ${VENDOR_SHA256}
|
||||
|
||||
if [ -n "${VENDOR_SHA256:-}" ]; then
|
||||
setKV vendorSha256 ${VENDOR_SHA256}
|
||||
else
|
||||
echo "Update failed. VENDOR_SHA256 is empty."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnugrep gnused jq
|
||||
|
||||
set -eu -o pipefail
|
||||
set -x -eu -o pipefail
|
||||
|
||||
WORKDIR=$(mktemp -d)
|
||||
trap "rm -rf ${WORKDIR}" EXIT
|
||||
@ -45,7 +45,7 @@ CNIPLUGINS_SHA256=$(nix-prefetch-url --quiet --unpack \
|
||||
"https://github.com/rancher/plugins/archive/refs/tags/v${CNIPLUGINS_VERSION}.tar.gz")
|
||||
|
||||
setKV () {
|
||||
sed -i "s|$1 = \".*\"|$1 = \"$2\"|" ./default.nix
|
||||
sed -i "s|$1 = \".*\"|$1 = \"${2:-}\"|" ./default.nix
|
||||
}
|
||||
|
||||
setKV k3sVersion ${K3S_VERSION}
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnugrep gnused jq
|
||||
|
||||
set -eu -o pipefail
|
||||
set -x -eu -o pipefail
|
||||
|
||||
cd $(dirname "$0")
|
||||
|
||||
@ -14,7 +14,7 @@ VERSION=$(echo ${TAG} | sed 's/^edge-//')
|
||||
SHA256=$(nix-prefetch-url --quiet --unpack https://github.com/linkerd/linkerd2/archive/refs/tags/${TAG}.tar.gz)
|
||||
|
||||
setKV () {
|
||||
sed -i "s|$1 = \".*\"|$1 = \"$2\"|" ./edge.nix
|
||||
sed -i "s|$1 = \".*\"|$1 = \"${2:-}\"|" ./edge.nix
|
||||
}
|
||||
|
||||
setKV version ${VERSION}
|
||||
@ -25,9 +25,9 @@ cd ../../../../../
|
||||
set +e
|
||||
VENDOR_SHA256=$(nix-build --no-out-link -A linkerd_edge 2>&1 | grep "got:" | cut -d':' -f2 | sed 's| ||g')
|
||||
set -e
|
||||
cd - > /dev/null
|
||||
|
||||
if [ -n "${VENDOR_SHA256:-}" ]; then
|
||||
cd - > /dev/null
|
||||
setKV vendorSha256 ${VENDOR_SHA256}
|
||||
else
|
||||
echo "Update failed. VENDOR_SHA256 is empty."
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnugrep gnused jq
|
||||
|
||||
set -eu -o pipefail
|
||||
set -x -eu -o pipefail
|
||||
|
||||
cd $(dirname "$0")
|
||||
|
||||
@ -14,7 +14,7 @@ VERSION=$(echo ${TAG} | sed 's/^stable-//')
|
||||
SHA256=$(nix-prefetch-url --quiet --unpack https://github.com/linkerd/linkerd2/archive/refs/tags/${TAG}.tar.gz)
|
||||
|
||||
setKV () {
|
||||
sed -i "s|$1 = \".*\"|$1 = \"$2\"|" ./default.nix
|
||||
sed -i "s|$1 = \".*\"|$1 = \"${2:-}\"|" ./default.nix
|
||||
}
|
||||
|
||||
setKV version ${VERSION}
|
||||
@ -25,11 +25,11 @@ cd ../../../../../
|
||||
set +e
|
||||
VENDOR_SHA256=$(nix-build --no-out-link -A linkerd 2>&1 | grep "got:" | cut -d':' -f2 | sed 's| ||g')
|
||||
set -e
|
||||
cd - > /dev/null
|
||||
|
||||
if [ -n "${VENDOR_SHA256:-}" ]; then
|
||||
cd - > /dev/null
|
||||
setKV vendorSha256 ${VENDOR_SHA256}
|
||||
setKV vendorSha256 ${VENDOR_SHA256}
|
||||
else
|
||||
echo "Update failed. VENDOR_SHA256 is empty."
|
||||
exit 1
|
||||
echo "Update failed. VENDOR_SHA256 is empty."
|
||||
exit 1
|
||||
fi
|
||||
|
@ -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",
|
||||
|
@ -195,8 +195,8 @@ rec {
|
||||
};
|
||||
|
||||
terraform_1_0 = mkTerraform {
|
||||
version = "1.0.8";
|
||||
sha256 = "1755m3h9iz086znjpkhxjbyl3jaxpsqmk73infn9wbhql8pq2wil";
|
||||
version = "1.0.9";
|
||||
sha256 = "0g97l53xrcafjrzz5inij4q4aaadibn5ilr5j39a6569pkvcvsh3";
|
||||
vendorSha256 = "00cl42w1mzsi9qd09wydfvp5f2h7lxaay6s2dv0mf47k6h7prf42";
|
||||
patches = [ ./provider-path-0_15.patch ];
|
||||
passthru = { inherit plugins; };
|
||||
|
@ -40,15 +40,43 @@ assert builtins.elem (lib.toLower chatType) [
|
||||
|
||||
assert enablePsiMedia -> enablePlugins;
|
||||
|
||||
mkDerivation rec {
|
||||
mkDerivation {
|
||||
pname = "psi-plus";
|
||||
version = "1.5.1549";
|
||||
|
||||
# Version mask is “X.X.XXXX-R” where “X.X.XXXX” is a mandatory version of Psi
|
||||
# and “-R” ending is optional revision number.
|
||||
#
|
||||
# The “psi-plus-snapshots” generally provides snapshots of these separate
|
||||
# repositories glued together (there are also dependencies/libraries):
|
||||
#
|
||||
# 1. Psi
|
||||
# 2. Plugins pack for Psi
|
||||
# 3. “psimedia” plugin
|
||||
# 4. Resources for Psi (icons, skins, sounds)
|
||||
#
|
||||
# “X.X.XXXX” is literally a version of Psi.
|
||||
# So often when for instance plugins are updated separately a new snapshot is
|
||||
# created. And that snapshot would also be linked to “X.X.XXXX” version.
|
||||
# So many commits may have the same associated version of the snapshot.
|
||||
# But mind that only one Git tag is created for “X.X.XXXX” version.
|
||||
#
|
||||
# It’s not yet defined in the Psi+ project what value to use as a version for
|
||||
# any further releases that don’t change Psi version.
|
||||
#
|
||||
# Let’s do what Debian does for instance (appends “-R” where “R” is a revision
|
||||
# number).
|
||||
# E.g. https://tracker.debian.org/news/1226321/psi-plus-14554-5-migrated-to-testing/
|
||||
#
|
||||
# This has been communicated with the Psi+ main devs in this XMPP MUC chat:
|
||||
# psi-dev@conference.jabber.ru
|
||||
#
|
||||
version = "1.5.1556-2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "psi-plus";
|
||||
repo = "psi-plus-snapshots";
|
||||
rev = version;
|
||||
sha256 = "0jpv6qzfg6xjwkrnci7fav27nxm174i9l5g4vmsbchqpwfk90z2m";
|
||||
rev = "635879010b6697f7041a7bbea1853a1f4673c7f7";
|
||||
sha256 = "18xvljcm0a9swkyz4diwxi4xaj0w27jnhfgpi8fv5fj11j0g1b3a";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
@ -96,7 +124,7 @@ mkDerivation rec {
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://psi-plus.com";
|
||||
description = "XMPP (Jabber) client";
|
||||
description = "XMPP (Jabber) client based on Qt5";
|
||||
maintainers = with maintainers; [ orivej misuzu unclechu ];
|
||||
license = licenses.gpl2Only;
|
||||
platforms = platforms.linux;
|
||||
|
@ -4,13 +4,13 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "1.7.1";
|
||||
version = "1.7.3";
|
||||
in
|
||||
appimageTools.wrapType2 {
|
||||
name = "session-desktop-appimage-${version}";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/oxen-io/session-desktop/releases/download/v${version}/session-desktop-linux-x86_64-${version}.AppImage";
|
||||
sha256 = "126dx37099pjaqgfv5gbmvn5iiwv2a8lvfbqy5i9h1w1gqnihwq6";
|
||||
sha256 = "0s0zvj9ddrngdzsx8hd07pq3150sq8ab1hbpsi9i2ir99sv1p7gn";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -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/";
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "opsdroid";
|
||||
version = "0.23.0";
|
||||
version = "0.24.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "opsdroid";
|
||||
repo = "opsdroid";
|
||||
rev = "v${version}";
|
||||
sha256 = "1p1x7jbp0jx8anfwvavyn3x8i1vfhmbzyzrm014n26v5y39gabj1";
|
||||
sha256 = "15l2jvcpb9l8sgdd9zsvxqglf1r3vap0pp9cklpfa9jj0aik6nx9";
|
||||
};
|
||||
|
||||
disabled = !python3Packages.isPy3k;
|
||||
|
@ -63,6 +63,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = base.meta // {
|
||||
description = "A fast incremental file transfer utility";
|
||||
maintainers = with lib.maintainers; [ peti ehmry kampfschlaefer ];
|
||||
maintainers = with lib.maintainers; [ ehmry kampfschlaefer ];
|
||||
};
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ stdenv.mkDerivation {
|
||||
description = "Convert MS Word documents to plain text or PostScript";
|
||||
license = lib.licenses.gpl2;
|
||||
|
||||
maintainers = [ lib.maintainers.peti ];
|
||||
platforms = with lib.platforms; linux ++ darwin;
|
||||
};
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
homepage = "http://www.gnucash.org/";
|
||||
|
||||
maintainers = [ lib.maintainers.peti lib.maintainers.domenkozar ];
|
||||
maintainers = [ lib.maintainers.domenkozar ];
|
||||
platforms = lib.platforms.gnu ++ lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -1,50 +0,0 @@
|
||||
{ appimageTools, fetchurl, lib, runCommand, stdenv, gsettings-desktop-schemas, gtk3, zlib }:
|
||||
|
||||
let
|
||||
name = "${pname}-${version}";
|
||||
pname = "minetime";
|
||||
version = "1.8.10";
|
||||
appimage = fetchurl {
|
||||
url = "https://github.com/marcoancona/MineTime/releases/download/v${version}/${name}.AppImage";
|
||||
sha256 = "1a80lgk6v9kv9xb2y3i08gk25jm0pqyl57kfr5p1rbc33prhmcgw";
|
||||
};
|
||||
extracted = appimageTools.extractType2 {
|
||||
inherit name;
|
||||
src = appimage;
|
||||
};
|
||||
patched = runCommand "minetime-patchelf" {} ''
|
||||
cp -av ${extracted} $out
|
||||
|
||||
x=$out/resources/app.asar.unpacked/services/scheduling/dist/MinetimeSchedulingService
|
||||
chmod +w $x
|
||||
|
||||
patchelf \
|
||||
--set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
|
||||
--replace-needed libz.so.1 ${zlib}/lib/libz.so.1 \
|
||||
$x
|
||||
'';
|
||||
in
|
||||
appimageTools.wrapAppImage rec {
|
||||
inherit name;
|
||||
src = patched;
|
||||
|
||||
profile = ''
|
||||
export LC_ALL=C.UTF-8
|
||||
export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:$XDG_DATA_DIRS
|
||||
'';
|
||||
|
||||
multiPkgs = null; # no 32bit needed
|
||||
extraPkgs = ps:
|
||||
appimageTools.defaultFhsEnvArgs.multiPkgs ps
|
||||
++ (with ps; [ at-spi2-core at-spi2-atk libsecret libnotify ]);
|
||||
extraInstallCommands = "mv $out/bin/{${name},${pname}}";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Modern, intuitive and smart calendar application";
|
||||
homepage = "https://minetime.ai";
|
||||
license = licenses.unfree;
|
||||
# Should be cross-platform, but for now we just grab the appimage
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = with maintainers; [ dtzWill ];
|
||||
};
|
||||
}
|
@ -31,7 +31,6 @@ stdenv.mkDerivation rec {
|
||||
description = "Real-time 3D simulation of space";
|
||||
changelog = "https://github.com/CelestiaProject/Celestia/releases/tag/${version}";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ peti ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -33,6 +33,6 @@ mkDerivation rec {
|
||||
homepage = "http://stellarium.org/";
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ peti ma27 ];
|
||||
maintainers = with maintainers; [ ma27 ];
|
||||
};
|
||||
}
|
||||
|
@ -36,7 +36,6 @@ stdenv.mkDerivation rec {
|
||||
description = "Event driven digital circuit simulator with a TCL/TK-based graphical editor";
|
||||
homepage = "http://www.tkgate.org/";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = [ lib.maintainers.peti ];
|
||||
hydraPlatforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
|
||||
install -Dm0755 build/cadical "$out/bin/cadical"
|
||||
install -Dm0755 build/mobical "$out/bin/mobical"
|
||||
install -Dm0644 src/ccadical.h "$dev/include/ccadical.h"
|
||||
install -Dm0644 src/cadical.hpp "$dev/include/cadical.hpp"
|
||||
install -Dm0644 build/libcadical.a "$lib/lib/libcadical.a"
|
||||
mkdir -p "$out/share/doc/${pname}/"
|
||||
install -Dm0755 {LICEN?E,README*,VERSION} "$out/share/doc/${pname}/"
|
||||
|
@ -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/"
|
||||
|
@ -1,20 +1,31 @@
|
||||
{ lib, stdenv, fetchurl, makeWrapper, eprover, ocaml, perl, zlib }:
|
||||
{ lib, stdenv, fetchurl, fetchpatch, makeWrapper, eprover, ocaml, camlp4, perl, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "leo2";
|
||||
version = "1.6.2";
|
||||
version = "1.7.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://page.mi.fu-berlin.de/cbenzmueller/leo/leo2_v${version}.tgz";
|
||||
sha256 = "1wjpmizb181iygnd18lx7p77fwaci2clgzs5ix5j51cc8f3pazmv";
|
||||
sha256 = "sha256:1b2q7vsz6s9ighypsigqjm1mzjiq3xgnz5id5ssb4rh9zm190r82";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ eprover ocaml perl zlib ];
|
||||
buildInputs = [ eprover ocaml camlp4 perl zlib ];
|
||||
|
||||
sourceRoot = "leo2/src";
|
||||
patches = [ (fetchpatch {
|
||||
url = "https://github.com/niklasso/minisat/commit/7eb6015313561a2586032574788fcb133eeaa19f.patch";
|
||||
stripLen = 1;
|
||||
extraPrefix = "lib/";
|
||||
sha256 = "sha256:01ln7hi6nvvkqkhn9hciqizizz5qspvqffgksvgmzn9x7kdd9pnh";
|
||||
})
|
||||
];
|
||||
|
||||
preConfigure = "patchShebangs configure";
|
||||
preConfigure = ''
|
||||
cd src
|
||||
patchShebangs configure
|
||||
substituteInPlace Makefile.pre \
|
||||
--replace '+camlp4' "${camlp4}/lib/ocaml/${ocaml.version}/site-lib/camlp4"
|
||||
'';
|
||||
|
||||
buildFlags = [ "opt" ];
|
||||
|
||||
|
@ -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
|
||||
|
@ -119,6 +119,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
platforms = platforms.all;
|
||||
|
||||
maintainers = with maintainers; [ peti ] ++ teams.sage.members;
|
||||
maintainers = with maintainers; teams.sage.members;
|
||||
};
|
||||
}
|
||||
|
@ -63,6 +63,5 @@ lib.fix (eukleides: stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = [ lib.maintainers.peti ];
|
||||
};
|
||||
})
|
||||
|
@ -113,6 +113,5 @@ stdenv.mkDerivation ({
|
||||
'';
|
||||
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = [ lib.maintainers.peti ];
|
||||
};
|
||||
})
|
||||
|
@ -26,6 +26,5 @@ stdenv.mkDerivation rec {
|
||||
license = licenses.gpl2;
|
||||
homepage = "https://wxmaxima-developers.github.io/wxmaxima/";
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.peti ];
|
||||
};
|
||||
}
|
||||
|
58
pkgs/applications/terminal-emulators/ctx/default.nix
Normal file
58
pkgs/applications/terminal-emulators/ctx/default.nix
Normal file
@ -0,0 +1,58 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchgit
|
||||
, SDL2
|
||||
, alsa-lib
|
||||
, babl
|
||||
, curl
|
||||
, libdrm # Not documented
|
||||
, pkg-config
|
||||
, enableFb ? false
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ctx";
|
||||
version = "0.pre+date=2021-10-09";
|
||||
|
||||
src = fetchgit {
|
||||
name = "ctx-source"; # because of a dash starting the directory
|
||||
url = "https://ctx.graphics/.git/";
|
||||
rev = "d11d0d1a719a3c77712528e2feed8c0878e0ea64";
|
||||
sha256 = "sha256-Az3POgdvDOVaaRtzLlISDODhAKbefpGx5KgwO3dttqs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
alsa-lib
|
||||
babl
|
||||
curl
|
||||
libdrm
|
||||
];
|
||||
|
||||
configureScript = "./configure.sh";
|
||||
configureFlags = lib.optional enableFb "--enable-fb";
|
||||
dontAddPrefix = true;
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
installFlags = [
|
||||
"PREFIX=${placeholder "out"}"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://ctx.graphics/";
|
||||
description = "Vector graphics terminal";
|
||||
longDescription= ''
|
||||
ctx is an interactive 2D vector graphics, audio, text- canvas and
|
||||
terminal, with escape sequences that enable a 2D vector drawing API using
|
||||
a vector graphics protocol.
|
||||
'';
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gh";
|
||||
version = "2.0.0";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cli";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-TjBUVP9/hMB8yFnupSxwHDr5bmtiMFwsDi1axsD5ykA=";
|
||||
sha256 = "sha256-70FmFN76azRqnAZ9SLgr/V8moqkWoBbDB6IdSXM7Vmg=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-ZsMzLJ+eHAKNxhVFpQxRyTv/rcWvxA/luKPjXT+Zt4Y=";
|
||||
vendorSha256 = "sha256-004TspNwjCWnrD86HEf5wGpt8OCP5qIrTwlGWSRNUmg=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -11,13 +11,13 @@
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "git-machete";
|
||||
version = "3.3.0";
|
||||
version = "3.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "virtuslab";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0sx45y1d1v6y66msjc1lw9jhjppgbxqj145kivmd7lr6ccw68kav";
|
||||
sha256 = "sha256-drfMD9tQe1dc61MH3Cxu9oin137f4FsZJY3X2kDHdh4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
@ -33,16 +33,15 @@ buildPythonApplication rec {
|
||||
installShellCompletion --zsh --name _git-machete completion/git-machete.completion.zsh
|
||||
'';
|
||||
|
||||
postInstallCheck = ''
|
||||
git init
|
||||
test "$($out/bin/git-machete version)" = "git-machete version ${version}"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
|
||||
tests = {
|
||||
version = testVersion {
|
||||
package = git-machete;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -367,6 +367,6 @@ stdenv.mkDerivation {
|
||||
'';
|
||||
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = with lib.maintainers; [ primeos peti wmertens globin ];
|
||||
maintainers = with lib.maintainers; [ primeos wmertens globin ];
|
||||
};
|
||||
}
|
||||
|
@ -1,12 +1,9 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, crystal_1_0
|
||||
, crystal
|
||||
}:
|
||||
|
||||
let
|
||||
crystal = crystal_1_0;
|
||||
|
||||
in crystal.buildCrystalPackage rec {
|
||||
crystal.buildCrystalPackage rec {
|
||||
pname = "thicket";
|
||||
version = "0.1.5";
|
||||
|
||||
|
@ -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;
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"version": "14.3.2",
|
||||
"repo_hash": "1vsppz5akx5l54riacqbzkgdy47j9r71550mg2ay5ihy6iqxa2xr",
|
||||
"version": "14.3.3",
|
||||
"repo_hash": "1sh8lf6arqljzc0hmajl2r2j38ahk9hl6kikg9inw72xycrll7dk",
|
||||
"owner": "gitlab-org",
|
||||
"repo": "gitlab",
|
||||
"rev": "v14.3.2-ee",
|
||||
"rev": "v14.3.3-ee",
|
||||
"passthru": {
|
||||
"GITALY_SERVER_VERSION": "14.3.2",
|
||||
"GITALY_SERVER_VERSION": "14.3.3",
|
||||
"GITLAB_PAGES_VERSION": "1.44.0",
|
||||
"GITLAB_SHELL_VERSION": "13.21.1",
|
||||
"GITLAB_WORKHORSE_VERSION": "14.3.2"
|
||||
"GITLAB_WORKHORSE_VERSION": "14.3.3"
|
||||
}
|
||||
}
|
||||
|
@ -80,11 +80,6 @@ let
|
||||
# Fixup "resolved"-entries in yarn.lock to match our offline cache
|
||||
${fixup_yarn_lock}/bin/fixup_yarn_lock yarn.lock
|
||||
|
||||
# fixup_yarn_lock currently doesn't correctly fix the dagre-d3
|
||||
# url, so we have to do it manually
|
||||
${replace}/bin/replace-literal -f -e '"https://codeload.github.com/dagrejs/dagre-d3/tar.gz/e1a00e5cb518f5d2304a35647e024f31d178e55b"' \
|
||||
'"https___codeload.github.com_dagrejs_dagre_d3_tar.gz_e1a00e5cb518f5d2304a35647e024f31d178e55b"' yarn.lock
|
||||
|
||||
yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
|
||||
|
||||
patchShebangs node_modules/
|
||||
|
@ -20,7 +20,7 @@ let
|
||||
};
|
||||
};
|
||||
};
|
||||
version = "14.3.2";
|
||||
version = "14.3.3";
|
||||
gitaly_package = "gitlab.com/gitlab-org/gitaly/v${lib.versions.major version}";
|
||||
in
|
||||
|
||||
@ -32,7 +32,7 @@ buildGoModule {
|
||||
owner = "gitlab-org";
|
||||
repo = "gitaly";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-00Sgv1b3dwbN7ic//7NtrdiliunOnXRJ0GTQHYFjuqo=";
|
||||
sha256 = "sha256-WC361E+p3i02n2YCOwUzRxCWFt5UMEfJi6tHZPj1dgo=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-9RhPQosen70E9t1iAoc2SeKs9pYMMpMqgXLekWfKNf8=";
|
||||
|
@ -5,7 +5,7 @@ in
|
||||
buildGoModule rec {
|
||||
pname = "gitlab-workhorse";
|
||||
|
||||
version = "14.3.2";
|
||||
version = "14.3.3";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = data.owner;
|
||||
|
@ -1650,4 +1650,4 @@ DEPENDENCIES
|
||||
yajl-ruby (~> 1.4.1)
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.24
|
||||
2.2.20
|
||||
|
@ -77,7 +77,7 @@ GEM
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.7.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
marcel (1.0.1)
|
||||
marcel (1.0.2)
|
||||
method_source (1.0.0)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.0.3)
|
||||
@ -90,12 +90,12 @@ GEM
|
||||
nokogiri (1.11.7)
|
||||
mini_portile2 (~> 2.5.0)
|
||||
racc (~> 1.4)
|
||||
parallel (1.20.1)
|
||||
parallel (1.21.0)
|
||||
parser (3.0.2.0)
|
||||
ast (~> 2.4.1)
|
||||
pg (1.2.3)
|
||||
public_suffix (4.0.6)
|
||||
puma (5.4.0)
|
||||
puma (5.5.2)
|
||||
nio4r (~> 2.0)
|
||||
racc (1.5.2)
|
||||
rack (2.2.3)
|
||||
@ -120,7 +120,7 @@ GEM
|
||||
rails-dom-testing (2.0.3)
|
||||
activesupport (>= 4.2.0)
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.3.0)
|
||||
rails-html-sanitizer (1.4.2)
|
||||
loofah (~> 2.3)
|
||||
railties (5.2.6)
|
||||
actionpack (= 5.2.6)
|
||||
@ -146,11 +146,11 @@ GEM
|
||||
railties (>= 5.1, < 6.2)
|
||||
roadie (>= 3.1, < 5.0)
|
||||
rotp (6.2.0)
|
||||
rouge (3.26.0)
|
||||
rqrcode (2.0.0)
|
||||
rouge (3.26.1)
|
||||
rqrcode (2.1.0)
|
||||
chunky_png (~> 1.0)
|
||||
rqrcode_core (~> 1.0)
|
||||
rqrcode_core (1.1.0)
|
||||
rqrcode_core (1.2.0)
|
||||
rubocop (1.12.1)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 3.0.0.0)
|
||||
@ -160,7 +160,7 @@ GEM
|
||||
rubocop-ast (>= 1.2.0, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 1.4.0, < 3.0)
|
||||
rubocop-ast (1.10.0)
|
||||
rubocop-ast (1.12.0)
|
||||
parser (>= 3.0.1.1)
|
||||
rubocop-performance (1.10.2)
|
||||
rubocop (>= 0.90.0, < 2.0)
|
||||
@ -190,8 +190,8 @@ GEM
|
||||
thread_safe (0.3.6)
|
||||
tzinfo (1.2.9)
|
||||
thread_safe (~> 0.1)
|
||||
unicode-display_width (2.0.0)
|
||||
webdrivers (4.6.0)
|
||||
unicode-display_width (2.1.0)
|
||||
webdrivers (4.6.1)
|
||||
nokogiri (~> 1.6)
|
||||
rubyzip (>= 1.3.0)
|
||||
selenium-webdriver (>= 3.0, < 4.0)
|
||||
@ -245,7 +245,7 @@ DEPENDENCIES
|
||||
yard
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.7.3p183
|
||||
ruby 2.7.4p191
|
||||
|
||||
BUNDLED WITH
|
||||
2.1.4
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ lib, stdenv, fetchurl, bundlerEnv, ruby, makeWrapper }:
|
||||
|
||||
let
|
||||
version = "4.2.2";
|
||||
version = "4.2.3";
|
||||
rubyEnv = bundlerEnv {
|
||||
name = "redmine-env-${version}";
|
||||
|
||||
@ -16,7 +16,7 @@ in
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.redmine.org/releases/${pname}-${version}.tar.gz";
|
||||
sha256 = "1xlqf7g5imjmc3as2aajvbrs217jh3qpdvvpsd9mka9rk4kykyz6";
|
||||
sha256 = "033slhr5kmz5b29v7n52336i0r7y4m9si748b22r85s2jpf37xkj";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -301,10 +301,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0bp001p687nsa4a8sp3q1iv8pfhs24w7s3avychjp64sdkg6jxq3";
|
||||
sha256 = "0kky3yiwagsk8gfbzn3mvl2fxlh3b39v6nawzm4wpjs6xxvvc4x0";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.0.1";
|
||||
version = "1.0.2";
|
||||
};
|
||||
method_source = {
|
||||
groups = ["default"];
|
||||
@ -420,10 +420,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0055br0mibnqz0j8wvy20zry548dhkakws681bhj3ycb972awkzd";
|
||||
sha256 = "1hkfpm78c2vs1qblnva3k1grijvxh87iixcnyd83s3lxrxsjvag4";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.20.1";
|
||||
version = "1.21.0";
|
||||
};
|
||||
parser = {
|
||||
dependencies = ["ast"];
|
||||
@ -470,10 +470,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0bz9y1hxfyv73yb26nvs2kcw08gxi7nxkfc94j82hgx2sifcnv3x";
|
||||
sha256 = "1xblxnrs0c5m326v7kgr32k4m00cl2ipcf5m0qvyisrw62vd5dbn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.4.0";
|
||||
version = "5.5.2";
|
||||
};
|
||||
racc = {
|
||||
groups = ["default" "test"];
|
||||
@ -545,10 +545,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1icpqmxbppl4ynzmn6dx7wdil5hhq6fz707m9ya6d86c7ys8sd4f";
|
||||
sha256 = "09qrfi3pgllxb08r024lln9k0qzxs57v0slsj8616xf9c0cwnwbk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.3.0";
|
||||
version = "1.4.2";
|
||||
};
|
||||
railties = {
|
||||
dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor"];
|
||||
@ -680,10 +680,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0b4b300i3m4m4kw7w1n9wgxwy16zccnb7271miksyzd0wq5b9pm3";
|
||||
sha256 = "197k0vskf72wxx0gzwld2jzg27bb7982xlvnzy9adlvkzp7nh8vf";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.26.0";
|
||||
version = "3.26.1";
|
||||
};
|
||||
rqrcode = {
|
||||
dependencies = ["chunky_png" "rqrcode_core"];
|
||||
@ -691,20 +691,20 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "073w0qgjydkqpsqsb9yr8qg0mhvwlzx6z53hqr2b5zifvb9wzh02";
|
||||
sha256 = "0444sgvx3ahvgr3c9swpy32kcdpciwgcqahp3pb4m7d23xp1qjdc";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.0";
|
||||
version = "2.1.0";
|
||||
};
|
||||
rqrcode_core = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0d632w2pd34bw9l3bsfnyqaa8vgbz9pxpj29gpf8parqr7wq922k";
|
||||
sha256 = "06ld6386hbdhy5h0k09axmgn424kavpc8f27k1vjhknjhbf8jjfg";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
};
|
||||
rubocop = {
|
||||
dependencies = ["parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
|
||||
@ -723,10 +723,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0x6za0j9wwxr14rkkkmpbnwj04lak4yjmkyrdl8c31m9acba80zw";
|
||||
sha256 = "0x0xfq2mpg194rcanbjrgvjbh94s9kq72jynxx61789s628kxy59";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.10.0";
|
||||
version = "1.12.0";
|
||||
};
|
||||
rubocop-performance = {
|
||||
dependencies = ["rubocop" "rubocop-ast"];
|
||||
@ -870,10 +870,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1bilbnc8j6jkb59lrf177i3p1pdyxll0n8400hzqr35vl3r3kv2m";
|
||||
sha256 = "0csjm9shhfik0ci9mgimb7hf3xgh7nx45rkd9rzgdz6vkwr8rzxn";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.0";
|
||||
version = "2.1.0";
|
||||
};
|
||||
webdrivers = {
|
||||
dependencies = ["nokogiri" "rubyzip" "selenium-webdriver"];
|
||||
@ -881,10 +881,10 @@
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0hi6pgkfwgz1bzfclyrr449xy9y2f2bcrnnnlb5ghvvrqkgn0dry";
|
||||
sha256 = "1naymcfmm9pkf0f67xd99d9f6dpv477ggyvc1c04gxifirynfydp";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.6.0";
|
||||
version = "4.6.1";
|
||||
};
|
||||
websocket-driver = {
|
||||
dependencies = ["websocket-extensions"];
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "verco";
|
||||
version = "6.5.5";
|
||||
version = "6.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vamolessa";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-n+GGiu/xGGGC6FQPoASok87bCG0MFVIf6l6nt1lvw8A=";
|
||||
sha256 = "sha256-H8rDaRVU3G3iuBv0Tz/YOuYbL2k8wEoEIIEG7hjU6eM=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-lNtR4N+bFFCr3Ct99DJCbtDeKxTzT7ZjvAWixbQm3jg=";
|
||||
cargoSha256 = "sha256-4Ou/stedL3WCY4Awsl++lc5fZ9gxd4uorf4G2/0DiPc=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A simple Git/Mercurial/PlasticSCM tui client based on keyboard shortcuts";
|
||||
|
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
|
||||
meta = with lib; {
|
||||
description = "Network A/V plugin for OBS Studio";
|
||||
homepage = "https://github.com/Palakis/obs-ndi";
|
||||
maintainers = with maintainers; [ peti jshcmpbll ];
|
||||
maintainers = with maintainers; [ jshcmpbll ];
|
||||
license = licenses.gpl2;
|
||||
platforms = with platforms; linux;
|
||||
};
|
||||
|
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
|
||||
'';
|
||||
}
|
@ -2,36 +2,36 @@
|
||||
|
||||
let
|
||||
fonts = {
|
||||
aegan = { version = "10.00"; file = "Aegean.zip"; sha256 = "0k47nhzw4vx771ch3xx8mf6xx5vx0hg0cif5jdlmdaz4h2c3rawz"; description = "Aegean"; };
|
||||
aegyptus = { version = "8.00"; file = "Aegyptus.zip"; sha256 = "13h2pi641k9vxgqi9l11mjya10ym9ln54wrkwxx6gxq63zy7y5mj"; description = "Egyptian Hieroglyphs, Coptic, Meroitic"; };
|
||||
akkadian = { version = "7.18"; file = "Akkadian.zip"; sha256 = "1bplcvszbdrk85kqipn9lzhr62647wjibz1p8crzjvsw6f9ymxy3"; description = "Sumero-Akkadian Cuneiform"; };
|
||||
assyrian = { version = "2.00"; file = "AssyrianFont.zip"; sha256 = "0vdvb24vsnmwzd6bw14akqg0hbvsk8avgnbwk9fkybn1f801475k"; description = "Neo-Assyrian in Unicode with OpenType"; };
|
||||
eemusic = { version = "2.00"; file = "EEMusic.zip"; sha256 = "1y9jf105a2b689m7hdjmhhr7z5j0qd2w6dmb3iic9bwaczlrjy7j"; description = "Byzantine Musical Notation in Unicode with OpenType"; };
|
||||
maya = { version = "4.18"; file = "Maya.zip"; sha256 = "08z2ch0z2c43fjfg5m4yp3l1dp0cbk7lv5i7wzsr3cr9kr59wpi9"; description = "Maya Hieroglyphs"; };
|
||||
symbola = { version = "12.00"; file = "Symbola.zip"; sha256 = "1i3xra33xkj32vxs55xs2afrqyc822nk25669x78px5g5qd8gypm"; description = "Basic Latin, Greek, Cyrillic and many Symbol blocks of Unicode"; };
|
||||
textfonts = { version = "9.00"; file = "Textfonts.zip"; sha256 = "0wzxz4j4fgk81b88d58715n1wvq2mqmpjpk4g5hi3vk77y2zxc4d"; description = "Aroania, Anaktoria, Alexander, Avdira and Asea"; };
|
||||
unidings = { version = "9.19"; file = "Unidings.zip"; sha256 = "1bybzgdqhmq75hb12n3pjrsdcpw1a6sgryx464s68jlq4zi44g78"; description = "Glyphs and Icons for blocks of The Unicode Standard"; };
|
||||
aegan = { version = "13.00"; file = "Aegean.zip"; sha256 = "1w4ks341jw12p6zi1fy1hb3kqiqv61yn8i2hr9ybng9n8xdw03li"; description = "Aegean"; };
|
||||
aegyptus = { version = "13.00"; file = "Aegyptus.zip"; sha256 = "16j8rj3mr2cddag7laxvzpm5w3yk467fwzsk60nq8pnh6ab1v05y"; description = "Egyptian Hieroglyphs, Coptic, Meroitic"; };
|
||||
akkadian = { version = "13.00"; file = "Akkadian.zip"; sha256 = "1f2v9cjk307c5lw0si9hwjcll5wb9nwwy5im0y16kvpgwh2ccshc"; description = "Sumero-Akkadian Cuneiform"; };
|
||||
assyrian = { version = "13.00"; file = "Assyrian.zip"; sha256 = "18nx6ayfk3ba6wg1rp37r9fll5ajrwq2mp5w2l3y1q1kk92frkid"; description = "Neo-Assyrian in Unicode with OpenType"; };
|
||||
eemusic = { version = "13.00"; file = "EEMusic.zip"; sha256 = "1kk5rd3wd7y13z9bqcg1k9idbwad4l3hfmi3lbfk4y1w895vgxk2"; description = "Byzantine Musical Notation in Unicode with OpenType"; };
|
||||
maya = { version = "13.00"; file = "Maya%20Hieroglyphs.zip"; sha256 = "0fzzrlkd4m2dj2phg97nz782w0afmw0f0ykdvlwyp29j1ak7yyp1"; description = "Maya Hieroglyphs"; };
|
||||
symbola = { version = "13.00"; file = "Symbola.zip"; sha256 = "04pxh5agvlkyg8mvv2szwshnmzi3n0m7va4xsyq401zbsa147rmi"; description = "Basic Latin, Greek, Cyrillic and many Symbol blocks of Unicode"; };
|
||||
textfonts = { version = "13.00"; file = "Textfonts.zip"; sha256 = "1xp8qlfpvcf5n96zgm07zij3ndlzvqjlii8gx9sbj5aa56rxkdgb"; description = "Aroania, Anaktoria, Alexander, Avdira and Asea"; };
|
||||
unidings = { version = "13.00"; file = "Unidings.zip"; sha256 = "0cvnxblk9wsr8mxm5lrdpdm456vi7lln7qh53b67npg4baf0as63"; description = "Glyphs and Icons for blocks of The Unicode Standard"; };
|
||||
};
|
||||
|
||||
mkpkg = name_: {version, file, sha256, description}: fetchzip rec {
|
||||
name = "${name_}-${version}";
|
||||
url = "http://users.teilar.gr/~g1951d/${file}";
|
||||
url = "https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/${file}";
|
||||
postFetch = ''
|
||||
mkdir -p $out/share/{fonts,doc}
|
||||
unzip -j $downloadedFile \*.ttf -d $out/share/fonts/truetype
|
||||
unzip -j $downloadedFile \*.docx \*.pdf \*.xlsx -d "$out/share/doc/${name}" || true # unpack docs if any
|
||||
unzip -j $downloadedFile \*.otf -d $out/share/fonts/opentype
|
||||
unzip -j $downloadedFile \*.odt \*.pdf \*.xlsx -d "$out/share/doc/${name}" || true # unpack docs if any
|
||||
rmdir "$out/share/doc/${name}" $out/share/doc || true # remove dirs if empty
|
||||
'';
|
||||
inherit sha256;
|
||||
|
||||
meta = {
|
||||
inherit description;
|
||||
# see http://users.teilar.gr/~g1951d/License.pdf
|
||||
# see https://dn-works.com/wp-content/uploads/2020/UFAS-Docs/License.pdf
|
||||
# quite draconian: non-commercial, no modifications,
|
||||
# no redistribution, "a single instantiation and no
|
||||
# network installation"
|
||||
license = lib.licenses.unfree;
|
||||
homepage = "http://users.teilar.gr/~g1951d/";
|
||||
homepage = "https://dn-works.com/ufas/";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
@ -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"
|
||||
];
|
||||
|
||||
|
@ -219,28 +219,34 @@ let
|
||||
|
||||
in
|
||||
rec {
|
||||
binaryCrystal_0_36 = genericBinary {
|
||||
version = "0.36.1";
|
||||
binaryCrystal_1_0 = genericBinary {
|
||||
version = "1.0.0";
|
||||
sha256s = {
|
||||
x86_64-linux = "065vzq34g7hgzl2mrzy9gwwsfikc78nj7xxsbrk67r6rz0a7bk1q";
|
||||
i686-linux = "18m4b1lnd682i5ygbg6cljqjny60nn2mlrzrk765h2ip6fljqbm1";
|
||||
x86_64-darwin = "0xggayk92zh64pb5sz77n12hkcd1hg8kw90z7gb18594q551sf1v";
|
||||
x86_64-linux = "1949argajiyqyq09824yj3wjyv88gd8wbf20xh895saqfykiq880";
|
||||
i686-linux = "0w0f4fwr2ijhx59i7ppicbh05hfmq7vffmgl7lal6im945m29vch";
|
||||
x86_64-darwin = "01n0rf8zh551vv8wq3h0ifnsai0fz9a77yq87xx81y9dscl9h099";
|
||||
};
|
||||
};
|
||||
|
||||
crystal_0_36 = generic {
|
||||
version = "0.36.1";
|
||||
sha256 = "sha256-5rjrvwZKM4lHpmxLyUVbi0Zw98xT+iJKonxwfUwS/Wk=";
|
||||
binary = binaryCrystal_0_36;
|
||||
};
|
||||
|
||||
crystal_1_0 = generic {
|
||||
version = "1.0.0";
|
||||
sha256 = "sha256-RI+a3w6Rr+uc5jRf7xw0tOenR+q6qii/ewWfID6dbQ8=";
|
||||
binary = crystal_0_36;
|
||||
binary = binaryCrystal_1_0;
|
||||
};
|
||||
|
||||
crystal = crystal_1_0;
|
||||
crystal_1_1 = generic {
|
||||
version = "1.1.1";
|
||||
sha256 = "sha256-hhhT3reia8acZiPsflwfuD638Ll2JiXwMfES1TyGyNQ=";
|
||||
binary = crystal_1_0;
|
||||
};
|
||||
|
||||
crystal_1_2 = generic {
|
||||
version = "1.2.0";
|
||||
sha256 = "sha256-38mmsolzmCnv+MFUMc+AEiklDLBHIr/jqXMLzc0nVq4=";
|
||||
binary = crystal_1_1;
|
||||
};
|
||||
|
||||
crystal = crystal_1_2;
|
||||
|
||||
crystal2nix = callPackage ./crystal2nix.nix { };
|
||||
}
|
||||
|
@ -314,7 +314,7 @@ stdenv.mkDerivation ({
|
||||
compiler used in the GNU system including the GNU/Linux variant.
|
||||
'';
|
||||
|
||||
maintainers = with lib.maintainers; [ peti veprbl ];
|
||||
maintainers = with lib.maintainers; [ veprbl ];
|
||||
|
||||
platforms = lib.platforms.unix;
|
||||
badPlatforms = [ "x86_64-darwin" ];
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user