Merge staging-next into staging
This commit is contained in:
commit
4524f4b5ee
@ -10178,6 +10178,16 @@
|
||||
fingerprint = "5D69 CF04 B7BC 2BC1 A567 9267 00BC F29B 3208 0700";
|
||||
}];
|
||||
};
|
||||
phfroidmont = {
|
||||
name = "Paul-Henri Froidmont";
|
||||
email = "nix.contact-j9dw4d@froidmont.org";
|
||||
|
||||
github = "phfroidmont";
|
||||
githubId = 8150907;
|
||||
keys = [{
|
||||
fingerprint = "3AC6 F170 F011 33CE 393B CD94 BE94 8AFD 7E78 73BE";
|
||||
}];
|
||||
};
|
||||
philandstuff = {
|
||||
email = "philip.g.potter@gmail.com";
|
||||
github = "philandstuff";
|
||||
|
@ -191,6 +191,14 @@
|
||||
<link linkend="opt-services.tempo.enable">services.tempo</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://github.com/zalando/patroni">Patroni</link>,
|
||||
a template for PostgreSQL HA with ZooKeeper, etcd or Consul.
|
||||
Available as
|
||||
<link xlink:href="options.html#opt-services.patroni.enable">services.patroni</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="sec-release-22.11-incompatibilities">
|
||||
|
@ -75,6 +75,9 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- [Grafana Tempo](https://www.grafana.com/oss/tempo/), a distributed tracing store. Available as [services.tempo](#opt-services.tempo.enable).
|
||||
|
||||
- [Patroni](https://github.com/zalando/patroni), a template for PostgreSQL HA with ZooKeeper, etcd or Consul.
|
||||
Available as [services.patroni](options.html#opt-services.patroni.enable).
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
## Backward Incompatibilities {#sec-release-22.11-incompatibilities}
|
||||
|
@ -329,6 +329,7 @@
|
||||
./services/cluster/kubernetes/proxy.nix
|
||||
./services/cluster/kubernetes/scheduler.nix
|
||||
./services/cluster/pacemaker/default.nix
|
||||
./services/cluster/patroni/default.nix
|
||||
./services/cluster/spark/default.nix
|
||||
./services/computing/boinc/client.nix
|
||||
./services/computing/foldingathome/client.nix
|
||||
|
268
nixos/modules/services/cluster/patroni/default.nix
Normal file
268
nixos/modules/services/cluster/patroni/default.nix
Normal file
@ -0,0 +1,268 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.patroni;
|
||||
defaultUser = "patroni";
|
||||
defaultGroup = "patroni";
|
||||
format = pkgs.formats.yaml { };
|
||||
|
||||
#boto doesn't support python 3.10 yet
|
||||
patroni = pkgs.patroni.override { pythonPackages = pkgs.python39Packages; };
|
||||
|
||||
configFileName = "patroni-${cfg.scope}-${cfg.name}.yaml";
|
||||
configFile = format.generate configFileName cfg.settings;
|
||||
in
|
||||
{
|
||||
options.services.patroni = {
|
||||
|
||||
enable = mkEnableOption "Patroni";
|
||||
|
||||
postgresqlPackage = mkOption {
|
||||
type = types.package;
|
||||
example = literalExpression "pkgs.postgresql_14";
|
||||
description = mdDoc ''
|
||||
PostgreSQL package to use.
|
||||
Plugins can be enabled like this `pkgs.postgresql_14.withPackages (p: [ p.pg_safeupdate p.postgis ])`.
|
||||
'';
|
||||
};
|
||||
|
||||
postgresqlDataDir = mkOption {
|
||||
type = types.path;
|
||||
defaultText = literalExpression ''"/var/lib/postgresql/''${config.services.patroni.postgresqlPackage.psqlSchema}"'';
|
||||
example = "/var/lib/postgresql/14";
|
||||
default = "/var/lib/postgresql/${cfg.postgresqlPackage.psqlSchema}";
|
||||
description = mdDoc ''
|
||||
The data directory for PostgreSQL. If left as the default value
|
||||
this directory will automatically be created before the PostgreSQL server starts, otherwise
|
||||
the sysadmin is responsible for ensuring the directory exists with appropriate ownership
|
||||
and permissions.
|
||||
'';
|
||||
};
|
||||
|
||||
postgresqlPort = mkOption {
|
||||
type = types.port;
|
||||
default = 5432;
|
||||
description = mdDoc ''
|
||||
The port on which PostgreSQL listens.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = defaultUser;
|
||||
example = "postgres";
|
||||
description = mdDoc ''
|
||||
The user for the service. If left as the default value this user will automatically be created,
|
||||
otherwise the sysadmin is responsible for ensuring the user exists.
|
||||
'';
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = defaultGroup;
|
||||
example = "postgres";
|
||||
description = mdDoc ''
|
||||
The group for the service. If left as the default value this group will automatically be created,
|
||||
otherwise the sysadmin is responsible for ensuring the group exists.
|
||||
'';
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/patroni";
|
||||
description = mdDoc ''
|
||||
Folder where Patroni data will be written, used by Raft as well if enabled.
|
||||
'';
|
||||
};
|
||||
|
||||
scope = mkOption {
|
||||
type = types.str;
|
||||
example = "cluster1";
|
||||
description = mdDoc ''
|
||||
Cluster name.
|
||||
'';
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
example = "node1";
|
||||
description = mdDoc ''
|
||||
The name of the host. Must be unique for the cluster.
|
||||
'';
|
||||
};
|
||||
|
||||
namespace = mkOption {
|
||||
type = types.str;
|
||||
default = "/service";
|
||||
description = mdDoc ''
|
||||
Path within the configuration store where Patroni will keep information about the cluster.
|
||||
'';
|
||||
};
|
||||
|
||||
nodeIp = mkOption {
|
||||
type = types.str;
|
||||
example = "192.168.1.1";
|
||||
description = mdDoc ''
|
||||
IP address of this node.
|
||||
'';
|
||||
};
|
||||
|
||||
otherNodesIps = mkOption {
|
||||
type = types.listOf types.string;
|
||||
example = [ "192.168.1.2" "192.168.1.3" ];
|
||||
description = mdDoc ''
|
||||
IP addresses of the other nodes.
|
||||
'';
|
||||
};
|
||||
|
||||
restApiPort = mkOption {
|
||||
type = types.port;
|
||||
default = 8008;
|
||||
description = mdDoc ''
|
||||
The port on Patroni's REST api listens.
|
||||
'';
|
||||
};
|
||||
|
||||
raft = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
This will configure Patroni to use its own RAFT implementation instead of using a dedicated DCS.
|
||||
'';
|
||||
};
|
||||
|
||||
raftPort = mkOption {
|
||||
type = types.port;
|
||||
default = 5010;
|
||||
description = mdDoc ''
|
||||
The port on which RAFT listens.
|
||||
'';
|
||||
};
|
||||
|
||||
softwareWatchdog = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
This will configure Patroni to use the software watchdog built into the Linux kernel
|
||||
as described in the [documentation](https://patroni.readthedocs.io/en/latest/watchdog.html#setting-up-software-watchdog-on-linux).
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = format.type;
|
||||
default = { };
|
||||
description = mdDoc ''
|
||||
The primary patroni configuration. See the [documentation](https://patroni.readthedocs.io/en/latest/SETTINGS.html)
|
||||
for possible values.
|
||||
Secrets should be passed in by using the `environmentFiles` option.
|
||||
'';
|
||||
};
|
||||
|
||||
environmentFiles = mkOption {
|
||||
type = with types; attrsOf (nullOr (oneOf [ str path package ]));
|
||||
default = { };
|
||||
example = {
|
||||
PATRONI_REPLICATION_PASSWORD = "/secret/file";
|
||||
PATRONI_SUPERUSER_PASSWORD = "/secret/file";
|
||||
};
|
||||
description = mdDoc "Environment variables made available to Patroni as files content, useful for providing secrets from files.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.patroni.settings = {
|
||||
scope = cfg.scope;
|
||||
name = cfg.name;
|
||||
namespace = cfg.namespace;
|
||||
|
||||
restapi = {
|
||||
listen = "${cfg.nodeIp}:${toString cfg.restApiPort}";
|
||||
connect_address = "${cfg.nodeIp}:${toString cfg.restApiPort}";
|
||||
};
|
||||
|
||||
raft = mkIf cfg.raft {
|
||||
data_dir = "${cfg.dataDir}/raft";
|
||||
self_addr = "${cfg.nodeIp}:5010";
|
||||
partner_addrs = map (ip: ip + ":5010") cfg.otherNodesIps;
|
||||
};
|
||||
|
||||
postgresql = {
|
||||
listen = "${cfg.nodeIp}:${toString cfg.postgresqlPort}";
|
||||
connect_address = "${cfg.nodeIp}:${toString cfg.postgresqlPort}";
|
||||
data_dir = cfg.postgresqlDataDir;
|
||||
bin_dir = "${cfg.postgresqlPackage}/bin";
|
||||
pgpass = "${cfg.dataDir}/pgpass";
|
||||
};
|
||||
|
||||
watchdog = mkIf cfg.softwareWatchdog {
|
||||
mode = "required";
|
||||
device = "/dev/watchdog";
|
||||
safety_margin = 5;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
users = {
|
||||
users = mkIf (cfg.user == defaultUser) {
|
||||
patroni = {
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
groups = mkIf (cfg.group == defaultGroup) {
|
||||
patroni = { };
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services = {
|
||||
patroni = {
|
||||
description = "Runners to orchestrate a high-availability PostgreSQL";
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
script = ''
|
||||
${concatStringsSep "\n" (attrValues (mapAttrs (name: path: ''export ${name}="$(< ${escapeShellArg path})"'') cfg.environmentFiles))}
|
||||
exec ${patroni}/bin/patroni ${configFile}
|
||||
'';
|
||||
|
||||
serviceConfig = mkMerge [
|
||||
{
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
Type = "simple";
|
||||
Restart = "on-failure";
|
||||
TimeoutSec = 30;
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -s HUP $MAINPID";
|
||||
KillMode = "process";
|
||||
}
|
||||
(mkIf (cfg.postgresqlDataDir == "/var/lib/postgresql/${cfg.postgresqlPackage.psqlSchema}" && cfg.dataDir == "/var/lib/patroni") {
|
||||
StateDirectory = "patroni patroni/raft postgresql postgresql/${cfg.postgresqlPackage.psqlSchema}";
|
||||
StateDirectoryMode = "0750";
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
boot.kernelModules = mkIf cfg.softwareWatchdog [ "softdog" ];
|
||||
|
||||
services.udev.extraRules = mkIf cfg.softwareWatchdog ''
|
||||
KERNEL=="watchdog", OWNER="${cfg.user}", GROUP="${cfg.group}", MODE="0600"
|
||||
'';
|
||||
|
||||
environment.systemPackages = [
|
||||
patroni
|
||||
cfg.postgresqlPackage
|
||||
(mkIf cfg.raft pkgs.python310Packages.pysyncobj)
|
||||
];
|
||||
|
||||
environment.etc."${configFileName}".source = configFile;
|
||||
|
||||
environment.sessionVariables = {
|
||||
PATRONICTL_CONFIG_FILE = "/etc/${configFileName}";
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = [ maintainers.phfroidmont ];
|
||||
}
|
@ -10,6 +10,7 @@
|
||||
},
|
||||
"context.spa-libs": {
|
||||
"audio.convert.*": "audioconvert/libspa-audioconvert",
|
||||
"avb.*": "avb/libspa-avb",
|
||||
"api.alsa.*": "alsa/libspa-alsa",
|
||||
"api.v4l2.*": "v4l2/libspa-v4l2",
|
||||
"api.libcamera.*": "libcamera/libspa-libcamera",
|
||||
|
@ -45,7 +45,7 @@ in {
|
||||
services = {
|
||||
|
||||
tuptime = {
|
||||
description = "the total uptime service";
|
||||
description = "The total uptime service";
|
||||
documentation = [ "man:tuptime(1)" ];
|
||||
after = [ "time-sync.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
@ -59,10 +59,9 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
tuptime-oneshot = mkIf cfg.timer.enable {
|
||||
description = "the tuptime scheduled execution unit";
|
||||
tuptime-sync = mkIf cfg.timer.enable {
|
||||
description = "Tuptime scheduled sync service";
|
||||
serviceConfig = {
|
||||
StateDirectory = "tuptime";
|
||||
Type = "oneshot";
|
||||
User = "_tuptime";
|
||||
ExecStart = "${pkgs.tuptime}/bin/tuptime -x";
|
||||
@ -70,8 +69,8 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
timers.tuptime = mkIf cfg.timer.enable {
|
||||
description = "the tuptime scheduled execution timer";
|
||||
timers.tuptime-sync = mkIf cfg.timer.enable {
|
||||
description = "Tuptime scheduled sync timer";
|
||||
# this timer should be started if the service is started
|
||||
# even if the timer was previously stopped
|
||||
wantedBy = [ "tuptime.service" "timers.target" ];
|
||||
@ -80,7 +79,7 @@ in {
|
||||
timerConfig = {
|
||||
OnBootSec = "1min";
|
||||
OnCalendar = cfg.timer.period;
|
||||
Unit = "tuptime-oneshot.service";
|
||||
Unit = "tuptime-sync.service";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -417,6 +417,7 @@ in {
|
||||
pam-u2f = handleTest ./pam/pam-u2f.nix {};
|
||||
pam-ussh = handleTest ./pam/pam-ussh.nix {};
|
||||
pass-secret-service = handleTest ./pass-secret-service.nix {};
|
||||
patroni = handleTest ./patroni.nix {};
|
||||
pantalaimon = handleTest ./matrix/pantalaimon.nix {};
|
||||
pantheon = handleTest ./pantheon.nix {};
|
||||
paperless = handleTest ./paperless.nix {};
|
||||
|
204
nixos/tests/patroni.nix
Normal file
204
nixos/tests/patroni.nix
Normal file
@ -0,0 +1,204 @@
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
nodesIps = [
|
||||
"192.168.1.1"
|
||||
"192.168.1.2"
|
||||
"192.168.1.3"
|
||||
];
|
||||
|
||||
createNode = index: { pkgs, ... }:
|
||||
let
|
||||
ip = builtins.elemAt nodesIps index; # since we already use IPs to identify servers
|
||||
in
|
||||
{
|
||||
networking.interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = ip; prefixLength = 16; }
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 5432 8008 5010 ];
|
||||
|
||||
environment.systemPackages = [ pkgs.jq ];
|
||||
|
||||
services.patroni = {
|
||||
|
||||
enable = true;
|
||||
|
||||
postgresqlPackage = pkgs.postgresql_14.withPackages (p: [ p.pg_safeupdate ]);
|
||||
|
||||
scope = "cluster1";
|
||||
name = "node${toString(index + 1)}";
|
||||
nodeIp = ip;
|
||||
otherNodesIps = builtins.filter (h: h != ip) nodesIps;
|
||||
softwareWatchdog = true;
|
||||
|
||||
settings = {
|
||||
bootstrap = {
|
||||
dcs = {
|
||||
ttl = 30;
|
||||
loop_wait = 10;
|
||||
retry_timeout = 10;
|
||||
maximum_lag_on_failover = 1048576;
|
||||
};
|
||||
initdb = [
|
||||
{ encoding = "UTF8"; }
|
||||
"data-checksums"
|
||||
];
|
||||
};
|
||||
|
||||
postgresql = {
|
||||
use_pg_rewind = true;
|
||||
use_slots = true;
|
||||
authentication = {
|
||||
replication = {
|
||||
username = "replicator";
|
||||
};
|
||||
superuser = {
|
||||
username = "postgres";
|
||||
};
|
||||
rewind = {
|
||||
username = "rewind";
|
||||
};
|
||||
};
|
||||
parameters = {
|
||||
listen_addresses = "${ip}";
|
||||
wal_level = "replica";
|
||||
hot_standby_feedback = "on";
|
||||
unix_socket_directories = "/tmp";
|
||||
};
|
||||
pg_hba = [
|
||||
"host replication replicator 192.168.1.0/24 md5"
|
||||
# Unsafe, do not use for anything other than tests
|
||||
"host all all 0.0.0.0/0 trust"
|
||||
];
|
||||
};
|
||||
|
||||
etcd3 = {
|
||||
host = "192.168.1.4:2379";
|
||||
};
|
||||
};
|
||||
|
||||
environmentFiles = {
|
||||
PATRONI_REPLICATION_PASSWORD = pkgs.writeText "replication-password" "postgres";
|
||||
PATRONI_SUPERUSER_PASSWORD = pkgs.writeText "superuser-password" "postgres";
|
||||
PATRONI_REWIND_PASSWORD = pkgs.writeText "rewind-password" "postgres";
|
||||
};
|
||||
};
|
||||
|
||||
# We always want to restart so the tests never hang
|
||||
systemd.services.patroni.serviceConfig.StartLimitIntervalSec = 0;
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "patroni";
|
||||
|
||||
nodes = {
|
||||
node1 = createNode 0;
|
||||
node2 = createNode 1;
|
||||
node3 = createNode 2;
|
||||
|
||||
etcd = { pkgs, ... }: {
|
||||
|
||||
networking.interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = "192.168.1.4"; prefixLength = 16; }
|
||||
];
|
||||
|
||||
services.etcd = {
|
||||
enable = true;
|
||||
listenClientUrls = [ "http://192.168.1.4:2379" ];
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 2379 ];
|
||||
};
|
||||
|
||||
client = { pkgs, ... }: {
|
||||
environment.systemPackages = [ pkgs.postgresql_14 ];
|
||||
|
||||
networking.interfaces.eth1.ipv4.addresses = pkgs.lib.mkOverride 0 [
|
||||
{ address = "192.168.2.1"; prefixLength = 16; }
|
||||
];
|
||||
|
||||
services.haproxy = {
|
||||
enable = true;
|
||||
config = ''
|
||||
global
|
||||
maxconn 100
|
||||
|
||||
defaults
|
||||
log global
|
||||
mode tcp
|
||||
retries 2
|
||||
timeout client 30m
|
||||
timeout connect 4s
|
||||
timeout server 30m
|
||||
timeout check 5s
|
||||
|
||||
listen cluster1
|
||||
bind 127.0.0.1:5432
|
||||
option httpchk
|
||||
http-check expect status 200
|
||||
default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
|
||||
${builtins.concatStringsSep "\n" (map (ip: "server postgresql_${ip}_5432 ${ip}:5432 maxconn 100 check port 8008") nodesIps)}
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
testScript = ''
|
||||
nodes = [node1, node2, node3]
|
||||
|
||||
def wait_for_all_nodes_ready(expected_replicas=2):
|
||||
booted_nodes = filter(lambda node: node.booted, nodes)
|
||||
for node in booted_nodes:
|
||||
print(node.succeed("patronictl list cluster1"))
|
||||
node.wait_until_succeeds(f"[ $(patronictl list -f json cluster1 | jq 'length') == {expected_replicas + 1} ]")
|
||||
node.wait_until_succeeds("[ $(patronictl list -f json cluster1 | jq 'map(select(.Role | test(\"^Leader$\"))) | map(select(.State | test(\"^running$\"))) | length') == 1 ]")
|
||||
node.wait_until_succeeds(f"[ $(patronictl list -f json cluster1 | jq 'map(select(.Role | test(\"^Replica$\"))) | map(select(.State | test(\"^running$\"))) | length') == {expected_replicas} ]")
|
||||
print(node.succeed("patronictl list cluster1"))
|
||||
client.wait_until_succeeds("psql -h 127.0.0.1 -U postgres --command='select 1;'")
|
||||
|
||||
def run_dummy_queries():
|
||||
client.succeed("psql -h 127.0.0.1 -U postgres --pset='pager=off' --tuples-only --command='insert into dummy(val) values (101);'")
|
||||
client.succeed("test $(psql -h 127.0.0.1 -U postgres --pset='pager=off' --tuples-only --command='select val from dummy where val = 101;') -eq 101")
|
||||
client.succeed("psql -h 127.0.0.1 -U postgres --pset='pager=off' --tuples-only --command='delete from dummy where val = 101;'")
|
||||
|
||||
start_all()
|
||||
|
||||
with subtest("should bootstrap a new patroni cluster"):
|
||||
wait_for_all_nodes_ready()
|
||||
|
||||
with subtest("should be able to insert and select"):
|
||||
client.succeed("psql -h 127.0.0.1 -U postgres --command='create table dummy as select * from generate_series(1, 100) as val;'")
|
||||
client.succeed("test $(psql -h 127.0.0.1 -U postgres --pset='pager=off' --tuples-only --command='select count(distinct val) from dummy;') -eq 100")
|
||||
|
||||
with subtest("should restart after all nodes are crashed"):
|
||||
for node in nodes:
|
||||
node.crash()
|
||||
for node in nodes:
|
||||
node.start()
|
||||
wait_for_all_nodes_ready()
|
||||
|
||||
with subtest("should be able to run queries while any one node is crashed"):
|
||||
masterNodeName = node1.succeed("patronictl list -f json cluster1 | jq '.[] | select(.Role | test(\"^Leader$\")) | .Member' -r").strip()
|
||||
masterNodeIndex = int(masterNodeName[len(masterNodeName)-1]) - 1
|
||||
|
||||
# Move master node at the end of the list to avoid multiple failovers (makes the test faster and more consistent)
|
||||
nodes.append(nodes.pop(masterNodeIndex))
|
||||
|
||||
for node in nodes:
|
||||
node.crash()
|
||||
wait_for_all_nodes_ready(1)
|
||||
|
||||
# Execute some queries while a node is down.
|
||||
run_dummy_queries()
|
||||
|
||||
# Restart crashed node.
|
||||
node.start()
|
||||
wait_for_all_nodes_ready()
|
||||
|
||||
# Execute some queries with the node back up.
|
||||
run_dummy_queries()
|
||||
'';
|
||||
})
|
@ -47,7 +47,9 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
with subtest("Adding an example zone works"):
|
||||
# Extract configuration file needed by pdnsutil
|
||||
unit = server.succeed("systemctl cat pdns")
|
||||
conf = re.search("(--config-dir=[^ ]+)", unit).group(1)
|
||||
match = re.search("(--config-dir=[^ ]+)", unit)
|
||||
assert(match is not None)
|
||||
conf = match.group(1)
|
||||
pdnsutil = "sudo -u pdns pdnsutil " + conf
|
||||
server.succeed(f"{pdnsutil} create-zone example.com ns1.example.com")
|
||||
server.succeed(f"{pdnsutil} add-record example.com ns1 A 192.168.1.2")
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dcw-gmt";
|
||||
version = "2.1.0";
|
||||
version = "2.1.1";
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.soest.hawaii.edu/gmt/dcw-gmt-${version}.tar.gz";
|
||||
sha256 = "sha256-6BBWfNR01a+dhHUZOKy0R6hhI5HtZhkNYNeJl0ofnik=";
|
||||
sha256 = "sha256-q3LIJTB2OAyEd6EiU3C8QfSv+BHCjS9k11BS/z2QA68=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
@ -27,6 +27,9 @@ rustPlatform.buildRustPackage rec {
|
||||
checkFlags = [
|
||||
# fails in the sandbox
|
||||
"--skip=file_list::tests"
|
||||
|
||||
# sometimes fails on darwin
|
||||
"image_list::tests::save_current_image_overwrites_image_at_current_image_path_when_filename_is_set_to_none"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
|
@ -3,20 +3,20 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "cura";
|
||||
version = "4.12.1";
|
||||
version = "4.13.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Ultimaker";
|
||||
repo = "Cura";
|
||||
rev = version;
|
||||
sha256 = "sha256-QvX9o1nrYmY6zzPcxl+xD6JTMdphzT/is1SMYrISu4o=";
|
||||
sha256 = "sha256-R88SdAxx3tkQCDInrFTKad1tPSDTSYaVAPUVmdk94Xk=";
|
||||
};
|
||||
|
||||
materials = fetchFromGitHub {
|
||||
owner = "Ultimaker";
|
||||
repo = "fdm_materials";
|
||||
rev = version;
|
||||
sha256 = "0ykf14j4yx4cf12qw0d4bff9ixrx96m6wxqvi83sn721y7dsd2rs";
|
||||
rev = "4.13.2";
|
||||
sha256 = "sha256-7y4OcbeQHv+loJ4cMgPU0e818Zsv90EwARdztNWS8zM=";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase qtquickcontrols2 qtgraphicaleffects ];
|
||||
|
@ -54,14 +54,14 @@ let
|
||||
self: super: {
|
||||
octoprint-pisupport = self.buildPythonPackage rec {
|
||||
pname = "OctoPrint-PiSupport";
|
||||
version = "2022.3.28";
|
||||
version = "2022.6.13";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OctoPrint";
|
||||
repo = "OctoPrint-PiSupport";
|
||||
rev = version;
|
||||
sha256 = "yzE/jz604nX/CHcW3aa7goH1ey8qZ7rLw31SMfNKJZM=";
|
||||
sha256 = "sha256-3z5Btl287W3j+L+MQG8FOWt21smML0vpmu9BP48B9A0=";
|
||||
};
|
||||
|
||||
# requires octoprint itself during tests
|
||||
@ -74,13 +74,13 @@ let
|
||||
self: super: {
|
||||
octoprint = self.buildPythonPackage rec {
|
||||
pname = "OctoPrint";
|
||||
version = "1.8.1";
|
||||
version = "1.8.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OctoPrint";
|
||||
repo = "OctoPrint";
|
||||
rev = version;
|
||||
sha256 = "sha256-9phB9B8y3ay1Bsvf/m/E9xdl7vmQur4qbWOw9v6KFak=";
|
||||
sha256 = "sha256-uJuGeDS4TnGH1r+6oHtcJDZVGM7hDmkJpB35B1JtqQ0=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with super; [
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ stdenv
|
||||
, cmake
|
||||
, curl
|
||||
, fetchFromGitHub
|
||||
, gss
|
||||
, hwloc
|
||||
@ -14,18 +15,18 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "p2pool";
|
||||
version = "2.1";
|
||||
version = "2.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SChernykh";
|
||||
repo = "p2pool";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-cpBMzYLcU93GXYkBhUdoRovjQ2hd1+pAt6d9aAOaZT8=";
|
||||
sha256 = "sha256-iDswjKDGii1OnMmdhiisbwuWjs7omNOF+tubJLs69qY=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
buildInputs = [ libuv zeromq libsodium gss hwloc openssl ];
|
||||
buildInputs = [ libuv zeromq libsodium gss hwloc openssl curl ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
@ -19,9 +19,9 @@
|
||||
}
|
||||
},
|
||||
"beta": {
|
||||
"version": "105.0.5195.19",
|
||||
"sha256": "08wap1v2qjx8nzd8sbiv24vx0vdc2dhlzrlv3g4zpm2qj7l4mki7",
|
||||
"sha256bin64": "15rhslgq77wiwiycf6m89vi3f5vry286b7kqfk0v5ibmcsf6clgf",
|
||||
"version": "105.0.5195.28",
|
||||
"sha256": "14hy1f59ypsvqmrp0k4kv5cfcw48dizw4nkmigaxxv4bnmpwlcy1",
|
||||
"sha256bin64": "0rgv1r94z91khzwmf1scnnsz9yqks6ygicl7bdsdbckw69njq91z",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2022-07-11",
|
||||
@ -32,15 +32,15 @@
|
||||
}
|
||||
},
|
||||
"dev": {
|
||||
"version": "106.0.5216.6",
|
||||
"sha256": "1mgdzm5iw0ml9w68wszcscw0d3l2rlsanhznyz2ll2qv412wxgci",
|
||||
"sha256bin64": "02kj2swqfvcvn27x22i98g7r0fj4p20bqcabagigxs1bhxw56akc",
|
||||
"version": "106.0.5231.2",
|
||||
"sha256": "0cygann80jmc2vk83kpc7kprhw75yf7qqfi1208ksyp6m94cxnp6",
|
||||
"sha256bin64": "1p7hq5vsmwgkyjam7blm1gxa246dg5plhk2f0vbvlnycwj54cvjm",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2022-07-11",
|
||||
"version": "2022-08-08",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "9ef321772ecc161937db69acb346397e0ccc484d",
|
||||
"sha256": "0j85kgf8c1psys6kfsq5mph8n80hcbzhr7d2blqiiysmjj0wc6ng"
|
||||
"rev": "3d773bba0927e67eae8fdaee5e28b0f6203d3bee",
|
||||
"sha256": "1pfv6iq04r5lbg5b6xa6d5vn6mzyqksmspris7cgq5lihwq825ld"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
94
pkgs/applications/networking/browsers/ladybird/default.nix
Normal file
94
pkgs/applications/networking/browsers/ladybird/default.nix
Normal file
@ -0,0 +1,94 @@
|
||||
{ lib
|
||||
, gcc11Stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, ninja
|
||||
, unzip
|
||||
, wrapQtAppsHook
|
||||
, makeWrapper
|
||||
, qtbase
|
||||
, qttools
|
||||
}:
|
||||
|
||||
let serenity = fetchFromGitHub {
|
||||
owner = "SerenityOS";
|
||||
repo = "serenity";
|
||||
rev = "094ba6525f0217f3b8d5e467cef326caeb659e8a";
|
||||
hash = "sha256-IHXe2Td9iRSL1oQVwL2gZHxEM2ID4SghZwK6ewjFV1Y=";
|
||||
};
|
||||
|
||||
in gcc11Stdenv.mkDerivation {
|
||||
pname = "ladybird";
|
||||
version = "unstable-2022-07-20";
|
||||
|
||||
# Remember to update `serenity` too!
|
||||
src = fetchFromGitHub {
|
||||
owner = "awesomekling";
|
||||
repo = "ladybird";
|
||||
rev = "9e3a1f47d484cee6f23c4dae6c51750af155a8fc";
|
||||
hash = "sha256-1cPWpPvjM/VcVUEf2k+MvGvTgZ3Fc4LFHZCLh1wU78Y=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
unzip
|
||||
wrapQtAppsHook
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DSERENITY_SOURCE_DIR=${serenity}"
|
||||
# Disable network operations
|
||||
"-DENABLE_TIME_ZONE_DATABASE_DOWNLOAD=false"
|
||||
"-DENABLE_UNICODE_DATABASE_DOWNLOAD=false"
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = [ "-Wno-error" ];
|
||||
|
||||
# Upstream install rules are missing
|
||||
# https://github.com/awesomekling/ladybird/issues/36
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -Dm755 ladybird $out/bin/ladybird
|
||||
mkdir -p $out/lib/ladybird
|
||||
cp -d _deps/lagom-build/*.so* $out/lib/ladybird/
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# Patch rpaths
|
||||
# https://github.com/awesomekling/ladybird/issues/36
|
||||
preFixup = ''
|
||||
for f in $out/bin/ladybird $out/lib/ladybird/*.so; do
|
||||
old_rpath=$(patchelf --print-rpath "$f")
|
||||
# Remove reference to libraries from build directory
|
||||
rpath_without_build=$(sed -e 's@[^:]*/_deps/lagom-build:@@g' <<< $old_rpath)
|
||||
# Add directory where we install those libraries
|
||||
new_rpath=$out/lib/ladybird:$rpath_without_build
|
||||
patchelf --set-rpath "$new_rpath" "$f"
|
||||
done
|
||||
'';
|
||||
|
||||
# According to the readme, the program needs access to the serenity sources
|
||||
# at runtime
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/ladybird --set SERENITY_SOURCE_DIR "${serenity}"
|
||||
'';
|
||||
|
||||
# Stripping results in a symbol lookup error
|
||||
dontStrip = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A browser using the SerenityOS LibWeb engine with a Qt GUI";
|
||||
homepage = "https://github.com/awesomekling/ladybird";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ fgaz ];
|
||||
# SerenityOS only works on x86, and can only be built on unix systems.
|
||||
# We also use patchelf in preFixup, so we restrict that to linux only.
|
||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||
};
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "machine";
|
||||
version = "0.16.1";
|
||||
version = "0.16.2";
|
||||
|
||||
goPackagePath = "github.com/docker/machine";
|
||||
|
||||
@ -11,7 +11,7 @@ buildGoPackage rec {
|
||||
rev = "v${version}";
|
||||
owner = "docker";
|
||||
repo = "machine";
|
||||
sha256 = "0xxzxi5v7ji9j2k7kxhi0ah91lfa7b9rg3nywgx0lkv8dlgp8kmy";
|
||||
sha256 = "sha256-Mo2OGpem3p6hCNJ46+RH3BfC7kmKB4yk4Vzo38K88UM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
@ -2,17 +2,17 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "glooctl";
|
||||
version = "1.12.3";
|
||||
version = "1.12.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "solo-io";
|
||||
repo = "gloo";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-0neq2EjlHddjLHyNlnqFjXCZpv8r7DGMeYNCzJUEFFg=";
|
||||
hash = "sha256-g2cKT3ZTLYFBCw3xlcuB2qZ6MTV7qBfN7sieenFUeMM=";
|
||||
};
|
||||
|
||||
subPackages = [ "projects/gloo/cli/cmd" ];
|
||||
vendorSha256 = "sha256-1FbcNgTD5+YI29LOmkJMjhE+MnxrKmomTKK4DgyXCws=";
|
||||
vendorSha256 = "sha256-wY0f9RUe9Z1FpjqWDpDG6QXQlFDChfAkjJzlvBMaaFE=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "terragrunt";
|
||||
version = "0.37.0";
|
||||
version = "0.38.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gruntwork-io";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-7nil/T6q1crZh9ARTP615UzfjKcgsclpIt2N1ifABBk=";
|
||||
sha256 = "sha256-MPetGR/VAVSLuDHyYeP1s9+4RRZzKanf9xyxas3heYY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-7SUf4r+6r6dkBoBZFg2AUK114QEl0+1lwRA4ymYArFs=";
|
||||
vendorSha256 = "sha256-CqImT90jFFLi6XR7jfzFKwhnCHK6B+aM+Ba/L+G3bEg=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -5,13 +5,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qownnotes";
|
||||
version = "22.8.0";
|
||||
version = "22.8.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
|
||||
# Fetch the checksum of current version with curl:
|
||||
# curl https://download.tuxfamily.org/qownnotes/src/qownnotes-<version>.tar.xz.sha256
|
||||
sha256 = "37ae0952119341b7a07a80bb79e732d91edab3a684b6b9a626e5a9d13a97fad1";
|
||||
sha256 = "82b231c53c485671568571e97f34b98887b0cee6e8a336a61e7d490edc605061";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake qttools ];
|
||||
|
@ -17,13 +17,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "freedv";
|
||||
version = "1.7.0";
|
||||
version = "1.8.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "drowe67";
|
||||
repo = "freedv-gui";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-0E7r/7+AQRPIFAcE6O1WE0NYiKzAlBR0jKbssqWvRMU=";
|
||||
hash = "sha256-hZcaA8ZAkNigWwcaU8K6R6atNi8pqIUUEwkje+3sW8A=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "glitter";
|
||||
version = "1.5.15";
|
||||
version = "1.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "milo123459";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-4oI0opwbmEyHc3zx06l8bDPnOi7rGrMqUJPBDAfmPY0=";
|
||||
sha256 = "sha256-1iBTuFhxgsOFO3GueIB0kqNfmLglzircnCY+AffFj9I=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-rmECD/0ThDXBAGqDMNbyHi9eoGNOJhBndaxCuUS/qpc=";
|
||||
cargoSha256 = "sha256-wY60B+3ndKL6IAaLmvbIcCxvq/Un/Sgzgedml6ouqFc=";
|
||||
|
||||
# tests require it to be in a git repository
|
||||
preCheck = ''
|
||||
|
@ -47,13 +47,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mkvtoolnix";
|
||||
version = "69.0.0";
|
||||
version = "70.0.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "mbunkus";
|
||||
repo = "mkvtoolnix";
|
||||
rev = "release-${version}";
|
||||
sha256 = "sha256-sKm/TjlVFj6Vy6lfy3v7UJoEUXALZZSKO3zoIrYtwrc=";
|
||||
sha256 = "sha256-7ryLf/SKM5m7MdOd2K2XhJEdLF2H8xjV1aZMKUjm+Ok=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "amazon-ecs-agent";
|
||||
version = "1.18.0";
|
||||
version = "1.62.1";
|
||||
|
||||
goPackagePath = "github.com/aws/${pname}";
|
||||
subPackages = [ "agent" ];
|
||||
@ -11,7 +11,7 @@ buildGoPackage rec {
|
||||
rev = "v${version}";
|
||||
owner = "aws";
|
||||
repo = pname;
|
||||
sha256 = "1l6c2if6wpjmq2hh6k818w38s1rsbwgd6igqy948dwcrb1g1mixr";
|
||||
sha256 = "sha256-p3o5Z6NIieBoEjxN8NnDYCSD4IQs2daxCwg4ndp5TTk=";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -21,7 +21,7 @@ stdenvNoCC.mkDerivation rec {
|
||||
sparseCheckout = ''
|
||||
BeautyLine-V3
|
||||
'';
|
||||
sha256 = "sha256-VEQWMY77cVz6UDn7FeMYYyYgXmXl1lLYs8MlFUuGRZE=";
|
||||
sha256 = "sha256-IkkypAj250+OXbf19TampCnqYsSbJVIjeYlxJoyhpzk=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/BeautyLine-V3";
|
||||
|
@ -12,24 +12,20 @@
|
||||
, kwindowsystem
|
||||
, kiconthemes
|
||||
, kwayland
|
||||
, unstableGitUpdater
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "material-kwin-decoration";
|
||||
version = "unstable-2021-10-28";
|
||||
version = "unstable-2022-01-19";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Zren";
|
||||
repo = "material-decoration";
|
||||
rev = "cc5cc399a546b66907629b28c339693423c894c8";
|
||||
sha256 = "sha256-aYlnPFhf+ISVe5Ycryu5BSXY8Lb5OoueMqnWQZiv6Lc=";
|
||||
rev = "973949761f609f9c676c5b2b7c6d9560661d34c3";
|
||||
sha256 = "sha256-n+yUmBUrkS+06qLnzl2P6CTQZZbDtJLy+2mDPCcQz9M=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "-Werror" ""
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake extra-cmake-modules ];
|
||||
|
||||
buildInputs = [
|
||||
@ -44,10 +40,14 @@ mkDerivation rec {
|
||||
kwayland
|
||||
];
|
||||
|
||||
passthru = {
|
||||
updateScript = unstableGitUpdater { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Material-ish window decoration theme for KWin";
|
||||
homepage = "https://github.com/Zren/material-decoration";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.nickcao ];
|
||||
maintainers = with maintainers; [ nickcao ];
|
||||
};
|
||||
}
|
||||
|
@ -13,13 +13,13 @@ assert enableLTO -> stdenv.cc.isGNU;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dictu";
|
||||
version = "0.24.0";
|
||||
version = "0.25.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dictu-lang";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-EYoLEyK8jh4z3/9aMuUBt0pCwks7NIevsK2mOh8x6bQ=";
|
||||
sha256 = "sha256-Tahi2K8Q/KPc9MN7yWhkqp/MzXfzJzrGSsvnTCyI03U=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
@ -18,6 +18,9 @@ stdenv.mkDerivation rec {
|
||||
hash = "sha256-x2c4c9RSrNWGqEngio4ArW7dJjW0gg+8nqBwPcR721k=";
|
||||
};
|
||||
|
||||
# Fix index out of bounds reading RPATH (cherry-picked from 0.10-dev)
|
||||
patches = [ ./rpath.patch ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
llvmPackages.llvm.dev
|
||||
|
39
pkgs/development/compilers/zig/rpath.patch
Normal file
39
pkgs/development/compilers/zig/rpath.patch
Normal file
@ -0,0 +1,39 @@
|
||||
commit ebcdbd9b3c9d437780aee4d6af76bbd2ab32ea06
|
||||
Author: LeRoyce Pearson <contact@leroycepearson.dev>
|
||||
Date: 2022-07-17 16:01:22 -0600
|
||||
|
||||
Read dynstr starting at rpath offset
|
||||
|
||||
Since we know the offset, we may as well read starting there. Still expects
|
||||
rpath to fit in 4096 bytes; that might be worth fixing in the future.
|
||||
|
||||
Fixes issue #12112
|
||||
|
||||
diff --git a/lib/std/zig/system/NativeTargetInfo.zig b/lib/std/zig/system/NativeTargetInfo.zig
|
||||
index af41fc790579..ad0b6d5ce1e1 100644
|
||||
--- a/lib/std/zig/system/NativeTargetInfo.zig
|
||||
+++ b/lib/std/zig/system/NativeTargetInfo.zig
|
||||
@@ -652,14 +652,19 @@ pub fn abiAndDynamicLinkerFromFile(
|
||||
} else null;
|
||||
|
||||
if (dynstr) |ds| {
|
||||
- const strtab_len = std.math.min(ds.size, strtab_buf.len);
|
||||
- const strtab_read_len = try preadMin(file, &strtab_buf, ds.offset, strtab_len);
|
||||
- const strtab = strtab_buf[0..strtab_read_len];
|
||||
// TODO this pointer cast should not be necessary
|
||||
const rpoff_usize = std.math.cast(usize, rpoff) catch |err| switch (err) {
|
||||
error.Overflow => return error.InvalidElfFile,
|
||||
};
|
||||
- const rpath_list = mem.sliceTo(std.meta.assumeSentinel(strtab[rpoff_usize..].ptr, 0), 0);
|
||||
+ if (rpoff_usize > ds.size) return error.InvalidElfFile;
|
||||
+ const rpoff_file = ds.offset + rpoff_usize;
|
||||
+ const rp_max_size = ds.size - rpoff_usize;
|
||||
+
|
||||
+ const strtab_len = std.math.min(rp_max_size, strtab_buf.len);
|
||||
+ const strtab_read_len = try preadMin(file, &strtab_buf, rpoff_file, strtab_len);
|
||||
+ const strtab = strtab_buf[0..strtab_read_len];
|
||||
+
|
||||
+ const rpath_list = mem.sliceTo(std.meta.assumeSentinel(strtab.ptr, 0), 0);
|
||||
var it = mem.tokenize(u8, rpath_list, ":");
|
||||
while (it.next()) |rpath| {
|
||||
var dir = fs.cwd().openDir(rpath, .{}) catch |err| switch (err) {
|
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ openssl zlib ];
|
||||
propagatedBuildInputs = [ openssl zlib ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://capnproto.org/";
|
||||
|
@ -785,6 +785,7 @@ with self;
|
||||
meta.description = "A library to help writing wrappers around ocaml code for python";
|
||||
patches = lib.optional (lib.versionAtLeast ocaml.version "4.13") ./pythonlib.patch;
|
||||
propagatedBuildInputs = [ ppx_expect ppx_let ppx_python stdio typerep ];
|
||||
meta.broken = lib.versionAtLeast ocaml.version "4.14";
|
||||
};
|
||||
|
||||
re2 = janePackage {
|
||||
|
@ -5,6 +5,7 @@
|
||||
with lib;
|
||||
|
||||
if versionOlder ocaml.version "4.05"
|
||||
|| versionAtLeast ocaml.version "4.14"
|
||||
then throw "notty is not available for OCaml ${ocaml.version}"
|
||||
else
|
||||
|
||||
|
41
pkgs/development/python-modules/aggdraw/default.nix
Normal file
41
pkgs/development/python-modules/aggdraw/default.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, buildPythonPackage
|
||||
, pytest
|
||||
, python
|
||||
, pillow
|
||||
, numpy
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "aggdraw";
|
||||
version = "1.3.15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pytroll";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-w3HlnsHYB0R+HZOXtzygC2RST3gllPI7SYtwSCVXhTU=";
|
||||
};
|
||||
|
||||
checkInputs = [
|
||||
numpy
|
||||
pillow
|
||||
pytest
|
||||
];
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
${python.interpreter} selftest.py
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "aggdraw" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "High quality drawing interface for PIL";
|
||||
homepage = "https://github.com/pytroll/aggdraw";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ onny ];
|
||||
};
|
||||
}
|
@ -12,14 +12,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "cloudflare";
|
||||
version = "2.9.11";
|
||||
version = "2.9.12";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-kvCSazLBU2sBzobdZrVXcdlEpMoAe5wb7rBWxzhDuus=";
|
||||
hash = "sha256-w+ciURz9sJcWmhhjJfvoorFYUBFp0PaLZ55zb2sMwDA=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -22,13 +22,13 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "devito";
|
||||
version = "unstable-2022-04-22";
|
||||
version = "4.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "devitocodes";
|
||||
repo = "devito";
|
||||
rev = "7cb52eded4038c1a0ee92cfd04d3412c48f2fb7c";
|
||||
sha256 = "sha256-75hkkufQK9Nv65DBz8cmYTfkxH/UUWDQK/rGUDULvjM=";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-crKTxlueE8NGjAqu625iFvp35UK2U7+9kl8rpbzf0gs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -13,14 +13,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "gehomesdk";
|
||||
version = "0.4.27";
|
||||
version = "0.5.0";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-jhggGncxguG/hZutZ3gfg9dwl0Ex5wpcHFKZegAaM9Q=";
|
||||
sha256 = "sha256-XxJEiWiblnvKCfcM8sNFEjV2gw7cc7A9P6H4JEAleRQ=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -1,27 +1,46 @@
|
||||
{ lib, buildPythonPackage, fetchPypi, isPy27
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchFromGitHub
|
||||
, isPy27
|
||||
, docopt
|
||||
, pillow
|
||||
, enum34
|
||||
, scikitimage
|
||||
, aggdraw
|
||||
, pytestCheckHook
|
||||
, ipython
|
||||
, cython
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "psd-tools";
|
||||
version = "1.9.21";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-BlfJnC03W0BEOr2Nav0Tj0fzjwAVlTPjyN0KmxxQMVI=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "psd-tools";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-+nqN7DJHbr7XkfG0oUQkWcxv+krR8DlQndAQCvnBk3s=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cython ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
aggdraw
|
||||
docopt
|
||||
ipython
|
||||
pillow
|
||||
] ++ lib.optionals isPy27 [ enum34 ];
|
||||
scikitimage
|
||||
];
|
||||
|
||||
meta = {
|
||||
checkInputs = [ pytestCheckHook ];
|
||||
|
||||
pythonImportsCheck = [ "psd_tools" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Python package for reading Adobe Photoshop PSD files";
|
||||
homepage = "https://github.com/kmike/psd-tools";
|
||||
license = lib.licenses.mit;
|
||||
broken = true; # missing packbits from nixpkgs
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ onny ];
|
||||
};
|
||||
}
|
||||
|
@ -1,4 +1,11 @@
|
||||
{ lib, buildPythonPackage, fetchPypi, pytest, pytest-flakes, tox }:
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, pytest
|
||||
, pytest-flakes
|
||||
, tox
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pytest-quickcheck";
|
||||
version = "0.8.6";
|
||||
@ -9,12 +16,16 @@ buildPythonPackage rec {
|
||||
};
|
||||
|
||||
buildInputs = [ pytest ];
|
||||
|
||||
propagatedBuildInputs = [ pytest-flakes tox ];
|
||||
|
||||
meta = with lib; {
|
||||
license = licenses.asl20;
|
||||
homepage = "https://pypi.python.org/pypi/pytest-quickcheck";
|
||||
description = "pytest plugin to generate random data inspired by QuickCheck";
|
||||
broken = true; # missing pytest-codestyle
|
||||
maintainers = with maintainers; [ onny ];
|
||||
# Pytest support > 6.0 missing
|
||||
# https://github.com/t2y/pytest-quickcheck/issues/17
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
|
47
pkgs/development/python-modules/torpy/default.nix
Normal file
47
pkgs/development/python-modules/torpy/default.nix
Normal file
@ -0,0 +1,47 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, pythonOlder
|
||||
, fetchFromGitHub
|
||||
, cryptography
|
||||
, pytestCheckHook
|
||||
, requests
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "torpy";
|
||||
version = "1.1.6";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "torpyorg";
|
||||
repo = "torpy";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-Ni7GcpkxzAMtP4wBOFsi4KnxK+nC0XCZR/2Z/eS/C+w=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
cryptography
|
||||
requests
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
disabledTestPaths = [
|
||||
# requires network
|
||||
"tests/integration"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
"cryptography"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Pure python Tor client";
|
||||
homepage = "https://github.com/torpyorg/torpy";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ larsr ];
|
||||
};
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
{ lib, stdenv, fetchurl, jre_headless, makeWrapper }:
|
||||
stdenv.mkDerivation rec{
|
||||
pname = "flyway";
|
||||
version = "9.1.3";
|
||||
version = "9.1.4";
|
||||
src = fetchurl {
|
||||
url = "mirror://maven/org/flywaydb/flyway-commandline/${version}/flyway-commandline-${version}.tar.gz";
|
||||
sha256 = "sha256-RmA9aP0YxYv2iDIp7W0k4x3CzvHMuPb398OM55q3Odo=";
|
||||
sha256 = "sha256-Hs9DZmgkaX00cI7YXTfgdvC0x3st8UfU0pQ7BDGHpDY=";
|
||||
};
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
dontBuild = true;
|
||||
|
1513
pkgs/development/tools/rust/cargo-wasi/0001-Add-Cargo.lock.patch
Normal file
1513
pkgs/development/tools/rust/cargo-wasi/0001-Add-Cargo.lock.patch
Normal file
File diff suppressed because it is too large
Load Diff
43
pkgs/development/tools/rust/cargo-wasi/default.nix
Normal file
43
pkgs/development/tools/rust/cargo-wasi/default.nix
Normal file
@ -0,0 +1,43 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, openssl
|
||||
, pkg-config
|
||||
, rustPlatform
|
||||
, Security
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-wasi";
|
||||
version = "0.1.26";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bytecodealliance";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-jugq7A3L+5+YUSyp9WWKBd4BA2pcXKd4CMVg5OVMcEA=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-L4vRLYm1WaCmA4bGyY7D0yxXuqxGSHMMD/wlY8+MgPk=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = lib.optionals stdenv.isLinux [ openssl ]
|
||||
++ lib.optionals stdenv.isDarwin [ Security ];
|
||||
|
||||
cargoPatches = [
|
||||
./0001-Add-Cargo.lock.patch
|
||||
];
|
||||
|
||||
# Checks need to be disabled here because the current test suite makes assumptions
|
||||
# about the surrounding environment that aren't Nix friendly. See these lines for specifics:
|
||||
# https://github.com/bytecodealliance/cargo-wasi/blob/0.1.26/tests/tests/support.rs#L13-L18
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A lightweight Cargo subcommand to build code for the wasm32-wasi target";
|
||||
homepage = "https://bytecodealliance.github.io/cargo-wasi";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ lucperkins ];
|
||||
};
|
||||
}
|
@ -13,11 +13,11 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "duckscript_cli";
|
||||
version = "0.8.10";
|
||||
version = "0.8.14";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-cMvcCX8ViCcUFMuxAPo3/wxXvg5swAcBrLx1x7lSwvM=";
|
||||
sha256 = "sha256-3LsHgn4FeukQXkEVG7V3wJlH+0Ut2cQQSQDrLMhc7qw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec {
|
||||
buildInputs = [ openssl ]
|
||||
++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration libiconv ];
|
||||
|
||||
cargoSha256 = "sha256-8ywMLXFmdq119K/hl1hpsVhzG+nrdO4eux3lAqUjB+A=";
|
||||
cargoSha256 = "sha256-SiuDKH1jXU6m9MfQ9W3GxXVMkxOxB1Y3zn0Iz8zR7Zs=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Simple, extendable and embeddable scripting language.";
|
||||
|
@ -8,8 +8,8 @@ let
|
||||
in
|
||||
buildNodejs {
|
||||
inherit enableNpm;
|
||||
version = "16.16.0";
|
||||
sha256 = "sha256-FFFR7/Oyql6+czhACcUicag3QK5oepPJjGKM19UnNus=";
|
||||
version = "16.17.0";
|
||||
sha256 = "sha256-HSjChWheRGmFkhvJY1ZcqcDF9P2pdV5InAaAjql5VkU=";
|
||||
patches = [
|
||||
./disable-darwin-v8-system-instrumentation.patch
|
||||
# Fix npm silently fail without a HOME directory https://github.com/npm/cli/issues/4996
|
||||
|
58
pkgs/games/darkplaces/default.nix
Normal file
58
pkgs/games/darkplaces/default.nix
Normal file
@ -0,0 +1,58 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, zlib
|
||||
, libjpeg
|
||||
, SDL2
|
||||
, libvorbis
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
name = "darkplaces";
|
||||
version = "unstable-2022-05-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "DarkPlacesEngine";
|
||||
repo = "darkplaces";
|
||||
rev = "f16954a9d40168253ac5d9890dabcf7dbd266cd9";
|
||||
hash = "sha256-5KsUcgHbuzFUE6LcclqI8VPSFbXZzBnxzOBB9Kf8krI=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
libjpeg
|
||||
SDL2
|
||||
];
|
||||
|
||||
buildFlags = "release";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
install -m755 darkplaces-sdl $out/bin/darkplaces
|
||||
install -m755 darkplaces-dedicated $out/bin/darkplaces-dedicated
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
patchelf \
|
||||
--add-needed ${libvorbis}/lib/libvorbisfile.so \
|
||||
--add-needed ${libvorbis}/lib/libvorbis.so \
|
||||
$out/bin/darkplaces
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.icculus.org/twilight/darkplaces/";
|
||||
description = "A quake 1 engine implementation by LadyHavoc";
|
||||
longDescription = ''
|
||||
A game engine based on the Quake 1 engine by id Software.
|
||||
It improves and builds upon the original 1996 engine by adding modern
|
||||
rendering features, and expanding upon the engine's native game code
|
||||
language QuakeC, as well as supporting additional map and model formats.
|
||||
'';
|
||||
maintainers = with maintainers; [ necrophcodr ];
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -12,10 +12,10 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "MAR1D";
|
||||
version = "0.3.0";
|
||||
version = "0.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
sha256 = "sha256-/QZH2H0PFCLeweXUE11vimLnJTt86PjnTnHC9vWkKsk=";
|
||||
sha256 = "sha256-c48azBGdnzhEQGUeRJWlNLJhtrYjnpiORuWvowcQK5Y=";
|
||||
rev = "v${version}";
|
||||
repo = "MAR1D";
|
||||
owner = "Radvendii";
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "VASSAL";
|
||||
version = "3.6.5";
|
||||
version = "3.6.7";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/vassalengine/vassal/releases/download/${version}/${pname}-${version}-linux.tar.bz2";
|
||||
sha256 = "sha256-wnaT0+r599/RboeUfpCZTNd/M2kaCsckI9F+7r7leEE=";
|
||||
sha256 = "sha256-WTYMbVtAciscnBzR4uHmVVXpuge53e32uLmUF8/w6I0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "evdi";
|
||||
version = "1.11.0";
|
||||
version = "1.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "DisplayLink";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "12n2xbpw2901cvzw467saqqsgs4mwrzp7fs5j2vlyl7kwpcr0pj0";
|
||||
sha256 = "sha256-JZKZ7+1OMbBtUA7pAZ41TzeDDyiD0h7yTXJINJ5FjN4=";
|
||||
};
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-Wno-error -Wno-error=sign-compare";
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "linux-firmware";
|
||||
version = "20220708";
|
||||
version = "20220815";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/linux-firmware-${version}.tar.gz";
|
||||
sha256 = "sha256-jsmbBxQ4RHBySBq2lks5tJ6YTwwlkvVe2Xc0CDJY8IE=";
|
||||
sha256 = "sha256-StPlnwn4KOvOf4fRblDzJQqyI8iIz8e9fo/BsTyCKjI=";
|
||||
};
|
||||
|
||||
installFlags = [ "DESTDIR=$(out)" ];
|
||||
@ -16,7 +16,7 @@ stdenvNoCC.mkDerivation rec {
|
||||
|
||||
outputHashMode = "recursive";
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash = "sha256-FNYZMJnqR2waODUXisch3ObdEjwQN94QSiBE2dDW4sk=";
|
||||
outputHash = "sha256-VTRrOOkdWepUCKAkziO/0egb3oaQEOJCtsuDEgs/W78=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Binary firmware collection packaged by kernel.org";
|
||||
|
@ -334,7 +334,7 @@ stdenv.mkDerivation ((drvAttrs config stdenv.hostPlatform.linux-kernel kernelPat
|
||||
"CC=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc"
|
||||
"HOSTCC=${buildPackages.stdenv.cc}/bin/${buildPackages.stdenv.cc.targetPrefix}cc"
|
||||
"ARCH=${stdenv.hostPlatform.linuxArch}"
|
||||
] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"CROSS_COMPILE=${stdenv.cc.targetPrefix}"
|
||||
] ++ (stdenv.hostPlatform.linux-kernel.makeFlags or [])
|
||||
++ extraMakeFlags;
|
||||
|
@ -1,19 +1,30 @@
|
||||
{ stdenv, lib, fetchurl, bash, gitUpdater }:
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchurl
|
||||
, docbook_xml_dtd_44
|
||||
, docbook_xsl
|
||||
, libcap
|
||||
, pkg-config
|
||||
, meson
|
||||
, ninja
|
||||
, xmlto
|
||||
|
||||
, gitUpdater
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pax-utils";
|
||||
version = "1.3.4";
|
||||
version = "1.3.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gentoo/distfiles/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-i67S+cWujgzaG5x1mQhkEBr8ZPrQpGFuEPP/jviRBAs=";
|
||||
sha256 = "sha256-8KWwPfIwiqLdeq9TuewLK0hFW4YSnkd6FkPeYpBKuHQ=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
buildInputs = [ bash ];
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
nativeBuildInputs = [ docbook_xml_dtd_44 docbook_xsl meson ninja pkg-config xmlto ];
|
||||
buildInputs = [ libcap ];
|
||||
|
||||
passthru.updateScript = gitUpdater {
|
||||
inherit pname version;
|
||||
|
@ -3,16 +3,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "matrix-dendrite";
|
||||
version = "0.9.1";
|
||||
version = "0.9.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "matrix-org";
|
||||
repo = "dendrite";
|
||||
rev = "v${version}";
|
||||
sha256 = "Fg7yfP5cM/mNAsIZAI/WGNLuz8l3vxyY8bb1NjuZELc=";
|
||||
sha256 = "sha256-A/4FN0FYuhP5AO7yQq/o5ZJKEJAotfervot70Scgj6M=";
|
||||
};
|
||||
|
||||
vendorSha256 = "+9mjg8avOHPQTzBnfgim10Lfgpsu8nTQf1qYB0SLFys=";
|
||||
vendorSha256 = "sha256-tgVImIfn1lPTYGXczoAxVta3L+VR0v13KowLIYQ7bwY=";
|
||||
|
||||
checkInputs = [
|
||||
postgresqlTestHook
|
||||
|
@ -4,12 +4,12 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "powerdns";
|
||||
version = "4.6.2";
|
||||
pname = "pdns";
|
||||
version = "4.6.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://downloads.powerdns.com/releases/pdns-${version}.tar.bz2";
|
||||
hash = "sha256-9EOEiUS7Ebu0hQIhYTs6Af+1f+vyZx2myqVzYu4LGbg=";
|
||||
hash = "sha256-rNBricoB0a32G5BmBGFPDh13oelO7srej/XVOhbbc4k=";
|
||||
};
|
||||
# redact configure flags from version output to reduce closure size
|
||||
patches = [ ./version.patch ];
|
||||
|
@ -3,11 +3,11 @@
|
||||
let
|
||||
elasticmq-server = stdenv.mkDerivation rec {
|
||||
pname = "elasticmq-server";
|
||||
version = "1.2.0";
|
||||
version = "1.3.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://s3-eu-west-1.amazonaws.com/softwaremill-public/${pname}-${version}.jar";
|
||||
sha256 = "06bn5ixz0pvvhfvavr6njv8c2i9pgd6gj32wnp2f0fn0z1kypn1f";
|
||||
sha256 = "sha256-+l7QX/2HrcPuAJ3kHPAKx1yWtF5mkODzoFjYIPxc6oU=";
|
||||
};
|
||||
|
||||
# don't do anything?
|
||||
|
31
pkgs/servers/rustypaste/default.nix
Normal file
31
pkgs/servers/rustypaste/default.nix
Normal file
@ -0,0 +1,31 @@
|
||||
{ lib, rustPlatform, fetchFromGitHub }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "rustypaste";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchFromGitHub{
|
||||
owner = "orhun";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-NGrz08cpio745oVYtfNO1jpViYLaxZ9ZRXQdQG/f0oM=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-UQNe2O664PXvcSu6MI5F8RdYJJholjF9iO2I5OSMm2A=";
|
||||
|
||||
# Some tests need network
|
||||
checkFlags = [
|
||||
"--skip paste::tests::test_paste_data"
|
||||
"--skip server::tests::test_upload_file"
|
||||
"--skip server::tests::test_upload_remote_file"
|
||||
"--skip util::tests::test_get_expired_files"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "A minimal file upload/pastebin service";
|
||||
homepage = "https://github.com/orhun/rustypaste";
|
||||
changelog = "https://github.com/orhun/rustypaste/blob/v${version}/CHANGELOG.md";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ seqizz ];
|
||||
};
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
{ lib
|
||||
, pythonPackages
|
||||
, fetchFromGitHub
|
||||
, nixosTests
|
||||
}:
|
||||
|
||||
pythonPackages.buildPythonApplication rec {
|
||||
@ -53,6 +54,10 @@ pythonPackages.buildPythonApplication rec {
|
||||
|
||||
pythonImportsCheck = [ "patroni" ];
|
||||
|
||||
passthru.tests = {
|
||||
patroni = nixosTests.patroni;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://patroni.readthedocs.io/en/latest/";
|
||||
description = "A Template for PostgreSQL HA with ZooKeeper, etcd or Consul";
|
||||
|
@ -17,13 +17,13 @@ let
|
||||
in
|
||||
py.pkgs.buildPythonApplication rec {
|
||||
pname = "netbox";
|
||||
version = "3.2.7";
|
||||
version = "3.2.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "netbox-community";
|
||||
repo = pname;
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "sha256-NIyAZZrq/Io8VyEG0TE5C3ugq+MPraJ45hi0Vx/b1OQ=";
|
||||
sha256 = "sha256-fMTla+WVojoStwguHvsciyr0YNI09AvotuGB2o0hBUQ=";
|
||||
};
|
||||
|
||||
format = "other";
|
||||
|
@ -51,10 +51,6 @@ stdenv.mkDerivation rec {
|
||||
sed -i -e '/^\tXdummy.c\ \\$/,$d' -e 's/\tx11vnc_loop\ \\/\tx11vnc_loop/' misc/Makefile.am
|
||||
'';
|
||||
|
||||
preConfigure = ''
|
||||
configureFlags="--mandir=$out/share/man"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A VNC server connected to a real X11 screen";
|
||||
homepage = "https://github.com/LibVNC/x11vnc/";
|
||||
|
36
pkgs/tools/misc/instaloader/default.nix
Normal file
36
pkgs/tools/misc/instaloader/default.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, pythonOlder
|
||||
, fetchFromGitHub
|
||||
, sphinx
|
||||
, requests
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "instaloader";
|
||||
version = "4.9.2";
|
||||
format = "pyproject";
|
||||
|
||||
disabled = pythonOlder "3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "instaloader";
|
||||
repo = "instaloader";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-IzOXtoHuKbeHlp4URAlRrSKZ8mRTK7QgsWGd5a99thY=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
requests
|
||||
sphinx
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "instaloader" ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://instaloader.github.io/";
|
||||
description = "Download pictures (or videos) along with their captions and other metadata from Instagram";
|
||||
maintainers = with maintainers; [ creator54 ];
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
@ -9,16 +9,16 @@ manifest = {
|
||||
|
||||
in rustPlatform.buildRustPackage rec {
|
||||
pname = "bukubrow-host";
|
||||
version = "5.0.0";
|
||||
version = "5.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SamHH";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1a3gqxj6d1shv3w0v9m8x2xr0bvcynchy778yqalxkc3x4vr0nbn";
|
||||
sha256 = "sha256-xz5Agsm+ATQXXgpPGN4EQ00i1t8qUlrviNHauVdCu4U=";
|
||||
};
|
||||
|
||||
cargoSha256 = "0z6i9wzz5gy9rs8cxfmwg4mpfajv0xvj4nn6jfl7f1rw6k457jc9";
|
||||
cargoSha256 = "sha256-mH76ODPKlKDEK9ckThPnL5Ar7p1l1gNd7zXfesLZlBM=";
|
||||
|
||||
buildInputs = [ sqlite ];
|
||||
|
||||
|
@ -4,16 +4,16 @@
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "hysteria";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "HyNetwork";
|
||||
repo = "hysteria";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-V+umf7+qRANSNsMrU1Vij3ni6ayq/d41xSy3o+7sEHQ=";
|
||||
sha256 = "sha256-aHIb79P1a+91hIcK1toHZqqXIZ0rwfGXDQc42rQQmX4=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-oxCZ4+E3kffHr8ca9BKCSYcSWQ8jwpzrFs0fvCvZyJE=";
|
||||
vendorSha256 = "sha256-yAQpyz4pDXOfGF4hho/2Pt9yD3VdWYAmIvaXJjDMjis=";
|
||||
proxyVendor = true;
|
||||
|
||||
# Network required
|
||||
|
@ -14,20 +14,20 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mu";
|
||||
version = "1.8.8";
|
||||
version = "1.8.9";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "djcb";
|
||||
repo = "mu";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-kgskeQM6zESkjDWmgGqhZlGnH8naZ5k0sw+70ZzW2/E=";
|
||||
hash = "sha256-AqbTYcPwV9iNar34pESbz9Vp/88hhB+/VxcLIhLZ16o=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# Fix mu4e-builddir (set it to $out)
|
||||
substituteInPlace mu4e/mu4e-config.el.in \
|
||||
--replace "@abs_top_builddir@" "$out"
|
||||
substituteInPlace lib/utils/mu-utils.cc \
|
||||
substituteInPlace lib/utils/mu-test-utils.cc \
|
||||
--replace "/bin/rm" "${coreutils}/bin/rm"
|
||||
'';
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "keysmith";
|
||||
version = "1.6.0";
|
||||
version = "1.6.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dfinity";
|
||||
repo = "keysmith";
|
||||
rev = "v${version}";
|
||||
sha256 = "1z0sxirk71yabgilq8v5lz4nd2bbm1xyrd5zppif8k9jqhr6v3v3";
|
||||
sha256 = "sha256-+wYWIoPYc7qpTRS4Zlxp50Up8obZOmfQpiT0SWwVJE0=";
|
||||
};
|
||||
|
||||
vendorSha256 = "1p0r15ihmnmrybf12cycbav80sdj2dv2kry66f4hjfjn6k8zb0dc";
|
||||
vendorSha256 = "sha256-rIH10TRWOgmJM8bnKXYTsmmAtlrMMxHc8rnaCmMJGdw=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Hierarchical Deterministic Key Derivation for the Internet Computer";
|
||||
|
@ -6,13 +6,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tuptime";
|
||||
version = "5.1.0";
|
||||
version = "5.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rfrail3";
|
||||
repo = "tuptime";
|
||||
rev = version;
|
||||
sha256 = "sha256-6N4dqgLOhWqVR8GqlBUxHWy10AHBZ4aZbdkw5SOxxBQ=";
|
||||
sha256 = "sha256-s0VtKOaSPQlF58/2m/DwYDuHHPGnHVAJMA/p3hISTNE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper installShellFiles ];
|
||||
@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
|
||||
meta = with lib; {
|
||||
description = "Total uptime & downtime statistics utility";
|
||||
homepage = "https://github.com/rfrail3/tuptime";
|
||||
changelog = "https://github.com/rfrail3/tuptime/blob/master/CHANGELOG";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.all;
|
||||
maintainers = [ maintainers.evils ];
|
||||
|
@ -3789,7 +3789,9 @@ with pkgs;
|
||||
|
||||
fits-cloudctl = callPackage ../tools/admin/fits-cloudctl { };
|
||||
|
||||
flitter = callPackage ../tools/misc/flitter { };
|
||||
flitter = callPackage ../tools/misc/flitter {
|
||||
ocamlPackages = ocaml-ng.ocamlPackages_4_13;
|
||||
};
|
||||
|
||||
frangipanni = callPackage ../tools/text/frangipanni { };
|
||||
|
||||
@ -4023,6 +4025,8 @@ with pkgs;
|
||||
});
|
||||
};
|
||||
|
||||
hysteria = callPackage ../tools/networking/hysteria { };
|
||||
|
||||
hyx = callPackage ../tools/text/hyx { };
|
||||
|
||||
icdiff = callPackage ../tools/text/icdiff {};
|
||||
@ -10455,6 +10459,8 @@ with pkgs;
|
||||
inherit (darwin.apple_sdk.frameworks) Security;
|
||||
};
|
||||
|
||||
rustypaste = callPackage ../servers/rustypaste { };
|
||||
|
||||
rw = callPackage ../tools/misc/rw { };
|
||||
|
||||
rwc = callPackage ../tools/system/rwc { };
|
||||
@ -14347,6 +14353,9 @@ with pkgs;
|
||||
inherit (darwin.apple_sdk.frameworks) CoreServices Security SystemConfiguration;
|
||||
};
|
||||
cargo-valgrind = callPackage ../development/tools/rust/cargo-valgrind { };
|
||||
cargo-wasi = callPackage ../development/tools/rust/cargo-wasi {
|
||||
inherit (darwin.apple_sdk.frameworks) Security;
|
||||
};
|
||||
cargo-watch = callPackage ../development/tools/rust/cargo-watch {
|
||||
inherit (darwin.apple_sdk.frameworks) CoreServices Foundation;
|
||||
};
|
||||
@ -27955,7 +27964,9 @@ with pkgs;
|
||||
|
||||
indigenous-desktop = callPackage ../applications/networking/feedreaders/indigenous-desktop { };
|
||||
|
||||
jackline = callPackage ../applications/networking/instant-messengers/jackline { };
|
||||
jackline = callPackage ../applications/networking/instant-messengers/jackline {
|
||||
ocamlPackages = ocaml-ng.ocamlPackages_4_13;
|
||||
};
|
||||
|
||||
keylight-controller-mschneider82 = callPackage ../applications/misc/keylight-controller-mschneider82 { };
|
||||
|
||||
@ -28637,6 +28648,8 @@ with pkgs;
|
||||
|
||||
ladspa-sdk = callPackage ../applications/audio/ladspa-sdk { };
|
||||
|
||||
ladybird = qt6.callPackage ../applications/networking/browsers/ladybird { };
|
||||
|
||||
lazpaint = callPackage ../applications/graphics/lazpaint { };
|
||||
|
||||
caps = callPackage ../applications/audio/caps { };
|
||||
@ -32551,6 +32564,8 @@ with pkgs;
|
||||
|
||||
cuyo = callPackage ../games/cuyo { };
|
||||
|
||||
darkplaces = callPackage ../games/darkplaces {};
|
||||
|
||||
deliantra-server = callPackage ../games/deliantra/server.nix {
|
||||
stdenv = gcc10StdenvCompat;
|
||||
};
|
||||
@ -32792,6 +32807,8 @@ with pkgs;
|
||||
|
||||
ideogram = callPackage ../applications/graphics/ideogram { };
|
||||
|
||||
instaloader = python3Packages.callPackage ../tools/misc/instaloader { };
|
||||
|
||||
instead = callPackage ../games/instead { };
|
||||
|
||||
instead-launcher = callPackage ../games/instead-launcher { };
|
||||
|
@ -1628,5 +1628,5 @@ in let inherit (pkgs) callPackage; in rec
|
||||
|
||||
ocamlPackages_latest = ocamlPackages_4_14;
|
||||
|
||||
ocamlPackages = ocamlPackages_4_13;
|
||||
ocamlPackages = ocamlPackages_4_14;
|
||||
}
|
||||
|
@ -238,6 +238,8 @@ in {
|
||||
|
||||
agent-py = callPackage ../development/python-modules/agent-py { };
|
||||
|
||||
aggdraw = callPackage ../development/python-modules/aggdraw { };
|
||||
|
||||
aio-geojson-client = callPackage ../development/python-modules/aio-geojson-client { };
|
||||
|
||||
aio-geojson-generic-client = callPackage ../development/python-modules/aio-geojson-generic-client { };
|
||||
@ -10845,6 +10847,8 @@ in {
|
||||
# Used by streamlit, 2021-01-29
|
||||
tornado_5 = callPackage ../development/python-modules/tornado/5.nix { };
|
||||
|
||||
torpy = callPackage ../development/python-modules/torpy { };
|
||||
|
||||
torrequest = callPackage ../development/python-modules/torrequest { };
|
||||
|
||||
total-connect-client = callPackage ../development/python-modules/total-connect-client { };
|
||||
|
Loading…
Reference in New Issue
Block a user