Merge master into haskell-updates
This commit is contained in:
@@ -8,7 +8,7 @@ In the Nixpkgs tree, Ruby packages can be found throughout, depending on what th
|
||||
|
||||
There are two main approaches for using Ruby with gems. One is to use a specifically locked `Gemfile` for an application that has very strict dependencies. The other is to depend on the common gems, which we'll explain further down, and rely on them being updated regularly.
|
||||
|
||||
The interpreters have common attributes, namely `gems`, and `withPackages`. So you can refer to `ruby.gems.nokogiri`, or `ruby_2_6.gems.nokogiri` to get the Nokogiri gem already compiled and ready to use.
|
||||
The interpreters have common attributes, namely `gems`, and `withPackages`. So you can refer to `ruby.gems.nokogiri`, or `ruby_2_7.gems.nokogiri` to get the Nokogiri gem already compiled and ready to use.
|
||||
|
||||
Since not all gems have executables like `nokogiri`, it's usually more convenient to use the `withPackages` function like this: `ruby.withPackages (p: with p; [ nokogiri ])`. This will also make sure that the Ruby in your environment will be able to find the gem and it can be used in your Ruby code (for example via `ruby` or `irb` executables) via `require "nokogiri"` as usual.
|
||||
|
||||
|
||||
@@ -1138,6 +1138,14 @@ Superuser created successfully.
|
||||
<literal>coursier</literal>, you can create a shell alias.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>services.mosquitto</literal> module has been
|
||||
rewritten to support multiple listeners and per-listener
|
||||
configuration. Module configurations from previous releases
|
||||
will no longer work and must be updated.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="sec-release-21.11-notable-changes">
|
||||
|
||||
@@ -351,6 +351,9 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- The `coursier` package's binary was renamed from `coursier` to `cs`. Completions which haven't worked for a while should now work with the renamed binary. To keep using `coursier`, you can create a shell alias.
|
||||
|
||||
- The `services.mosquitto` module has been rewritten to support multiple listeners and per-listener configuration.
|
||||
Module configurations from previous releases will no longer work and must be updated.
|
||||
|
||||
## Other Notable Changes {#sec-release-21.11-notable-changes}
|
||||
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ in
|
||||
{ console.keyMap = with config.services.xserver;
|
||||
mkIf cfg.useXkbConfig
|
||||
(pkgs.runCommand "xkb-console-keymap" { preferLocalBuild = true; } ''
|
||||
'${pkgs.ckbcomp}/bin/ckbcomp' \
|
||||
'${pkgs.buildPackages.ckbcomp}/bin/ckbcomp' \
|
||||
${optionalString (config.environment.sessionVariables ? XKB_CONFIG_ROOT)
|
||||
"-I${config.environment.sessionVariables.XKB_CONFIG_ROOT}"
|
||||
} \
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
let cfg = config.programs.file-roller;
|
||||
|
||||
in {
|
||||
|
||||
# Added 2019-08-09
|
||||
imports = [
|
||||
@@ -21,6 +23,13 @@ with lib;
|
||||
|
||||
enable = mkEnableOption "File Roller, an archive manager for GNOME";
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.gnome.file-roller;
|
||||
defaultText = literalExpression "pkgs.gnome.file-roller";
|
||||
description = "File Roller derivation to use.";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
@@ -28,11 +37,11 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.programs.file-roller.enable {
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.gnome.file-roller ];
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
services.dbus.packages = [ pkgs.gnome.file-roller ];
|
||||
services.dbus.packages = [ cfg.package ];
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -42,12 +42,16 @@ let
|
||||
${cfg.postInit}
|
||||
fi
|
||||
'' + ''
|
||||
borg create $extraArgs \
|
||||
--compression ${cfg.compression} \
|
||||
--exclude-from ${mkExcludeFile cfg} \
|
||||
$extraCreateArgs \
|
||||
"::$archiveName$archiveSuffix" \
|
||||
${escapeShellArgs cfg.paths}
|
||||
(
|
||||
set -o pipefail
|
||||
${optionalString (cfg.dumpCommand != null) ''${escapeShellArg cfg.dumpCommand} | \''}
|
||||
borg create $extraArgs \
|
||||
--compression ${cfg.compression} \
|
||||
--exclude-from ${mkExcludeFile cfg} \
|
||||
$extraCreateArgs \
|
||||
"::$archiveName$archiveSuffix" \
|
||||
${if cfg.paths == null then "-" else escapeShellArgs cfg.paths}
|
||||
)
|
||||
'' + optionalString cfg.appendFailedSuffix ''
|
||||
borg rename $extraArgs \
|
||||
"::$archiveName$archiveSuffix" "$archiveName"
|
||||
@@ -182,6 +186,14 @@ let
|
||||
+ " without at least one public key";
|
||||
};
|
||||
|
||||
mkSourceAssertions = name: cfg: {
|
||||
assertion = count isNull [ cfg.dumpCommand cfg.paths ] == 1;
|
||||
message = ''
|
||||
Exactly one of borgbackup.jobs.${name}.paths or borgbackup.jobs.${name}.dumpCommand
|
||||
must be set.
|
||||
'';
|
||||
};
|
||||
|
||||
mkRemovableDeviceAssertions = name: cfg: {
|
||||
assertion = !(isLocalPath cfg.repo) -> !cfg.removableDevice;
|
||||
message = ''
|
||||
@@ -240,11 +252,25 @@ in {
|
||||
options = {
|
||||
|
||||
paths = mkOption {
|
||||
type = with types; coercedTo str lib.singleton (listOf str);
|
||||
description = "Path(s) to back up.";
|
||||
type = with types; nullOr (coercedTo str lib.singleton (listOf str));
|
||||
default = null;
|
||||
description = ''
|
||||
Path(s) to back up.
|
||||
Mutually exclusive with <option>dumpCommand</option>.
|
||||
'';
|
||||
example = "/home/user";
|
||||
};
|
||||
|
||||
dumpCommand = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
description = ''
|
||||
Backup the stdout of this program instead of filesystem paths.
|
||||
Mutually exclusive with <option>paths</option>.
|
||||
'';
|
||||
example = "/path/to/createZFSsend.sh";
|
||||
};
|
||||
|
||||
repo = mkOption {
|
||||
type = types.str;
|
||||
description = "Remote or local repository to back up to.";
|
||||
@@ -657,6 +683,7 @@ in {
|
||||
assertions =
|
||||
mapAttrsToList mkPassAssertion jobs
|
||||
++ mapAttrsToList mkKeysAssertion repos
|
||||
++ mapAttrsToList mkSourceAssertions jobs
|
||||
++ mapAttrsToList mkRemovableDeviceAssertions jobs;
|
||||
|
||||
system.activationScripts = mapAttrs' mkActivationScript jobs;
|
||||
|
||||
@@ -5,35 +5,529 @@ with lib;
|
||||
let
|
||||
cfg = config.services.mosquitto;
|
||||
|
||||
listenerConf = optionalString cfg.ssl.enable ''
|
||||
listener ${toString cfg.ssl.port} ${cfg.ssl.host}
|
||||
cafile ${cfg.ssl.cafile}
|
||||
certfile ${cfg.ssl.certfile}
|
||||
keyfile ${cfg.ssl.keyfile}
|
||||
'';
|
||||
# note that mosquitto config parsing is very simplistic as of may 2021.
|
||||
# often times they'll e.g. strtok() a line, check the first two tokens, and ignore the rest.
|
||||
# there's no escaping available either, so we have to prevent any being necessary.
|
||||
str = types.strMatching "[^\r\n]*" // {
|
||||
description = "single-line string";
|
||||
};
|
||||
path = types.addCheck types.path (p: str.check "${p}");
|
||||
configKey = types.strMatching "[^\r\n\t ]+";
|
||||
optionType = with types; oneOf [ str path bool int ] // {
|
||||
description = "string, path, bool, or integer";
|
||||
};
|
||||
optionToString = v:
|
||||
if isBool v then boolToString v
|
||||
else if path.check v then "${v}"
|
||||
else toString v;
|
||||
|
||||
passwordConf = optionalString cfg.checkPasswords ''
|
||||
password_file ${cfg.dataDir}/passwd
|
||||
'';
|
||||
assertKeysValid = prefix: valid: config:
|
||||
mapAttrsToList
|
||||
(n: _: {
|
||||
assertion = valid ? ${n};
|
||||
message = "Invalid config key ${prefix}.${n}.";
|
||||
})
|
||||
config;
|
||||
|
||||
mosquittoConf = pkgs.writeText "mosquitto.conf" ''
|
||||
acl_file ${aclFile}
|
||||
persistence true
|
||||
allow_anonymous ${boolToString cfg.allowAnonymous}
|
||||
listener ${toString cfg.port} ${cfg.host}
|
||||
${passwordConf}
|
||||
${listenerConf}
|
||||
${cfg.extraConf}
|
||||
'';
|
||||
formatFreeform = { prefix ? "" }: mapAttrsToList (n: v: "${prefix}${n} ${optionToString v}");
|
||||
|
||||
userAcl = (concatStringsSep "\n\n" (mapAttrsToList (n: c:
|
||||
"user ${n}\n" + (concatStringsSep "\n" c.acl)) cfg.users
|
||||
));
|
||||
userOptions = with types; submodule {
|
||||
options = {
|
||||
password = mkOption {
|
||||
type = uniq (nullOr str);
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the (clear text) password for the MQTT User.
|
||||
'';
|
||||
};
|
||||
|
||||
aclFile = pkgs.writeText "mosquitto.acl" ''
|
||||
${cfg.aclExtraConf}
|
||||
${userAcl}
|
||||
'';
|
||||
passwordFile = mkOption {
|
||||
type = uniq (nullOr types.path);
|
||||
example = "/path/to/file";
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the path to a file containing the
|
||||
clear text password for the MQTT user.
|
||||
'';
|
||||
};
|
||||
|
||||
hashedPassword = mkOption {
|
||||
type = uniq (nullOr str);
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the hashed password for the MQTT User.
|
||||
To generate hashed password install <literal>mosquitto</literal>
|
||||
package and use <literal>mosquitto_passwd</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
hashedPasswordFile = mkOption {
|
||||
type = uniq (nullOr types.path);
|
||||
example = "/path/to/file";
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the path to a file containing the
|
||||
hashed password for the MQTT user.
|
||||
To generate hashed password install <literal>mosquitto</literal>
|
||||
package and use <literal>mosquitto_passwd</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
acl = mkOption {
|
||||
type = listOf str;
|
||||
example = [ "read A/B" "readwrite A/#" ];
|
||||
default = [];
|
||||
description = ''
|
||||
Control client access to topics on the broker.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
userAsserts = prefix: users:
|
||||
mapAttrsToList
|
||||
(n: _: {
|
||||
assertion = builtins.match "[^:\r\n]+" n != null;
|
||||
message = "Invalid user name ${n} in ${prefix}";
|
||||
})
|
||||
users
|
||||
++ mapAttrsToList
|
||||
(n: u: {
|
||||
assertion = count (s: s != null) [
|
||||
u.password u.passwordFile u.hashedPassword u.hashedPasswordFile
|
||||
] <= 1;
|
||||
message = "Cannot set more than one password option for user ${n} in ${prefix}";
|
||||
}) users;
|
||||
|
||||
makePasswordFile = users: path:
|
||||
let
|
||||
makeLines = store: file:
|
||||
mapAttrsToList
|
||||
(n: u: "addLine ${escapeShellArg n} ${escapeShellArg u.${store}}")
|
||||
(filterAttrs (_: u: u.${store} != null) users)
|
||||
++ mapAttrsToList
|
||||
(n: u: "addFile ${escapeShellArg n} ${escapeShellArg "${u.${file}}"}")
|
||||
(filterAttrs (_: u: u.${file} != null) users);
|
||||
plainLines = makeLines "password" "passwordFile";
|
||||
hashedLines = makeLines "hashedPassword" "hashedPasswordFile";
|
||||
in
|
||||
pkgs.writeScript "make-mosquitto-passwd"
|
||||
(''
|
||||
#! ${pkgs.runtimeShell}
|
||||
|
||||
set -eu
|
||||
|
||||
file=${escapeShellArg path}
|
||||
|
||||
rm -f "$file"
|
||||
touch "$file"
|
||||
|
||||
addLine() {
|
||||
echo "$1:$2" >> "$file"
|
||||
}
|
||||
addFile() {
|
||||
if [ $(wc -l <"$2") -gt 1 ]; then
|
||||
echo "invalid mosquitto password file $2" >&2
|
||||
return 1
|
||||
fi
|
||||
echo "$1:$(cat "$2")" >> "$file"
|
||||
}
|
||||
''
|
||||
+ concatStringsSep "\n"
|
||||
(plainLines
|
||||
++ optional (plainLines != []) ''
|
||||
${pkgs.mosquitto}/bin/mosquitto_passwd -U "$file"
|
||||
''
|
||||
++ hashedLines));
|
||||
|
||||
makeACLFile = idx: users: supplement:
|
||||
pkgs.writeText "mosquitto-acl-${toString idx}.conf"
|
||||
(concatStringsSep
|
||||
"\n"
|
||||
(flatten [
|
||||
supplement
|
||||
(mapAttrsToList
|
||||
(n: u: [ "user ${n}" ] ++ map (t: "topic ${t}") u.acl)
|
||||
users)
|
||||
]));
|
||||
|
||||
authPluginOptions = with types; submodule {
|
||||
options = {
|
||||
plugin = mkOption {
|
||||
type = path;
|
||||
description = ''
|
||||
Plugin path to load, should be a <literal>.so</literal> file.
|
||||
'';
|
||||
};
|
||||
|
||||
denySpecialChars = mkOption {
|
||||
type = bool;
|
||||
description = ''
|
||||
Automatically disallow all clients using <literal>#</literal>
|
||||
or <literal>+</literal> in their name/id.
|
||||
'';
|
||||
default = true;
|
||||
};
|
||||
|
||||
options = mkOption {
|
||||
type = attrsOf optionType;
|
||||
description = ''
|
||||
Options for the auth plugin. Each key turns into a <literal>auth_opt_*</literal>
|
||||
line in the config.
|
||||
'';
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
authAsserts = prefix: auth:
|
||||
mapAttrsToList
|
||||
(n: _: {
|
||||
assertion = configKey.check n;
|
||||
message = "Invalid auth plugin key ${prefix}.${n}";
|
||||
})
|
||||
auth;
|
||||
|
||||
formatAuthPlugin = plugin:
|
||||
[
|
||||
"auth_plugin ${plugin.plugin}"
|
||||
"auth_plugin_deny_special_chars ${optionToString plugin.denySpecialChars}"
|
||||
]
|
||||
++ formatFreeform { prefix = "auth_opt_"; } plugin.options;
|
||||
|
||||
freeformListenerKeys = {
|
||||
allow_anonymous = 1;
|
||||
allow_zero_length_clientid = 1;
|
||||
auto_id_prefix = 1;
|
||||
cafile = 1;
|
||||
capath = 1;
|
||||
certfile = 1;
|
||||
ciphers = 1;
|
||||
"ciphers_tls1.3" = 1;
|
||||
crlfile = 1;
|
||||
dhparamfile = 1;
|
||||
http_dir = 1;
|
||||
keyfile = 1;
|
||||
max_connections = 1;
|
||||
max_qos = 1;
|
||||
max_topic_alias = 1;
|
||||
mount_point = 1;
|
||||
protocol = 1;
|
||||
psk_file = 1;
|
||||
psk_hint = 1;
|
||||
require_certificate = 1;
|
||||
socket_domain = 1;
|
||||
tls_engine = 1;
|
||||
tls_engine_kpass_sha1 = 1;
|
||||
tls_keyform = 1;
|
||||
tls_version = 1;
|
||||
use_identity_as_username = 1;
|
||||
use_subject_as_username = 1;
|
||||
use_username_as_clientid = 1;
|
||||
};
|
||||
|
||||
listenerOptions = with types; submodule {
|
||||
options = {
|
||||
port = mkOption {
|
||||
type = port;
|
||||
description = ''
|
||||
Port to listen on. Must be set to 0 to listen on a unix domain socket.
|
||||
'';
|
||||
default = 1883;
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
type = nullOr str;
|
||||
description = ''
|
||||
Address to listen on. Listen on <literal>0.0.0.0</literal>/<literal>::</literal>
|
||||
when unset.
|
||||
'';
|
||||
default = null;
|
||||
};
|
||||
|
||||
authPlugins = mkOption {
|
||||
type = listOf authPluginOptions;
|
||||
description = ''
|
||||
Authentication plugin to attach to this listener.
|
||||
Refer to the <link xlink:href="https://mosquitto.org/man/mosquitto-conf-5.html">
|
||||
mosquitto.conf documentation</link> for details on authentication plugins.
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
users = mkOption {
|
||||
type = attrsOf userOptions;
|
||||
example = { john = { password = "123456"; acl = [ "topic readwrite john/#" ]; }; };
|
||||
description = ''
|
||||
A set of users and their passwords and ACLs.
|
||||
'';
|
||||
default = {};
|
||||
};
|
||||
|
||||
acl = mkOption {
|
||||
type = listOf str;
|
||||
description = ''
|
||||
Additional ACL items to prepend to the generated ACL file.
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = submodule {
|
||||
freeformType = attrsOf optionType;
|
||||
};
|
||||
description = ''
|
||||
Additional settings for this listener.
|
||||
'';
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
listenerAsserts = prefix: listener:
|
||||
assertKeysValid prefix freeformListenerKeys listener.settings
|
||||
++ userAsserts prefix listener.users
|
||||
++ imap0
|
||||
(i: v: authAsserts "${prefix}.authPlugins.${toString i}" v)
|
||||
listener.authPlugins;
|
||||
|
||||
formatListener = idx: listener:
|
||||
[
|
||||
"listener ${toString listener.port} ${toString listener.address}"
|
||||
"password_file ${cfg.dataDir}/passwd-${toString idx}"
|
||||
"acl_file ${makeACLFile idx listener.users listener.acl}"
|
||||
]
|
||||
++ formatFreeform {} listener.settings
|
||||
++ concatMap formatAuthPlugin listener.authPlugins;
|
||||
|
||||
freeformBridgeKeys = {
|
||||
bridge_alpn = 1;
|
||||
bridge_attempt_unsubscribe = 1;
|
||||
bridge_bind_address = 1;
|
||||
bridge_cafile = 1;
|
||||
bridge_capath = 1;
|
||||
bridge_certfile = 1;
|
||||
bridge_identity = 1;
|
||||
bridge_insecure = 1;
|
||||
bridge_keyfile = 1;
|
||||
bridge_max_packet_size = 1;
|
||||
bridge_outgoing_retain = 1;
|
||||
bridge_protocol_version = 1;
|
||||
bridge_psk = 1;
|
||||
bridge_require_ocsp = 1;
|
||||
bridge_tls_version = 1;
|
||||
cleansession = 1;
|
||||
idle_timeout = 1;
|
||||
keepalive_interval = 1;
|
||||
local_cleansession = 1;
|
||||
local_clientid = 1;
|
||||
local_password = 1;
|
||||
local_username = 1;
|
||||
notification_topic = 1;
|
||||
notifications = 1;
|
||||
notifications_local_only = 1;
|
||||
remote_clientid = 1;
|
||||
remote_password = 1;
|
||||
remote_username = 1;
|
||||
restart_timeout = 1;
|
||||
round_robin = 1;
|
||||
start_type = 1;
|
||||
threshold = 1;
|
||||
try_private = 1;
|
||||
};
|
||||
|
||||
bridgeOptions = with types; submodule {
|
||||
options = {
|
||||
addresses = mkOption {
|
||||
type = listOf (submodule {
|
||||
options = {
|
||||
address = mkOption {
|
||||
type = str;
|
||||
description = ''
|
||||
Address of the remote MQTT broker.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = port;
|
||||
description = ''
|
||||
Port of the remote MQTT broker.
|
||||
'';
|
||||
default = 1883;
|
||||
};
|
||||
};
|
||||
});
|
||||
default = [];
|
||||
description = ''
|
||||
Remote endpoints for the bridge.
|
||||
'';
|
||||
};
|
||||
|
||||
topics = mkOption {
|
||||
type = listOf str;
|
||||
description = ''
|
||||
Topic patterns to be shared between the two brokers.
|
||||
Refer to the <link xlink:href="https://mosquitto.org/man/mosquitto-conf-5.html">
|
||||
mosquitto.conf documentation</link> for details on the format.
|
||||
'';
|
||||
default = [];
|
||||
example = [ "# both 2 local/topic/ remote/topic/" ];
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = submodule {
|
||||
freeformType = attrsOf optionType;
|
||||
};
|
||||
description = ''
|
||||
Additional settings for this bridge.
|
||||
'';
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
bridgeAsserts = prefix: bridge:
|
||||
assertKeysValid prefix freeformBridgeKeys bridge.settings
|
||||
++ [ {
|
||||
assertion = length bridge.addresses > 0;
|
||||
message = "Bridge ${prefix} needs remote broker addresses";
|
||||
} ];
|
||||
|
||||
formatBridge = name: bridge:
|
||||
[
|
||||
"connection ${name}"
|
||||
"addresses ${concatMapStringsSep " " (a: "${a.address}:${toString a.port}") bridge.addresses}"
|
||||
]
|
||||
++ map (t: "topic ${t}") bridge.topics
|
||||
++ formatFreeform {} bridge.settings;
|
||||
|
||||
freeformGlobalKeys = {
|
||||
allow_duplicate_messages = 1;
|
||||
autosave_interval = 1;
|
||||
autosave_on_changes = 1;
|
||||
check_retain_source = 1;
|
||||
connection_messages = 1;
|
||||
log_facility = 1;
|
||||
log_timestamp = 1;
|
||||
log_timestamp_format = 1;
|
||||
max_inflight_bytes = 1;
|
||||
max_inflight_messages = 1;
|
||||
max_keepalive = 1;
|
||||
max_packet_size = 1;
|
||||
max_queued_bytes = 1;
|
||||
max_queued_messages = 1;
|
||||
memory_limit = 1;
|
||||
message_size_limit = 1;
|
||||
persistence_file = 1;
|
||||
persistence_location = 1;
|
||||
persistent_client_expiration = 1;
|
||||
pid_file = 1;
|
||||
queue_qos0_messages = 1;
|
||||
retain_available = 1;
|
||||
set_tcp_nodelay = 1;
|
||||
sys_interval = 1;
|
||||
upgrade_outgoing_qos = 1;
|
||||
websockets_headers_size = 1;
|
||||
websockets_log_level = 1;
|
||||
};
|
||||
|
||||
globalOptions = with types; {
|
||||
enable = mkEnableOption "the MQTT Mosquitto broker";
|
||||
|
||||
bridges = mkOption {
|
||||
type = attrsOf bridgeOptions;
|
||||
default = {};
|
||||
description = ''
|
||||
Bridges to build to other MQTT brokers.
|
||||
'';
|
||||
};
|
||||
|
||||
listeners = mkOption {
|
||||
type = listOf listenerOptions;
|
||||
default = {};
|
||||
description = ''
|
||||
Listeners to configure on this broker.
|
||||
'';
|
||||
};
|
||||
|
||||
includeDirs = mkOption {
|
||||
type = listOf path;
|
||||
description = ''
|
||||
Directories to be scanned for further config files to include.
|
||||
Directories will processed in the order given,
|
||||
<literal>*.conf</literal> files in the directory will be
|
||||
read in case-sensistive alphabetical order.
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
logDest = mkOption {
|
||||
type = listOf (either path (enum [ "stdout" "stderr" "syslog" "topic" "dlt" ]));
|
||||
description = ''
|
||||
Destinations to send log messages to.
|
||||
'';
|
||||
default = [ "stderr" ];
|
||||
};
|
||||
|
||||
logType = mkOption {
|
||||
type = listOf (enum [ "debug" "error" "warning" "notice" "information"
|
||||
"subscribe" "unsubscribe" "websockets" "none" "all" ]);
|
||||
description = ''
|
||||
Types of messages to log.
|
||||
'';
|
||||
default = [];
|
||||
};
|
||||
|
||||
persistence = mkOption {
|
||||
type = bool;
|
||||
description = ''
|
||||
Enable persistent storage of subscriptions and messages.
|
||||
'';
|
||||
default = true;
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
default = "/var/lib/mosquitto";
|
||||
type = types.path;
|
||||
description = ''
|
||||
The data directory.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = submodule {
|
||||
freeformType = attrsOf optionType;
|
||||
};
|
||||
description = ''
|
||||
Global configuration options for the mosquitto broker.
|
||||
'';
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
|
||||
globalAsserts = prefix: cfg:
|
||||
flatten [
|
||||
(assertKeysValid prefix freeformGlobalKeys cfg.settings)
|
||||
(imap0 (n: l: listenerAsserts "${prefix}.listener.${toString n}" l) cfg.listeners)
|
||||
(mapAttrsToList (n: b: bridgeAsserts "${prefix}.bridge.${n}" b) cfg.bridges)
|
||||
];
|
||||
|
||||
formatGlobal = cfg:
|
||||
[
|
||||
"per_listener_settings true"
|
||||
"persistence ${optionToString cfg.persistence}"
|
||||
]
|
||||
++ map
|
||||
(d: if path.check d then "log_dest file ${d}" else "log_dest ${d}")
|
||||
cfg.logDest
|
||||
++ map (t: "log_type ${t}") cfg.logType
|
||||
++ formatFreeform {} cfg.settings
|
||||
++ concatLists (imap0 formatListener cfg.listeners)
|
||||
++ concatLists (mapAttrsToList formatBridge cfg.bridges)
|
||||
++ map (d: "include_dir ${d}") cfg.includeDirs;
|
||||
|
||||
configFile = pkgs.writeText "mosquitto.conf"
|
||||
(concatStringsSep "\n" (formatGlobal cfg));
|
||||
|
||||
in
|
||||
|
||||
@@ -41,179 +535,13 @@ in
|
||||
|
||||
###### Interface
|
||||
|
||||
options = {
|
||||
services.mosquitto = {
|
||||
enable = mkEnableOption "the MQTT Mosquitto broker";
|
||||
|
||||
host = mkOption {
|
||||
default = "127.0.0.1";
|
||||
example = "0.0.0.0";
|
||||
type = types.str;
|
||||
description = ''
|
||||
Host to listen on without SSL.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
default = 1883;
|
||||
type = types.int;
|
||||
description = ''
|
||||
Port on which to listen without SSL.
|
||||
'';
|
||||
};
|
||||
|
||||
ssl = {
|
||||
enable = mkEnableOption "SSL listener";
|
||||
|
||||
cafile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "Path to PEM encoded CA certificates.";
|
||||
};
|
||||
|
||||
certfile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "Path to PEM encoded server certificate.";
|
||||
};
|
||||
|
||||
keyfile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "Path to PEM encoded server key.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
default = "0.0.0.0";
|
||||
example = "localhost";
|
||||
type = types.str;
|
||||
description = ''
|
||||
Host to listen on with SSL.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
default = 8883;
|
||||
type = types.int;
|
||||
description = ''
|
||||
Port on which to listen with SSL.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
default = "/var/lib/mosquitto";
|
||||
type = types.path;
|
||||
description = ''
|
||||
The data directory.
|
||||
'';
|
||||
};
|
||||
|
||||
users = mkOption {
|
||||
type = types.attrsOf (types.submodule {
|
||||
options = {
|
||||
password = mkOption {
|
||||
type = with types; uniq (nullOr str);
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the (clear text) password for the MQTT User.
|
||||
'';
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = with types; uniq (nullOr str);
|
||||
example = "/path/to/file";
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the path to a file containing the
|
||||
clear text password for the MQTT user.
|
||||
'';
|
||||
};
|
||||
|
||||
hashedPassword = mkOption {
|
||||
type = with types; uniq (nullOr str);
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the hashed password for the MQTT User.
|
||||
To generate hashed password install <literal>mosquitto</literal>
|
||||
package and use <literal>mosquitto_passwd</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
hashedPasswordFile = mkOption {
|
||||
type = with types; uniq (nullOr str);
|
||||
example = "/path/to/file";
|
||||
default = null;
|
||||
description = ''
|
||||
Specifies the path to a file containing the
|
||||
hashed password for the MQTT user.
|
||||
To generate hashed password install <literal>mosquitto</literal>
|
||||
package and use <literal>mosquitto_passwd</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
acl = mkOption {
|
||||
type = types.listOf types.str;
|
||||
example = [ "topic read A/B" "topic A/#" ];
|
||||
description = ''
|
||||
Control client access to topics on the broker.
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
example = { john = { password = "123456"; acl = [ "topic readwrite john/#" ]; }; };
|
||||
description = ''
|
||||
A set of users and their passwords and ACLs.
|
||||
'';
|
||||
};
|
||||
|
||||
allowAnonymous = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Allow clients to connect without authentication.
|
||||
'';
|
||||
};
|
||||
|
||||
checkPasswords = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Refuse connection when clients provide incorrect passwords.
|
||||
'';
|
||||
};
|
||||
|
||||
extraConf = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra config to append to `mosquitto.conf` file.
|
||||
'';
|
||||
};
|
||||
|
||||
aclExtraConf = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra config to prepend to the ACL file.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
options.services.mosquitto = globalOptions;
|
||||
|
||||
###### Implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions = mapAttrsToList (name: cfg: {
|
||||
assertion = length (filter (s: s != null) (with cfg; [
|
||||
password passwordFile hashedPassword hashedPasswordFile
|
||||
])) <= 1;
|
||||
message = "Cannot set more than one password option";
|
||||
}) cfg.users;
|
||||
assertions = globalAsserts "services.mosquitto" cfg;
|
||||
|
||||
systemd.services.mosquitto = {
|
||||
description = "Mosquitto MQTT Broker Daemon";
|
||||
@@ -227,7 +555,7 @@ in
|
||||
RuntimeDirectory = "mosquitto";
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
Restart = "on-failure";
|
||||
ExecStart = "${pkgs.mosquitto}/bin/mosquitto -c ${mosquittoConf}";
|
||||
ExecStart = "${pkgs.mosquitto}/bin/mosquitto -c ${configFile}";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
|
||||
# Hardening
|
||||
@@ -252,12 +580,34 @@ in
|
||||
ReadWritePaths = [
|
||||
cfg.dataDir
|
||||
"/tmp" # mosquitto_passwd creates files in /tmp before moving them
|
||||
];
|
||||
ReadOnlyPaths = with cfg.ssl; lib.optionals (enable) [
|
||||
certfile
|
||||
keyfile
|
||||
cafile
|
||||
];
|
||||
] ++ filter path.check cfg.logDest;
|
||||
ReadOnlyPaths =
|
||||
map (p: "${p}")
|
||||
(cfg.includeDirs
|
||||
++ filter
|
||||
(v: v != null)
|
||||
(flatten [
|
||||
(map
|
||||
(l: [
|
||||
(l.settings.psk_file or null)
|
||||
(l.settings.http_dir or null)
|
||||
(l.settings.cafile or null)
|
||||
(l.settings.capath or null)
|
||||
(l.settings.certfile or null)
|
||||
(l.settings.crlfile or null)
|
||||
(l.settings.dhparamfile or null)
|
||||
(l.settings.keyfile or null)
|
||||
])
|
||||
cfg.listeners)
|
||||
(mapAttrsToList
|
||||
(_: b: [
|
||||
(b.settings.bridge_cafile or null)
|
||||
(b.settings.bridge_capath or null)
|
||||
(b.settings.bridge_certfile or null)
|
||||
(b.settings.bridge_keyfile or null)
|
||||
])
|
||||
cfg.bridges)
|
||||
]));
|
||||
RemoveIPC = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_UNIX" # for sd_notify() call
|
||||
@@ -275,20 +625,12 @@ in
|
||||
];
|
||||
UMask = "0077";
|
||||
};
|
||||
preStart = ''
|
||||
rm -f ${cfg.dataDir}/passwd
|
||||
touch ${cfg.dataDir}/passwd
|
||||
'' + concatStringsSep "\n" (
|
||||
mapAttrsToList (n: c:
|
||||
if c.hashedPasswordFile != null then
|
||||
"echo '${n}:'$(cat '${c.hashedPasswordFile}') >> ${cfg.dataDir}/passwd"
|
||||
else if c.passwordFile != null then
|
||||
"${pkgs.mosquitto}/bin/mosquitto_passwd -b ${cfg.dataDir}/passwd ${n} $(cat '${c.passwordFile}')"
|
||||
else if c.hashedPassword != null then
|
||||
"echo '${n}:${c.hashedPassword}' >> ${cfg.dataDir}/passwd"
|
||||
else optionalString (c.password != null)
|
||||
"${pkgs.mosquitto}/bin/mosquitto_passwd -b ${cfg.dataDir}/passwd ${n} '${c.password}'"
|
||||
) cfg.users);
|
||||
preStart =
|
||||
concatStringsSep
|
||||
"\n"
|
||||
(imap0
|
||||
(idx: listener: makePasswordFile listener.users "${cfg.dataDir}/passwd-${toString idx}")
|
||||
cfg.listeners);
|
||||
};
|
||||
|
||||
users.users.mosquitto = {
|
||||
@@ -302,4 +644,6 @@ in
|
||||
users.groups.mosquitto.gid = config.ids.gids.mosquitto;
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ pennae ];
|
||||
}
|
||||
|
||||
@@ -221,6 +221,7 @@ in
|
||||
programs.evince.enable = mkDefault true;
|
||||
programs.evince.package = pkgs.pantheon.evince;
|
||||
programs.file-roller.enable = mkDefault true;
|
||||
programs.file-roller.package = pkgs.pantheon.file-roller;
|
||||
|
||||
# Settings from elementary-default-settings
|
||||
environment.sessionVariables.GTK_CSD = "1";
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
xcfg = config.services.xserver;
|
||||
cfg = xcfg.desktopManager.plasma5;
|
||||
|
||||
libsForQt5 = pkgs.plasma5Packages;
|
||||
inherit (libsForQt5) kdeGear kdeFrameworks plasma5;
|
||||
inherit (pkgs) writeText;
|
||||
inherit (lib)
|
||||
getBin optionalString
|
||||
mkRemovedOptionModule mkRenamedOptionModule
|
||||
mkDefault mkIf mkMerge mkOption types;
|
||||
|
||||
ini = pkgs.formats.ini { };
|
||||
|
||||
pulseaudio = config.hardware.pulseaudio;
|
||||
pactl = "${getBin pulseaudio.package}/bin/pactl";
|
||||
@@ -33,23 +36,25 @@ let
|
||||
gtk-button-images=1
|
||||
'';
|
||||
|
||||
gtk3_settings = writeText "settings.ini" ''
|
||||
[Settings]
|
||||
gtk-font-name=Sans Serif Regular 10
|
||||
gtk-theme-name=Breeze
|
||||
gtk-icon-theme-name=breeze
|
||||
gtk-fallback-icon-theme=hicolor
|
||||
gtk-cursor-theme-name=breeze_cursors
|
||||
gtk-toolbar-style=GTK_TOOLBAR_ICONS
|
||||
gtk-menu-images=1
|
||||
gtk-button-images=1
|
||||
'';
|
||||
gtk3_settings = ini.generate "settings.ini" {
|
||||
Settings = {
|
||||
gtk-font-name = "Sans Serif Regular 10";
|
||||
gtk-theme-name = "Breeze";
|
||||
gtk-icon-theme-name = "breeze";
|
||||
gtk-fallback-icon-theme = "hicolor";
|
||||
gtk-cursor-theme-name = "breeze_cursors";
|
||||
gtk-toolbar-style = "GTK_TOOLBAR_ICONS";
|
||||
gtk-menu-images = 1;
|
||||
gtk-button-images = 1;
|
||||
};
|
||||
};
|
||||
|
||||
kcminputrc = writeText "kcminputrc" ''
|
||||
[Mouse]
|
||||
cursorTheme=breeze_cursors
|
||||
cursorSize=0
|
||||
'';
|
||||
kcminputrc = ini.generate "kcminputrc" {
|
||||
Mouse = {
|
||||
cursorTheme = "breeze_cursors";
|
||||
cursorSize = 0;
|
||||
};
|
||||
};
|
||||
|
||||
activationScript = ''
|
||||
${set_XDG_CONFIG_HOME}
|
||||
@@ -87,13 +92,13 @@ let
|
||||
'';
|
||||
|
||||
set_XDG_CONFIG_HOME = ''
|
||||
# Set the default XDG_CONFIG_HOME if it is unset.
|
||||
# Per the XDG Base Directory Specification:
|
||||
# https://specifications.freedesktop.org/basedir-spec/latest
|
||||
# 1. Never export this variable! If it is unset, then child processes are
|
||||
# expected to set the default themselves.
|
||||
# 2. Contaminate / if $HOME is unset; do not check if $HOME is set.
|
||||
XDG_CONFIG_HOME=''${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
# Set the default XDG_CONFIG_HOME if it is unset.
|
||||
# Per the XDG Base Directory Specification:
|
||||
# https://specifications.freedesktop.org/basedir-spec/latest
|
||||
# 1. Never export this variable! If it is unset, then child processes are
|
||||
# expected to set the default themselves.
|
||||
# 2. Contaminate / if $HOME is unset; do not check if $HOME is set.
|
||||
XDG_CONFIG_HOME=''${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
'';
|
||||
|
||||
startplasma =
|
||||
@@ -116,20 +121,17 @@ let
|
||||
if ! [ -f "$kdeglobals" ]
|
||||
then
|
||||
kcminputrc="''${XDG_CONFIG_HOME}/kcminputrc"
|
||||
if ! [ -f "$kcminputrc" ]
|
||||
then
|
||||
if ! [ -f "$kcminputrc" ]; then
|
||||
cat ${kcminputrc} >"$kcminputrc"
|
||||
fi
|
||||
|
||||
gtkrc2="$HOME/.gtkrc-2.0"
|
||||
if ! [ -f "$gtkrc2" ]
|
||||
then
|
||||
if ! [ -f "$gtkrc2" ]; then
|
||||
cat ${gtkrc2} >"$gtkrc2"
|
||||
fi
|
||||
|
||||
gtk3_settings="''${XDG_CONFIG_HOME}/gtk-3.0/settings.ini"
|
||||
if ! [ -f "$gtk3_settings" ]
|
||||
then
|
||||
if ! [ -f "$gtk3_settings" ]; then
|
||||
mkdir -p "$(dirname "$gtk3_settings")"
|
||||
cat ${gtk3_settings} >"$gtk3_settings"
|
||||
fi
|
||||
@@ -140,42 +142,44 @@ let
|
||||
in
|
||||
|
||||
{
|
||||
options = {
|
||||
|
||||
services.xserver.desktopManager.plasma5 = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
|
||||
};
|
||||
|
||||
phononBackend = mkOption {
|
||||
type = types.enum [ "gstreamer" "vlc" ];
|
||||
default = "gstreamer";
|
||||
example = "vlc";
|
||||
description = "Phonon audio backend to install.";
|
||||
};
|
||||
|
||||
supportDDC = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Support setting monitor brightness via DDC.
|
||||
</para>
|
||||
<para>
|
||||
This is not needed for controlling brightness of the internal monitor
|
||||
of a laptop and as it is considered experimental by upstream, it is
|
||||
disabled by default.
|
||||
'';
|
||||
};
|
||||
|
||||
useQtScaling = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable HiDPI scaling in Qt.";
|
||||
};
|
||||
options.services.xserver.desktopManager.plasma5 = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
|
||||
};
|
||||
|
||||
phononBackend = mkOption {
|
||||
type = types.enum [ "gstreamer" "vlc" ];
|
||||
default = "gstreamer";
|
||||
example = "vlc";
|
||||
description = "Phonon audio backend to install.";
|
||||
};
|
||||
|
||||
supportDDC = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Support setting monitor brightness via DDC.
|
||||
</para>
|
||||
<para>
|
||||
This is not needed for controlling brightness of the internal monitor
|
||||
of a laptop and as it is considered experimental by upstream, it is
|
||||
disabled by default.
|
||||
'';
|
||||
};
|
||||
|
||||
useQtScaling = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable HiDPI scaling in Qt.";
|
||||
};
|
||||
|
||||
runUsingSystemd = mkOption {
|
||||
description = "Use systemd to manage the Plasma session";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
@@ -187,32 +191,37 @@ in
|
||||
(mkIf cfg.enable {
|
||||
|
||||
# Seed our configuration into nixos-generate-config
|
||||
system.nixos-generate-config.desktopConfiguration = [''
|
||||
# Enable the Plasma 5 Desktop Environment.
|
||||
services.xserver.displayManager.sddm.enable = true;
|
||||
services.xserver.desktopManager.plasma5.enable = true;
|
||||
''];
|
||||
system.nixos-generate-config.desktopConfiguration = [
|
||||
''
|
||||
# Enable the Plasma 5 Desktop Environment.
|
||||
services.xserver.displayManager.sddm.enable = true;
|
||||
services.xserver.desktopManager.plasma5.enable = true;
|
||||
''
|
||||
];
|
||||
|
||||
services.xserver.displayManager.sessionPackages = [ pkgs.libsForQt5.plasma5.plasma-workspace ];
|
||||
|
||||
security.wrappers = {
|
||||
kcheckpass =
|
||||
{ setuid = true;
|
||||
{
|
||||
setuid = true;
|
||||
owner = "root";
|
||||
group = "root";
|
||||
source = "${lib.getBin libsForQt5.kscreenlocker}/libexec/kcheckpass";
|
||||
source = "${getBin libsForQt5.kscreenlocker}/libexec/kcheckpass";
|
||||
};
|
||||
start_kdeinit =
|
||||
{ setuid = true;
|
||||
{
|
||||
setuid = true;
|
||||
owner = "root";
|
||||
group = "root";
|
||||
source = "${lib.getBin libsForQt5.kinit}/libexec/kf5/start_kdeinit";
|
||||
source = "${getBin libsForQt5.kinit}/libexec/kf5/start_kdeinit";
|
||||
};
|
||||
kwin_wayland =
|
||||
{ owner = "root";
|
||||
{
|
||||
owner = "root";
|
||||
group = "root";
|
||||
capabilities = "cap_sys_nice+ep";
|
||||
source = "${lib.getBin plasma5.kwin}/bin/kwin_wayland";
|
||||
source = "${getBin plasma5.kwin}/bin/kwin_wayland";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -247,7 +256,7 @@ in
|
||||
kidletime
|
||||
kimageformats
|
||||
kinit
|
||||
kirigami2 # In system profile for SDDM theme. TODO: wrapper.
|
||||
kirigami2 # In system profile for SDDM theme. TODO: wrapper.
|
||||
kio
|
||||
kjobwidgets
|
||||
knewstuff
|
||||
@@ -314,7 +323,8 @@ in
|
||||
breeze-icons
|
||||
pkgs.hicolor-icon-theme
|
||||
|
||||
kde-gtk-config breeze-gtk
|
||||
kde-gtk-config
|
||||
breeze-gtk
|
||||
|
||||
qtvirtualkeyboard
|
||||
|
||||
@@ -336,6 +346,7 @@ in
|
||||
++ lib.optional config.services.pipewire.pulse.enable plasma-pa
|
||||
++ lib.optional config.powerManagement.enable powerdevil
|
||||
++ lib.optional config.services.colord.enable pkgs.colord-kde
|
||||
++ lib.optional config.services.hardware.bolt.enable pkgs.plasma-thunderbolt
|
||||
++ lib.optionals config.services.samba.enable [ kdenetwork-filesharing pkgs.samba ]
|
||||
++ lib.optional config.services.xserver.wacom.enable pkgs.wacomtablet;
|
||||
|
||||
@@ -385,6 +396,27 @@ in
|
||||
security.pam.services.lightdm.enableKwallet = true;
|
||||
security.pam.services.sddm.enableKwallet = true;
|
||||
|
||||
systemd.user.services = {
|
||||
plasma-early-setup = mkIf cfg.runUsingSystemd {
|
||||
description = "Early Plasma setup";
|
||||
wantedBy = [ "graphical-session-pre.target" ];
|
||||
serviceConfig.Type = "oneshot";
|
||||
script = activationScript;
|
||||
};
|
||||
|
||||
plasma-run-with-systemd = {
|
||||
description = "Run KDE Plasma via systemd";
|
||||
wantedBy = [ "basic.target" ];
|
||||
serviceConfig.Type = "oneshot";
|
||||
script = ''
|
||||
${set_XDG_CONFIG_HOME}
|
||||
|
||||
${kdeFrameworks.kconfig}/bin/kwriteconfig5 \
|
||||
--file startkderc --group General --key systemdBoot ${lib.boolToString cfg.runUsingSystemd}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal.enable = true;
|
||||
xdg.portal.extraPortals = [ plasma5.xdg-desktop-portal-kde ];
|
||||
|
||||
|
||||
@@ -81,6 +81,24 @@ in {
|
||||
environment.BORG_RSH = "ssh -oStrictHostKeyChecking=no -i /root/id_ed25519.appendOnly";
|
||||
};
|
||||
|
||||
commandSuccess = {
|
||||
dumpCommand = pkgs.writeScript "commandSuccess" ''
|
||||
echo -n test
|
||||
'';
|
||||
repo = remoteRepo;
|
||||
encryption.mode = "none";
|
||||
startAt = [ ];
|
||||
environment.BORG_RSH = "ssh -oStrictHostKeyChecking=no -i /root/id_ed25519";
|
||||
};
|
||||
|
||||
commandFail = {
|
||||
dumpCommand = "${pkgs.coreutils}/bin/false";
|
||||
repo = remoteRepo;
|
||||
encryption.mode = "none";
|
||||
startAt = [ ];
|
||||
environment.BORG_RSH = "ssh -oStrictHostKeyChecking=no -i /root/id_ed25519";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
@@ -171,5 +189,20 @@ in {
|
||||
client.fail("{} list borg\@server:wrong".format(borg))
|
||||
|
||||
# TODO: Make sure that data is not actually deleted
|
||||
|
||||
with subtest("commandSuccess"):
|
||||
server.wait_for_unit("sshd.service")
|
||||
client.wait_for_unit("network.target")
|
||||
client.systemctl("start --wait borgbackup-job-commandSuccess")
|
||||
client.fail("systemctl is-failed borgbackup-job-commandSuccess")
|
||||
id = client.succeed("borg-job-commandSuccess list | tail -n1 | cut -d' ' -f1").strip()
|
||||
client.succeed(f"borg-job-commandSuccess extract ::{id} stdin")
|
||||
assert "test" == client.succeed("cat stdin")
|
||||
|
||||
with subtest("commandFail"):
|
||||
server.wait_for_unit("sshd.service")
|
||||
client.wait_for_unit("network.target")
|
||||
client.systemctl("start --wait borgbackup-job-commandFail")
|
||||
client.succeed("systemctl is-failed borgbackup-job-commandFail")
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -12,13 +12,14 @@ in {
|
||||
environment.systemPackages = with pkgs; [ mosquitto ];
|
||||
services.mosquitto = {
|
||||
enable = true;
|
||||
checkPasswords = true;
|
||||
users = {
|
||||
"${mqttUsername}" = {
|
||||
acl = [ "topic readwrite #" ];
|
||||
password = mqttPassword;
|
||||
listeners = [ {
|
||||
users = {
|
||||
"${mqttUsername}" = {
|
||||
acl = [ "readwrite #" ];
|
||||
password = mqttPassword;
|
||||
};
|
||||
};
|
||||
};
|
||||
} ];
|
||||
};
|
||||
services.home-assistant = {
|
||||
inherit configDir;
|
||||
|
||||
+145
-45
@@ -2,13 +2,59 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
port = 1888;
|
||||
username = "mqtt";
|
||||
tlsPort = 1889;
|
||||
password = "VERY_secret";
|
||||
hashedPassword = "$7$101$/WJc4Mp+I+uYE9sR$o7z9rD1EYXHPwEP5GqQj6A7k4W1yVbePlb8TqNcuOLV9WNCiDgwHOB0JHC1WCtdkssqTBduBNUnUGd6kmZvDSw==";
|
||||
topic = "test/foo";
|
||||
|
||||
snakeOil = pkgs.runCommand "snakeoil-certs" {
|
||||
buildInputs = [ pkgs.gnutls.bin ];
|
||||
caTemplate = pkgs.writeText "snakeoil-ca.template" ''
|
||||
cn = server
|
||||
expiration_days = -1
|
||||
cert_signing_key
|
||||
ca
|
||||
'';
|
||||
certTemplate = pkgs.writeText "snakeoil-cert.template" ''
|
||||
cn = server
|
||||
expiration_days = -1
|
||||
tls_www_server
|
||||
encryption_key
|
||||
signing_key
|
||||
'';
|
||||
userCertTemplate = pkgs.writeText "snakeoil-user-cert.template" ''
|
||||
organization = snakeoil
|
||||
cn = client1
|
||||
expiration_days = -1
|
||||
tls_www_client
|
||||
encryption_key
|
||||
signing_key
|
||||
'';
|
||||
} ''
|
||||
mkdir "$out"
|
||||
|
||||
certtool -p --bits 2048 --outfile "$out/ca.key"
|
||||
certtool -s --template "$caTemplate" --load-privkey "$out/ca.key" \
|
||||
--outfile "$out/ca.crt"
|
||||
certtool -p --bits 2048 --outfile "$out/server.key"
|
||||
certtool -c --template "$certTemplate" \
|
||||
--load-ca-privkey "$out/ca.key" \
|
||||
--load-ca-certificate "$out/ca.crt" \
|
||||
--load-privkey "$out/server.key" \
|
||||
--outfile "$out/server.crt"
|
||||
|
||||
certtool -p --bits 2048 --outfile "$out/client1.key"
|
||||
certtool -c --template "$userCertTemplate" \
|
||||
--load-privkey "$out/client1.key" \
|
||||
--load-ca-privkey "$out/ca.key" \
|
||||
--load-ca-certificate "$out/ca.crt" \
|
||||
--outfile "$out/client1.crt"
|
||||
'';
|
||||
|
||||
in {
|
||||
name = "mosquitto";
|
||||
meta = with pkgs.lib; {
|
||||
maintainers = with maintainers; [ peterhoeg ];
|
||||
maintainers = with maintainers; [ pennae peterhoeg ];
|
||||
};
|
||||
|
||||
nodes = let
|
||||
@@ -17,77 +63,131 @@ in {
|
||||
};
|
||||
in {
|
||||
server = { pkgs, ... }: {
|
||||
networking.firewall.allowedTCPPorts = [ port ];
|
||||
networking.firewall.allowedTCPPorts = [ port tlsPort ];
|
||||
services.mosquitto = {
|
||||
inherit port;
|
||||
enable = true;
|
||||
host = "0.0.0.0";
|
||||
checkPasswords = true;
|
||||
users.${username} = {
|
||||
inherit password;
|
||||
acl = [
|
||||
"topic readwrite ${topic}"
|
||||
];
|
||||
settings = {
|
||||
sys_interval = 1;
|
||||
};
|
||||
};
|
||||
listeners = [
|
||||
{
|
||||
inherit port;
|
||||
users = {
|
||||
password_store = {
|
||||
inherit password;
|
||||
};
|
||||
password_file = {
|
||||
passwordFile = pkgs.writeText "mqtt-password" password;
|
||||
};
|
||||
hashed_store = {
|
||||
inherit hashedPassword;
|
||||
};
|
||||
hashed_file = {
|
||||
hashedPasswordFile = pkgs.writeText "mqtt-hashed-password" hashedPassword;
|
||||
};
|
||||
|
||||
# disable private /tmp for this test
|
||||
systemd.services.mosquitto.serviceConfig.PrivateTmp = lib.mkForce false;
|
||||
reader = {
|
||||
inherit password;
|
||||
acl = [
|
||||
"read ${topic}"
|
||||
"read $SYS/#" # so we always have something to read
|
||||
];
|
||||
};
|
||||
writer = {
|
||||
inherit password;
|
||||
acl = [ "write ${topic}" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
port = tlsPort;
|
||||
users.client1 = {
|
||||
acl = [ "read $SYS/#" ];
|
||||
};
|
||||
settings = {
|
||||
cafile = "${snakeOil}/ca.crt";
|
||||
certfile = "${snakeOil}/server.crt";
|
||||
keyfile = "${snakeOil}/server.key";
|
||||
require_certificate = true;
|
||||
use_identity_as_username = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
client1 = client;
|
||||
client2 = client;
|
||||
};
|
||||
|
||||
testScript = let
|
||||
file = "/tmp/msg";
|
||||
in ''
|
||||
def mosquitto_cmd(binary):
|
||||
testScript = ''
|
||||
def mosquitto_cmd(binary, user, topic, port):
|
||||
return (
|
||||
"${pkgs.mosquitto}/bin/mosquitto_{} "
|
||||
"mosquitto_{} "
|
||||
"-V mqttv311 "
|
||||
"-h server "
|
||||
"-p ${toString port} "
|
||||
"-u ${username} "
|
||||
"-p {} "
|
||||
"-u {} "
|
||||
"-P '${password}' "
|
||||
"-t ${topic}"
|
||||
).format(binary)
|
||||
"-t '{}'"
|
||||
).format(binary, port, user, topic)
|
||||
|
||||
|
||||
def publish(args):
|
||||
return "{} {}".format(mosquitto_cmd("pub"), args)
|
||||
def publish(args, user, topic="${topic}", port=${toString port}):
|
||||
return "{} {}".format(mosquitto_cmd("pub", user, topic, port), args)
|
||||
|
||||
|
||||
def subscribe(args):
|
||||
return "({} -C 1 {} | tee ${file} &)".format(mosquitto_cmd("sub"), args)
|
||||
def subscribe(args, user, topic="${topic}", port=${toString port}):
|
||||
return "{} -C 1 {}".format(mosquitto_cmd("sub", user, topic, port), args)
|
||||
|
||||
def parallel(*fns):
|
||||
from threading import Thread
|
||||
threads = [ Thread(target=fn) for fn in fns ]
|
||||
for t in threads: t.start()
|
||||
for t in threads: t.join()
|
||||
|
||||
|
||||
start_all()
|
||||
server.wait_for_unit("mosquitto.service")
|
||||
|
||||
for machine in server, client1, client2:
|
||||
machine.fail("test -f ${file}")
|
||||
def check_passwords():
|
||||
client1.succeed(publish("-m test", "password_store"))
|
||||
client1.succeed(publish("-m test", "password_file"))
|
||||
client1.succeed(publish("-m test", "hashed_store"))
|
||||
client1.succeed(publish("-m test", "hashed_file"))
|
||||
|
||||
# QoS = 0, so only one subscribers should get it
|
||||
server.execute(subscribe("-q 0"))
|
||||
check_passwords()
|
||||
|
||||
# we need to give the subscribers some time to connect
|
||||
client2.execute("sleep 5")
|
||||
client2.succeed(publish("-m FOO -q 0"))
|
||||
def check_acl():
|
||||
client1.succeed(subscribe("", "reader", topic="$SYS/#"))
|
||||
client1.fail(subscribe("-W 5", "writer", topic="$SYS/#"))
|
||||
|
||||
server.wait_until_succeeds("grep -q FOO ${file}")
|
||||
server.execute("rm ${file}")
|
||||
parallel(
|
||||
lambda: client1.succeed(subscribe("-i 3688cdd7-aa07-42a4-be22-cb9352917e40", "reader")),
|
||||
lambda: [
|
||||
server.wait_for_console_text("3688cdd7-aa07-42a4-be22-cb9352917e40"),
|
||||
client2.succeed(publish("-m test", "writer"))
|
||||
])
|
||||
|
||||
# QoS = 1, so both subscribers should get it
|
||||
server.execute(subscribe("-q 1"))
|
||||
client1.execute(subscribe("-q 1"))
|
||||
parallel(
|
||||
lambda: client1.fail(subscribe("-W 5 -i 24ff16a2-ae33-4a51-9098-1b417153c712", "reader")),
|
||||
lambda: [
|
||||
server.wait_for_console_text("24ff16a2-ae33-4a51-9098-1b417153c712"),
|
||||
client2.succeed(publish("-m test", "reader"))
|
||||
])
|
||||
|
||||
# we need to give the subscribers some time to connect
|
||||
client2.execute("sleep 5")
|
||||
client2.succeed(publish("-m BAR -q 1"))
|
||||
check_acl()
|
||||
|
||||
for machine in server, client1:
|
||||
machine.wait_until_succeeds("grep -q BAR ${file}")
|
||||
machine.execute("rm ${file}")
|
||||
def check_tls():
|
||||
client1.succeed(
|
||||
subscribe(
|
||||
"--cafile ${snakeOil}/ca.crt "
|
||||
"--cert ${snakeOil}/client1.crt "
|
||||
"--key ${snakeOil}/client1.key",
|
||||
topic="$SYS/#",
|
||||
port=${toString tlsPort},
|
||||
user="no_such_user"))
|
||||
|
||||
check_tls()
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "polkadot";
|
||||
version = "0.9.11";
|
||||
version = "0.9.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "paritytech";
|
||||
repo = "polkadot";
|
||||
rev = "v${version}";
|
||||
sha256 = "17a0g4sijc1p9fy5xh8krs3y1hc75s17ak0hfhpi231gs4fl20pd";
|
||||
sha256 = "1d1ppj8djqm97k18cbdvbgv9a5vhvxdgjiqair0bmxc44hwapl65";
|
||||
};
|
||||
|
||||
cargoSha256 = "07yzdchpzs2g1f8fzhaj11yybd2d8lv9ib859z7122anxzdr0028";
|
||||
cargoSha256 = "09kcacz836sm1zsi08mmf4ca5vbqc0lwwaam9p4vi0v4kd45axx9";
|
||||
|
||||
nativeBuildInputs = [ clang ];
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, desktop-file-utils
|
||||
, ffmpeg
|
||||
, gobject-introspection
|
||||
, granite
|
||||
, gtk
|
||||
, imagemagick
|
||||
, libgee
|
||||
, libhandy
|
||||
, libsecret
|
||||
, libsoup
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, python
|
||||
, vala
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ciano";
|
||||
version = "0.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "robertsanseries";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-nubm6vBWwsHrrmvFAL/cIzYPxg9B1EhnpC79IJMNuFY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
desktop-file-utils
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
python
|
||||
vala
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ffmpeg
|
||||
imagemagick
|
||||
granite
|
||||
gtk
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
chmod +x meson/post_install.py
|
||||
patchShebangs meson/post_install.py
|
||||
'';
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
postFixup = let
|
||||
binPath = lib.makeBinPath [
|
||||
ffmpeg
|
||||
imagemagick
|
||||
];
|
||||
in
|
||||
''
|
||||
wrapProgram $out/bin/com.github.robertsanseries.ciano \
|
||||
--prefix PATH : ${binPath} "''${gappsWrapperArgs[@]}"
|
||||
ln -s $out/bin/com.github.robertsanseries.ciano $out/bin/ciano
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/robertsanseries/ciano";
|
||||
description = "A multimedia file converter focused on simplicity";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -26,11 +26,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "blender";
|
||||
version = "2.93.2";
|
||||
version = "2.93.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.blender.org/source/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-nG1Kk6UtiCwsQBDz7VELcMRVEovS49QiO3haIpvSfu4=";
|
||||
sha256 = "1fsw8w80h8k5w4zmy659bjlzqyn5i198hi1kbpzfrdn8psxg2bfj";
|
||||
};
|
||||
|
||||
patches = lib.optional stdenv.isDarwin ./darwin.patch;
|
||||
|
||||
@@ -31,15 +31,15 @@
|
||||
}
|
||||
},
|
||||
"dev": {
|
||||
"version": "96.0.4664.18",
|
||||
"sha256": "0z7hplfl9mlbn07svcavzcb2gqn1hchwhhlpz0qykf6kd441kxpf",
|
||||
"sha256bin64": "0y09aginw5qg7apm9wvxny7y8nxhsq7gnxp1jmghfjhv5xq7pdn9",
|
||||
"version": "97.0.4676.0",
|
||||
"sha256": "1cf660h7n1d4ds63747zfc4wmwxm348grcv40zg614cpjm4q68b5",
|
||||
"sha256bin64": "116a4d47s3sx1pq8hhqybdsjxcv8657xaldrlix2z7jh94ip2nwh",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2021-09-24",
|
||||
"version": "2021-10-08",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "0153d369bbccc908f4da4993b1ba82728055926a",
|
||||
"sha256": "0y4414h8jqsbz5af6pn91c0vkfp4s281s85g992xfyl785c5zbsi"
|
||||
"rev": "693f9fb87e4febdd4299db9f73d8d2c958e63148",
|
||||
"sha256": "1qfjj2mdpflry4f9fkagvb76zwfibys4nqz9lddy1zh5nnbd9mff"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -31,12 +31,12 @@ let
|
||||
|
||||
in mkDerivationWith python3Packages.buildPythonApplication rec {
|
||||
pname = "qutebrowser";
|
||||
version = "2.3.1";
|
||||
version = "2.4.0";
|
||||
|
||||
# the release tarballs are different from the git checkout!
|
||||
src = fetchurl {
|
||||
url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
|
||||
sha256 = "05n64mw9lzzxpxr7lhakbkm9ir3x8p0rwk6vbbg01aqg5iaanyj0";
|
||||
sha256 = "8s2auxTrq/ljBXOy+4RHvhkod3h9xOOWThtV9yqFkuw=";
|
||||
};
|
||||
|
||||
# Needs tox
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "flink";
|
||||
version = "1.13.2";
|
||||
version = "1.14.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://apache/flink/${pname}-${version}/${pname}-${version}-bin-scala_2.11.tgz";
|
||||
sha256 = "sha256-GPiHV19Z2Htt75hCXK2nCeQMIBQFEEUxXlBembenFL0=";
|
||||
sha256 = "149b9ae774022acc0109dced893ca2d73430627a612be17ff12de8734464aff8";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
@@ -62,6 +62,7 @@ let
|
||||
|
||||
pkg = interpreter.pkgs.nixops.withPlugins(ps: [
|
||||
ps.nixops-encrypted-links
|
||||
ps.nixops-hercules-ci
|
||||
ps.nixops-virtd
|
||||
ps.nixops-aws
|
||||
ps.nixops-gcp
|
||||
|
||||
@@ -41,6 +41,16 @@ self: super: {
|
||||
}
|
||||
);
|
||||
|
||||
nixops-hercules-ci = super.nixops-hercules-ci.overridePythonAttrs (
|
||||
_: {
|
||||
src = pkgs.fetchgit {
|
||||
url = "https://github.com/hercules-ci/nixops-hercules-ci.git";
|
||||
rev = "e601d5baffd003fd5f22deeaea0cb96444b054dc";
|
||||
sha256 = "0rcpv5hc6l9ia8lq8ivwa80b2pwssmdz8an25lhr4i2472mpx1p0";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
nixops-virtd = super.nixops-virtd.overridePythonAttrs (
|
||||
_: {
|
||||
src = pkgs.fetchgit {
|
||||
|
||||
+82
-80
@@ -38,14 +38,14 @@ python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "boto3"
|
||||
version = "1.18.60"
|
||||
version = "1.18.64"
|
||||
description = "The AWS SDK for Python"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">= 3.6"
|
||||
|
||||
[package.dependencies]
|
||||
botocore = ">=1.21.60,<1.22.0"
|
||||
botocore = ">=1.21.64,<1.22.0"
|
||||
jmespath = ">=0.7.1,<1.0.0"
|
||||
s3transfer = ">=0.5.0,<0.6.0"
|
||||
|
||||
@@ -54,7 +54,7 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
|
||||
|
||||
[[package]]
|
||||
name = "botocore"
|
||||
version = "1.21.60"
|
||||
version = "1.21.64"
|
||||
description = "Low-level, data-driven core of boto 3."
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -66,7 +66,7 @@ python-dateutil = ">=2.1,<3.0.0"
|
||||
urllib3 = ">=1.25.4,<1.27"
|
||||
|
||||
[package.extras]
|
||||
crt = ["awscrt (==0.11.24)"]
|
||||
crt = ["awscrt (==0.12.5)"]
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
@@ -78,7 +78,7 @@ python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "cffi"
|
||||
version = "1.14.6"
|
||||
version = "1.15.0"
|
||||
description = "Foreign Function Interface for Python calling C code."
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -135,7 +135,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.2"
|
||||
version = "3.3"
|
||||
description = "Internationalized Domain Names in Applications (IDNA)"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -269,6 +269,24 @@ url = "https://github.com/nix-community/nixops-gce.git"
|
||||
reference = "master"
|
||||
resolved_reference = "712453027486e62e087b9c91e4a8a171eebb6ddd"
|
||||
|
||||
[[package]]
|
||||
name = "nixops-hercules-ci"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "^3.8"
|
||||
develop = false
|
||||
|
||||
[package.dependencies]
|
||||
nixops = {git = "https://github.com/NixOS/nixops.git", branch = "master"}
|
||||
|
||||
[package.source]
|
||||
type = "git"
|
||||
url = "https://github.com/hercules-ci/nixops-hercules-ci.git"
|
||||
reference = "master"
|
||||
resolved_reference = "e601d5baffd003fd5f22deeaea0cb96444b054dc"
|
||||
|
||||
[[package]]
|
||||
name = "nixops-virtd"
|
||||
version = "1.0"
|
||||
@@ -583,7 +601,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
|
||||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = "^3.8"
|
||||
content-hash = "bd064837654a0d4a4691b3df01338b92c95a449ff400a9cd49fee843ab13ee92"
|
||||
content-hash = "8a294b2745b271983bac54258b4f3a2ab3b2e5b218440329fa7eea482c63774f"
|
||||
|
||||
[metadata.files]
|
||||
alabaster = [
|
||||
@@ -603,63 +621,68 @@ boto = [
|
||||
{file = "boto-2.49.0.tar.gz", hash = "sha256:ea0d3b40a2d852767be77ca343b58a9e3a4b00d9db440efb8da74b4e58025e5a"},
|
||||
]
|
||||
boto3 = [
|
||||
{file = "boto3-1.18.60-py3-none-any.whl", hash = "sha256:8f3face72d2ac6ad36bd7724410548891ce338b350e6f98574890a7b1d425d78"},
|
||||
{file = "boto3-1.18.60.tar.gz", hash = "sha256:45709a04ec5fb67ce5a8eaade3eb0ab24d6eb08d9a9ca6bdb2153047896197fc"},
|
||||
{file = "boto3-1.18.64-py3-none-any.whl", hash = "sha256:b4d6299dd16a3042b7750cde00fe38d57fd59d3ce242308ba8488618ca931694"},
|
||||
{file = "boto3-1.18.64.tar.gz", hash = "sha256:9223b433b0d3b74f2b9574fb3c384048998343ccd6b608044318a7f9b904f661"},
|
||||
]
|
||||
botocore = [
|
||||
{file = "botocore-1.21.60-py3-none-any.whl", hash = "sha256:890a5835ac00415ff78f1c7118a774aae83c0c70742284b68abd1176f9d05761"},
|
||||
{file = "botocore-1.21.60.tar.gz", hash = "sha256:3e746ca75fb7539ba3f001169264fa54dfaded2477ffc8bd979ce1e1df200620"},
|
||||
{file = "botocore-1.21.64-py3-none-any.whl", hash = "sha256:d57287377e4c7c7d7bf6c5fa39e02994de1d99fced9492a58a00e5a54bae1cca"},
|
||||
{file = "botocore-1.21.64.tar.gz", hash = "sha256:0a30dca4dad7d43fd856e671ace95f9afc4726caa1e22f0ae11b654fc76e0c7d"},
|
||||
]
|
||||
certifi = [
|
||||
{file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"},
|
||||
{file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"},
|
||||
]
|
||||
cffi = [
|
||||
{file = "cffi-1.14.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c"},
|
||||
{file = "cffi-1.14.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99"},
|
||||
{file = "cffi-1.14.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819"},
|
||||
{file = "cffi-1.14.6-cp27-cp27m-win32.whl", hash = "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20"},
|
||||
{file = "cffi-1.14.6-cp27-cp27m-win_amd64.whl", hash = "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224"},
|
||||
{file = "cffi-1.14.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7"},
|
||||
{file = "cffi-1.14.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33"},
|
||||
{file = "cffi-1.14.6-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534"},
|
||||
{file = "cffi-1.14.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a"},
|
||||
{file = "cffi-1.14.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5"},
|
||||
{file = "cffi-1.14.6-cp35-cp35m-win32.whl", hash = "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca"},
|
||||
{file = "cffi-1.14.6-cp35-cp35m-win_amd64.whl", hash = "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-win32.whl", hash = "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a"},
|
||||
{file = "cffi-1.14.6-cp36-cp36m-win_amd64.whl", hash = "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-win32.whl", hash = "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771"},
|
||||
{file = "cffi-1.14.6-cp37-cp37m-win_amd64.whl", hash = "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-win32.whl", hash = "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548"},
|
||||
{file = "cffi-1.14.6-cp38-cp38-win_amd64.whl", hash = "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-win32.whl", hash = "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728"},
|
||||
{file = "cffi-1.14.6-cp39-cp39-win_amd64.whl", hash = "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2"},
|
||||
{file = "cffi-1.14.6.tar.gz", hash = "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"},
|
||||
{file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"},
|
||||
{file = "cffi-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:23cfe892bd5dd8941608f93348c0737e369e51c100d03718f108bf1add7bd6d0"},
|
||||
{file = "cffi-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:41d45de54cd277a7878919867c0f08b0cf817605e4eb94093e7516505d3c8d14"},
|
||||
{file = "cffi-1.15.0-cp27-cp27m-win32.whl", hash = "sha256:4a306fa632e8f0928956a41fa8e1d6243c71e7eb59ffbd165fc0b41e316b2474"},
|
||||
{file = "cffi-1.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:e7022a66d9b55e93e1a845d8c9eba2a1bebd4966cd8bfc25d9cd07d515b33fa6"},
|
||||
{file = "cffi-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:14cd121ea63ecdae71efa69c15c5543a4b5fbcd0bbe2aad864baca0063cecf27"},
|
||||
{file = "cffi-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d4d692a89c5cf08a8557fdeb329b82e7bf609aadfaed6c0d79f5a449a3c7c023"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0104fb5ae2391d46a4cb082abdd5c69ea4eab79d8d44eaaf79f1b1fd806ee4c2"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:91ec59c33514b7c7559a6acda53bbfe1b283949c34fe7440bcf917f96ac0723e"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f5c7150ad32ba43a07c4479f40241756145a1f03b43480e058cfd862bf5041c7"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00c878c90cb53ccfaae6b8bc18ad05d2036553e6d9d1d9dbcf323bbe83854ca3"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abb9a20a72ac4e0fdb50dae135ba5e77880518e742077ced47eb1499e29a443c"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5263e363c27b653a90078143adb3d076c1a748ec9ecc78ea2fb916f9b861962"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f54a64f8b0c8ff0b64d18aa76675262e1700f3995182267998c31ae974fbc382"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-win32.whl", hash = "sha256:c21c9e3896c23007803a875460fb786118f0cdd4434359577ea25eb556e34c55"},
|
||||
{file = "cffi-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:5e069f72d497312b24fcc02073d70cb989045d1c91cbd53979366077959933e0"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64d4ec9f448dfe041705426000cc13e34e6e5bb13736e9fd62e34a0b0c41566e"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2756c88cbb94231c7a147402476be2c4df2f6078099a6f4a480d239a8817ae39"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b96a311ac60a3f6be21d2572e46ce67f09abcf4d09344c49274eb9e0bf345fc"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75e4024375654472cc27e91cbe9eaa08567f7fbdf822638be2814ce059f58032"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59888172256cac5629e60e72e86598027aca6bf01fa2465bdb676d37636573e8"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27c219baf94952ae9d50ec19651a687b826792055353d07648a5695413e0c605"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:4958391dbd6249d7ad855b9ca88fae690783a6be9e86df65865058ed81fc860e"},
|
||||
{file = "cffi-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:f6f824dc3bce0edab5f427efcfb1d63ee75b6fcb7282900ccaf925be84efb0fc"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:06c48159c1abed75c2e721b1715c379fa3200c7784271b3c46df01383b593636"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c2051981a968d7de9dd2d7b87bcb9c939c74a34626a6e2f8181455dd49ed69e4"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:fd8a250edc26254fe5b33be00402e6d287f562b6a5b2152dec302fa15bb3e997"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91d77d2a782be4274da750752bb1650a97bfd8f291022b379bb8e01c66b4e96b"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:45db3a33139e9c8f7c09234b5784a5e33d31fd6907800b316decad50af323ff2"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:263cc3d821c4ab2213cbe8cd8b355a7f72a8324577dc865ef98487c1aeee2bc7"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:17771976e82e9f94976180f76468546834d22a7cc404b17c22df2a2c81db0c66"},
|
||||
{file = "cffi-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3415c89f9204ee60cd09b235810be700e993e343a408693e80ce7f6a40108029"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4238e6dab5d6a8ba812de994bbb0a79bddbdf80994e4ce802b6f6f3142fcc880"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0808014eb713677ec1292301ea4c81ad277b6cdf2fdd90fd540af98c0b101d20"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57e9ac9ccc3101fac9d6014fba037473e4358ef4e89f8e181f8951a2c0162024"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b6c2ea03845c9f501ed1313e78de148cd3f6cad741a75d43a29b43da27f2e1e"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10dffb601ccfb65262a27233ac273d552ddc4d8ae1bf93b21c94b8511bffe728"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:786902fb9ba7433aae840e0ed609f45c7bcd4e225ebb9c753aa39725bb3e6ad6"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-win32.whl", hash = "sha256:da5db4e883f1ce37f55c667e5c0de439df76ac4cb55964655906306918e7363c"},
|
||||
{file = "cffi-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:181dee03b1170ff1969489acf1c26533710231c58f95534e3edac87fff06c443"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:45e8636704eacc432a206ac7345a5d3d2c62d95a507ec70d62f23cd91770482a"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31fb708d9d7c3f49a60f04cf5b119aeefe5644daba1cd2a0fe389b674fd1de37"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6dc2737a3674b3e344847c8686cf29e500584ccad76204efea14f451d4cc669a"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74fdfdbfdc48d3f47148976f49fab3251e550a8720bebc99bf1483f5bfb5db3e"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffaa5c925128e29efbde7301d8ecaf35c8c60ffbcd6a1ffd3a552177c8e5e796"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f7d084648d77af029acb79a0ff49a0ad7e9d09057a9bf46596dac9514dc07df"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef1f279350da2c586a69d32fc8733092fd32cc8ac95139a00377841f59a3f8d8"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-win32.whl", hash = "sha256:2a23af14f408d53d5e6cd4e3d9a24ff9e05906ad574822a10563efcef137979a"},
|
||||
{file = "cffi-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:3773c4d81e6e818df2efbc7dd77325ca0dcb688116050fb2b3011218eda36139"},
|
||||
{file = "cffi-1.15.0.tar.gz", hash = "sha256:920f0d66a896c2d99f0adbb391f990a84091179542c205fa53ce5787aff87954"},
|
||||
]
|
||||
charset-normalizer = [
|
||||
{file = "charset-normalizer-2.0.7.tar.gz", hash = "sha256:e019de665e2bcf9c2b64e2e5aa025fa991da8720daa3c1138cadd2fd1856aed0"},
|
||||
@@ -676,8 +699,6 @@ cryptography = [
|
||||
{file = "cryptography-3.4.8-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34dae04a0dce5730d8eb7894eab617d8a70d0c97da76b905de9efb7128ad7085"},
|
||||
{file = "cryptography-3.4.8-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eb7bb0df6f6f583dd8e054689def236255161ebbcf62b226454ab9ec663746b"},
|
||||
{file = "cryptography-3.4.8-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:9965c46c674ba8cc572bc09a03f4c649292ee73e1b683adb1ce81e82e9a6a0fb"},
|
||||
{file = "cryptography-3.4.8-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:3c4129fc3fdc0fa8e40861b5ac0c673315b3c902bbdc05fc176764815b43dd1d"},
|
||||
{file = "cryptography-3.4.8-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:695104a9223a7239d155d7627ad912953b540929ef97ae0c34c7b8bf30857e89"},
|
||||
{file = "cryptography-3.4.8-cp36-abi3-win32.whl", hash = "sha256:21ca464b3a4b8d8e86ba0ee5045e103a1fcfac3b39319727bc0fc58c09c6aff7"},
|
||||
{file = "cryptography-3.4.8-cp36-abi3-win_amd64.whl", hash = "sha256:3520667fda779eb788ea00080124875be18f2d8f0848ec00733c0ec3bb8219fc"},
|
||||
{file = "cryptography-3.4.8-pp36-pypy36_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d2a6e5ef66503da51d2110edf6c403dc6b494cc0082f85db12f54e9c5d4c3ec5"},
|
||||
@@ -695,8 +716,8 @@ docutils = [
|
||||
{file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
|
||||
]
|
||||
idna = [
|
||||
{file = "idna-3.2-py3-none-any.whl", hash = "sha256:14475042e284991034cb48e06f6851428fb14c4dc953acd9be9a5e95c7b6dd7a"},
|
||||
{file = "idna-3.2.tar.gz", hash = "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"},
|
||||
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
|
||||
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
|
||||
]
|
||||
imagesize = [
|
||||
{file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"},
|
||||
@@ -714,22 +735,12 @@ libvirt-python = [
|
||||
{file = "libvirt-python-7.8.0.tar.gz", hash = "sha256:9d07416d66805bf1a17f34491b3ced2ac6c42b6a012ddf9177e0e3ae1b103fd5"},
|
||||
]
|
||||
markupsafe = [
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
|
||||
@@ -738,21 +749,14 @@ markupsafe = [
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
|
||||
@@ -762,9 +766,6 @@ markupsafe = [
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
|
||||
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
|
||||
@@ -773,6 +774,7 @@ nixops = []
|
||||
nixops-aws = []
|
||||
nixops-encrypted-links = []
|
||||
nixops-gcp = []
|
||||
nixops-hercules-ci = []
|
||||
nixops-virtd = []
|
||||
nixopsvbox = []
|
||||
nixos-modules-contrib = []
|
||||
|
||||
@@ -11,6 +11,7 @@ nixops-aws = {git = "https://github.com/NixOS/nixops-aws.git"}
|
||||
nixops-gcp = {git = "https://github.com/nix-community/nixops-gce.git"}
|
||||
nixopsvbox = {git = "https://github.com/nix-community/nixops-vbox.git"}
|
||||
nixops-encrypted-links = {git = "https://github.com/nix-community/nixops-encrypted-links.git"}
|
||||
nixops-hercules-ci = {git = "https://github.com/hercules-ci/nixops-hercules-ci.git"}
|
||||
nixops-virtd = {git = "https://github.com/nix-community/nixops-libvirtd.git"}
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "bubblemail";
|
||||
version = "1.3";
|
||||
version = "1.4";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "framagit.org";
|
||||
owner = "razer";
|
||||
repo = "bubblemail";
|
||||
rev = "v${version}";
|
||||
sha256 = "FEIdEoZBlM28F5kSMoln7KACwetb8hp+qix1P+DIE8k=";
|
||||
sha256 = "sha256-MPl4pXvdhwCFWTepn/Mxp8ZMs+HCzXC59qdKZp3mHdw=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "20211015";
|
||||
version = "20211022";
|
||||
pname = "neomutt";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "neomutt";
|
||||
repo = "neomutt";
|
||||
rev = version;
|
||||
sha256 = "sha256-ObYeh9Q/WZ1N60pxR2LoDNCU8rP4tQt/oIxnqALqMhs=";
|
||||
sha256 = "sha256-gPMbl+g9tU7YmT3uJoJozCdDBb/4eFyVyvHdREK1Ss0=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
, makeWrapper
|
||||
, ncurses
|
||||
, gnugrep
|
||||
, fetchpatch
|
||||
, copyDesktopItems
|
||||
, makeDesktopItem
|
||||
, enableX11 ? true
|
||||
@@ -15,29 +14,19 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "unison";
|
||||
version = "2.51.3";
|
||||
version = "2.51.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bcpierce00";
|
||||
repo = "unison";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-42hmdMwOYSWGiDCmhuqtpCWtvtyD2l+kA/bhHD/Qh5Y=";
|
||||
sha256 = "sha256-jcfq4X+r98bQqbQ3gRqJyryLdt1Y/2CLawqqIiUaQOo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ]
|
||||
++ lib.optional enableX11 copyDesktopItems;
|
||||
buildInputs = [ ocamlPackages.ocaml ncurses ];
|
||||
|
||||
patches = [
|
||||
# Patch to fix build with ocaml 4.12. Remove in 2.51.4
|
||||
# https://github.com/bcpierce00/unison/pull/481
|
||||
(fetchpatch {
|
||||
name = "fix-compile-with-ocaml-4.12.patch";
|
||||
url = "https://github.com/bcpierce00/unison/commit/14b885316e0a4b41cb80fe3daef7950f88be5c8f.patch?full_index=1";
|
||||
sha256 = "0j1rma1cwdsfql19zvzhfj2ys5c4lbhjcp6jrnck04xnckxxiy3d";
|
||||
})
|
||||
];
|
||||
|
||||
preBuild = lib.optionalString enableX11 ''
|
||||
sed -i "s|\(OCAMLOPT=.*\)$|\1 -I $(echo "${ocamlPackages.lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)|" src/Makefile.OCaml
|
||||
'' + ''
|
||||
|
||||
+17
-9
@@ -16,21 +16,29 @@
|
||||
, qtquickcontrols2
|
||||
, qtwebengine
|
||||
, rustPlatform
|
||||
, srcs
|
||||
|
||||
# These must be updated in tandem with package updates.
|
||||
, cargoShaForVersion ? "21.08"
|
||||
, cargoSha256 ? "1pbvw9hdzn3i97mahdy9y6jnjsmwmjs3lxfz7q6r9r10i8swbkak"
|
||||
}:
|
||||
|
||||
# Guard against incomplete updates.
|
||||
# Values are provided as callPackage inputs to enable easier overrides through overlays.
|
||||
if cargoShaForVersion != srcs.angelfish.version
|
||||
then builtins.throw ''
|
||||
angelfish package update is incomplete.
|
||||
Hash for cargo dependencies is declared for version ${cargoShaForVersion}, but we're building ${srcs.angelfish.version}.
|
||||
Update the cargoSha256 and cargoShaForVersion for angelfish.
|
||||
'' else
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "angelfish";
|
||||
version = "21.08";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kde/stable/plasma-mobile/${version}/angelfish-${version}.tar.xz";
|
||||
sha256 = "1gzvlha159bw767mj8lisn89592j4j4dazzfws3v4anddjh60xnh";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
sha256 = "1pbvw9hdzn3i97mahdy9y6jnjsmwmjs3lxfz7q6r9r10i8swbkak";
|
||||
src = srcs.angelfish.src;
|
||||
name = "${pname}-${srcs.angelfish.version}";
|
||||
sha256 = cargoSha256;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -0,0 +1,61 @@
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchpatch
|
||||
|
||||
, extra-cmake-modules
|
||||
|
||||
, kcoreaddons
|
||||
, kcrash
|
||||
, ki18n
|
||||
, kirigami2
|
||||
, qtmultimedia
|
||||
, qtquickcontrols2
|
||||
, python3Packages
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "audiotube";
|
||||
|
||||
patches = [
|
||||
# Fix compatibility with ytmusicapi 0.19.1
|
||||
(fetchpatch {
|
||||
url = "https://invent.kde.org/plasma-mobile/audiotube/-/commit/734caa02805988200f923b88d1590b3f7dac8ac2.patch";
|
||||
sha256 = "0zq4f0w84dv0630bpvmqkfmhxbvibr2fxhzy6d2mnf098028gzyd";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
extra-cmake-modules
|
||||
python3Packages.wrapPython
|
||||
python3Packages.pybind11
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
kcoreaddons
|
||||
kcrash
|
||||
ki18n
|
||||
kirigami2
|
||||
qtmultimedia
|
||||
qtquickcontrols2
|
||||
python3Packages.youtube-dl
|
||||
python3Packages.ytmusicapi
|
||||
];
|
||||
|
||||
pythonPath = [
|
||||
python3Packages.youtube-dl
|
||||
python3Packages.ytmusicapi
|
||||
];
|
||||
|
||||
preFixup = ''
|
||||
buildPythonPath "$pythonPath"
|
||||
qtWrapperArgs+=(--prefix PYTHONPATH : "$program_PYTHONPATH")
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Client for YouTube Music";
|
||||
homepage = "https://invent.kde.org/plasma-mobile/audiotube";
|
||||
# https://invent.kde.org/plasma-mobile/audiotube/-/tree/c503d0607a3386112beaa9cf990ab85fe33ef115/LICENSES
|
||||
license = with licenses; [ bsd2 cc0 gpl2Only gpl3Only ];
|
||||
maintainers = with maintainers; [ samueldr ];
|
||||
};
|
||||
}
|
||||
@@ -62,12 +62,17 @@ let
|
||||
};
|
||||
in {
|
||||
alligator = callPackage ./alligator.nix {};
|
||||
angelfish = callPackage ./angelfish.nix { inherit srcs; };
|
||||
audiotube = callPackage ./audiotube.nix {};
|
||||
calindori = callPackage ./calindori.nix {};
|
||||
kalk = callPackage ./kalk.nix {};
|
||||
kasts = callPackage ./kasts.nix {};
|
||||
kclock = callPackage ./kclock.nix {};
|
||||
keysmith = callPackage ./keysmith.nix {};
|
||||
koko = callPackage ./koko.nix {};
|
||||
krecorder = callPackage ./krecorder.nix {};
|
||||
ktrip = callPackage ./ktrip.nix {};
|
||||
kweather = callPackage ./kweather.nix {};
|
||||
plasma-dialer = callPackage ./plasma-dialer.nix {};
|
||||
plasma-phonebook = callPackage ./plasma-phonebook.nix {};
|
||||
spacebar = callPackage ./spacebar.nix {};
|
||||
|
||||
@@ -1 +1 @@
|
||||
WGET_ARGS=( http://download.kde.org/stable/plasma-mobile/21.05 -A '*.tar.xz' )
|
||||
WGET_ARGS=( https://download.kde.org/stable/plasma-mobile/21.08/ -A '*.tar.xz' )
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
{ lib
|
||||
, mkDerivation
|
||||
|
||||
, cmake
|
||||
, extra-cmake-modules
|
||||
, wrapGAppsHook
|
||||
|
||||
, gst_all_1
|
||||
, kconfig
|
||||
, kcoreaddons
|
||||
, ki18n
|
||||
, kirigami2
|
||||
, qtmultimedia
|
||||
, qtquickcontrols2
|
||||
, syndication
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (gst_all_1) gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad;
|
||||
in
|
||||
mkDerivation rec {
|
||||
pname = "kasts";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gst-plugins-bad
|
||||
gst-plugins-base
|
||||
gst-plugins-good
|
||||
gstreamer
|
||||
|
||||
kconfig
|
||||
kcoreaddons
|
||||
ki18n
|
||||
kirigami2
|
||||
qtquickcontrols2
|
||||
qtmultimedia
|
||||
syndication
|
||||
];
|
||||
|
||||
preFixup = ''
|
||||
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
'';
|
||||
dontWrapGApps = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Mobile podcast application";
|
||||
homepage = "https://apps.kde.org/kasts/";
|
||||
# https://invent.kde.org/plasma-mobile/kasts/-/tree/master/LICENSES
|
||||
license = with licenses; [ bsd2 cc-by-sa-40 cc0 gpl2Only gpl2Plus gpl3Only gpl3Plus lgpl3Plus ];
|
||||
maintainers = with maintainers; [ samueldr ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{ lib
|
||||
, mkDerivation
|
||||
|
||||
, cmake
|
||||
, extra-cmake-modules
|
||||
|
||||
, kdbusaddons
|
||||
, ki18n
|
||||
, kirigami2
|
||||
, kwindowsystem
|
||||
, libsodium
|
||||
, qtquickcontrols2
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "keysmith";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
kdbusaddons
|
||||
ki18n
|
||||
kirigami2
|
||||
kwindowsystem
|
||||
libsodium
|
||||
qtquickcontrols2
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "OTP client for Plasma Mobile and Desktop";
|
||||
license = licenses.gpl3;
|
||||
homepage = "https://github.com/KDE/keysmith";
|
||||
maintainers = with maintainers; [ samueldr shamilton ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -12,6 +12,7 @@
|
||||
, kirigami2
|
||||
, kitemmodels
|
||||
, kpublictransport
|
||||
, qqc2-desktop-style
|
||||
, qtquickcontrols2
|
||||
}:
|
||||
|
||||
@@ -32,6 +33,7 @@ mkDerivation rec {
|
||||
kirigami2
|
||||
kitemmodels
|
||||
kpublictransport
|
||||
qqc2-desktop-style
|
||||
qtquickcontrols2
|
||||
];
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{ lib
|
||||
, mkDerivation
|
||||
|
||||
, cmake
|
||||
, extra-cmake-modules
|
||||
|
||||
, kconfig
|
||||
, ki18n
|
||||
, kirigami2
|
||||
, knotifications
|
||||
, kquickcharts
|
||||
, kweathercore
|
||||
, plasma-framework
|
||||
, qtcharts
|
||||
, qtquickcontrols2
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "kweather";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
extra-cmake-modules
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
kconfig
|
||||
ki18n
|
||||
kirigami2
|
||||
knotifications
|
||||
kquickcharts
|
||||
kweathercore
|
||||
plasma-framework
|
||||
qtcharts
|
||||
qtquickcontrols2
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Weather application for Plasma Mobile";
|
||||
homepage = "https://invent.kde.org/plasma-mobile/kweather";
|
||||
license = with licenses; [ gpl2Plus cc-by-40 ];
|
||||
maintainers = with maintainers; [ samueldr ];
|
||||
};
|
||||
}
|
||||
@@ -9,7 +9,9 @@
|
||||
, kirigami2
|
||||
, knotifications
|
||||
, kpeople
|
||||
, libphonenumber
|
||||
, libqofono
|
||||
, protobuf
|
||||
, telepathy
|
||||
}:
|
||||
|
||||
@@ -27,7 +29,9 @@ mkDerivation rec {
|
||||
kirigami2
|
||||
knotifications
|
||||
kpeople
|
||||
libphonenumber
|
||||
libqofono
|
||||
protobuf # Needed by libphonenumber
|
||||
telepathy
|
||||
];
|
||||
|
||||
|
||||
@@ -1,118 +1,158 @@
|
||||
# DO NOT EDIT! This file is generated automatically.
|
||||
# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/applications/plasma-mobile/
|
||||
# Command: ./maintainers/scripts/fetch-kde-qt.sh pkgs/applications/plasma-mobile
|
||||
{ fetchurl, mirror }:
|
||||
|
||||
{
|
||||
alligator = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/alligator-21.05.tar.xz";
|
||||
sha256 = "04zgxfx2zmn1p2ap08i5sfsnrly3smip4ylr07ghkhkiyjzbv9w6";
|
||||
name = "alligator-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/alligator-21.08.tar.xz";
|
||||
sha256 = "1dhwfwd1v5wmx3sldpygb79kz87j13wd0arhlkm94z1whsixan0q";
|
||||
name = "alligator-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
angelfish = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/angelfish-21.05.tar.xz";
|
||||
sha256 = "11jd5dwy0xa7kh5z5rc29xy3wfn20hm31908zjax4x83qqjrm075";
|
||||
name = "angelfish-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/angelfish-21.08.tar.xz";
|
||||
sha256 = "1gzvlha159bw767mj8lisn89592j4j4dazzfws3v4anddjh60xnh";
|
||||
name = "angelfish-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
audiotube = {
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/audiotube-21.08.tar.xz";
|
||||
sha256 = "14h4xna9v70lmp7cfpvdnz0f5a4gwgj0q3byccmawm38xsv15v8c";
|
||||
name = "audiotube-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
calindori = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/calindori-21.05.tar.xz";
|
||||
sha256 = "110f9ri9r1nb6q1ybhkfxljl4q5gqxikh9z0xkzjjbxjjqfscqcj";
|
||||
name = "calindori-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/calindori-21.08.tar.xz";
|
||||
sha256 = "08s16a8skh02n8ygqwryxpzczj5aqr5k58aijaz2gzx45m7ym31b";
|
||||
name = "calindori-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
kalk = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/kalk-21.05.tar.xz";
|
||||
sha256 = "04n65hx0j9rx6b3jq69zgypi8qjd4ig3rfw7d44c3q7dgh4k451l";
|
||||
name = "kalk-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/kalk-21.08.tar.xz";
|
||||
sha256 = "0xzrahpz47yajalsfmpzmavxjwmr4bgljwyz2dhxdg40ryjxdy23";
|
||||
name = "kalk-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
kasts = {
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/kasts-21.08.tar.xz";
|
||||
sha256 = "10v6icxwv46nihzbdi0n2w71bsg7l166z7jf9rb7vf2mjh1gqavn";
|
||||
name = "kasts-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
kclock = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/kclock-21.05.tar.xz";
|
||||
sha256 = "0pa5hvax0y80l8yrqczh9mcknfm3z0vdq3xc35cxdiz1vc6fwqmd";
|
||||
name = "kclock-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/kclock-21.08.tar.xz";
|
||||
sha256 = "1zq0fxlwd7l3b6dgfqsmv1x4wvhmrjz5r0a38hbd7j7pzgyix47d";
|
||||
name = "kclock-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
keysmith = {
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/keysmith-21.08.tar.xz";
|
||||
sha256 = "0fa8inli7cwmb75af0mr2cflng0r6k3pd6ckih6ph7szqbpg2x90";
|
||||
name = "keysmith-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
koko = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/koko-21.05.tar.xz";
|
||||
sha256 = "00hnzkl8dvf15psrcfh96b8wfb3pbggd2f7xnadzcb87sbaml035";
|
||||
name = "koko-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/koko-21.08.tar.xz";
|
||||
sha256 = "1sqlcl871m6dlrnkkhqa3xfwix01d74d7jf94r1a3p32hqljv76p";
|
||||
name = "koko-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
kongress = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/kongress-21.05.tar.xz";
|
||||
sha256 = "0qxgpi04ra9crc6drgbdm9arjbvcx52pprjr1dj8acch07f6i2gs";
|
||||
name = "kongress-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/kongress-21.08.tar.xz";
|
||||
sha256 = "099ds4bv4ngx21f28hxcvc17wd2nk786kydwf2h5n3mdd2mgz3ka";
|
||||
name = "kongress-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
krecorder = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/krecorder-21.05.tar.xz";
|
||||
sha256 = "0ydaidxx2616bixihyaagvyym1r5s9rjkgg04vq9k4608d4vnn5c";
|
||||
name = "krecorder-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/krecorder-21.08.tar.xz";
|
||||
sha256 = "1381x889h37saf6k875iqhwz5vbixrp7650smxp31r56ycrqq26i";
|
||||
name = "krecorder-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
ktrip = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/ktrip-21.05.tar.xz";
|
||||
sha256 = "0hxgnncyc2ir6i9p6s9fy1r4mhxgm643pxvp8lj3j5y0c5wk2kp9";
|
||||
name = "ktrip-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/ktrip-21.08.tar.xz";
|
||||
sha256 = "0ipxi3pqd7mznq3qjf9j9w3wyck85lxnr81ay6b3ricfb08ry68x";
|
||||
name = "ktrip-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
kweather = {
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/kweather-21.08.tar.xz";
|
||||
sha256 = "0b1zjwsakwsnh6827zjhypvb04c78gwwygr7k1cy2x3finrp5if5";
|
||||
name = "kweather-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-dialer = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/plasma-dialer-21.05.tar.xz";
|
||||
sha256 = "0kwkjn7ry6snc86qi1j7kcq5qa6rbyk5i7v6gqf7a7wywkk9n045";
|
||||
name = "plasma-dialer-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/plasma-dialer-21.08.tar.xz";
|
||||
sha256 = "14vgjg0nihhm446cfrrld1l43r50dlah5xs2ypdnm68618bdc7p1";
|
||||
name = "plasma-dialer-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-phonebook = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/plasma-phonebook-21.05.tar.xz";
|
||||
sha256 = "0aqqi3gvcsh4zg41zf8y0c626lwrabjchhr8pxj4n9la7y0wdvca";
|
||||
name = "plasma-phonebook-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/plasma-phonebook-21.08.tar.xz";
|
||||
sha256 = "09gr5mkwhayx6k6bhm29bmcvdlqqw8jj7gydh5fz40g9z98c84km";
|
||||
name = "plasma-phonebook-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
plasma-settings = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/plasma-settings-21.05.tar.xz";
|
||||
sha256 = "16bhx0i8gvi9ina4jxzx02xyzypyjic9646lahxvzvzmd9hn9ipi";
|
||||
name = "plasma-settings-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/plasma-settings-21.08.tar.xz";
|
||||
sha256 = "005v1gyrzl9b0k875p2wipja3l8l4awp8nl2d1jx7c28lqaspz2j";
|
||||
name = "plasma-settings-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
qmlkonsole = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/qmlkonsole-21.05.tar.xz";
|
||||
sha256 = "1ga48n09zlgvf5vvk2m26ak3ih5gjf361xxnyfprimmd7yj23han";
|
||||
name = "qmlkonsole-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/qmlkonsole-21.08.tar.xz";
|
||||
sha256 = "1p3ysf6sgiji86400523hm67rvw3znj3a7k6g6s83dxynxdh2faq";
|
||||
name = "qmlkonsole-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
spacebar = {
|
||||
version = "21.05";
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.05/spacebar-21.05.tar.xz";
|
||||
sha256 = "16lvi5yzmvk6gb5m7csk44y2jbkk7psn1lkljmj1938p2475b94c";
|
||||
name = "spacebar-21.05.tar.xz";
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/spacebar-21.08.tar.xz";
|
||||
sha256 = "1cg36iys4x7p97ywilnp2lzz1ry5a1m7jz38yh2yiw6m8wvzfqff";
|
||||
name = "spacebar-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
tokodon = {
|
||||
version = "21.08";
|
||||
src = fetchurl {
|
||||
url = "${mirror}/stable/plasma-mobile/21.08/tokodon-21.08.tar.xz";
|
||||
sha256 = "0j9zfcdss1872hv8xxrmy0jjmcz3y5kdz8gdrd6qmig5scrzjvnf";
|
||||
name = "tokodon-21.08.tar.xz";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, libusb1 }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "airspyhf";
|
||||
version = "1.6.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "airspy";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-RKTMEDPeKcerJZtXTn8eAShxDcZUMgeQg/+7pEpMyVg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
buildInputs = [ libusb1 ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "User mode driver for Airspy HF+";
|
||||
homepage = "https://github.com/airspy/airspyhf";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ sikmir ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, codec2
|
||||
, libsamplerate
|
||||
, libsndfile
|
||||
, lpcnetfreedv
|
||||
, portaudio
|
||||
, speexdsp
|
||||
, hamlib
|
||||
, wxGTK31-gtk3
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "freedv";
|
||||
version = "1.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "drowe67";
|
||||
repo = "freedv-gui";
|
||||
rev = "v${version}";
|
||||
sha256 = "1dzhf944vgla9a5ilcgwivhzgdbfaknqnwbpb071a0rz8rajnv0q";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [
|
||||
codec2
|
||||
libsamplerate
|
||||
libsndfile
|
||||
lpcnetfreedv
|
||||
portaudio
|
||||
speexdsp
|
||||
hamlib
|
||||
wxGTK31-gtk3
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DUSE_INTERNAL_CODEC2:BOOL=FALSE"
|
||||
"-DUSE_STATIC_DEPS:BOOL=FALSE"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://freedv.org/";
|
||||
description = "Digital voice for HF radio";
|
||||
license = licenses.lgpl21;
|
||||
maintainers = with maintainers; [ mvs ];
|
||||
};
|
||||
}
|
||||
@@ -33,13 +33,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "sdrangel";
|
||||
version = "6.16.3";
|
||||
version = "6.17.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "f4exb";
|
||||
repo = "sdrangel";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-qgFnl9IliKRI4TptpXyK9JHzpLEUQ7NZLIfc0AROCvA=";
|
||||
sha256 = "sha256-VWHFrgJVyI3CtLXUiG3/4/cRTD8jSdunbrro34yLKvs=";
|
||||
fetchSubmodules = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config
|
||||
, libX11, glfw, glew, fftwFloat, volk
|
||||
# Sources
|
||||
, airspy_source ? true, airspy
|
||||
, airspyhf_source ? true, airspyhf
|
||||
, bladerf_source ? false, libbladeRF
|
||||
, file_source ? true
|
||||
, hackrf_source ? true, hackrf
|
||||
, limesdr_source ? false, limesuite
|
||||
, sddc_source ? false
|
||||
, rtl_sdr_source ? true, librtlsdr, libusb1
|
||||
, rtl_tcp_source ? true
|
||||
, sdrplay_source ? false, sdrplay
|
||||
, soapy_source ? true, soapysdr
|
||||
, spyserver_source ? true
|
||||
, plutosdr_source ? true, libiio, libad9361
|
||||
# Sinks
|
||||
, audio_sink ? true, rtaudio
|
||||
, portaudio_sink ? false, portaudio
|
||||
, network_sink ? true
|
||||
# Decoders
|
||||
, falcon9_decoder ? false
|
||||
, m17_decoder ? false, codec2
|
||||
, meteor_demodulator ? true
|
||||
, radio ? true
|
||||
, weather_sat_decoder ? true
|
||||
# Misc
|
||||
, discord_presence ? true
|
||||
, frequency_manager ? true
|
||||
, recorder ? true
|
||||
, rigctl_server ? true
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sdrpp";
|
||||
version = "1.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AlexandreRouma";
|
||||
repo = "SDRPlusPlus";
|
||||
rev = version;
|
||||
hash = "sha256-g9tpWvVRMXRhPfgvOeJhX6IMouF9+tLUr9wo5r35i/c=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "/usr" $out
|
||||
substituteInPlace decoder_modules/m17_decoder/src/m17dsp.h \
|
||||
--replace "codec2.h" "codec2/codec2.h"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
buildInputs = [ glfw glew fftwFloat volk ]
|
||||
++ lib.optional stdenv.isLinux libX11
|
||||
++ lib.optional airspy_source airspy
|
||||
++ lib.optional airspyhf_source airspyhf
|
||||
++ lib.optional bladerf_source libbladeRF
|
||||
++ lib.optional hackrf_source hackrf
|
||||
++ lib.optional limesdr_source limesuite
|
||||
++ lib.optionals rtl_sdr_source [ librtlsdr libusb1 ]
|
||||
++ lib.optional sdrplay_source sdrplay
|
||||
++ lib.optional soapy_source soapysdr
|
||||
++ lib.optionals plutosdr_source [ libiio libad9361 ]
|
||||
++ lib.optional audio_sink rtaudio
|
||||
++ lib.optional portaudio_sink portaudio
|
||||
++ lib.optional m17_decoder codec2;
|
||||
|
||||
cmakeFlags = lib.mapAttrsToList (k: v: "-D${k}=${if v then "ON" else "OFF"}") {
|
||||
OPT_BUILD_AIRSPY_SOURCE = airspy_source;
|
||||
OPT_BUILD_AIRSPYHF_SOURCE = airspyhf_source;
|
||||
OPT_BUILD_BLADERF_SOURCE = bladerf_source;
|
||||
OPT_BUILD_FILE_SOURCE = file_source;
|
||||
OPT_BUILD_HACKRF_SOURCE = hackrf_source;
|
||||
OPT_BUILD_LIMESDR_SOURCE = limesdr_source;
|
||||
OPT_BUILD_SDDC_SOURCE = sddc_source;
|
||||
OPT_BUILD_RTL_SDR_SOURCE = rtl_sdr_source;
|
||||
OPT_BUILD_RTL_TCP_SOURCE = rtl_tcp_source;
|
||||
OPT_BUILD_SDRPLAY_SOURCE = sdrplay_source;
|
||||
OPT_BUILD_SOAPY_SOURCE = soapy_source;
|
||||
OPT_BUILD_SPYSERVER_SOURCE = spyserver_source;
|
||||
OPT_BUILD_PLUTOSDR_SOURCE = plutosdr_source;
|
||||
OPT_BUILD_AUDIO_SINK = audio_sink;
|
||||
OPT_BUILD_PORTAUDIO_SINK = portaudio_sink;
|
||||
OPT_BUILD_NETWORK_SINK = network_sink;
|
||||
OPT_BUILD_NEW_PORTAUDIO_SINK = portaudio_sink;
|
||||
OPT_BUILD_FALCON9_DECODER = falcon9_decoder;
|
||||
OPT_BUILD_M17_DECODER = m17_decoder;
|
||||
OPT_BUILD_METEOR_DEMODULATOR = meteor_demodulator;
|
||||
OPT_BUILD_RADIO = radio;
|
||||
OPT_BUILD_WEATHER_SAT_DECODER = weather_sat_decoder;
|
||||
OPT_BUILD_DISCORD_PRESENCE = discord_presence;
|
||||
OPT_BUILD_FREQUENCY_MANAGER = frequency_manager;
|
||||
OPT_BUILD_RECORDER = recorder;
|
||||
OPT_BUILD_RIGCTL_SERVER = rigctl_server;
|
||||
};
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-fpermissive";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cross-Platform SDR Software";
|
||||
homepage = "https://github.com/AlexandreRouma/SDRPlusPlus";
|
||||
license = licenses.gpl3Only;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ sikmir ];
|
||||
};
|
||||
}
|
||||
@@ -1,12 +1,14 @@
|
||||
{ lib, stdenv, fetchurl, unzip, zlib, python3, parallel }:
|
||||
{ lib, stdenv, fetchFromGitLab, unzip, zlib, python3, parallel }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "last";
|
||||
version = "1179";
|
||||
version = "1256";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://last.cbrc.jp/last-${version}.zip";
|
||||
sha256 = "sha256-949oiE7ZNkCOJuOK/huPkCN0c4TlVaTskkBe0joc0HU=";
|
||||
src = fetchFromGitLab {
|
||||
owner = "mcfrith";
|
||||
repo = "last";
|
||||
rev = version;
|
||||
sha256 = "sha256-lOsU0X4K6jYcbkTzwQV+KAerQh9odE4zCLtSgZrYH6s=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "picard-tools";
|
||||
version = "2.26.2";
|
||||
version = "2.26.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/broadinstitute/picard/releases/download/${version}/picard.jar";
|
||||
sha256 = "sha256-mfqxaZpzX9BIoFl1okN3TxzJnoepsoMR1KqHLQY5BHQ=";
|
||||
sha256 = "sha256-H7VgD75tmAEd01Pj1o6BNT0QaXhd1pUIpAFmKM6OUlo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "1.6.0";
|
||||
version = "1.6.1";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tamarin-prover";
|
||||
repo = "tamarin-prover";
|
||||
rev = version;
|
||||
sha256 = "1pl3kz7gyw9g6s4x5j90z4snd10vq6296g3ajlr8d4n53p3c9i3w";
|
||||
sha256 = "sha256:0cz1v7k4d0im749ag632nc34n91b51b0pq4z05rzw1p59a5lza92";
|
||||
};
|
||||
|
||||
# tamarin has its own dependencies, but they're kept inside the repo,
|
||||
@@ -85,15 +85,11 @@ mkDerivation (common "tamarin-prover" src // {
|
||||
|
||||
executableHaskellDepends = (with haskellPackages; [
|
||||
binary-instances binary-orphans blaze-html conduit file-embed
|
||||
gitrev http-types lifted-base monad-control monad-unlift
|
||||
gitrev http-types lifted-base monad-control
|
||||
resourcet shakespeare threads wai warp yesod-core yesod-static
|
||||
]) ++ [ tamarin-prover-utils
|
||||
tamarin-prover-sapic
|
||||
tamarin-prover-term
|
||||
tamarin-prover-theory
|
||||
];
|
||||
|
||||
# tamarin-prover 1.6 is incompatible with maude 3.1.
|
||||
hydraPlatforms = lib.platforms.none;
|
||||
broken = true;
|
||||
})
|
||||
|
||||
@@ -119,6 +119,6 @@ stdenv.mkDerivation rec {
|
||||
|
||||
platforms = platforms.all;
|
||||
|
||||
maintainers = with maintainers; teams.sage.members;
|
||||
maintainers = with maintainers; [ jbedo ] ++ teams.sage.members;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, withOpenCL ? true
|
||||
, ocl-icd
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "lucky-commit";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "not-an-aardvark";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0vs668i1yglfcqs94jhwdk90v0lja2w5kr5gakz082wykilms0zg";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-MvopLKhovwXaEmRgXnAzJeuhPgqnMjt0EtKUGSWFpaY=";
|
||||
|
||||
buildInputs = lib.optional withOpenCL [ ocl-icd ];
|
||||
|
||||
cargoBuildFlags = lib.optional (!withOpenCL) "--no-default-features";
|
||||
|
||||
# disable tests that require gpu
|
||||
cargoTestFlags = [ "--no-default-features" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Change the start of your git commit hashes to whatever you want";
|
||||
homepage = "https://github.com/not-an-aardvark/lucky-commit";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ figsoda ];
|
||||
mainProgram = "lucky_commit";
|
||||
};
|
||||
}
|
||||
@@ -16,12 +16,12 @@ with lib;
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "gitea";
|
||||
version = "1.15.4";
|
||||
version = "1.15.5";
|
||||
|
||||
# not fetching directly from the git repo, because that lacks several vendor files for the web UI
|
||||
src = fetchurl {
|
||||
url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
|
||||
sha256 = "sha256-UsaTA6bI5pr3vbvO3jFn8A8qVRi385fbiJQD09Ut/X0=";
|
||||
sha256 = "sha256-W+czWzo4keTLRPDLcTeYl3JSccwfq+P6k4ELADO9FVM=";
|
||||
};
|
||||
|
||||
unpackPhase = ''
|
||||
|
||||
@@ -1,22 +1,31 @@
|
||||
{ lib, stdenv, rustPlatform, cmake, fetchFromGitHub, pkg-config, openssl
|
||||
, libiconv, Security, SystemConfiguration }:
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkg-config
|
||||
, stdenv
|
||||
, libiconv
|
||||
, Security
|
||||
, SystemConfiguration
|
||||
, openssl
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "gitoxide";
|
||||
version = "0.8.4";
|
||||
version = "0.10.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Byron";
|
||||
repo = "gitoxide";
|
||||
rev = "v${version}";
|
||||
sha256 = "WH8YiW1X7TkURjncm0OefxrZhnhGHaGLwxRNxe17g/0=";
|
||||
sha256 = "sha256-c29gmmkIOyS+HNq2kv53yq+sdEDmQbSmcvVGcd55/hk=";
|
||||
};
|
||||
|
||||
cargoSha256 = "eTPJMYl9m81o4PJKfpDs61KmehSvKnY+bgybEodOhAM=";
|
||||
cargoSha256 = "sha256-oc7XpiOZj4bfqdwrEHj/CzNtWzYWFkgMJOySJNgxAGQ=";
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
buildInputs = if stdenv.isDarwin
|
||||
then [ libiconv Security SystemConfiguration]
|
||||
then [ libiconv Security SystemConfiguration ]
|
||||
else [ openssl ];
|
||||
|
||||
# Needed to get openssl-sys to use pkg-config.
|
||||
@@ -25,7 +34,8 @@ rustPlatform.buildRustPackage rec {
|
||||
meta = with lib; {
|
||||
description = "A command-line application for interacting with git repositories";
|
||||
homepage = "https://github.com/Byron/gitoxide";
|
||||
changelog = "https://github.com/Byron/gitoxide/blob/v${version}/CHANGELOG.md";
|
||||
license = with licenses; [ mit /* or */ asl20 ];
|
||||
maintainers = [ maintainers.syberant ];
|
||||
maintainers = with maintainers; [ syberant ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,30 @@
|
||||
{ lib, stdenv, fetchurl, glib, gtk3, meson, ninja, pkg-config, gnome, gettext, itstool, libxml2, libarchive
|
||||
, file, json-glib, python3, wrapGAppsHook, desktop-file-utils, libnotify, nautilus, glibcLocales
|
||||
, unzip, cpio }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, desktop-file-utils
|
||||
, gettext
|
||||
, glibcLocales
|
||||
, itstool
|
||||
, libxml2
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, python3
|
||||
, wrapGAppsHook
|
||||
, cpio
|
||||
, file
|
||||
, glib
|
||||
, gnome
|
||||
, gtk3
|
||||
, json-glib
|
||||
, libarchive
|
||||
, libnotify
|
||||
, nautilus
|
||||
, pantheon
|
||||
, unzip
|
||||
, withPantheon ? false
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "file-roller";
|
||||
@@ -11,11 +35,43 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "039w1dcpa5ypmv6sm634alk9vbcdkyvy595vkh5gn032jsiqca2a";
|
||||
};
|
||||
|
||||
patches = lib.optionals withPantheon [
|
||||
# Make this respect dark mode settings from Pantheon
|
||||
# https://github.com/elementary/fileroller/
|
||||
(fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/elementary/fileroller/f183eac36c68c9c9441e72294d4e305cf5fe36ed/fr-application-prefers-color-scheme.patch";
|
||||
sha256 = "sha256-d/sqf4Oen9UrzYqru7Ck15o/6g6WfxRDH/iAGFXgYAA=";
|
||||
})
|
||||
];
|
||||
|
||||
LANG = "en_US.UTF-8"; # postinstall.py
|
||||
|
||||
nativeBuildInputs = [ meson ninja gettext itstool pkg-config libxml2 python3 wrapGAppsHook glibcLocales desktop-file-utils ];
|
||||
nativeBuildInputs = [
|
||||
desktop-file-utils
|
||||
gettext
|
||||
glibcLocales
|
||||
itstool
|
||||
libxml2
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [ glib gtk3 json-glib libarchive file gnome.adwaita-icon-theme libnotify nautilus cpio ];
|
||||
buildInputs = [
|
||||
cpio
|
||||
file
|
||||
glib
|
||||
gnome.adwaita-icon-theme
|
||||
gtk3
|
||||
json-glib
|
||||
libarchive
|
||||
libnotify
|
||||
nautilus
|
||||
] ++ lib.optionals withPantheon [
|
||||
pantheon.granite
|
||||
];
|
||||
|
||||
PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
|
||||
|
||||
@@ -44,6 +100,6 @@ stdenv.mkDerivation rec {
|
||||
description = "Archive manager for the GNOME desktop environment";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = teams.gnome.members ++ teams.pantheon.members;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-night-theme-switcher";
|
||||
version = "50";
|
||||
version = "53";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "rmnvgr";
|
||||
repo = "nightthemeswitcher-gnome-shell-extension";
|
||||
rev = "v${version}";
|
||||
sha256 = "0rs08kr3wizs1vpkmm6pbcvnn7rz47yrq7vnb1s8d58yda9a850d";
|
||||
rev = version;
|
||||
sha256 = "0dgnh1aj0y89jzfkpj8zs4gdbmyc1v8lbki2q30gld17ljv4l6lh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{ lib, stdenv, substituteAll, fetchFromGitHub, glib, glib-networking, libgtop, gnome }:
|
||||
{ lib, stdenv, substituteAll, fetchFromGitHub, fetchpatch, glib, glib-networking, libgtop, gnome }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-system-monitor";
|
||||
version = "unstable-2021-06-19";
|
||||
version = "unstable-2021-09-07";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "paradoxxxzero";
|
||||
repo = "gnome-shell-system-monitor-applet";
|
||||
rev = "bece7be22352b81d3d81e64e18a385812851b8de";
|
||||
sha256 = "08nnsg7z3cqk25hfgy4wm02hd2wpz13kig498kn4mf5f1q4hslmx";
|
||||
rev = "133f9f32bca5d159515d709bbdee81bf497ebdc5";
|
||||
sha256 = "1vz1s1x22xmmzaayrzv5jyzlmxslhfaybbnv959szvfp4mdrhch9";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
@@ -24,6 +24,11 @@ stdenv.mkDerivation rec {
|
||||
gtop_path = "${libgtop}/lib/girepository-1.0";
|
||||
glib_net_path = "${glib-networking}/lib/girepository-1.0";
|
||||
})
|
||||
# Support GNOME 41
|
||||
(fetchpatch {
|
||||
url = "https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet/pull/718/commits/f4ebc29afa707326b977230329e634db169f55b1.patch";
|
||||
sha256 = "0ndnla41mvrww6ldf9d55ar1ibyj8ak5pp1dkjg75jii9slgzjqb";
|
||||
})
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
@@ -47,7 +52,7 @@ stdenv.mkDerivation rec {
|
||||
meta = with lib; {
|
||||
description = "Display system informations in gnome shell status bar";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ tiramiseb ];
|
||||
maintainers = with maintainers; [ andersk ];
|
||||
homepage = "https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -73,6 +73,8 @@ lib.makeScope pkgs.newScope (self: with self; {
|
||||
|
||||
evince = pkgs.evince.override { withPantheon = true; };
|
||||
|
||||
file-roller = pkgs.gnome.file-roller.override { withPantheon = true; };
|
||||
|
||||
sideload = callPackage ./apps/sideload { };
|
||||
|
||||
#### DESKTOP
|
||||
|
||||
@@ -241,8 +241,8 @@ rec {
|
||||
};
|
||||
|
||||
crystal_1_2 = generic {
|
||||
version = "1.2.0";
|
||||
sha256 = "sha256-38mmsolzmCnv+MFUMc+AEiklDLBHIr/jqXMLzc0nVq4=";
|
||||
version = "1.2.1";
|
||||
sha256 = "sha256-jyNmY3n+u8WoVqHY8B5H9Vr9Ix3RogCtm8irkXZ3aek=";
|
||||
binary = crystal_1_1;
|
||||
};
|
||||
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
|
||||
coq.ocamlPackages.buildDunePackage rec {
|
||||
pname = "ligo";
|
||||
version = "0.26.0";
|
||||
version = "0.27.0";
|
||||
src = fetchFromGitLab {
|
||||
owner = "ligolang";
|
||||
repo = "ligo";
|
||||
rev = "d48098c6724bc0a62170c2f9ff73c792c71c8452";
|
||||
sha256 = "sha256-uu5985llYsi/9ExKZetk48FqU0sJQB1EirdT/pUw0DA=";
|
||||
rev = version;
|
||||
sha256 = "sha256-OUrjMlAWxTPs56ltMt0I/XR9GScD6upXU2arT99u8hk=";
|
||||
};
|
||||
|
||||
# The build picks this up for ligo --version
|
||||
LIGO_VERSION=version;
|
||||
LIGO_VERSION = version;
|
||||
|
||||
useDune2 = true;
|
||||
|
||||
|
||||
@@ -252,6 +252,7 @@ stdenv.mkDerivation {
|
||||
# LLVM toolchain patches.
|
||||
patch -p1 -d llvm-project/clang -i ${./patches/0005-clang-toolchain-dir.patch}
|
||||
patch -p1 -d llvm-project/clang -i ${./patches/0006-clang-purity.patch}
|
||||
patch -p1 -d llvm-project/compiler-rt -i ${../llvm/common/compiler-rt/libsanitizer-no-cyclades-11.patch}
|
||||
substituteInPlace llvm-project/clang/lib/Driver/ToolChains/Linux.cpp \
|
||||
--replace 'SysRoot + "/lib' '"${glibc}/lib" "' \
|
||||
--replace 'SysRoot + "/usr/lib' '"${glibc}/lib" "' \
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
{ lib, stdenv, fetchurl }:
|
||||
{ lib, stdenv, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kona";
|
||||
version = "3.21";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/kevinlawler/kona/archive/Win.${version}-64.tar.gz";
|
||||
sha256 = "0c1yf3idqkfq593xgqb25r2ykmfmp83zzh3q7kb8095a069gvri3";
|
||||
version = "20201009";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kevinlawler";
|
||||
repo = "kona";
|
||||
rev = "Win64-${version}";
|
||||
sha256 = "0v252zds61y01cf29hxznz1zc1724vxmzy059k9jiri4r73k679v";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
@@ -26,7 +26,6 @@ let
|
||||
generic = { version, sha256 }: let
|
||||
ver = version;
|
||||
tag = ver.gitTag;
|
||||
atLeast27 = lib.versionAtLeast ver.majMin "2.7";
|
||||
atLeast30 = lib.versionAtLeast ver.majMin "3.0";
|
||||
baseruby = self.override {
|
||||
useRailsExpress = false;
|
||||
@@ -105,7 +104,7 @@ let
|
||||
inherit patchSet useRailsExpress ops fetchpatch;
|
||||
patchLevel = ver.patchLevel;
|
||||
}).${ver.majMinTiny}
|
||||
++ op atLeast27 ./do-not-regenerate-revision.h.patch
|
||||
++ [ ./do-not-regenerate-revision.h.patch ]
|
||||
++ op (atLeast30 && useRailsExpress) ./do-not-update-gems-baseruby.patch
|
||||
# Ruby prior to 3.0 has a bug the installer (tools/rbinstall.rb) but
|
||||
# the resulting error was swallowed. Newer rubygems no longer swallows
|
||||
@@ -252,14 +251,6 @@ let
|
||||
) args; in self;
|
||||
|
||||
in {
|
||||
ruby_2_6 = generic {
|
||||
version = rubyVersion "2" "6" "8" "";
|
||||
sha256 = {
|
||||
src = "0vfam28ifl6h2wxi6p70j0hm3f1pvsp432hf75m5j25wfy2vf1qq";
|
||||
git = "0rc3n6sk8632r0libpv8jwslc7852hgk64rvbdrspc9razjwx21c";
|
||||
};
|
||||
};
|
||||
|
||||
ruby_2_7 = generic {
|
||||
version = rubyVersion "2" "7" "4" "";
|
||||
sha256 = {
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
{ patchSet, useRailsExpress, ops, patchLevel, fetchpatch }:
|
||||
|
||||
{
|
||||
"2.6.8" = ops useRailsExpress [
|
||||
"${patchSet}/patches/ruby/2.6/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
|
||||
"${patchSet}/patches/ruby/2.6/head/railsexpress/02-improve-gc-stats.patch"
|
||||
"${patchSet}/patches/ruby/2.6/head/railsexpress/03-more-detailed-stacktrace.patch"
|
||||
];
|
||||
"2.7.4" = ops useRailsExpress [
|
||||
"${patchSet}/patches/ruby/2.7/head/railsexpress/01-fix-broken-tests-caused-by-ad.patch"
|
||||
"${patchSet}/patches/ruby/2.7/head/railsexpress/02-improve-gc-stats.patch"
|
||||
|
||||
@@ -2,17 +2,22 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "codec2";
|
||||
version = "1.0.0";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "drowe67";
|
||||
repo = "codec2";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-R4H6gwmc8nPgRfhNms7n7jMCHhkzX7i/zfGT4CYSsY8=";
|
||||
sha256 = "05xjsb67dzwncl2rnhg6fqih8krf38b7vmvzlsb7y9g6d1b085wg";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
# Swap keyword order to satisfy SWIG parser
|
||||
postFixup = ''
|
||||
sed -r -i 's/(\<_Complex)(\s+)(float|double)/\3\2\1/' $out/include/$pname/freedv_api.h
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Speech codec designed for communications quality speech at low data rates";
|
||||
homepage = "http://www.rowetel.com/blog/?page_id=452";
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "duckdb";
|
||||
version = "0.2.9";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cwida";
|
||||
repo = "duckdb";
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ID65xpNSDyi19OcOs9Gdf5xpK++UVWclp8pVggIWQNU=";
|
||||
sha256 = "sha256-SvihG6PdHQ+03JAXdkuzvGug4lw0ngcxYigS7R7yK9g=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/cwida/duckdb";
|
||||
homepage = "https://github.com/duckdb/duckdb";
|
||||
description = "Embeddable SQL OLAP Database Management System";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.all;
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{ mkDerivation
|
||||
, lib
|
||||
, fetchFromGitLab
|
||||
, extra-cmake-modules
|
||||
, ki18n
|
||||
, qtlocation
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "kweathercore";
|
||||
version = "0.5";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "invent.kde.org";
|
||||
owner = "libraries";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "08ipabskhsbspkzzdlpwl89r070q8d0vc9500ma6d5i9fnpmkz6d";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
ki18n
|
||||
qtlocation
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ extra-cmake-modules ];
|
||||
|
||||
meta = with lib; {
|
||||
license = [ licenses.cc0 ];
|
||||
maintainers = [ maintainers.samueldr ];
|
||||
description = ''
|
||||
Library to facilitate retrieval of weather information including forecasts and alerts
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{ lib, stdenv, fetchFromGitHub, cmake, libiio }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libad9361";
|
||||
version = "0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "analogdevicesinc";
|
||||
repo = "libad9361-iio";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-dYoFWRnREvlOC514ZpmmvoS37DmIkVqfq7JPpTXqXd8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
buildInputs = [ libiio ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "IIO AD9361 library for filter design and handling, multi-chip sync, etc";
|
||||
homepage = "http://analogdevicesinc.github.io/libad9361-iio/";
|
||||
license = licenses.lgpl21Plus;
|
||||
maintainers = with maintainers; [ sikmir ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{ lib, stdenv, fetchFromGitHub, fetchurl, cmake, codec2 }:
|
||||
|
||||
let
|
||||
dataVersion = "191005_v1.0";
|
||||
data = fetchurl {
|
||||
url = "http://rowetel.com/downloads/deep/lpcnet_${dataVersion}.tgz";
|
||||
sha256 = "1j1695hm2pg6ri611f9kr3spm4yxvpikws55z9zxizai8y94152h";
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "lpcnetfreedv";
|
||||
version = "unstable-2021-06-29";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "drowe67";
|
||||
repo = "LPCNet";
|
||||
rev = "0dc5935bbf49ff3ba3c9654cc2f802838ebbaead";
|
||||
sha256 = "0r6488z40fkar11ync8achpg5l6qz7y7cbh7cs3b3w4fsxn58q9i";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ codec2 ];
|
||||
|
||||
postPatch = ''
|
||||
mkdir build
|
||||
ln -s ${data} build/lpcnet_${dataVersion}.tgz
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://freedv.org/";
|
||||
description = "Experimental Neural Net speech coding for FreeDV";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ mvs ];
|
||||
};
|
||||
}
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "pulseaudio-qt";
|
||||
version = "1.2.0";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kde/stable/${pname}/${pname}-${lib.versions.majorMinor version}.tar.xz";
|
||||
sha256 = "1i0ql68kxv9jxs24rsd3s7jhjid3f2fq56fj4wbp16zb4wd14099";
|
||||
sha256 = "1i4yb0v1mmhih8c2i61hybg6q60qys3pc5wbjb7a0vwl1mihgsxw";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -4,11 +4,11 @@ let
|
||||
archiveVersion = import ./archive-version.nix lib;
|
||||
mkTool = { pname, makeTarget, description, homepage }: stdenv.mkDerivation rec {
|
||||
inherit pname;
|
||||
version = "3.35.5";
|
||||
version = "3.36.0";
|
||||
|
||||
src = assert version == sqlite.version; fetchurl {
|
||||
url = "https://sqlite.org/2021/sqlite-src-${archiveVersion version}.zip";
|
||||
sha256 = "049vdpk50sba786345ibmlxnkzk5zp4xj859658ancswb6jyrgpl";
|
||||
sha256 = "092khwfm0m0i80sjb4fc5569jj0kilm6pa867w0akcv6h38bk8r5";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "carton";
|
||||
version = "0.4.2";
|
||||
version = "0.4.3";
|
||||
|
||||
useDune2 = true;
|
||||
minimumOCamlVersion = "4.08";
|
||||
minimalOCamlVersion = "4.08";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mirage/ocaml-git/releases/download/${pname}-v${version}/${pname}-${pname}-v${version}.tbz";
|
||||
sha256 = "a0a03b2f7bb7dafe070bc6a74583b6d6da714d2c636dd4d5a6443c9f299ceacc";
|
||||
sha256 = "sha256:0qz9ds5761wx4m7ly3av843b6dii7lmjpx2nnyijv8rm8aw95jgr";
|
||||
};
|
||||
|
||||
# remove changelogs for mimic and the git* packages
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
buildDunePackage {
|
||||
pname = "carton-git";
|
||||
|
||||
inherit (carton) version src useDune2 minimumOCamlVersion postPatch;
|
||||
inherit (carton) version src useDune2 postPatch;
|
||||
|
||||
propagatedBuildInputs = [
|
||||
carton
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
buildDunePackage {
|
||||
pname = "carton-lwt";
|
||||
|
||||
inherit (carton) version src useDune2 minimumOCamlVersion postPatch;
|
||||
inherit (carton) version src useDune2 postPatch;
|
||||
|
||||
propagatedBuildInputs = [
|
||||
carton
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "adb-shell";
|
||||
version = "0.4.1";
|
||||
version = "0.4.2";
|
||||
|
||||
disabled = !isPy3k;
|
||||
|
||||
@@ -23,7 +23,7 @@ buildPythonPackage rec {
|
||||
owner = "JeffLIrion";
|
||||
repo = "adb_shell";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-E7sX+N6d5Otwp1AbdPCnQJ2YT/k89+6kMJDLt8U2Dsg=";
|
||||
sha256 = "sha256-8tclSjmLlTAIeq6t7YPGtJwvSwtlzQ7sRAQatcQRzeY=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -1,23 +1,15 @@
|
||||
{ lib, buildPythonPackage, fetchPypi, fetchpatch
|
||||
{ lib, buildPythonPackage, fetchPypi
|
||||
, pygments, dominate, beautifulsoup4, docutils, sphinx }:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "alectryon";
|
||||
owner = "cpitclaudel";
|
||||
version = "1.3.1";
|
||||
version = "1.4.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256:0mca25jv917myb4n91ccpl5fz058aiqsn8cniflwfw5pp6lqnfg7";
|
||||
sha256 = "00cxzfifvgcf3d3s8lsj1yxcwyf3a1964p86fj7b42q8pa0b4r3i";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/cpitclaudel/alectryon/commit/c779def3fa268e703d4e0ff8ae0b2981e194b269.patch";
|
||||
sha256 = "0xsz56ibq8xj7gg530pfm1jmxbxw4r6v8xvzj5k1wdry83srqi65";
|
||||
})
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pygments
|
||||
dominate
|
||||
|
||||
@@ -1,18 +1,37 @@
|
||||
{ lib, buildPythonPackage, fetchPypi }:
|
||||
{ buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, lib
|
||||
, pip
|
||||
, setuptools
|
||||
, wheel
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "zc.buildout";
|
||||
version = "2.13.4";
|
||||
pname = "zc-buildout";
|
||||
version = "3.0.0b2";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "b978b2f9317b317ee4191f78fcc4f05b1ac41bdaaae47f0956f14c8285feef63";
|
||||
src = fetchFromGitHub {
|
||||
owner = "buildout";
|
||||
repo = "buildout";
|
||||
rev = version;
|
||||
sha256 = "01sj09xx5kmkzynhq1xd8ahn6xqybfi8lrqjqr5lr45aaxjk2pid";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
setuptools
|
||||
pip
|
||||
wheel
|
||||
];
|
||||
|
||||
doCheck = false; # Missing package & BLOCKED on "zc.recipe.egg"
|
||||
|
||||
pythonImportsCheck = [ "zc.buildout" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://www.buildout.org";
|
||||
description = "A software build and configuration system";
|
||||
downloadPage = "https://github.com/buildout/buildout";
|
||||
homepage = "https://www.buildout.org";
|
||||
license = licenses.zpl21;
|
||||
maintainers = with maintainers; [ ];
|
||||
maintainers = with maintainers; [ superherointj ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, nbsmoke
|
||||
, param
|
||||
, pyct
|
||||
, nbsmoke
|
||||
, flake8
|
||||
, pytest
|
||||
, pytest-mpl
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
@@ -24,25 +23,29 @@ buildPythonPackage rec {
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
pytest
|
||||
flake8
|
||||
pytest-mpl
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
checkPhase = ''
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
mkdir -p $HOME/.config/matplotlib
|
||||
echo "backend: ps" > $HOME/.config/matplotlib/matplotlibrc
|
||||
ln -s $HOME/.config/matplotlib $HOME/.matplotlib
|
||||
|
||||
# requires other backends to be available
|
||||
pytest colorcet -k 'not matplotlib_default_colormap_plot'
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
"matplotlib_default_colormap_plot"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"colorcet"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Collection of perceptually uniform colormaps";
|
||||
homepage = "https://colorcet.pyviz.org";
|
||||
license = licenses.cc-by-40;
|
||||
maintainers = [ maintainers.costrouc ];
|
||||
maintainers = with maintainers; [ costrouc ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,13 +16,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "faraday-plugins";
|
||||
version = "1.5.4";
|
||||
version = "1.5.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "infobyte";
|
||||
repo = "faraday_plugins";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-TKT++56pc1+nZXkqMgIq5DFgF9H1+Q5Fuj4KidCdRh0=";
|
||||
sha256 = "sha256-dnd6q/L3yh/9XkrWC4ETccSO6zr31wBsuumDvwemKyA=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -1,18 +1,10 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, bokeh
|
||||
, buildPythonPackage
|
||||
, colorcet
|
||||
, fetchPypi
|
||||
, holoviews
|
||||
, pandas
|
||||
, pytest
|
||||
, parameterized
|
||||
, nbsmoke
|
||||
, flake8
|
||||
, coveralls
|
||||
, xarray
|
||||
, networkx
|
||||
, streamz
|
||||
, colorcet
|
||||
, pythonImportsCheckHook
|
||||
}:
|
||||
|
||||
@@ -29,7 +21,6 @@ buildPythonPackage rec {
|
||||
pythonImportsCheckHook
|
||||
];
|
||||
|
||||
checkInputs = [ pytest parameterized nbsmoke flake8 coveralls xarray networkx streamz ];
|
||||
propagatedBuildInputs = [
|
||||
bokeh
|
||||
colorcet
|
||||
@@ -37,11 +28,7 @@ buildPythonPackage rec {
|
||||
pandas
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
|
||||
# many tests require a network connection
|
||||
# Many tests require a network connection
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [
|
||||
@@ -52,6 +39,6 @@ buildPythonPackage rec {
|
||||
description = "A high-level plotting API for the PyData ecosystem built on HoloViews";
|
||||
homepage = "https://hvplot.pyviz.org";
|
||||
license = licenses.bsd3;
|
||||
maintainers = [ maintainers.costrouc ];
|
||||
maintainers = with maintainers; [ costrouc ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,67 +1,71 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, appdirs
|
||||
, bokeh
|
||||
, buildPythonPackage
|
||||
, dask
|
||||
, entrypoints
|
||||
, fetchFromGitHub
|
||||
, fsspec
|
||||
, holoviews
|
||||
, hvplot
|
||||
, fsspec
|
||||
, intake-parquet
|
||||
, jinja2
|
||||
, msgpack
|
||||
, msgpack-numpy
|
||||
, numpy
|
||||
, pandas
|
||||
, panel
|
||||
, intake-parquet
|
||||
, pyarrow
|
||||
, pytestCheckHook
|
||||
, pythonOlder
|
||||
, python-snappy
|
||||
, pythonOlder
|
||||
, pyyaml
|
||||
, requests
|
||||
, ruamel_yaml
|
||||
, six
|
||||
, tornado
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "intake";
|
||||
version = "0.6.3";
|
||||
version = "0.6.4";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "f64543353f30d9440b953984f78b7a0954e5756d70c64243609d307ba488014f";
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "194cdd6lx92zcpkn3wgm490kxvw0c58ziix8hcihsr5ayfr1wdsl";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
appdirs
|
||||
bokeh
|
||||
dask
|
||||
entrypoints
|
||||
fsspec
|
||||
holoviews
|
||||
hvplot
|
||||
jinja2
|
||||
msgpack-numpy
|
||||
msgpack
|
||||
msgpack-numpy
|
||||
numpy
|
||||
pandas
|
||||
panel
|
||||
pyarrow
|
||||
python-snappy
|
||||
pyyaml
|
||||
requests
|
||||
ruamel_yaml
|
||||
six
|
||||
tornado
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
fsspec
|
||||
intake-parquet
|
||||
pyarrow
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Is in setup_requires but not used in setup.py...
|
||||
substituteInPlace setup.py --replace "'pytest-runner'" ""
|
||||
substituteInPlace setup.py \
|
||||
--replace "'pytest-runner'" ""
|
||||
'';
|
||||
|
||||
# test_discover requires driver_with_entrypoints-0.1.dist-info, which is not included in tarball
|
||||
@@ -72,7 +76,7 @@ buildPythonPackage rec {
|
||||
'';
|
||||
|
||||
disabledTests = [
|
||||
# disable tests which touch network and are broken
|
||||
# Disable tests which touch network and are broken
|
||||
"test_discover"
|
||||
"test_filtered_compressed_cache"
|
||||
"test_get_dir"
|
||||
@@ -82,6 +86,10 @@ buildPythonPackage rec {
|
||||
"test_remote_arr"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"intake"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Data load and catalog system";
|
||||
homepage = "https://github.com/ContinuumIO/intake";
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{ buildPythonPackage
|
||||
, fetchPypi
|
||||
, lib
|
||||
, opentracing
|
||||
, threadloop
|
||||
, thrift
|
||||
, tornado
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "jaeger-client";
|
||||
version = "4.6.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "3bc27ad77e035efd0899f377a15f180467fec44b2afbf5be0660cc888a2a4ac3";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
threadloop
|
||||
thrift
|
||||
tornado
|
||||
opentracing
|
||||
];
|
||||
|
||||
# FIXME: Missing dependencies: tchannel, opentracing_instrumentation
|
||||
# opentracing_instrumentation: Requires "tornado" lower than 6. Current is 6.1.
|
||||
# https://github.com/uber-common/opentracing-python-instrumentation/pull/115
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "jaeger_client" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Jaeger bindings for Python OpenTracing API";
|
||||
downloadPage = "https://pypi.org/project/jaeger-client/";
|
||||
homepage = "https://github.com/jaegertracing/jaeger-client-python";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ superherointj ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{ lib, buildPythonPackage, fetchPypi
|
||||
, jupyter-packaging
|
||||
, jupyter_server
|
||||
, pytest-tornasync
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "jupyter-server-mathjax";
|
||||
version = "0.2.3";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit version;
|
||||
pname = "jupyter_server_mathjax";
|
||||
sha256 = "564e8d1272019c6771208f577b5f9f2b3afb02b9e2bff3b34c042cef8ed84451";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
jupyter-packaging
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
jupyter_server
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
pytest-tornasync
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "jupyter_server_mathjax" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "MathJax resources as a Jupyter Server Extension";
|
||||
homepage = "http://jupyter.org";
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ jonringer ];
|
||||
};
|
||||
}
|
||||
@@ -8,23 +8,27 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "mypy-boto3-s3";
|
||||
version = "1.19.0";
|
||||
version = "1.19.1";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-VCQmtpoemK91+tkPE6HrdFt3wPYrlPcR0CVn7uo2vp0=";
|
||||
sha256 = "sha256-Ov3JVCYa+3VU26VYtPYcqwSUMdDowSk8GWGt4PX/DKk=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
boto3
|
||||
] ++ lib.optionals (pythonOlder "3.8") [
|
||||
] ++ lib.optionals (pythonOlder "3.9") [
|
||||
typing-extensions
|
||||
];
|
||||
|
||||
# Project has no tests
|
||||
doCheck = false;
|
||||
pythonImportsCheck = [ "mypy_boto3_s3" ];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"mypy_boto3_s3"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Type annotations for boto3";
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
, tornado
|
||||
, requests
|
||||
, GitPython
|
||||
, jupyter-server-mathjax
|
||||
, notebook
|
||||
, jinja2
|
||||
}:
|
||||
@@ -59,6 +60,7 @@ buildPythonPackage rec {
|
||||
py
|
||||
setuptools
|
||||
six
|
||||
jupyter-server-mathjax
|
||||
nbformat
|
||||
colorama
|
||||
pygments
|
||||
|
||||
@@ -1,28 +1,38 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, flake8
|
||||
, nose
|
||||
, fetchFromGitHub
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "param";
|
||||
version = "1.11.1";
|
||||
version = "1.12.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "b9857df01495bd55ddafb214fd1ed017d20699ce42ec2a0fd190d99caa03099f";
|
||||
src = fetchFromGitHub {
|
||||
owner = "holoviz";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "02zmd4bwyn8b4q1l9jgddc70ii1i7bmynacanl1cvbr6la4v9b2c";
|
||||
};
|
||||
|
||||
checkInputs = [ flake8 nose ];
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
# tests not included with pypi release
|
||||
doCheck = false;
|
||||
postPatch = ''
|
||||
# Version is not set properly
|
||||
substituteInPlace setup.py \
|
||||
--replace 'version=get_setup_version("param"),' 'version="${version}",'
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [
|
||||
"param"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Declarative Python programming using Parameters";
|
||||
homepage = "https://github.com/pyviz/param";
|
||||
license = licenses.bsd3;
|
||||
maintainers = [ maintainers.costrouc ];
|
||||
maintainers = with maintainers; [ costrouc ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,25 +1,28 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, fetchFromGitHub
|
||||
, pytestCheckHook
|
||||
, poetry-core
|
||||
, urllib3
|
||||
, requests
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "py-synologydsm-api";
|
||||
version = "1.0.2";
|
||||
version = "1.0.4";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "synologydsm-api";
|
||||
inherit version;
|
||||
sha256 = "42ea453ef5734dd5b8163e3d18ef309658f0298411720e6b834bededd28c5d53";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mib1185";
|
||||
repo = "synologydsm-api";
|
||||
rev = "v${version}";
|
||||
sha256 = "1f9fbcp6dbh1c7q1cpppwggnw4m89w14cjdgl64f1bzv72rggpn1";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ poetry-core ];
|
||||
propagatedBuildInputs = [ urllib3 requests ];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"synology_dsm"
|
||||
];
|
||||
pythonImportsCheck = [ "synology_dsm" ];
|
||||
checkInputs = [ pytestCheckHook ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python API for Synology DSM";
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
, fetchPypi
|
||||
, isPy27
|
||||
, param
|
||||
, pytestCheckHook
|
||||
, pyyaml
|
||||
, requests
|
||||
, pytest
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
@@ -17,22 +17,26 @@ buildPythonPackage rec {
|
||||
sha256 = "23d7525b5a1567535c093aea4b9c33809415aa5f018dd77f6eb738b1226df6f7";
|
||||
};
|
||||
|
||||
doCheck = !isPy27;
|
||||
checkInputs = [ pytest ];
|
||||
propagatedBuildInputs = [
|
||||
param
|
||||
pyyaml
|
||||
requests
|
||||
];
|
||||
|
||||
checkPhase = ''
|
||||
pytest
|
||||
'';
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
doCheck = !isPy27;
|
||||
|
||||
pythonImportsCheck = [
|
||||
"pyct"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Cli for python common tasks for users";
|
||||
description = "ClI for Python common tasks for users";
|
||||
homepage = "https://github.com/pyviz/pyct";
|
||||
license = licenses.bsd3;
|
||||
maintainers = [ maintainers.costrouc ];
|
||||
maintainers = with maintainers; [ costrouc ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, isPy3k
|
||||
, future
|
||||
, pytestCheckHook
|
||||
, mock
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pysmart-smartx";
|
||||
version = "0.3.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "smartxworks";
|
||||
repo = "pySMART";
|
||||
rev = "v${version}";
|
||||
sha256 = "1irl4nlgz3ds3aikraa9928gzn6hz8chfh7jnpmq2q7d2vqbdrjs";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ future ];
|
||||
|
||||
# tests require contextlib.nested
|
||||
doCheck = !isPy3k;
|
||||
|
||||
checkInputs = [ pytestCheckHook mock ];
|
||||
|
||||
pythonImportsCheck = [ "pySMART" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "It's a fork of pySMART with lots of bug fix and enhances";
|
||||
homepage = "https://github.com/smartxworks/pySMART";
|
||||
maintainers = with maintainers; [ rhoriguchi ];
|
||||
license = licenses.gpl2Only;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, smartmontools
|
||||
, humanfriendly
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pysmart";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "truenas";
|
||||
repo = "py-SMART";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-e46ALiYg0Db/gOzqLmVc1vi9ObhfxzqwfQk9/9pz+r0=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pySMART/utils.py \
|
||||
--replace "which('smartctl')" '"${smartmontools}/bin/smartctl"'
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [ humanfriendly ];
|
||||
|
||||
checkInputs = [ pytestCheckHook ];
|
||||
|
||||
pythonImportsCheck = [ "pySMART" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Wrapper for smartctl (smartmontools)";
|
||||
homepage = "https://github.com/truenas/py-SMART";
|
||||
maintainers = with maintainers; [ nyanloutre ];
|
||||
license = licenses.lgpl21Only;
|
||||
};
|
||||
}
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pywizlight";
|
||||
version = "0.4.8";
|
||||
version = "0.4.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sbidy";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0zagdb90bxmf06fzpljhqgsgzg36zc1yhdibacfrx8bmnx3l657h";
|
||||
sha256 = "sha256-XO9KmsC3DXgVcGWr5ss3m2wB8rVboWyQUWBidynhkP8=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "rzpipe";
|
||||
version = "0.1.1";
|
||||
version = "0.1.2";
|
||||
|
||||
disabled = pythonOlder "3.5";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "13z88c4zjy10a1sc98ba25sz200v6w2wprbq4iknm4sy2fmrsydh";
|
||||
sha256 = "sha256-va56xSWDIVtZ88QUzPfk8cCr28+5nZCNcSJMiVj3SZU=";
|
||||
};
|
||||
|
||||
# No native rz_core library
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "schema-salad";
|
||||
version = "8.1.20210721123742";
|
||||
version = "8.2.20210918131710";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "1549555b9b5656cfc690716f04fb76b9fa002feb278638c446522f030632b450";
|
||||
sha256 = "464180407f49a3533cd5a5bc7db9254769bc77595ea00562bbe4a50493f7f445";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
{ buildPythonPackage
|
||||
, fetchPypi
|
||||
, lib
|
||||
, tornado
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "threadloop";
|
||||
version = "1.0.2";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "8b180aac31013de13c2ad5c834819771992d350267bddb854613ae77ef571944";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
tornado
|
||||
];
|
||||
|
||||
doCheck = false; # ImportError: cannot import name 'ThreadLoop' from 'threadloop'
|
||||
|
||||
pythonImportsCheck = [ "threadloop" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A library to run tornado coroutines from synchronous Python";
|
||||
homepage = "https://github.com/GoodPete/threadloop";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ superherointj ];
|
||||
};
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, python
|
||||
, zc_buildout
|
||||
, zc-buildout
|
||||
, zope_testrunner
|
||||
}:
|
||||
|
||||
@@ -16,7 +16,7 @@ buildPythonPackage rec {
|
||||
sha256 = "b45bd22ae01ed60933694fb5abede1ff71fe8ffa79b37082b2fcf38a2f0dec9d";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ zc_buildout ];
|
||||
propagatedBuildInputs = [ zc-buildout ];
|
||||
checkInputs = [ zope_testrunner ];
|
||||
doCheck = !python.pkgs.isPy27;
|
||||
checkPhase = ''
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "zarr";
|
||||
version = "2.10.0";
|
||||
version = "2.10.1";
|
||||
disabled = isPy27;
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "8ca8e505cadb4f7f97aab4e4193bb302b6338bf54593c98fe7581bf574ed864c";
|
||||
sha256 = "29e90114f037d433752b3cf951e4a3cb6c6f67b6501a273439b4be4a824e4caf";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -158,6 +158,38 @@ let
|
||||
in
|
||||
builtins.listToAttrs nameValuePairs;
|
||||
|
||||
# Overrides package definition requiring a home directory to install or to
|
||||
# run tests.
|
||||
# For example,
|
||||
#
|
||||
# overrideRequireHome [
|
||||
# "foo"
|
||||
# ] old
|
||||
#
|
||||
# results in
|
||||
#
|
||||
# {
|
||||
# foo = old.foo.overrideAttrs (oldAttrs: {
|
||||
# preInstall = ''
|
||||
# ${oldAttrs.preInstall or ""}
|
||||
# export HOME=$(mktemp -d)
|
||||
# '';
|
||||
# });
|
||||
# }
|
||||
overrideRequireHome = packageNames: old:
|
||||
let
|
||||
nameValuePairs = map (name: {
|
||||
inherit name;
|
||||
value = (builtins.getAttr name old).overrideAttrs (oldAttrs: {
|
||||
preInstall = ''
|
||||
${oldAttrs.preInstall or ""}
|
||||
export HOME=$(mktemp -d)
|
||||
'';
|
||||
});
|
||||
}) packageNames;
|
||||
in
|
||||
builtins.listToAttrs nameValuePairs;
|
||||
|
||||
# Overrides package definition to skip check.
|
||||
# For example,
|
||||
#
|
||||
@@ -211,13 +243,14 @@ let
|
||||
defaultOverrides = old: new:
|
||||
let old0 = old; in
|
||||
let
|
||||
old1 = old0 // (overrideRequireX packagesRequireingX old0);
|
||||
old2 = old1 // (overrideSkipCheck packagesToSkipCheck old1);
|
||||
old3 = old2 // (overrideRDepends packagesWithRDepends old2);
|
||||
old4 = old3 // (overrideNativeBuildInputs packagesWithNativeBuildInputs old3);
|
||||
old5 = old4 // (overrideBuildInputs packagesWithBuildInputs old4);
|
||||
old6 = old5 // (overrideBroken brokenPackages old5);
|
||||
old = old6;
|
||||
old1 = old0 // (overrideRequireX packagesRequiringX old0);
|
||||
old2 = old1 // (overrideRequireHome packagesRequiringHome old1);
|
||||
old3 = old2 // (overrideSkipCheck packagesToSkipCheck old2);
|
||||
old4 = old3 // (overrideRDepends packagesWithRDepends old3);
|
||||
old5 = old4 // (overrideNativeBuildInputs packagesWithNativeBuildInputs old4);
|
||||
old6 = old5 // (overrideBuildInputs packagesWithBuildInputs old5);
|
||||
old7 = old6 // (overrideBroken brokenPackages old6);
|
||||
old = old7;
|
||||
in old // (otherOverrides old new);
|
||||
|
||||
# Recursive override pattern.
|
||||
@@ -243,14 +276,14 @@ let
|
||||
adimpro = [ pkgs.imagemagick ];
|
||||
animation = [ pkgs.which ];
|
||||
audio = [ pkgs.portaudio ];
|
||||
BayesSAE = [ pkgs.gsl_1 ];
|
||||
BayesVarSel = [ pkgs.gsl_1 ];
|
||||
BayesSAE = [ pkgs.gsl ];
|
||||
BayesVarSel = [ pkgs.gsl ];
|
||||
BayesXsrc = with pkgs; [ readline.dev ncurses ];
|
||||
bigGP = [ pkgs.mpi ];
|
||||
bio3d = [ pkgs.zlib ];
|
||||
BiocCheck = [ pkgs.which ];
|
||||
Biostrings = [ pkgs.zlib ];
|
||||
bnpmr = [ pkgs.gsl_1 ];
|
||||
bnpmr = [ pkgs.gsl ];
|
||||
cairoDevice = [ pkgs.gtk2.dev ];
|
||||
Cairo = with pkgs; [ libtiff libjpeg cairo.dev x11 fontconfig.lib ];
|
||||
Cardinal = [ pkgs.which ];
|
||||
@@ -259,37 +292,39 @@ let
|
||||
curl = [ pkgs.curl.dev ];
|
||||
data_table = [ pkgs.zlib.dev ] ++ lib.optional stdenv.isDarwin pkgs.llvmPackages.openmp;
|
||||
devEMF = with pkgs; [ xorg.libXft.dev x11 ];
|
||||
diversitree = with pkgs; [ gsl_1 fftw ];
|
||||
diversitree = with pkgs; [ gsl fftw ];
|
||||
exactextractr = [ pkgs.geos ];
|
||||
EMCluster = [ pkgs.lapack ];
|
||||
fftw = [ pkgs.fftw.dev ];
|
||||
fftwtools = with pkgs; [ fftw.dev pkg-config ];
|
||||
Formula = [ pkgs.gmp ];
|
||||
gdtools = with pkgs; [ cairo.dev fontconfig.lib freetype.dev ];
|
||||
ggiraph = with pkgs; [ pkgs.libpng.dev ];
|
||||
git2r = with pkgs; [ zlib.dev openssl.dev libssh2.dev libgit2 pkg-config ];
|
||||
GLAD = [ pkgs.gsl_1 ];
|
||||
GLAD = [ pkgs.gsl ];
|
||||
glpkAPI = with pkgs; [ gmp glpk ];
|
||||
gmp = [ pkgs.gmp.dev ];
|
||||
graphscan = [ pkgs.gsl_1 ];
|
||||
gsl = [ pkgs.gsl_1 ];
|
||||
graphscan = [ pkgs.gsl ];
|
||||
gsl = [ pkgs.gsl ];
|
||||
gert = [ pkgs.libgit2 ];
|
||||
haven = with pkgs; [ libiconv zlib.dev ];
|
||||
h5vc = [ pkgs.zlib.dev ];
|
||||
HiCseg = [ pkgs.gsl_1 ];
|
||||
HiCseg = [ pkgs.gsl ];
|
||||
imager = [ pkgs.x11 ];
|
||||
iBMQ = [ pkgs.gsl_1 ];
|
||||
iBMQ = [ pkgs.gsl ];
|
||||
igraph = with pkgs; [ gmp libxml2.dev ];
|
||||
JavaGD = [ pkgs.jdk ];
|
||||
jpeg = [ pkgs.libjpeg.dev ];
|
||||
jqr = [ pkgs.jq.dev ];
|
||||
KFKSDS = [ pkgs.gsl_1 ];
|
||||
KFKSDS = [ pkgs.gsl ];
|
||||
kza = [ pkgs.fftw.dev ];
|
||||
lpsymphony = with pkgs; [ pkg-config gfortran gettext ];
|
||||
lwgeom = with pkgs; [ proj geos gdal ];
|
||||
magick = [ pkgs.imagemagick.dev ];
|
||||
ModelMetrics = lib.optional stdenv.isDarwin pkgs.llvmPackages.openmp;
|
||||
mvabund = [ pkgs.gsl_1 ];
|
||||
mvabund = [ pkgs.gsl ];
|
||||
mwaved = [ pkgs.fftw.dev ];
|
||||
mzR = with pkgs; [ zlib boost159.dev netcdf ];
|
||||
ncdf4 = [ pkgs.netcdf ];
|
||||
nloptr = with pkgs; [ nlopt pkg-config ];
|
||||
n1qn1 = [ pkgs.gfortran ];
|
||||
@@ -311,8 +346,8 @@ let
|
||||
readxl = [ pkgs.libiconv ];
|
||||
rcdd = [ pkgs.gmp.dev ];
|
||||
RcppCNPy = [ pkgs.zlib.dev ];
|
||||
RcppGSL = [ pkgs.gsl_1 ];
|
||||
RcppZiggurat = [ pkgs.gsl_1 ];
|
||||
RcppGSL = [ pkgs.gsl ];
|
||||
RcppZiggurat = [ pkgs.gsl ];
|
||||
reprex = [ pkgs.which ];
|
||||
rgdal = with pkgs; [ proj.dev gdal ];
|
||||
rgeos = [ pkgs.geos ];
|
||||
@@ -324,7 +359,7 @@ let
|
||||
Rhtslib = with pkgs; [ zlib.dev automake autoconf bzip2.dev xz.dev curl.dev ];
|
||||
rjags = [ pkgs.jags ];
|
||||
rJava = with pkgs; [ zlib bzip2.dev icu xz.dev pcre.dev jdk libzip ];
|
||||
Rlibeemd = [ pkgs.gsl_1 ];
|
||||
Rlibeemd = [ pkgs.gsl ];
|
||||
rmatio = [ pkgs.zlib.dev ];
|
||||
Rmpfr = with pkgs; [ gmp mpfr.dev ];
|
||||
Rmpi = [ pkgs.mpi ];
|
||||
@@ -352,12 +387,12 @@ let
|
||||
sf = with pkgs; [ gdal proj geos ];
|
||||
terra = with pkgs; [ gdal proj geos ];
|
||||
showtext = with pkgs; [ zlib libpng icu freetype.dev ];
|
||||
simplexreg = [ pkgs.gsl_1 ];
|
||||
simplexreg = [ pkgs.gsl ];
|
||||
spate = [ pkgs.fftw.dev ];
|
||||
ssanv = [ pkgs.proj ];
|
||||
stsm = [ pkgs.gsl_1 ];
|
||||
stsm = [ pkgs.gsl ];
|
||||
stringi = [ pkgs.icu.dev ];
|
||||
survSNP = [ pkgs.gsl_1 ];
|
||||
survSNP = [ pkgs.gsl ];
|
||||
svglite = [ pkgs.libpng.dev ];
|
||||
sysfonts = with pkgs; [ zlib libpng freetype.dev ];
|
||||
systemfonts = with pkgs; [ fontconfig.dev freetype.dev ];
|
||||
@@ -365,7 +400,7 @@ let
|
||||
tesseract = with pkgs; [ tesseract leptonica ];
|
||||
tiff = [ pkgs.libtiff.dev ];
|
||||
tkrplot = with pkgs; [ xorg.libX11 tk.dev ];
|
||||
topicmodels = [ pkgs.gsl_1 ];
|
||||
topicmodels = [ pkgs.gsl ];
|
||||
udunits2 = with pkgs; [ udunits expat ];
|
||||
units = [ pkgs.udunits ];
|
||||
V8 = [ pkgs.v8 ];
|
||||
@@ -444,7 +479,6 @@ let
|
||||
tikzDevice = with pkgs; [ which texlive.combined.scheme-medium ];
|
||||
gridGraphics = [ pkgs.which ];
|
||||
adimpro = with pkgs; [ which xorg.xdpyinfo ];
|
||||
mzR = [ pkgs.netcdf ];
|
||||
cluster = [ pkgs.libiconv ];
|
||||
KernSmooth = [ pkgs.libiconv ];
|
||||
nlme = [ pkgs.libiconv ];
|
||||
@@ -478,9 +512,12 @@ let
|
||||
Rbowtie = with pkgs; [ zlib.dev ];
|
||||
gaston = with pkgs; [ zlib.dev ];
|
||||
csaw = with pkgs; [ zlib.dev curl ];
|
||||
DirichletMultinomial = with pkgs; [ gsl ];
|
||||
DiffBind = with pkgs; [ zlib.dev ];
|
||||
CNEr = with pkgs; [ zlib ];
|
||||
};
|
||||
|
||||
packagesRequireingX = [
|
||||
packagesRequiringX = [
|
||||
"accrual"
|
||||
"ade4TkGUI"
|
||||
"analogue"
|
||||
@@ -670,6 +707,27 @@ let
|
||||
"x12GUI"
|
||||
];
|
||||
|
||||
packagesRequiringHome = [
|
||||
"aroma_affymetrix"
|
||||
"aroma_cn"
|
||||
"aroma_core"
|
||||
"csodata"
|
||||
"DiceView"
|
||||
"MSnID"
|
||||
"OmnipathR"
|
||||
"precommit"
|
||||
"PSCBS"
|
||||
"repmis"
|
||||
"R_cache"
|
||||
"R_filesets"
|
||||
"RKorAPClient"
|
||||
"R_rsp"
|
||||
"scholar"
|
||||
"stepR"
|
||||
"styler"
|
||||
"TreeTools"
|
||||
];
|
||||
|
||||
packagesToSkipCheck = [
|
||||
"Rmpi" # tries to run MPI processes
|
||||
"pbdMPI" # tries to run MPI processes
|
||||
@@ -678,6 +736,11 @@ let
|
||||
|
||||
# Packages which cannot be installed due to lack of dependencies or other reasons.
|
||||
brokenPackages = [
|
||||
"av"
|
||||
"rgl"
|
||||
"NetLogoR"
|
||||
"proj4"
|
||||
"x13binary"
|
||||
];
|
||||
|
||||
otherOverrides = old: new: {
|
||||
@@ -821,10 +884,6 @@ let
|
||||
PKG_LIBS = "-L${pkgs.blas}/lib -lblas -L${pkgs.lapack}/lib -llapack";
|
||||
});
|
||||
|
||||
EMCluster = old.EMCluster.overrideDerivation (attrs: {
|
||||
patches = [ ./patches/EMCluster.patch ];
|
||||
});
|
||||
|
||||
spMC = old.spMC.overrideDerivation (attrs: {
|
||||
patches = [ ./patches/spMC.patch ];
|
||||
});
|
||||
@@ -972,12 +1031,6 @@ let
|
||||
'';
|
||||
});
|
||||
|
||||
R_cache = old.R_cache.overrideDerivation (attrs: {
|
||||
preConfigure = ''
|
||||
export R_CACHE_ROOTPATH=$TMP
|
||||
'';
|
||||
});
|
||||
|
||||
lpsymphony = old.lpsymphony.overrideDerivation (attrs: {
|
||||
preConfigure = ''
|
||||
patchShebangs configure
|
||||
@@ -992,12 +1045,37 @@ let
|
||||
buildInputs = [ libsodium.dev ] ++ attrs.buildInputs;
|
||||
});
|
||||
|
||||
keyring = old.keyring.overrideDerivation (attrs: {
|
||||
preConfigure = ''
|
||||
patchShebangs configure
|
||||
'';
|
||||
});
|
||||
|
||||
Rhtslib = old.Rhtslib.overrideDerivation (attrs: {
|
||||
preConfigure = ''
|
||||
substituteInPlace R/zzz.R --replace "-lcurl" "-L${pkgs.curl.out}/lib -lcurl"
|
||||
'';
|
||||
});
|
||||
|
||||
MatchIt = old.MatchIt.overrideDerivation (attrs: {
|
||||
patches = [ (pkgs.fetchpatch {
|
||||
url = "https://github.com/kosukeimai/MatchIt/commit/8c15a1afa16b74eb04a45e7e46f8aca64ed89bcb.patch";
|
||||
sha256 = "sha256-3UI60n49xuX6LniHpTLOUSsHCEAQ7f1FMBVH0jNlW60=";
|
||||
}) ];
|
||||
});
|
||||
|
||||
h2o = old.h2o.overrideDerivation (attrs: {
|
||||
preConfigure = ''
|
||||
# prevent download of jar file during install and postpone to first use
|
||||
sed -i '/downloadJar()/d' R/zzz.R
|
||||
|
||||
# during runtime the package directory is not writable as it's in the
|
||||
# nix store, so store the jar in the user's cache directory instead
|
||||
substituteInPlace R/connection.R --replace \
|
||||
'dest_file <- file.path(dest_folder, "h2o.jar")' \
|
||||
'dest_file <- file.path("~/.cache/", "h2o.jar")'
|
||||
'';
|
||||
});
|
||||
};
|
||||
in
|
||||
self
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
diff -ru -x '*~' EMCluster_orig/src/Makevars EMCluster/src/Makevars
|
||||
--- EMCluster_orig/src/Makevars 2013-07-05 02:43:25.000000000 +0900
|
||||
+++ EMCluster/src/Makevars 2014-10-25 18:10:19.190992120 +0900
|
||||
@@ -1 +1 @@
|
||||
-PKG_LIBS = $(FLIBS) $(BLAS_LIBS) $(LAPACK_LIBS)
|
||||
+PKG_LIBS = $(FLIBS) $(LAPACK_LIBS) $(BLAS_LIBS)
|
||||
@@ -6,7 +6,6 @@ let
|
||||
stdenv = pkgs.stdenv;
|
||||
|
||||
rubyVersions = with pkgs; [
|
||||
ruby_2_6
|
||||
ruby_2_7
|
||||
];
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{ stdenv, lib, fetchzip, kernel }:
|
||||
|
||||
/* The python script shouldn't be needed for users of this kernel module.
|
||||
https://github.com/rr-debugger/rr/blob/master/scripts/zen_workaround.py
|
||||
The module itself is called "zen_workaround" (a bit generic unfortunatelly).
|
||||
*/
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rr-zen_workaround";
|
||||
version = "2020-09-22";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://gist.github.com/glandium/01d54cefdb70561b5f6675e08f2990f2/archive/2f430f0c136a69b0886281d0c76708997d8878af.zip";
|
||||
sha256 = "1mbmbyymgl75wparv3rgnyxnc44rd6n935jziz9anl9apy031ryi";
|
||||
};
|
||||
|
||||
hardeningDisable = [ "pic" ];
|
||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||
|
||||
makeFlags = [
|
||||
"-C${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||
];
|
||||
postConfigure = ''
|
||||
makeFlags="$makeFlags M=$(pwd)"
|
||||
'';
|
||||
buildFlags = "modules";
|
||||
|
||||
installPhase = let
|
||||
modDestDir = "$out/lib/modules/${kernel.modDirVersion}/kernel"; #TODO: longer path?
|
||||
in ''
|
||||
runHook preInstall
|
||||
mkdir -p "${modDestDir}"
|
||||
cp *.ko "${modDestDir}/"
|
||||
find ${modDestDir} -name '*.ko' -exec xz -f '{}' \;
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Kernel module supporting the rr debugger on (some) AMD Zen-based CPUs";
|
||||
homepage = "https://github.com/rr-debugger/rr/wiki/Zen#kernel-module";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.vcunat ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "delve";
|
||||
version = "1.7.1";
|
||||
version = "1.7.2";
|
||||
|
||||
goPackagePath = "github.com/go-delve/delve";
|
||||
excludedPackages = "\\(_fixtures\\|scripts\\|service/test\\)";
|
||||
@@ -11,7 +11,7 @@ buildGoPackage rec {
|
||||
owner = "go-delve";
|
||||
repo = "delve";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-dnmV7LZjq86AwLWXfWBGm1pmFM0uipv1FwR6EhV8CZQ=";
|
||||
sha256 = "sha256-Mye8Gh73yQ1fhjVpEOKBQGjdOzgMUqzdNiBjRRTteTg=";
|
||||
};
|
||||
|
||||
subPackages = [ "cmd/dlv" ];
|
||||
@@ -22,12 +22,16 @@ buildGoPackage rec {
|
||||
# fortify source breaks build since delve compiles with -O0
|
||||
wrapProgram $out/bin/dlv \
|
||||
--prefix disableHardening " " fortify
|
||||
|
||||
# add symlink for vscode golang extension
|
||||
# https://github.com/golang/vscode-go/blob/master/docs/debugging.md#manually-installing-dlv-dap
|
||||
ln $out/bin/dlv $out/bin/dlv-dap
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "debugger for the Go programming language";
|
||||
homepage = "https://github.com/derekparker/delve";
|
||||
maintainers = with maintainers; [ vdemeester ];
|
||||
maintainers = with maintainers; [ SuperSandro2000 vdemeester ];
|
||||
license = licenses.mit;
|
||||
platforms = [ "x86_64-linux" ] ++ platforms.darwin;
|
||||
};
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
, godef ? null
|
||||
, gotools ? null
|
||||
, nodePackages ? null
|
||||
, rustracerd ? null
|
||||
, fixDarwinDylibNames, Cocoa ? null
|
||||
}:
|
||||
|
||||
@@ -74,10 +73,6 @@ stdenv.mkDerivation {
|
||||
'' + lib.optionalString (nodePackages != null) ''
|
||||
TARGET=$out/lib/ycmd/third_party/tsserver
|
||||
ln -sf ${nodePackages.typescript} $TARGET
|
||||
'' + lib.optionalString (rustracerd != null) ''
|
||||
TARGET=$out/lib/ycmd/third_party/racerd/target/release
|
||||
mkdir -p $TARGET
|
||||
ln -sf ${rustracerd}/bin/racerd $TARGET
|
||||
'';
|
||||
|
||||
# fixup the argv[0] and replace __file__ with the corresponding path so
|
||||
|
||||
@@ -20,12 +20,12 @@ in
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qtcreator";
|
||||
version = "4.14.0";
|
||||
version = "5.0.2";
|
||||
baseVersion = builtins.concatStringsSep "." (lib.take 2 (builtins.splitVersion version));
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.qt-project.org/official_releases/${pname}/${baseVersion}/${version}/qt-creator-opensource-src-${version}.tar.xz";
|
||||
sha256 = "07i045mzwbfhwj2jlijhz9xs6ay03qs5dgcw2kzlcr79a69i0h6j";
|
||||
sha256 = "1bf07150226da46237f26f5eaa9f090ce81ed79b9bc75e0dfa6328043e360103";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase qtscript qtquickcontrols qtdeclarative elfutils.dev ] ++
|
||||
@@ -75,6 +75,8 @@ mkDerivation rec {
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/applications
|
||||
cp share/applications/org.qt-project.qtcreator.desktop $out/share/applications
|
||||
substituteInPlace $out/share/applications/org.qt-project.qtcreator.desktop \
|
||||
--replace "Exec=qtcreator" "Exec=$out/bin/qtcreator"
|
||||
'';
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
{ lib, stdenv, fetchFromGitHub, fetchpatch, rustPlatform, makeWrapper, Security }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "racerd";
|
||||
version = "unstable-2019-09-02";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jwilm";
|
||||
repo = "racerd";
|
||||
rev = "e3d380b9a1d3f3b67286d60465746bc89fea9098";
|
||||
sha256 = "13jqdvjk4savcl03mrn2vzgdsd7vxv2racqbyavrxp2cm9h6cjln";
|
||||
};
|
||||
|
||||
cargoPatches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/jwilm/racerd/commit/856f3656e160cd2909c5166e962f422c901720ee.patch";
|
||||
sha256 = "1qq2k4bnwjz5qgn7s8yxd090smwn2wvdm8dd1rrlgpln0a5vxkpb";
|
||||
})
|
||||
];
|
||||
|
||||
cargoSha256 = "08zn65c5ivhn2qs02aiixyqwhywrw8kfvs0kgzxdzsipic47n2qq";
|
||||
|
||||
# a nightly compiler is required unless we use this cheat code.
|
||||
RUSTC_BOOTSTRAP=1;
|
||||
|
||||
doCheck = false;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = lib.optional stdenv.isDarwin Security;
|
||||
|
||||
RUST_SRC_PATH = rustPlatform.rustcSrc;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp -p $releaseDir/racerd $out/bin/
|
||||
wrapProgram $out/bin/racerd --set-default RUST_SRC_PATH "$RUST_SRC_PATH"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
broken = true;
|
||||
description = "JSON/HTTP Server based on racer for adding Rust support to editors and IDEs";
|
||||
homepage = "https://github.com/jwilm/racerd";
|
||||
license = licenses.asl20;
|
||||
};
|
||||
}
|
||||
@@ -89,7 +89,9 @@ def generate_our_versions(factorio_versions: FactorioVersionsJSON) -> OurVersion
|
||||
for system in SYSTEMS:
|
||||
for release_type in RELEASE_TYPES:
|
||||
for release_channel in RELEASE_CHANNELS:
|
||||
version = factorio_versions[release_channel.name][release_type.name]
|
||||
version = factorio_versions[release_channel.name].get(release_type.name)
|
||||
if version == None:
|
||||
continue
|
||||
this_release = {
|
||||
"name": f"factorio_{release_type.name}_{system.tar_name}-{version}.tar.xz",
|
||||
"url": f"https://factorio.com/get-download/{version}/{release_type.name}/{system.url_name}",
|
||||
|
||||
@@ -2,56 +2,48 @@
|
||||
"x86_64-linux": {
|
||||
"alpha": {
|
||||
"experimental": {
|
||||
"name": "factorio_alpha_x64-1.1.39.tar.xz",
|
||||
"name": "factorio_alpha_x64-1.1.42.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "1wyvk0niyppg7h9ayfsiy6x309bjwsbgf62nah13aps89jk8n1pc",
|
||||
"sha256": "08h2pxzsk7sigjqnqm1jxya3i9i5g2mgl378gmbp2jcy2mnn4dvm",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.39/alpha/linux64",
|
||||
"version": "1.1.39"
|
||||
"url": "https://factorio.com/get-download/1.1.42/alpha/linux64",
|
||||
"version": "1.1.42"
|
||||
},
|
||||
"stable": {
|
||||
"name": "factorio_alpha_x64-1.1.38.tar.xz",
|
||||
"name": "factorio_alpha_x64-1.1.42.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "0cjhfyz4j06yn08n239ajjjpgykh39hzifhmd0ygr5szw9gdc851",
|
||||
"sha256": "08h2pxzsk7sigjqnqm1jxya3i9i5g2mgl378gmbp2jcy2mnn4dvm",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.38/alpha/linux64",
|
||||
"version": "1.1.38"
|
||||
"url": "https://factorio.com/get-download/1.1.42/alpha/linux64",
|
||||
"version": "1.1.42"
|
||||
}
|
||||
},
|
||||
"demo": {
|
||||
"experimental": {
|
||||
"name": "factorio_demo_x64-1.1.37.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "06qwx9wd3990d3256y9y5qsxa0936076jgwhinmrlvjp9lxwl4ly",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.37/demo/linux64",
|
||||
"version": "1.1.37"
|
||||
},
|
||||
"stable": {
|
||||
"name": "factorio_demo_x64-1.1.38.tar.xz",
|
||||
"name": "factorio_demo_x64-1.1.42.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "0y53w01dyfmavw1yxbjqjiirmvw32bnf9bqz0isnd72dvkg0kziv",
|
||||
"sha256": "155m1ijdbc7szhpdw8f8g82ysd7av9zb6llqq4z96nn834px9m2d",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.38/demo/linux64",
|
||||
"version": "1.1.38"
|
||||
"url": "https://factorio.com/get-download/1.1.42/demo/linux64",
|
||||
"version": "1.1.42"
|
||||
}
|
||||
},
|
||||
"headless": {
|
||||
"experimental": {
|
||||
"name": "factorio_headless_x64-1.1.39.tar.xz",
|
||||
"name": "factorio_headless_x64-1.1.42.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "06figqmyd5bgwhpppziag4hs7x3ixr7wd8186cza3ly57bibha2m",
|
||||
"sha256": "1l217fcjcwfi0g5dilsi703cl0wyxsqdqn422hwdbp2ql839k422",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.39/headless/linux64",
|
||||
"version": "1.1.39"
|
||||
"url": "https://factorio.com/get-download/1.1.42/headless/linux64",
|
||||
"version": "1.1.42"
|
||||
},
|
||||
"stable": {
|
||||
"name": "factorio_headless_x64-1.1.38.tar.xz",
|
||||
"name": "factorio_headless_x64-1.1.42.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "1c929pa9ifz0cvmx9k5yd267hjd5p7fdbln0czl3dq1vlskk1w71",
|
||||
"sha256": "1l217fcjcwfi0g5dilsi703cl0wyxsqdqn422hwdbp2ql839k422",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/1.1.38/headless/linux64",
|
||||
"version": "1.1.38"
|
||||
"url": "https://factorio.com/get-download/1.1.42/headless/linux64",
|
||||
"version": "1.1.42"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,6 +94,7 @@ mapAliases (with prev; {
|
||||
neosnippet = neosnippet-vim;
|
||||
The_NERD_Commenter = nerdcommenter;
|
||||
The_NERD_tree = nerdtree;
|
||||
onedark-nvim = onedarkpro-nvim; # added 2021-10-22
|
||||
open-browser = open-browser-vim;
|
||||
pathogen = vim-pathogen;
|
||||
polyglot = vim-polyglot;
|
||||
|
||||
+209
-209
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user