Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2021-10-15 00:02:19 +00:00 committed by GitHub
commit 2a1af96a55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
350 changed files with 4026 additions and 4789 deletions

View File

@ -303,7 +303,26 @@ rec {
# TODO: figure out a clever way to integrate location information from
# something like __unsafeGetAttrPos.
warn = msg: builtins.trace "warning: ${msg}";
/*
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 "warning: ${msg}" (abort "NIX_ABORT_ON_WARN=true; warnings are treated as unrecoverable errors.")
else msg: builtins.trace "warning: ${msg}";
/*
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}";

View File

@ -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";

View File

@ -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">

View File

@ -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`.

View File

@ -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

View File

@ -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.";
}

View File

@ -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

View File

@ -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;

View File

@ -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;
};
};
}

View File

@ -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
'';
};

View 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)
'';
};
}

View File

@ -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 = "";

View File

@ -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 = ''

View File

@ -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">

View File

@ -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;

View 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")
'';
}
)

View File

@ -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}"
)

View File

@ -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" ];

View File

@ -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
''

View 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

View File

@ -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"

View File

@ -198,6 +198,8 @@
railgun = callPackage ./railgun { };
rec-mode = callPackage ./rec-mode { };
structured-haskell-mode = self.shm;
sv-kalender = callPackage ./sv-kalender { };

View File

@ -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";
};
}

View File

@ -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 = ''

View File

@ -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";

View File

@ -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" ];
};
}

View File

@ -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 = [

View File

@ -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 = [

View File

@ -113,7 +113,6 @@ stdenv.mkDerivation {
'';
homepage = "http://www.sane-project.org/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ peti ];
platforms = platforms.linux;
};
}

View File

@ -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;
};
}

View File

@ -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;
};
}

View File

@ -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 ];

View File

@ -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

View File

@ -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; [

View File

@ -25,7 +25,6 @@ stdenv.mkDerivation rec {
IPSEC.
'';
platforms = platforms.unix;
maintainers = [ maintainers.peti ];
license = licenses.gpl2Plus;
};
}

View File

@ -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;
};
}

View File

@ -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

View File

@ -74,6 +74,5 @@ stdenv.mkDerivation rec {
homepage = "http://ikiwiki.info/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.peti ];
};
}

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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

View File

@ -65,7 +65,7 @@ buildPythonApplication rec {
gobject-introspection
];
propagatedBuildInputs = [
pythonPath = [
pygobject3
pyatspi
dbus-python

View 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;
};
}

View File

@ -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 ];

View File

@ -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;

View File

@ -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.

View File

@ -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}" \

View File

@ -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

View File

@ -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}

View File

@ -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."

View File

@ -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

View File

@ -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",

View File

@ -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; };

View File

@ -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.
#
# Its not yet defined in the Psi+ project what value to use as a version for
# any further releases that dont change Psi version.
#
# Lets 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;

View File

@ -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; {

View File

@ -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}";

View File

@ -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/";

View File

@ -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;

View File

@ -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 ];
};
}

View File

@ -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;
};
}

View File

@ -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;
};
}

View File

@ -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 ];
};
}

View File

@ -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;
};
}

View File

@ -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 ];
};
}

View File

@ -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;
};
}

View File

@ -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}/"

View File

@ -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/"

View File

@ -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" ];

View File

@ -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

View File

@ -119,6 +119,6 @@ stdenv.mkDerivation rec {
platforms = platforms.all;
maintainers = with maintainers; [ peti ] ++ teams.sage.members;
maintainers = with maintainers; teams.sage.members;
};
}

View File

@ -63,6 +63,5 @@ lib.fix (eukleides: stdenv.mkDerivation rec {
'';
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.peti ];
};
})

View File

@ -113,6 +113,5 @@ stdenv.mkDerivation ({
'';
platforms = lib.platforms.unix;
maintainers = [ lib.maintainers.peti ];
};
})

View File

@ -26,6 +26,5 @@ stdenv.mkDerivation rec {
license = licenses.gpl2;
homepage = "https://wxmaxima-developers.github.io/wxmaxima/";
platforms = platforms.linux;
maintainers = [ maintainers.peti ];
};
}

View 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;
};
}

View File

@ -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 ];

View File

@ -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; {

View File

@ -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 ];
};
}

View File

@ -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";

View File

@ -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;

View File

@ -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"
}
}

View File

@ -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/

View File

@ -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=";

View File

@ -5,7 +5,7 @@ in
buildGoModule rec {
pname = "gitlab-workhorse";
version = "14.3.2";
version = "14.3.3";
src = fetchFromGitLab {
owner = data.owner;

View File

@ -1650,4 +1650,4 @@ DEPENDENCIES
yajl-ruby (~> 1.4.1)
BUNDLED WITH
2.2.24
2.2.20

View File

@ -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

View File

@ -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 ];

View File

@ -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"];

View File

@ -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";

View File

@ -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;
};

View 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
'';
}

View File

@ -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

View File

@ -14,6 +14,8 @@ mkDerivation rec {
pname = "adwaita-qt";
version = "1.4.0";
outputs = [ "out" "dev" ];
src = fetchFromGitHub {
owner = "FedoraQt";
repo = pname;

View File

@ -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

View File

@ -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.
# Lets add it anyway in case they decide to make build respect the option in the future.

View File

@ -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=";

View File

@ -56,7 +56,7 @@ python3Packages.buildPythonApplication rec {
libsoup
];
propagatedBuildInputs = with python3Packages; [
pythonPath = with python3Packages; [
pygobject3
];

View File

@ -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"
];

View File

@ -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 { };
}

View File

@ -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